python數據建模常用可視化總結

數據分析的第一個階段數據理解與準備通常都由數據可視化開始,數據分析的最後一般也由數據可視化製作報告結束。因此,掌握數據可視化對於數據分析非常重要。

在數據分析的開始,數據可視化可以幫助我們很快的理解各個變數的特性與分布情況。

本文將結合數據分析的實際需求,對常用的數據可視化進行總結。數據可視化之後,我們一般需要對數據進行基本處理,可以參考這篇:

Keyen:利用python完成大數據建模前期數據準備zhuanlan.zhihu.com圖標

#文章中可視化代碼默認載入常用包:

import seaborn as snsimport pandas as pdimport numpy as npimport matplotlib.pyplot as plt% matplotlib inline

為了展示風格統一、觀看效果好,在進行可視化分析之前,對輸出圖片風格進行統一設置。

本文採取哈佛大學CS109數據科學課程推薦設置:

#哈佛大學Data Science課程CS109推薦的matplotlib 默認設置#可以方便的設置一次,保證整體風格一致from matplotlib import rcParams#圖片大小rcParams["figure.figsize"] = (10, 6)#圖片精度rcParams["figure.dpi"] = 150#線寬rcParams["lines.linewidth"] = 2#是否顯示網格rcParams["axes.grid"] = True#axes 填充顏色為淺灰rcParams["axes.facecolor"] = "#eeeeee"#字體大小為14rcParams["font.size"] = 14#邊框為無色rcParams["patch.edgecolor"] = "none"

用於分析的數據來自數據競賽平台kaggle,為House Price Prediction set:

House Prices: Advanced Regression Techniques

#導入數據df_train = pd.read_csv(".../train.csv")

前期準備工作完成,自此進入數據可視化階段:

1.箱形圖

箱形圖展示的信息為數據的分布情況,展示信息如下圖所示:

圖片來自百度百科

箱形圖主要用於觀察在某一/幾種情況下,數據的分布情況。以案例數據為例,我們可以觀察分類變數土地形狀"LotShape"中不同類別下房屋售價"SalePrice"的分布:

# sns繪製箱線圖ax = sns.boxplot(y = "SalePrice", x = "LotShape", data = df_train)

可以看到,前三個分類中數據存在右側長尾分布的情況,第四個分類非常接近正態分布。房屋售價與土地的不規則程度呈正相關。

如果想進一步細分,可增加hue變數賦值。

此例中,增加土地傾斜度分類"LandSlope":

#給hue變數賦值ax = sns.boxplot(y = "SalePrice", x = "LotShape", hue = "LandSlope",data = df_train)

可以看到,箱形圖被進一步劃分為3*3 即9種情況(理論情況)下的售價分布。但是,最後2種情況數據較少或沒有,說明不規則程度高&高傾斜度的房屋出售量少,與實際中此類土地建設房屋的概率較低預期一致。

2.小提琴圖

小提琴圖作用與箱形圖類似,箱線圖展示了分位數的位置,小提琴圖則展示了任意位置的密度,通過小提琴圖可以知道哪些位置的密度較高。在上圖中,白點是中位數,黑色盒型的範圍是下四分位點到上四分位點,細黑線表示須。外部形狀即為核密度估計。

主要在需要觀察分布密度時使用。

ax= sns.violinplot(y = "SalePrice", x = "LandSlope", data = df_train)

小提琴圖進一步細分與箱形圖類似,均是給hue變數賦值,就不在贅述了。

3.散點圖

散點圖用兩組數據構成多個坐標點,考察坐標點的分布,判斷兩變數之間是否存在某種關聯或總結坐標點的分布模式。散點圖將序列顯示為一組點。值由點在圖表中的位置表示。

通常用於觀察數據關聯方式、及是否有異常值

此例中使用房屋售價與樓上居住面積:

#常用的2變數散點圖plt.scatter(y = "SalePrice", x= "GrLivArea", data = df_train)

可以觀察到,整體而言,房屋售價與樓上居住面積呈正相關。非常可能存在線性關係。這個觀察結果與實際認知中,以面積計算房價基本一致。

此外,右下角還存在著2個非常明顯的異常值。面積最大,但售價很低。

4.條形圖

條形圖主要用於對比或排序展示數據的量/百分比。

在數據分析初期,通常用於數據基本情況的觀察,如缺失情況等。

此例中,將使用條形圖對數據缺失情況進行摸底:

#統計各變數缺失數據總和missingTotal = df_train.isnull().sum()#僅選取有缺失的變數missingExist = missingTotal[missingTotal > 0]#將有缺失的變數按降序排列missingExist.sort_values(inplace=True)#將排好的數據以柱狀圖呈現f, ax = plt.subplots(figsize = (12, 9))missingExist.plot.bar()

以升序排列數據缺失情況

可以看到,有缺失數據的變數共有19個,其中後6個變數存在大比例缺失。

之後,我們就可以根據數據的缺失比例、缺失的原因以及數據的類型進行有針對性的工作。

5.直方圖

直方圖通常用於觀察數據的分布是否符合正態分布。

ax = sns.distplot(df_train["SalePrice"])

房屋售價分布為右長尾型的正偏態

因變數房屋售價的分布為正偏態,如果需要進行線性回歸分析,則需要將房屋售價進行對數轉換處理。


推薦閱讀:

[賽車知識]F1遙感數據分析——整理自網路
隨機森林——二元分類的利器之Kaggle初體驗Titanic: Machine Learning from Disaster
numpy+pandas除了效率對比excel還有什麼功能上的優勢嗎?
互聯網數據崗位定位與分工

TAG:数据可视化 | 数据分析 |