數據可視化實例 seaborn(1)
來自專欄 數據分析從0到1
先了解一下seaborn的大概
可以看到seaborn基礎分為三個部分,但是不打算按這三個部分來講解,那樣太無趣了,遇直接看案例,不會的再去查。
使用上篇文章提到的對比分析和分布分析。
Charles:數據分析的基本思路開始:
數據來源,seaborn里自己的包,tips。import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns%matplotlib inlineplt.rcParams[font.sans-serif]=[SimHei] plt.rcParams[axes.unicode_minus]=False 載入數據源:tips=sns.load_dataset(tips)tips.head()
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 21 10.34 1.66 Male No Sun Dinner 32 21.01 3.50Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 24 24.59 3.61 Female No Sun Dinner 4
這個數據是某商店顧客給服務員消費的情況,數據包括顧客消費的總金額,消費金額,性別,是否吸煙,消費日期,消費時間,消費人數。
先看著數據的大體情況:describe()
從244個統計數據來看,可以看顧客總消費最多為244美元,最少僅為3美元,平均消費19.7美元,給小費的情況最少1美元,平均給消費將近3美元。
1.對比分析
1.我們想看一下在不同日期顧客不同性別消費的總金額的差別。
#設置畫圖的畫板風格,可以都試一下。white dark whitegrid darkgrid tickssns.set_style(white)fig=plt.figure(figsize=(10,6))ax1=fig.add_subplot()sns.boxplot(x=day,y=total_bill,data=tips)ax2=fig.add_subplot(212)sns.boxplot(x=day,y=total_bill,data=tips,hue=sex)#hue加上第二維度
可以看到男性的消費總金額普遍比女性多,周末的消費金額普遍比工作日多。
箱線圖就是這麼使用,當然我們也可以看一下吸煙者與非吸煙者的差別。不同維度給消費的差別。
2.stripplot 顯示分類變數級別中某些定量變數的值。
sns.stripplot(x=day,y=total_bill,data=tips,jitter=True,size=10)#jitter=True當數據重合較多的時候,可以用這個調整間距
跟箱線圖一樣分析。
2.分布分析
先看最簡單的,我們直接瞅瞅消費總金額和小費金額有沒有線性關係,並且他們的分布是怎樣的。
sns.jointplot(x=tip,y=total_bill,data=tips)
可以看到他們的皮爾遜相關係數為0.68,消費總金額和小費金額呈顯著相關。
當然我們還可以畫高級一點的,對中間的散點圖和上面左面和右面的直方圖分別做修改。
from scipy import statsg=sns.JointGrid(x=total_bill,y=tip,data=tips)#創建繪圖表格區域,設置X軸,y軸#設置中間的圖表g.plot_joint(plt.scatter,color=m,edgecolor=white)#選用散點圖#edgecolor=white點的邊框顏色g.ax_marg_x.hist(tips[total_bill],color=r,alpha=.5,bins=np.arange(0,60,3))#設置X軸上的直方圖g.ax_marg_y.hist(tips[tip],color=r,alpha=.5,bins=np.arange(0,10,1),orientation=horizontal)#orientation=horizontal設置了一個水平參數g.annotate(stats.pearsonr)#選擇顯示相關係數
或者把中間的散點圖變成密度圖,上面和左面的坐標軸變成概率分布圖。
from scipy import statsg=sns.JointGrid(x=total_bill,y=tip,data=tips)#創建繪圖表格區域,設置X軸,y軸#設置中間的圖表g.plot_joint(sns.kdeplot,color=m,edgecolor=white)#選用散點圖g.plot_marginals(sns.distplot,kde=True)#直接顯示上面和左面,不用分別設置。
以上為第一節內容。
推薦閱讀:
※可視化 服裝3D結構設計(製版)
※06.大雜燴 線性方程組 逆矩陣 列空間 零空間 非方陣
※畫給設計師看的營銷大法
※【R可視化】將薪比薪
※一張圖看懂:比特幣在世界各地合法性