02.02 kaggle實戰之數據可視化

最近需要做一個kaggle上面的比賽,在kaggle上面也看過很多的kernel,這是kaggle上面的一篇筆記,覺得寫的挺不錯的,就和大家一起分享一下,kaggle上面有很多的大神,如果做大數據的話,還是可以多去上面學學,如果有什麼好的建議和想法大家可以一起交流一下。

本篇教程的是參考kaggle的一篇筆記,https://www.kaggle.com/benhamner/python-data-visualizations/notebook代碼是基於python3的,需要pandas、matplotlib、seaborn基礎,數據是使用鳶尾花的150組數據,鳶尾花數據下載地址http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data。

鳶尾花數據描述:一共有150組鳶尾花數據,一共有三種種類,分別是Iris-virginica、Iris-setosa、Iris-versicolor每種鳶尾花都是50組數據,每一組鳶尾花一共有四個屬性分別是萼片長度(SepalLengthCm)、萼片寬度(SepalWidthCm)、花瓣長度(PetalLengthCm)、花瓣寬度(PetalWidthCm),單位都是cm。

1、導入相關庫查看前5行數據

#encoding:utf-8
import pandas as pd
#由於seaborn庫會輸出很多警告,我們將忽視警告的輸出
import warnings
warnings.filterwarnings("ignore")
import seaborn as sns
import matplotlib.pyplot as plt
#設置seaborn的風格
sns.set(style="white",color_codes=True)
if __name__ == "__main__":
#使用pandas讀取鳶尾花數據
data = pd.read_csv("iris.csv")
#查看前5行數據,默認n=5
print(data.head())

kaggle實戰之數據可視化

2、統計數據種類的分佈情況

print(data["Species"].value_counts())

kaggle實戰之數據可視化

通過pandas來統計某一列的數據分佈情況,通過上面的數據可以發現,一共有三種不同種類的鳶尾花,每種種類的都是50個。

3、根據鳶尾花的萼片長度和寬度屬性繪製散點圖

#設置繪圖的種類,scatter表示散點圖,x軸使用萼片的長度,y軸使用萼片的寬度
data.plot(kind="scatter",x="SepalLengthCm",y="SepalWidthCm")
plt.show()

kaggle實戰之數據可視化

4、使用seaborn繪製散點圖

使用seaborn的jointplot方法在繪製散點圖的時候,可以繪製雙變量(萼片長度和寬度)的散點圖和單變量的直方圖。

sns.jointplot(x="SepalLengthCm",y="SepalWidthCm",data=data,size=6)
plt.show()

kaggle實戰之數據可視化

5、對於不同種類的鳶尾花使用不同顏色進行標記

face = sns.FacetGrid(data,hue="Species",size=5)
face.map(plt.scatter,"SepalLengthCm","SepalWidthCm")
face.add_legend()
plt.show()

kaggle實戰之數據可視化

6、繪製箱形圖

根據鳶尾花的長度繪製箱形圖

sns.boxplot(x="Species",y="SepalLengthCm",data=data)
plt.show()

kaggle實戰之數據可視化

7、在箱形圖的基礎上繪製點

ax = sns.boxplot(x="Species",y="SepalLengthCm",data=data)
#在箱形圖的基礎上進行描點,設置jitter為True保證點不會落在同一條直線上
ax = sns.stripplot(x="Species",y="SepalLengthCm",data=data,jitter=True,edgecolor="gray")
plt.show()

kaggle實戰之數據可視化

8、繪製小提琴圖

小提琴圖又稱核密度圖,它是結合了箱形圖和核密度圖的圖,將箱形圖和密度圖用一個圖來顯示,因為形狀很像小提琴,所以被稱作小提琴圖。

sns.violinplot(x="Species",y="SepalLengthCm",data=data,gridsize=6)
plt.show()

kaggle實戰之數據可視化

9、繪製核密度估計圖

核密度估計(kernel density estimation)是在概率論中用來估計未知的密度函數,屬於非參數檢驗方法之一,用於研究單變量關係。

face = sns.FacetGrid(data,hue="Species",size=6)
face.map(sns.kdeplot,"SepalLengthCm")
face.add_legend()
plt.show()

kaggle實戰之數據可視化

10、繪製雙變量的散點圖

對角線是直方圖,其它的部分是兩個變量之間的散點圖

#刪除id列
sns.pairplot(data.drop("id",axis=1),hue="Species",size=2)
plt.show()

kaggle實戰之數據可視化

#將對角線的直方圖替換成核密度估計曲線圖
sns.pairplot(data.drop("id",axis=1),hue="Species",size=2,diag_kind="kde")
plt.show()

kaggle實戰之數據可視化

11、使用pandas繪製每一個變量的箱形圖

data.drop("id",axis=1).boxplot(by="Species",figsize=(12,6))
plt.show()

kaggle實戰之數據可視化

12、繪製安德魯斯曲線

安德魯斯曲線將每個樣本的屬性值轉化為傅里葉序列的係數來繪製曲線,將不同種類的鳶尾花用不同的顏色標記來可視化聚類數據,屬於相同類別的樣本曲線通常更加接近並構成了更大的數據結構。

from pandas.tools.plotting import andrews_curves 

andrews_curves(data.drop("id",axis=1),"Species")
plt.show()

kaggle實戰之數據可視化

13、平行座標

平行座標是一種多維的可視化技術,平行座標,每個點用線段連接,每一條垂直的線代表一個特徵。一組連接的線段表示一個數據點。

from pandas.tools.plotting import parallel_coordinates
parallel_coordinates(data.drop("id",axis=1),"Species")
plt.show()

kaggle實戰之數據可視化

14、徑向座標可視化

radviz圖也是一種多維的可視化圖。它是基於基本的彈簧壓力最小化算法,它將數據集的特徵映射到二維目標空間單位圓中的一個點,點的位置由系在點上的特徵決定。將實例投入到圓的中心,特徵會朝園中此實例的位置(實例對應的歸一化數值)“拉”實例。

from pandas.tools.plotting import radviz
radviz(data.drop("id",axis=1),"Species")
plt.show()

kaggle實戰之數據可視化


分享到:


相關文章: