數據可視化(三)- Seaborn簡易入門

本文內容來源:https://www.dataquest.io/mission/133/creating-compelling-visualizationshtml

本文數據來源:http://www.cdc.gov/nchs/nsfg.htmapi

本文摘要:介紹一個以matplotlib爲底層,更容易定製化做圖的庫Seabornfrontend

 

Seaborn實際上是在matplotlib的基礎上進行了更高級的API封裝,從而使得做圖更加容易,在大多數狀況下使用seaborn就能作出很具備吸引力的圖,而使用matplotlib就能製做具備更多特點的圖。應該把Seaborn視爲matplotlib的補充,而不是替代物。函數

 

安裝seaborn的方法spa

pip install seaborn

原始數據展示(這是一份家庭調查的數據,preglngth - 懷孕周長, birthord - 孕婦的第幾個孩子, birthwgt_lb1 - 嬰兒重量(單位:磅), birthwgt_oz1 - 嬰兒重量(單位:盅司), agepreg - 孕婦在分娩時的年齡)設計

import pandas as pd

births = pd.read_csv('births.csv')

Image 002

直方圖

在上一篇文章中已經使用過pandas.DataFrame.hist()來製做直方圖了,如今用seaborn.distplot()來製做直方圖,觀察之間的差別3d

# 對上表的prglngth列作一個直方圖

import matplotlib.pyplot as plt

import seaborn as sns #要注意的是一旦導入了seaborn,matplotlib的默認做圖風格就會被覆蓋成seaborn的格式

%matplotlib inline  # 爲了在jupyter notebook裏做圖,須要用到這個命令

sns.distplot(births['prglngth'])

sns.plt.show()

Image 003

能夠看到與使用matplotlib做的直方圖最大的區別在於有一條密度曲線(KDE),能夠經過設置參數去掉這條默認的曲線code

sns.distplot(births['prglngth'], kde=False)

sns.plt.show()

Image 004

 

那麼Pandas與Seaborn之間有什麼區別呢?htm

其實二者都是使用了matplotlib來做圖,可是有很是不一樣的設計差別blog

  1. 在只須要簡單地做圖時直接用Pandas,但要想作出更加吸引人,更豐富的圖就可使用Seaborn
  2. Pandas的做圖函數並無太多的參數來調整圖形,因此你必需要深刻了解matplotlib
  3. Seaborn的做圖函數中提供了大量的參數來調整圖形,因此並不須要太深刻了解matplotlib
  4. Seaborn的API:https://stanford.edu/~mwaskom/software/seaborn/api.html#style-frontend

 

# 對上圖進行更多的配置

sns.set_style('dark')                # 該圖使用黑色爲背景色

sns.distplot(births['prglngth'], kde=False) # 不顯示密度曲線

sns.axlabel('Birth number', 'Frequency') # 設置X軸和Y軸的座標含義

sns.plt.show()

Image 001

 

箱型圖

# 以birthord做爲x軸,agepreg做爲y軸,作一個箱型圖

sns.boxplot(x='birthord', y='agepreg', data=births)

sns.plt.show()

Image 005

 

多變量做圖

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(缺失的數據),不然會報錯

sns.pairplot(births, vars=['agepreg', 'prglngth','birthord'])

sns.plt.show()

wps409B.tmp

相關文章
相關標籤/搜索