全文共2286字,預計學習時長9分鐘
圖源:dayliscrawl
作為數據分析對外輸出的關鍵環節,可視化技術可是數據科學家的必備技能之一。各種各樣的圖标花樣繁多,可别被這些炫酷的“造型”吓退了。
本文将介紹九種不同的可視化技術,可以用來分析任何數據集,并且大多數都隻需要少輸入一行代碼。就兩個字,好用!
為簡單起見,使用可從scikit-learn庫加載的Iris數據集,輸入以下代碼:
from sklearn.datasets importload_iris
import pandas as pddata = load_iris()
df = pd.DataFrame(data['data'], columns=data['feature_names'])
df['species'] = data['target']
df.head()
可以看到,我們有一個隻有5列的數據集。使用數據框上的info()函數對其進行快速分析: df.info()
如圖可見,隻有150個條目,在任何一列中都沒有丢失值。
此外,還可以看到前四列有浮點值,而最後一列隻允許出現整數。事實上,根據數據集描述,我們知道“物種”列隻取三個值,每個值代表一種花。
要确認這一點,可以對該列使用unique()函數:
df.species.unique()
array([0, 1, 2])
确實,“物種”列隻取三個值:0、1和2。
了解了數據集的基本信息之後就可以進行可視化了。請注意,如果列中缺少一些值,應該對其進行删除或填充。我們稍後将讨論的一些技術不允許出現丢失值。
從一個簡單的線狀圖開始可視化。選中整個數據框。
df.plot()
如圖可見,它已經根據索引值(x軸)繪制了不同顔色的所有列值。這是不為函數提供x軸參數時的默認行為。
現在看來這個圖不是很有用。如果x軸是一個時間序列,那麼線圖是一個很好的選擇。我們可能會在數據中看到一些時間上的趨勢。
在本例中,隻能看到數據是按“物種”列排序的(圖中紫色的步驟),并且其他列的移動平均值遵循該模式(花瓣長度,特别是紅色标記的花瓣長度)。
這是一種将兩個連續變量之間的關系可視化的完美圖表。通過散點圖來分析萼片長度和萼片寬度的關系。
df.plot.scatter(x='sepal length(cm)', y='sepal width (cm)')
為了生成此圖,需要通過其列名來指定圖的x軸和y軸。這個圖表顯示這兩個變量之間沒有很強的相關性。讓我們來檢查另一對萼片長度和花瓣長度:
df.plot.scatter(x='sepal length(cm)', y='petal length (cm)')
在這種情況下,可以看到當萼片長度增加時,花瓣長度也會增加(當萼片長度大于6厘米時,增加幅度更大)。
可以使用餅狀圖來可視化目标變量的類計數。我們将在這裡對正在處理的Iris數據集進行處理。同樣需要一些輔助函數,這次使用的是groupby和count。
df.groupby('species').count().plot.pie(y='sepallength (cm)')
這一類目具有完美的比例,因為我們的數據集包含每個類的50個條目。
注意,必須在這裡使用y參數并将其設置為某個列名。這裡使用了萼片長度列,但它可以是任何列,因為所有列的計數都是相同的。
還可以為這個數據集創建一個面積圖。圖中包括所有有厘米的維度,但是要删除“物種”列,因為這些在本例中沒有任何意義。
columns = ['sepal length (cm)','petal length (cm)', 'petal width (cm)', 'sepal width (cm)']
df[columns].plot.area()
這張圖上的測量值是一個接一個的。這個圖表可以讓你直觀地檢查包含在圖表中的每個度量之間的比率。所有的數值向之後的條目都有一個增長的趨勢。
當顯示條目的平均或計數時,這是一個很好的圖表類型。可以用它來計算數據集中每個類型的每個維度的平均值。為此,需要使用groupby和mean函數。
df.groupby('species').mean().plot.bar()
上圖非常直觀,可以看到不同類型和不同柱的平均測量值存在差異。
箱線圖也是應該用于數值變量的可視化技術。它可以為所有的測量列繪制箱線圖(不包括物種列,因為對于這個分類變量來說,箱線圖沒有意義)。
columns = ['sepal length (cm)', 'petallength (cm)', 'petal width (cm)', 'sepal width (cm)']
df[columns].plot.box()
plt.xticks(rotation='vertical')
如圖所示,所有的箱線圖都畫在同一張圖上。由于沒有太多的變量來表示,所以這對我們來說是很好的。注意,必須旋轉x标簽,不這樣做标簽的名稱會相互重疊。
柱狀圖對于任何連續變量來說都是一個完美的可視化技術。讓我們從簡單的hist函數開始。
import matplotlib.pyplot as plt
df.hist()
plt.tight_layout()
可以看到,這會為數據集中的每個數值變量生成一個柱狀圖。要制作圖表,就不得不添加一些額外的代碼行。這是我調用tight_layout函數的第一個導入行和最後一行。如果不添加這個,标簽和子圖名可能會重疊并且不可見。
與柱狀圖類似,可以使用核密度函數:
df.plot.kde(subplots=True,figsize=(5,9))
它給出了與柱狀圖相似的結果。必須在這裡指定一個圖形大小,否則圖形會在垂直方向上被壓得太厲害。
此外,還将subplots參數設置為True,因為在默認情況下,所有的列都會顯示在同一個圖表上。
這是我最喜歡的數據分析的可視化技術之一,因為它可以對數據集中的所有數值及其相關性進行快速分析。
默認情況下,它将為數據幀中的所有數字變量對的散點圖和所有數字變量的柱狀圖。
from pandas.plotting importscatter_matrix
scatter_matrix(df, figsize=(10, 10))
你将得到這個繪制精美的平面圖,隻用一行代碼就能告訴你很多關于數據集的信息。在這組數據中,隻需掃一眼就能發現這組數據中的一些變量之間的相關性。唯一需要設置的附加參數是數字尺寸,這是因為圖中的地塊非常小,默認的圖表尺寸很小。
可視化技術是你在數據分析的修煉道路上必不可少的一關,試試将這些知識應用到你所選擇的數據集。把數據玩出花,其實很簡單。
留言點贊關注
我們一起分享AI學習與發展的幹貨
如轉載,請後台留言,遵守轉載規範
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!