python繪圖之seaborn 筆記


前段時間學習了梁斌老師的數據分析(升級版)第三講<探索性數據分析及數據可視化>,由於之前一直比較忙沒有來得及總結,趁今天是周末有點閑暇時間,整理一下筆記:

什么是seaborn

Seaborn是一種基於matplotlib的Python繪圖工具庫。它提供了一種高度交互式界面,便於用戶能夠做出各種有吸引力的,信息量大的統計圖表。

在大多數情況下使用seaborn就能做出很具有吸引力的圖,而使用matplotlib就能制作具有更多特色的圖。應該把Seaborn視為matplotlib的補充,而不是替代物。同時它能高度兼容numpy與pandas數據結構以及scipy與statsmodels等統計模式的可視化。

 

特點:

  • 多個內置主題及顏色主題
  • 可視化單一變量,二位變量用於比較數據
  • 可視化線性回歸模型中的獨立變量及不獨立變量
  • 可視化矩陣數據, 通過聚類算法探究矩陣間的結構
  • 可視化時間序列數據及不確定性的展示
  • 可在分割區域制圖,用於復雜的可視化

 

安裝

pip install seaborn

如果是在Anaconda環境下,打開Anaconda prompt:

conda install seaborn

 

數據集分布可視化

  1 單變量分布                                              seaborn.distplot(abins=Nonehist=Truekde=Truerug=Falsefit=Nonehist_kws=Nonekde_kws=Nonerug_kws=Nonefit_kws=Nonecolor=Nonevertical=Falsenorm_his    t=Falseaxlabel=Nonelabel=Noneax=None)

a : series或一維數組或列表類型的數據

bins :設置矩形條的數量

hist :控制是否顯示條形圖

kde :控制是否顯示核密度估計圖

rug :控制是否顯示觀測的小細條(邊際毛毯)

fit :控制擬合的參數分布圖形

vertical : 顯示正交控制

import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns    //注意:一旦導入了seaborn,matplotlib的默認作圖風格就會被覆蓋成seaborn的格式
sns.set_style("dark") #設置背景色為黑色
%matplotlib inline
// 准備數據
x1 = np.random.normal(size = 1000) x2 = np.random.randint(0, 50, 200)

     直方圖    

sns.distplot(x1, bins=20, kde=True,rug=True)  

    核密度估計(核密度估計是在概率論中用來估計未知的密度函數,屬於非參數檢驗方法之一。)

sns.distplot(x2, hist=False, rug=True)

sns.kdeplot(x2, shade=True)  //shade控制陰影
sns.rugplot(x2)

    擬合參數分布 

x = np.random.gamma(6, size=200)#生成gamma分布的數據 sns.distplot(x, kde=False, fit=stats.gamma);#fit擬合

 

  2 雙變量分布 

// 准備數據
df1 = pd.DataFrame({"x": np.random.randn(200),
                   "y": np.random.randn(200)})

df2 = pd.DataFrame({"x": np.random.randn(200),
                   "y": np.random.randint(0, 100, 200)})

    散布圖    

sns.jointplot(x="x", y="y", data=df1)

    二維直方圖

sns.jointplot(x="x", y="y", data=df_obj1, kind="hex")

  核密度估計 

sns.jointplot(x="x", y="y", data=df_obj1, kind="kde")

  3 數據集中變量間關系可視化 

  seaborn可以一次性兩兩組合多個變量做出多個對比圖,有n個變量,就會做出一個n × n個格子的圖,譬如有2個變量,就會產生4個格子,每個格子就是兩個變量之間的對比圖

  1. var1  vs  var1
  2. var1  vs  var2
  3. var2  vs  var1
  4. var2  vs  var2

  相同的兩個變量之間(var1  vs  var1 和 var2  vs  var2)以直方圖展示,不同的變量則以散點圖展示(var1  vs  var2 和var2  vs  var1)

  要注意的是數據中不能有NaN(缺失的數據),否則會報錯

dataset = sns.load_dataset("tips")
sns.pairplot(dataset)

 

類別數據可視化

 

// 准備數據
data = sns.load_dataset('exercise')

數據類型如下:
 Unnamed: 0  id     diet  pulse    time  kind
0           0   1  low fat     85   1 min  rest
1           1   1  low fat     85  15 min  rest
2           2   1  low fat     88  30 min  rest
3           3   2  low fat     90   1 min  rest
4           4   2  low fat     92  15 min  rest

 

 

 

  1 類別散點圖

sns.stripplot(x="diet", y="pulse", data=data) //數據點會重疊

sns.swarmplot(x="diet", y="pulse", data=data, hue='kind')//數據點不重疊

  2 類別內數據分布

    箱型圖 

sns.boxplot(x="diet", y="pulse", data=data)

  小提琴圖 

sns.violinplot(x="diet", y="pulse", data=data, hue='kind')   // hue 指定子類別

  3 類別內統計圖

    柱狀圖

sns.barplot(x="diet", y="pulse", data=data, hue='kind')

    點圖 

sns.pointplot(x="diet", y="pulse", data=data, hue='kind')

 

 

Seaborn的API:https://stanford.edu/~mwaskom/software/seaborn/api.html#style-frontend

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM