Visualization of seaborn
seaborn[1]是一個建立在matplot之上,可用於制作豐富和非常具有吸引力統計圖形的Python庫。Seaborn庫旨在將可視化作為探索和理解數據的核心部分,有助於幫人們更近距離了解所研究的數據集。無論是在kaggle官網各項算法比賽中,還是互聯網公司的實際業務數據挖掘場景中,都有它的身影。
在本次介紹的這個項目中,我們將利用seaborn庫對數據集進行分析,分別展示不同類型的統計圖形。
首先,我們將導入可視化所需的所有必要包,我們將使用到的幾個包:
Numpy
pandas
matplotlib
seaborn
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns tips = pd.read_csv('tips.csv') tips.head()
各屬性相關性
# 相關性 tips.corr()
Out[2]: total_bill tip size total_bill 1.000000 0.675734 0.598315 tip 0.675734 1.000000 0.489299 size 0.598315 0.489299 1.000000
pair plot圖
#相關性圖 很壯觀 sns.pairplot(tips)
看圖說話:這些圖展現了數據集中消費總額、小費金額以及顧客數量三個特征(變量)之間的聯系。
#相關性圖,和某一列的關系 sns.pairplot(tips ,hue ='sex', markers=["o", "s"])
# 相關性熱力圖 sns.heatmap(tips.corr())
看圖說話:熱力圖可用來顯示兩變量之間的相關性,在這里兩變量間對應的矩形框的顏色越淺,代表兩者之間越具有相關性。
# 分層相關性熱力圖 sns.clustermap(tips.corr())
g = sns.PairGrid(tips)
g.map_diag(sns.distplot)
g.map_upper(plt.scatter)
g.map_lower(sns.kdeplot)
看圖說話:這個厲害了。在pair grid圖中,你可以根據自己需求,在這里呈現上述介紹的各種類型的圖形。
單個屬性的分布
dist plot圖
sns.distplot(tips['total_bill'])
sns.distplot(tips['total_bill'],kde = False)
看圖說話:上圖顯示,顧客在餐廳的消費總金額主要是在5-35的范圍內分布的。
count plot圖
sns.countplot(x = 'smoker', data = tips)
看圖說話:上圖顯示,來餐廳就餐的顧客,不抽煙者比會抽煙者多
sns.countplot(x = 'size', data = tips)
看圖說話:上圖顯示,2個人來餐廳就餐的總次數多一些。
rug plot圖
sns.rugplot(tips['total_bill'])
看圖說話:上圖呈現的是,顧客就餐消費總額在各個值上的邊緣分布。
kde plot圖
sns.kdeplot(tips['total_bill'], shade=True)
看圖說話:KDE代表內核密度估計,它也顯示了各個消費總金額數值的統計分布。
兩兩屬性的相關性圖
joint plot圖
sns.jointplot(x = 'total_bill', y = 'tip', data = tips)
看圖說話:上圖顯示,顧客主要消費水平在10-30遠之間,而此時,對應給侍者小費的錢在1-5元之間。
sns.jointplot(x = 'total_bill', y = 'tip', data = tips ,kind = 'hex')
另一種清晰地可視化視圖,顏色的深度代表頻次。
sns.jointplot(x = 'total_bill', y = 'tip', data = tips ,kind = 'reg')
看圖說話:通過做一條簡單的回歸線,它表明了小費的金額是隨着總賬單金額的增加而增加的。
sns.jointplot(x = 'total_bill', y = 'tip', data = tips ,kind = 'kde')
另一種可視化統計圖:某個區域越暗,表明這個區域對應的頻次越多。
box plot圖
sns.boxplot(x = 'day', y= 'total_bill', data = tips)
看圖說話:上圖顯示大部分賬單是在周六和周日支付的。
sns.boxplot(x = 'day', y= 'total_bill', data = tips, hue = 'sex')
看圖說話:在上面的圖表中你可以看到,在周六時,女性買單的次數會比男性多。(難道是因為買買買,男性付了好多錢,女性為了彌補男性的心里落差,然后請吃飯?哈哈)
violin plot
sns.violinplot(x = 'day', y= 'total_bill', data = tips)
看圖說話:voilin plot和box plot很相似,但它結合了box plot圖和密度痕跡。
sns.violinplot(x = 'day', y= 'total_bill', data = tips, hue = 'sex', split = True)
看圖說話:增加了性別的區分
strip plot圖
sns.stripplot(x = 'day', y = 'total_bill', data = tips)
看圖說話:這幅圖呈現的是周四、周五、周六和周日這四天,顧客消費總額的散點圖。
sns.stripplot(x = 'day', y = 'total_bill', data = tips, jitter= True,hue = 'sex', dodge = True)
看圖說話:和上圖一樣,只不過對性別進行了區別。
swarm plot圖
sns.swarmplot(x = 'day', y = 'total_bill', data = tips)
看圖說話:Swarn plot和stripplot比較類似,但Swarn plot的不同之處在於它不會重疊數據點。
factor plot圖
sns.factorplot(x = 'day', y = 'total_bill', kind = 'box', data = tips)
看圖說話:在factorplot圖中,你可以給出任何你需要顯示的圖形。