1. 程式人生 > >kaggle實戰之資料視覺化

kaggle實戰之資料視覺化

鳶尾花資料描述:一共有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())

2、統計資料種類的分佈情況

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

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

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

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


4、使用seaborn繪製散點圖

使用seaborn的jointplot方法在繪製散點圖的時候,可以繪製雙變數(萼片長度和寬度)的散點圖和單變數的直方圖。
    sns.jointplot(x="SepalLengthCm",y="SepalWidthCm",data=data,size=6)
    plt.show()


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

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


6、繪製箱形圖

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

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


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()


8、繪製小提琴圖

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

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


9、繪製核密度估計圖

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

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

10、繪製雙變數的散點圖

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

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

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

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

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

12、繪製安德魯斯曲線

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

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

13、平行座標

平行座標是一種多維的視覺化技術,平行座標,每個點用線段連線,每一條垂直的線代表一個特徵。一組連線的線段表示一個數據點。
    from pandas.tools.plotting import parallel_coordinates
    parallel_coordinates(data.drop("id",axis=1),"Species")
    plt.show()

14、徑向座標視覺化

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

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