Python數據分析:seaborn

seaborn是python中的一個很是強大的數據可視化庫,它集成了matplotlib,下圖爲seaborn的官網,若是遇到疑惑的地方能夠到官網查看。http://seaborn.pydata.org/ 在這裏插入圖片描述
從官網的主頁咱們就能夠看出,seaborn在數據可視化上真的很是強大。python

1.首先咱們仍是須要先引入庫,不過此次要用到的python庫比較多。dom

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns

2.sns.set_style():不傳入參數用的就是seaborn默認的主題風格,裏面的參數共有五種函數

  • darkgrid
  • whitegrid
  • dark
  • white
  • ticks

我比較習慣用whitegrid。 在這裏插入圖片描述spa

3.下面說一下seaborn裏面的調色板,咱們能夠用sns.color_palette()獲取到這些顏色,而後用sns.palplot()將這些色塊打印出來。color_palette()函數還能夠傳入一些參數設計

sns.palplot(sns.color_palette("hls",n))#顯示出n個不一樣顏色的色塊
sns.palplot(sns.color_palette("Paired",2n))#顯示出2n個不一樣顏色的色塊,且這些顏色兩兩之間是相近的
sns.palplot(sns.color_palette("color"))#由淺入深顯示出同一顏色的色塊
sns.palplot(sns.color_palette("color_r"))##由深刻淺顯示出同一顏色的色塊
sns.palplot(sns.color_palette("cubehelix",n))#顯示出n個顏色呈線性變化的色塊
sns.palplot(sns.cubehelix_palette(k,start=m,rot=n))#顯示出k個start(0,3)爲m,rot(-1,1)爲n的呈線性變化的色塊
sns.palplot(sns.light_palette("color"))#將一種顏色由淺到深顯示
sns.palplot(sns.dark_palette("color"))#將一種顏色由深到淺顯示
sns.palplot(sns.dark_palette("color",reverse=bool))#reverse的值爲False,則將一種顏色由深到淺顯示;若爲True,則將一種顏色由淺到深顯示

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述
4.sns.kdeplot(x,y,cmap=pal):繪製核密度分佈圖。在這裏插入圖片描述
5.sns.distplot(x,kde=bool,bins=n):kde表明是否進行核密度估計,也就是是否繪製包絡線,bins指定繪製的條形數目。在這裏插入圖片描述
6.根據均值和協方差繪圖:code

首先咱們要根據均值和協方差獲取數據orm

mean,cov = [m,n],[(a,b),(c,d)]#指定均值和協方差
data = np.random.multivariate_normal(mean,cov,e)#根據均值和協方差獲取e個隨機數據
df = pd.DataFrame(data,columns=["x","y"])#將數據指定爲DataFrame格式
df

在這裏插入圖片描述
而後繪製圖像排序

sns.jointplot(x="x",y="y",data=df)    #繪製散點圖

在這裏插入圖片描述
sns.jointplot(x="x",y="y",data=df)能夠繪製出x和y單變量的條形圖以及x與y多變量的散點圖。圖片

7.在jointplot()函數中傳入kind=「hex」,可以在數據量比較大時讓咱們更清晰地看到數據的分佈比重。ip

x,y = np.random.multivariate_normal(mean,cov,2000).T
with sns.axes_style("white"):
    sns.jointplot(x=x,y=y,kind="hex",color="c")

繪製出的圖像以下
在這裏插入圖片描述
8.sns.pairplot(df):繪製出各變量之間的散點圖與條形圖,且對角線均爲條形圖。在這裏插入圖片描述
在這裏咱們能夠先使用df = sns.load_dataset("")將seaborn中本來帶有的數據讀入或用pandas讀取。

9.繪製迴歸分析圖:這裏能夠用兩個函數regplot()lmplot(),用regplot()更好一些。在這裏插入圖片描述
若是兩個變量不適合作迴歸分析,咱們能夠傳入x_jitter()y_jitter()讓x軸或y軸的數據輕微抖動一些,得出較爲準確的結果。在這裏插入圖片描述
10.sns.stripplot(x="",y="",data=df,jitter=bool):繪製一個特徵變量中的多個變量與另外一變量關係的散點圖,jitter控制數據是否抖動。在這裏插入圖片描述
11.sns.swarmplot(x="",y="",hue="",data=df):繪製頁狀散點圖,hue指定對數據的分類,因爲在大量數據下,上面的散點圖會影響到咱們對數據的觀察,這種圖可以更清晰地觀察到數據分佈。在這裏插入圖片描述在這裏插入圖片描述
12.sns.boxplot(x="",y="",hue="",data=df,orient="h"):繪製盒形圖,hue一樣指定對數據的分類。在統計學中有四分位數的概念,第一個四分位記作Q1,第二個四分位數記作Q2,第三個四分位數記作Q3,Q3-Q1獲得的結果Q叫作四分位距,若是一個數n,n的範圍是n<Q1-1.5Q或n>Q3+1.5Q,則稱n爲離羣點,也就是不符合數據規範的點,利用盒形圖能夠很清晰地觀察到離羣點。若是傳入orient則畫出的盒形圖是橫向的。在這裏插入圖片描述
13.sns.violinplot(x="",y="",data=df,hue="",split=bool):繪製小提琴圖,split表示是否將兩類數據分開繪製,若是爲True,則不分開繪製,默認爲False。在這裏插入圖片描述在這裏插入圖片描述
14.還能夠將頁狀散點圖和小提琴圖在一塊兒繪製,只需將兩個繪圖命令在這裏插入圖片描述
inner="None"表示去除小提琴圖內部的形狀。
15.sns.barplot(x="",y="",hue="",data=df):按hue的數據分類繪製條形圖。在這裏插入圖片描述
16.sns.pointplot(x="",y="",hue="",data=df):繪製點圖,點圖能夠更好的描述數據的變化差別。在這裏插入圖片描述
17.咱們還能夠傳入其餘參數:

