5個可以幫助Pandas進行數(shù)據(jù)預處理的可視化圖表
"一目了然勝過千言萬語。"分析數(shù)據(jù)點的探索性數(shù)據(jù)分析(EDA)是在算法的數(shù)據(jù)建模之前制定假設的正確步驟。

數(shù)據(jù)科學行業(yè)中一個最常見的陷阱是花費數(shù)小時為他們的項目尋找最佳算法,而沒有花足夠的時間首先理解數(shù)據(jù)。
數(shù)據(jù)科學和機器學習項目的結(jié)構(gòu)化方法從項目目標開始。同一組數(shù)據(jù)點可以推斷出一些有意義的信息?;谖覀兯鶎ふ业?,我們需要關(guān)注數(shù)據(jù)的另一個方面。一旦我們明確了目標,我們就應該開始考慮我們需要的數(shù)據(jù)點。這將使我們能夠?qū)W⒂谧钕嚓P(guān)的信息集,而忽略可能不重要的數(shù)據(jù)集。
在現(xiàn)實生活中,從多個來源收集到的大多數(shù)時間數(shù)據(jù)都有空白值、打字錯誤和其他異常。在進行任何數(shù)據(jù)分析之前,清除數(shù)據(jù)是至關(guān)重要的。
在本文中,我將討論五個強大的數(shù)據(jù)可視化選項,它們可以立即提供數(shù)據(jù)特征的感覺。即使在正式建?;蚣僭O測試任務之前,執(zhí)行EDA就可以傳達大量關(guān)于數(shù)據(jù)和特征之間關(guān)系的信息。
第1步-我們將導入pandas、matplotlib、seaborn和NumPy包,我們將使用這些包進行分析。我們需要散點圖、自相關(guān)圖、滯后圖和平行圖。
- import pandas as pd
- import numpy as np
- import matplotlib.pyplot as plt
- from pandas.plotting import autocorrelation_plot
- import seaborn as sns
- from pandas.plotting import scatter_matrix
- from pandas.plotting import autocorrelation_plot
- from pandas.plotting import parallel_coordinates
- from pandas.plotting import lag_plot
第2步-在Seaborn包中,有一個內(nèi)置的小數(shù)據(jù)集。我們將使用"mpg"、"tips"和"attention"數(shù)據(jù)進行可視化。數(shù)據(jù)集是在seaborn中使用load_dataset方法加載的。
- """Download the datasets used in the program """
- CarDatabase= sns.load_dataset("mpg")
- MealDatabase= sns.load_dataset("tips")
- AttentionDatabase= sns.load_dataset("attention")
六邊形分箱圖(hexpin)
我們經(jīng)常使用散點圖來快速掌握變量之間的關(guān)系。只要圖中沒有人口稠密的數(shù)據(jù)點,獲得一個洞察力是非常有幫助的。在下面的代碼中,我們繪制了"mpg"數(shù)據(jù)集中"Horsepower" 和"Acceleration"數(shù)據(jù)點之間的散點圖。
- plt.scatter(CarDatabase.acceleration ,CarDatabase.horsepower,marker="^")
- plt.show()
散點圖中的點密集分布,從中獲取有意義的信息有點困難。

hexpins是解決重疊點散點圖的一個很好的替代方案。每個點不是在hexbin圖中單獨繪制的。在下面的代碼中,我們用相同的數(shù)據(jù)集在"Horsepower" 和"Acceleration"之間繪制一個hexbin。
- CarDatabase.plot.hexbin(x='acceleration', y='horsepower', gridsize=10,cmap="YlGnBu")
- plt.show()
在hexpin圖中可以清楚地推斷"Horsepower" 和"Acceleration"范圍集中值,變量之間呈負線性關(guān)系。六邊形的大小取決于"網(wǎng)格大小"參數(shù)。

熱力圖(Heatmaps)
熱力是我個人最喜歡查看不同變量之間的相關(guān)性。那些在媒體上跟蹤我的人可能已經(jīng)注意到我經(jīng)常使用它。在下面的代碼中,我們將計算seaborn"mpg"數(shù)據(jù)集中所有變量之間的成對相關(guān)性,并將其繪制為熱力圖。
熱力圖是我個人最喜歡查看不同變量之間的相關(guān)性。那些在媒體上跟蹤我的人可能已經(jīng)注意到我經(jīng)常使用它。在下面的代碼中,我們將計算seaborn"mpg"數(shù)據(jù)集中所有變量之間的成對相關(guān)性,并將其繪制為熱力圖。
- sns.heatmap(CarDatabase.corr(), annot=True, cmap="YlGnBu")
- plt.show()
我們可以看到"cylinders" 和 "horsepower" 是密切正相關(guān)的(正如在汽車中所預期的),而重量與加速度成反比。我們只需幾行代碼就可以快速理解所有不同變量之間的指示性關(guān)系。

自相關(guān)圖(Autocorrelation)
自相關(guān)圖是一個快速的試金石測試,以確定數(shù)據(jù)點是否隨機。如果數(shù)據(jù)點遵循某種趨勢,那么一個或多個自相關(guān)將顯著非零。圖中的虛線顯示99%的置信區(qū)間。在下面的代碼中,我們正在檢查"tips"數(shù)據(jù)庫中的總帳單金額是否是隨機的。
- autocorrelation_plot(MealDatabase.total_bill)
- plt.show()
我們可以看到,自相關(guān)圖在所有時間滯后中都非常接近于零,這表明總的_bill數(shù)據(jù)點是隨機的。

當我們按照特定順序繪制數(shù)據(jù)點的自相關(guān)圖時,我們可以看到該圖顯著地非零。
- data = pd.Series(np.arange(12,7000,16.3)) autocorrelation_plot(data)
- plt.show()

滯后圖(Lag)
滯后圖也有助于驗證數(shù)據(jù)集是隨機值集還是遵循某種趨勢。當繪制"tips"數(shù)據(jù)集的"total_bills"值的滯后圖時,就像在自相關(guān)圖中一樣,滯后圖表明它是隨機數(shù)據(jù),到處都有值。
- lag_plot(MealDatabase.total_bill)
- plt.show()

當我們延遲繪制一個非隨機數(shù)據(jù)序列時,如下面的代碼所示,我們得到了一條平滑的線條。
- data = pd.Series(np.arange(-12*np.pi,300*np.pi,10))
- lag_plot(data)
- plt.show()

平行坐標圖(Parallel coordinates)
把我們的大腦包圍起來并將其可視化不僅僅是三維數(shù)據(jù),這一直是一個挑戰(zhàn)。繪制高維數(shù)據(jù)集的平行坐標非常有用。每個尺寸用一條垂直線表示。
在平行坐標系中,"N"等距垂直線表示數(shù)據(jù)集的"N"維度。頂點在第n個軸上的位置對應于該點的第n個坐標。
讓我們考慮一個小樣本數(shù)據(jù),它有五個小部件和大尺寸小部件的五個特性。

垂直線表示小部件的每個功能。一系列連續(xù)的線段代表"小"和"大"小部件的特征值。

下面的代碼繪制了seaborn中"attention"數(shù)據(jù)集的平行坐標。請注意,群集的點看起來更靠近。
- parallel_coordinates(AttentionDatabase,"attention",color=('#556270', '#C7F464'))
- plt.show()

我希望你能開始使用這些現(xiàn)成的繪圖來執(zhí)行探索性的數(shù)據(jù)分析