scatter函数_散点图、箱线图、核密度函数……数据分析必备的9种可视化图表
全文共2286字,預計學習時長9分鐘
圖源:dayliscrawl
作為數(shù)據(jù)分析對外輸出的關(guān)鍵環(huán)節(jié),可視化技術(shù)可是數(shù)據(jù)科學家的必備技能之一。各種各樣的圖標花樣繁多,可別被這些炫酷的“造型”嚇退了。
本文將介紹九種不同的可視化技術(shù),可以用來分析任何數(shù)據(jù)集,并且大多數(shù)都只需要少輸入一行代碼。就兩個字,好用!
加載數(shù)據(jù)集和快速瀏覽數(shù)據(jù)
為簡單起見,使用可從scikit-learn庫加載的Iris數(shù)據(jù)集,輸入以下代碼:
from sklearn.datasets importload_irisimport pandas as pddata = load_iris()df = pd.DataFrame(data['data'], columns=data['feature_names'])df['species'] = data['target']df.head()可以看到,我們有一個只有5列的數(shù)據(jù)集。使用數(shù)據(jù)框上的info()函數(shù)對其進行快速分析: df.info()
如圖可見,只有150個條目,在任何一列中都沒有丟失值。
此外,還可以看到前四列有浮點值,而最后一列只允許出現(xiàn)整數(shù)。事實上,根據(jù)數(shù)據(jù)集描述,我們知道“物種”列只取三個值,每個值代表一種花。
要確認這一點,可以對該列使用unique()函數(shù):
df.species.unique()array([0, 1, 2])確實,“物種”列只取三個值:0、1和2。
了解了數(shù)據(jù)集的基本信息之后就可以進行可視化了。請注意,如果列中缺少一些值,應該對其進行刪除或填充。我們稍后將討論的一些技術(shù)不允許出現(xiàn)丟失值。
線形圖
從一個簡單的線狀圖開始可視化。選中整個數(shù)據(jù)框。
df.plot()如圖可見,它已經(jīng)根據(jù)索引值(x軸)繪制了不同顏色的所有列值。這是不為函數(shù)提供x軸參數(shù)時的默認行為。
現(xiàn)在看來這個圖不是很有用。如果x軸是一個時間序列,那么線圖是一個很好的選擇。我們可能會在數(shù)據(jù)中看到一些時間上的趨勢。
在本例中,只能看到數(shù)據(jù)是按“物種”列排序的(圖中紫色的步驟),并且其他列的移動平均值遵循該模式(花瓣長度,特別是紅色標記的花瓣長度)。
散點圖
這是一種將兩個連續(xù)變量之間的關(guān)系可視化的完美圖表。通過散點圖來分析萼片長度和萼片寬度的關(guān)系。
df.plot.scatter(x='sepal length(cm)', y='sepal width (cm)')為了生成此圖,需要通過其列名來指定圖的x軸和y軸。這個圖表顯示這兩個變量之間沒有很強的相關(guān)性。讓我們來檢查另一對萼片長度和花瓣長度:
df.plot.scatter(x='sepal length(cm)', y='petal length (cm)')在這種情況下,可以看到當萼片長度增加時,花瓣長度也會增加(當萼片長度大于6厘米時,增加幅度更大)。
餅狀圖
可以使用餅狀圖來可視化目標變量的類計數(shù)。我們將在這里對正在處理的Iris數(shù)據(jù)集進行處理。同樣需要一些輔助函數(shù),這次使用的是groupby和count。
df.groupby('species').count().plot.pie(y='sepallength (cm)')這一類目具有完美的比例,因為我們的數(shù)據(jù)集包含每個類的50個條目。
注意,必須在這里使用y參數(shù)并將其設(shè)置為某個列名。這里使用了萼片長度列,但它可以是任何列,因為所有列的計數(shù)都是相同的。
面積圖
還可以為這個數(shù)據(jù)集創(chuàng)建一個面積圖。圖中包括所有有厘米的維度,但是要刪除“物種”列,因為這些在本例中沒有任何意義。
columns = ['sepal length (cm)','petal length (cm)', 'petal width (cm)', 'sepal width (cm)']df[columns].plot.area()這張圖上的測量值是一個接一個的。這個圖表可以讓你直觀地檢查包含在圖表中的每個度量之間的比率。所有的數(shù)值向之后的條目都有一個增長的趨勢。
條形圖
當顯示條目的平均或計數(shù)時,這是一個很好的圖表類型。可以用它來計算數(shù)據(jù)集中每個類型的每個維度的平均值。為此,需要使用groupby和mean函數(shù)。
df.groupby('species').mean().plot.bar()上圖非常直觀,可以看到不同類型和不同柱的平均測量值存在差異。
箱線圖
箱線圖也是應該用于數(shù)值變量的可視化技術(shù)。它可以為所有的測量列繪制箱線圖(不包括物種列,因為對于這個分類變量來說,箱線圖沒有意義)。
columns = ['sepal length (cm)', 'petallength (cm)', 'petal width (cm)', 'sepal width (cm)']df[columns].plot.box()plt.xticks(rotation='vertical')如圖所示,所有的箱線圖都畫在同一張圖上。由于沒有太多的變量來表示,所以這對我們來說是很好的。注意,必須旋轉(zhuǎn)x標簽,不這樣做標簽的名稱會相互重疊。
柱狀圖
柱狀圖對于任何連續(xù)變量來說都是一個完美的可視化技術(shù)。讓我們從簡單的hist函數(shù)開始。
import matplotlib.pyplot as pltdf.hist()plt.tight_layout()可以看到,這會為數(shù)據(jù)集中的每個數(shù)值變量生成一個柱狀圖。要制作圖表,就不得不添加一些額外的代碼行。這是我調(diào)用tight_layout函數(shù)的第一個導入行和最后一行。如果不添加這個,標簽和子圖名可能會重疊并且不可見。
核密度函數(shù)
與柱狀圖類似,可以使用核密度函數(shù):
df.plot.kde(subplots=True,figsize=(5,9))它給出了與柱狀圖相似的結(jié)果。必須在這里指定一個圖形大小,否則圖形會在垂直方向上被壓得太厲害。
此外,還將subplots參數(shù)設(shè)置為True,因為在默認情況下,所有的列都會顯示在同一個圖表上。
散點矩陣圖
這是我最喜歡的數(shù)據(jù)分析的可視化技術(shù)之一,因為它可以對數(shù)據(jù)集中的所有數(shù)值及其相關(guān)性進行快速分析。
默認情況下,它將為數(shù)據(jù)幀中的所有數(shù)字變量對的散點圖和所有數(shù)字變量的柱狀圖。
from pandas.plotting importscatter_matrixscatter_matrix(df, figsize=(10, 10))你將得到這個繪制精美的平面圖,只用一行代碼就能告訴你很多關(guān)于數(shù)據(jù)集的信息。在這組數(shù)據(jù)中,只需掃一眼就能發(fā)現(xiàn)這組數(shù)據(jù)中的一些變量之間的相關(guān)性。唯一需要設(shè)置的附加參數(shù)是數(shù)字尺寸,這是因為圖中的地塊非常小,默認的圖表尺寸很小。
可視化技術(shù)是你在數(shù)據(jù)分析的修煉道路上必不可少的一關(guān),試試將這些知識應用到你所選擇的數(shù)據(jù)集。把數(shù)據(jù)玩出花,其實很簡單。
留言點贊關(guān)注
我們一起分享AI學習與發(fā)展的干貨
如轉(zhuǎn)載,請后臺留言,遵守轉(zhuǎn)載規(guī)范
總結(jié)
以上是生活随笔為你收集整理的scatter函数_散点图、箱线图、核密度函数……数据分析必备的9种可视化图表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 几本人工智能入门书籍
- 下一篇: php解析验证码,全面解析PHP验证码的