import pandas as pd import numpy as np import seaborn as sns import matplotlib import matplotlib.pyplot as plt from scipy.stats import skew from scipy.stats.stats import pearsonr %config InlineBackend.figure_format = 'retina' %matplotlib inline
一、kdeplot(核密度估計圖)
核密度估計(kernel density estimation)是在概率論中用來估計未知的密度函數,屬於非參數檢驗方法之一。通過核密度估計圖可以比較直觀的看出數據樣本本身的分布特征。
x=np.random.randn(100) #隨機生成100個符合正態分布的數
sns.kdeplot(x)
sns.kdeplot(x,cut=0) #cut:參數表示繪制的時候,切除帶寬往數軸極限數值的多少(默認為3)
sns.kdeplot(x,cumulative=True)#cumulative :是否繪制累積分布
sns.kdeplot(x,cumulative = True,shade=True,color = 'r') #shade:若為True,則在kde曲線下面的區域中進行陰影處理,color控制曲線及陰影的顏色
sns.kdeplot(x,cumulative = True,shade=True,color = 'r',vertical = True)#vertical:表示以X軸進行繪制還是以Y軸進行繪制
二元Kde圖像
y=np.random.randn(100) sns.kdeplot(x,y,shade=True,cbar = True)#cbar:參數若為True,則會添加一個顏色棒(顏色幫在二元kde圖像中才有)
二、distplot()
displot()集合了matplotlib的hist()與核函數估計kdeplot的功能,增加了rugplot分布觀測條顯示與利用scipy庫fit擬合參數分布的新穎用途。
直方圖又稱質量分布圖,它是表示資料變化情況的一種主要工具。用直方圖可以解析出資料的規則性,比較直觀地看出產品質量特性的分布狀態,對於資料分布狀況一目了然,便於判斷其總體質量分布情況。直方圖表示通過沿數據范圍形成分箱,然后繪制條以顯示落入每個分箱的觀測次數的數據分布。
sns.distplot(x,color="g")
通過hist和kde參數調節是否顯示直方圖及核密度估計(默認hist,kde均為True)
fig,axes = plt.subplots(1,3) sns.distplot(x,ax = axes[0]) #左圖 參數ax= 把圖形放在哪個框里 sns.distplot(x,hist = False ,ax = axes[1]) #中圖 sns.distplot(x,kde = False, ax = axes[2]) #右圖
bins:int或list,控制直方圖的划分
fig,axes = plt.subplots(1,2) sns.distplot(x,kde = False,bins = 20,ax = axes[0]) #kde=False 縱軸表示的時頻數不再是頻率 sns.distplot(x,kde = False,bins = [x for x in range(4)],ax = axes[1])
rug:控制是否生成觀測數值的小細條
fig,axes = plt.subplots(1,2) sns.distplot(x,rug=True,ax = axes[0]) #左圖 sns.distplot(x,ax = axes[1]) #右圖
fit:控制擬合的參數分布圖形,能夠直觀地評估它與觀察數據的對應關系(黑色線條為確定的分布)
from scipy.stats import * sns.distplot(x,hist = False,fit =norm) #fit = norm 擬合正態分布
? hist_kws, kde_kws, rug_kws, fit_kws參數接收字典類型,可以自行定義更多高級的樣式
sns.distplot(x,kde_kws={"label":"KDE"},vertical=True,color="y")
?norm_hist:若為True, 則直方圖高度顯示密度而非計數(含有kde圖像中默認為True)
fig,axes=plt.subplots(1,2) sns.distplot(x,norm_hist=True,kde=False,ax=axes[0]) #左圖 sns.distplot(x,kde=False,ax=axes[1]) #右圖