sns.pointplot(x="class",y="survived",hue="sex",data=titanic,
             palette={"male":"#02ff96","female":"#0980e6"},#指定曲線的顏色
             markers=["s","d"],linestyles=["-","-."])#指定曲線的點型和線型

繪製出的圖像以下
在這裏插入圖片描述
18.sns.factorplot(x="", y="", hue="", data=df):繪製多層面板分類圖。

sns.factorplot(x="day",y="total_bill",hue="smoker",data=tips)

繪製的圖像以下
在這裏插入圖片描述
19.sns.factorplot(x="",y="",hue="",data=df,kind=""):kind中指定要畫圖的類型。

sns.factorplot(x="day",y="total_bill",hue="smoker",data=tips,kind="bar")

在這裏插入圖片描述

sns.factorplot(x="day",y="total_bill",hue="smoker",col="time",data=tips,kind="swarm")

在這裏插入圖片描述

sns.factorplot(x="time",y="total_bill",hue="smoker",col="day",data=tips,kind="box",size=5,aspect=0.8)    #aspect指定橫縱比

在這裏插入圖片描述
20.sns.factorplot()的參數:

  • x,y,hue 數據集變量 變量名。
  • date 數據集 數據集名。
  • row,col 更多分類變量進行平鋪顯示 變量名。
  • col_wrap 每行的最高平鋪數 整數。
  • estimator 在每一個分類中進行矢量到標量的映射 矢量。
  • ci 置信區間 浮點數或None。
  • n_boot 計算置信區間時使用的引導迭代次數 整數。
  • units 採樣單元的標識符,用於執行多級引導和重複測量設計 數據變量或向量數據。
  • order, hue_order 對應排序列表 字符串列表。
  • row_order, col_order 對應排序列表 字符串列表。
  • kind : 可選:point 默認, bar 柱形圖, count 頻次, box 箱體, violin 提琴, strip 散點,swarm 分散點 size 每一個面的高度(英寸) 標量 aspect 縱橫比 標量 orient 方向 "v"/"h" color 顏色 matplotlib顏色 palette 調色板 seaborn顏色色板或字典 legend hue的信息面板 True/False legend_out 是否擴展圖形,並將信息框繪製在中心右邊 True/False share{x,y} 共享軸線 True/False。

21.sns.FacetGrid():這是一個很重要的繪圖函數。

g = sns.FacetGrid(tips,col="time")
g.map(plt.hist,"tip")

在這裏插入圖片描述

g = sns.FacetGrid(tips,col="sex",hue="smoker",size=5,aspect=1)
g.map(plt.scatter,"total_bill","tip",alpha=0.3,s=100)#alpha指定點的透明度,s指定點的大小
g.add_legend()#添加圖例

在這裏插入圖片描述

g = sns.FacetGrid(tips,col="day",size=4,aspect=0.8)
g.map(sns.barplot,"sex","total_bill")

在這裏插入圖片描述

22.sns.PairGrid():將各變量間的關係成對繪製。

iris = sns.load_dataset("iris")
g = sns.PairGrid(iris)
g.map(plt.scatter)

在這裏插入圖片描述
23.g.map_diag()g.map_offdiag():繪製對角線和非對角線的圖形

g = sns.PairGrid(iris)
g.map_diag(plt.hist)    #指定對角線繪圖類型
g.map_offdiag(plt.scatter)    #指定非對角線繪圖類型

在這裏插入圖片描述

g = sns.PairGrid(iris, hue="species")
g.map_diag(plt.hist)
g.map_offdiag(plt.scatter)
g.add_legend()

在這裏插入圖片描述

g = sns.PairGrid(iris, vars=["sepal_length", "sepal_width"], hue="species",size=3)
g.map(plt.scatter)

在這裏插入圖片描述

g = sns.PairGrid(tips, hue="size", palette="GnBu_d")
g.map(plt.scatter, s=50, edgecolor="white")
g.add_legend()

在這裏插入圖片描述
24.sns.heatmap():繪製熱度圖,熱度圖能夠很清楚看到數據的變化狀況以及變化過程當中的最大值和最小值。

uniform_data = np.random.rand(3, 3)
print (uniform_data)
heatmap = sns.heatmap(uniform_data)

在這裏插入圖片描述
25.向heatmap()中傳入參數vmin=vmax=

ax = sns.heatmap(uniform_data,vmin=0.2,vmax=0.5)  #超過最大值都是最大值的顏色,小於最小值都是最小值的顏色

在這裏插入圖片描述
26.

normal_data = np.random.randn(3, 3)
print (normal_data)
ax = sns.heatmap(normal_data, center=0)    #center指定右側圖例的中心值

在這裏插入圖片描述
27.

flights = sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
ax = sns.heatmap(flights, annot=True,fmt="d",linewidth=0.5)    #annot指定是否顯示數據,fmt指定數據的顯示格式,linewidth指定數據格子間的距離

在這裏插入圖片描述
28.

ax = sns.heatmap(flights, cmap="YlGnBu",cbar=True)    #cmap指定圖形顏色,cbar表示是否繪製右側圖例。

在這裏插入圖片描述

相關文章
相關標籤/搜索