【Python】5種基本但功能非常強大的可視化類型
編譯 | VK
來源 | Towards Data Science

數(shù)據(jù)可視化是數(shù)據(jù)科學(xué)的重要組成部分。它對于探索和理解數(shù)據(jù)非常有用。在某些情況下,可視化在傳遞信息方面也比普通數(shù)字好得多。
使用數(shù)據(jù)可視化技術(shù)可以很容易地發(fā)現(xiàn)變量之間的關(guān)系、變量的分布以及數(shù)據(jù)中的底層結(jié)構(gòu)。
在本文中,我們將介紹數(shù)據(jù)分析中常用的5種基本數(shù)據(jù)可視化類型。我們將使用Altair庫,它是Python的統(tǒng)計可視化庫。
如果你喜歡其中一個用于數(shù)據(jù)可視化任務(wù)的庫的話,我以前曾用Seaborn和ggplot2寫過類似的文章。我建議你仔細檢查一下,因為在同一個任務(wù)上比較不同的工具和框架會幫助你學(xué)得更好。
讓我們首先創(chuàng)建一個用于示例的示例數(shù)據(jù)幀。
import numpy as np
import pandas as pd
df = pd.DataFrame({
'date':pd.date_range(start='2020-01-10', periods=100, freq='D'),
'cat':pd.Series(['A','B','C']).sample(n=100, replace=True),
'val':(np.random.randn(100) + 10).round(2),
'val2':(np.random.random(100) * 10).round(2),
'val3':np.random.randint(20,50, size=100)
})
df = df.reset_index(drop=True)
df.head()

數(shù)據(jù)幀由100行和5列組成。它包含datetime、categorical和numerical值。
1.折線圖
折線圖顯示了兩個變量之間的關(guān)系。其中之一通常是時間。因此,我們可以看到變量是如何隨時間變化的,例如股票價格,每日溫度。
下面是如何用Altair創(chuàng)建一個簡單的折線圖。
import altair as alt
alt.Chart(df).mark_line().encode(
x='date', y='val'
)

讓我們詳細說明一下語法。我們首先將數(shù)據(jù)傳遞給圖表對象。下一個函數(shù)指定繪圖類型。encode函數(shù)指定繪圖中使用的列。因此,在encode函數(shù)中寫入的任何內(nèi)容都必須鏈接到數(shù)據(jù)幀。
Altair提供了更多的函數(shù)和參數(shù)來生成更多信息或定制的繪圖。我們將在下面的例子中看到它們。
為了使上面的折線圖看起來更好,我們可以使用“scale”特性調(diào)整y軸的值范圍。
alt.Chart(df).mark_line().encode(
alt.X('date'),
alt.Y('val', scale=alt.Scale(zero=False))
)

為了使用scale屬性,我們使用X和Y編碼(例如alt.X)指定列名。zero參數(shù)設(shè)置為“False”,以防止軸從零開始。
2.散點圖
散點圖也是一種關(guān)系圖。它通常用于顯示兩個數(shù)值變量的值。我們可以觀察它們之間是否有關(guān)聯(lián)。
我們可以創(chuàng)建“val”和“val2”列的散點圖,如下所示。
alt.Chart(df).mark_circle(size=40).encode(
alt.X('val', scale=alt.Scale(zero=False)),
alt.Y('val2'),
alt.Color('cat')
)

我們已經(jīng)使用顏色編碼來根據(jù)“cat”列分離數(shù)據(jù)點。mark_circle函數(shù)的size參數(shù)用于調(diào)整散點圖中點的大小。
3.直方圖
直方圖用于顯示連續(xù)變量的分布。它將取值范圍劃分為離散的數(shù)據(jù)元,并統(tǒng)計每個數(shù)據(jù)元中的數(shù)據(jù)點個數(shù)。
讓我們創(chuàng)建“val3”列的直方圖。
alt.Chart(df).mark_bar().encode(
alt.X('val3', bin=True),
alt.Y('count()')
).properties(title='Histogram of val3', height=300, width=450)

我們還使用properties函數(shù)自定義大小并添加標(biāo)題。
4.箱線圖
箱線圖提供了變量分布的概述。它顯示了值是如何通過四分位數(shù)和離群值展開的。
我們可以使用Altair的mark_boxplot函數(shù)創(chuàng)建一個箱線圖,如下所示。
alt.Chart(df).mark_boxplot().encode(
alt.X('cat'),
alt.Y('val2', scale=alt.Scale(zero=False))
).properties(height=200, width=400)

A中的值范圍小于其他兩個類別??騼?nèi)的白線表示中值。
5.條形圖
條形圖可用于可視化離散變量。每個類別都用一個大小與該類別的值成比例的條表示。
例如,我們可以使用條形圖來可視化按week分組的“val3”列。我們先用pandas庫計算。
df['week'] = df['date'].dt.isocalendar().week
weekly = df[['week','val3']].groupby('week', as_index=False).sum()
weekly.head()

第一行從date列中提取周。第二行將“val3”列按周分組并計算總和。
我們現(xiàn)在可以創(chuàng)建條形圖。
alt.Chart(weekly).mark_bar().encode(
x='val3:Q', y='week:O'
)

結(jié)論
我們已經(jīng)介紹了5種基本但功能非常強大的可視化類型。它們都是探索數(shù)據(jù)集和揭示變量之間關(guān)系的基礎(chǔ)。
使用Altair可以創(chuàng)建更復(fù)雜、信息更豐富、自定義的可視化效果。它在數(shù)據(jù)轉(zhuǎn)換和過濾方面也非常高效和強大。
往期精彩回顧
本站qq群851320808,加入微信群請掃碼:
