Python數據分析-可視化“大佬”之Seaborn

——如果有想關注Java開發相關的內容,可以轉Java修煉之道
詳細觀看——

Seaborn

既然有了matplotlib,那爲啥還需要seaborn呢?其實seaborn是在matplotlib基礎上進行封裝,Seaborn就是讓困難的東西更加簡單。用Matplotlib最大的困難是其默認的各種參數,而Seaborn則完全避免了這一問題。seaborn是針對統計繪圖的,一般來說,seaborn能滿足數據分析90%的繪圖需求,複雜的自定義圖形,還是要Matplotlib。Seaborn旨在使可視化成爲探索和理解數據的核心部分。其面向數據集的繪圖功能對包含整個數據集的數據框和數組進行操作,並在內部執行必要的語義映射和統計聚合,以生成信息圖。

5種主題風格

  • darkgrid
  • whitegrid
  • dark
  • white
  • ticks

統計分析繪製圖——可視化統計關係

統計分析是瞭解數據集中的變量如何相互關聯以及這些關係如何依賴於其他變量的過程。常見方法可視化統計關係:散點圖和線圖
常用的三個函數如下:

  • replot()
  • scatterplot(kind=“scatter”;默認)
  • lineplot(kind=“line”,默認)
常用的參數
* 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
用散點圖關聯變量

散點圖是統計可視化的支柱。它描繪了使用點雲的兩個變量的聯合分佈,其中每個點代表數據集中的觀察。因此觀測兩個變量之間的分佈關係最好用散點圖。

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

## 定義主題風格
sns.set(style="darkgrid")

## 加載tips
tips = sns.load_dataset("tips")

## 繪製圖形,根據不同種類的三點設定圖注
sns.relplot(x="total_bill", y="tip", hue="smoker", style="time", data=tips);
plt.show()

## 繪製漸變效果的散點圖
sns.relplot(x="total_bill", y="tip", hue="size", palette="ch:r=-.5,l=.75", data=tips);
plt.show()

如果數據量大的情況下,用hex散點圖

eg:
## 設置顏色
sns.set(color_codes=True)
mean, cov = [0, 1], [(1, .5), (.5, 1)] # 設置均值(一組參數)和協方差(兩組參數)
x, y = np.random.multivariate_normal(mean, cov, 1000).T
with sns.axes_style("ticks"):
    sns.jointplot(x=x, y=y, kind="hex", color="k")
plt.show()

在這裏插入圖片描述

熱點圖

熱點圖是通過使用不同的標誌將圖或頁面上的區域按照受關注程度的不同加以標註並呈現的一種分析手段,標註的 手段一般採用顏色的深淺、點的疏密以及呈現比重的形式。在數據分析中比較常用,如果離散數據波動變化比較 大,那麼可以使用熱點圖來觀察波動變化,另外特別是在相關性和相關係數的應用中,特徵和特徵之間會存在相關 係數,常用的方式是採用Pandas求出相關係數,此時可以採用熱點圖來清晰地觀察特徵和特徵之間的相關程度

%matplotlib inline 
import matplotlib.pyplot as plt 
import numpy as np
import seaborn as sns

np.random.seed(0) 
sns.set()
 
## 熱點圖的繪製 ax = sns.heatmap(flights, cbar=False)

直方圖

直方圖主要是用於單變量單特徵數據分析

eg:
sns.set(style="darkgrid")
np.random.seed(sum(map(ord, "distributions")))
x = np.random.gamma(6, size=200)
sns.distplot(x, kde=False, fit=stats.gamma)
plt.show()

比較圖

比較土主要適用於觀察變量兩兩之間的關係。對角線是直方圖(統計數量),其他的是散點圖。

eg:採用的是鳶尾花的內部數據集
sns.set(color_codes=True)
iris = sns.load_dataset("iris")
sns.pairplot(iris)
plt.show()

迴歸分析圖

**regplot()lmplot()**都可以繪製迴歸關係,推薦regplot()

兩者間主要的區別是:regplot接受各種格式的x y,包括numpy arrays ,pandas series 或者pandas Dataframe對象。相比之下,lmplot()只接受字符串對象。這種數據格式被稱爲’long-form’或者’tidy’。除了輸入數據的便利性外,regplot()可以看做擁有lmplot()特徵的一個子集。

%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
 
import seaborn as sns
sns.set(color_codes=True)
np.random.seed(sum(map(ord, "regression")))

tips = sns.load_dataset("tips")
 
## 使用regplot繪製
sns.regplot(x="total_bill", y="tip", data=tips)
plt.show()

rebust迴歸圖,需要添加參數忽略某個異常點

eg:
anscombe = sns.load_dataset("anscombe")
sns.lmplot(x="x", y="y", data=anscombe.query("dataset == 'III'"),
           robust=True, ci=None, scatter_kws={"s": 80})
plt.show()

樹形圖

類似於散點圖,用於顯示每一個數據的分佈情況

eg:
tips = sns.load_dataset("tips")
sns.swarmplot(x="day", y="total_bill",hue="sex",data=tips)
plt.show()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章