天天看點

用seborn的函數distplot(), jointplot(), pairplt()對資料的單變量分析繪圖

1.用seaborn的distplot()函數繪制直方圖。參數kde = True時會把分布曲線也畫出來。

如下代碼所示是繪制标準正态分布的分布圖

1 import seaborn as sns
2 import numpy as np
3 import matplotlib as mpl
4 import matplotlib.pyplot as plt
5 
6 
7 x = np.random.normal(size=1000)
8 sns.distplot(x)
9 plt.show()      

2.對于兩組變量關系,可以用散點圖畫出他們的分布。函數是jointplot()。

如下代碼是繪出二維正态分布的散點圖

1 import seaborn as sns
 2 import numpy as np
 3 import pandas as pd
 4 import matplotlib as mpl
 5 import matplotlib.pyplot as plt
 6 
 7 
 8 data = np.random.multivariate_normal(mean=[0, 0], cov=[[1, 0], [0, 1]], size=1000)  #1000組标準二維正态分布
 9 df = pd.DataFrame(data=data, columns=["x", "y"])
10 sns.jointplot(x="x", y="y", kind="hex", data=df)
11 plt.show()      

  data是一個長度為1000的ndarray類型,每個元素又是一個二維向量,分别是二維正态分布的兩個随機變量的樣本值。是以可以當成是1000*2的矩陣

  利用DataFrame函數将ndarray變成DataFrame結構,然後利用jointplot()畫出散點圖。其中如果kind=“scatter”則是普通散點圖,這裡為了避免樣本太多,普通的散點圖可能連成一片看不出分布差異,

用kind=“hex"來畫,運作結果如下

 3.最強大的函數應該是pairplot函數,它能對DataFram的屬性兩兩配對繪制散點圖,并且對某一屬性繪制直方圖

如下代碼所示,iris是seaborn内置資料集

1 import seaborn as sns
2 import numpy as np
3 import pandas as pd
4 import matplotlib as mpl
5 import matplotlib.pyplot as plt
6 
7 iris = sns.load_dataset("iris")   #seaborn内置資料集,DaraFram類型
8 sns.pairplot(iris, kind="hex")
9 plt.show()      

運作結果如下