如何輕鬆實現數據可視化?

如何輕鬆實現數據可視化?

譯者 | Lemon

本文屬於 Seaborn 的基礎教程,介紹了直方圖、聯合分佈圖、矩陣圖、箱形圖等。通過本文可以看出,使用 seaborn 可以輕鬆的進行數據可視化。

Seaborn 是一個數據可視化庫,可幫助在Python中創建有趣的數據可視化。 大多數數據分析需要識別趨勢和建立模型,本文將幫助你開始使用 Seaborn庫創建數據可視化。

首先,你應該在 jupyter notebook 中鍵入以下命令。

import pandas as pd # Pandas
import numpy as np # Numpy
import matplotlib.pyplot as plt # Matplotlibrary
import seaborn as sns # Seaborn Library
%matplotlib inline
sns.set()

直方圖 (Distplot)

sns.distplot()結合直方圖並繪製核密度估計圖。 這裡 bin 區間大小是自動計算的。

sns.distplot(data[“variablename”])

我們將使用以下代碼在 jupyter notebook 中加載數據集:

# Load the Dataset in Python
tips = sns.load_dataset("tips")
tips.head()

如何輕鬆實現數據可視化?

現在,由於我們已經加載了數據集,我們將使用 “total_bill” 變量創建第一個圖。讓我們從 tips數據集創建 “total_bill” 變量的 distplot。

sns.distplot(tips["total_bill"], bins=16, color="purple")
# Binsize is calculated using square-root of row count.
如何輕鬆實現數據可視化?

現在,我們來對上述代碼進行進一步描述:

  • sns.distplot — 這個命令將啟動 distplot 的初始創建;
  • tips[“total_bill”] — 從 tips 數據集(數據框)中取出列(total_bill)。在這裡,我們應該觀察一下,可以使用方括號來拉取列值,並且列名應該用引號括起來(雙引號/單引號)都被接受。

我們推測—— “total_bill”變量本質上是傾斜的,大多數帳單值都在 $10 - $20 範圍內。

聯合分佈圖 (Jointplot)

聯合分佈圖 (Jointplot)採用兩個變量並一起創建直方圖和散點圖。讓我們看一下 jointplot 的語法。

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

讓我們從 tips數據集創建 total_bill 和 tip變量的聯合分佈圖。通常,任何餐廳的小費金額取決於總賬單/賬單大小。代碼如下:

sns.jointplot(x = "total_bill", y = "tip", data = tips, color="purple")
如何輕鬆實現數據可視化?

如上所述,散點圖似乎顯示總賬單和小費金額之間的強相關性。在它的頂部,我們可以看到各個變量的直方圖。

2.1 Jointplot :: kind =”hex”

直方圖的雙變量類比稱為“hexbin”圖,因為它顯示了六邊形區間內的觀察計數。此圖對於相對較大的數據集最有效,也稱為Hexbin Plots。

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

# Jointplot - Scatterplot and Histogram
sns.jointplot(x = "total_bill", y = "tip", data = tips, kind ="hex",
color="lightcoral")ips, kind ="hex",color="lightcoral")
如何輕鬆實現數據可視化?

有幾種類型的值可以放在 sns.jointplot 中來創建不同的圖。 默認情況下,聯合分佈圖顯示散點圖。 現在,在上面的情節圖中,它顯示了六邊形。六邊形的深色表示數據點的高密度,其中較淺的顏色表示較少的點。

kind 參數值可以是以下取值:

kind : { "scatter" | "reg" | "resid" | "kde" | "hex" }

下面,我們來看看 kind="kde" 的情形。

2.2 Jointplot :: kind =”kde”

# Jointplot - Scatterplot and Histogram
sns.jointplot(x = tips["total_bill"], y = tips["tip"],kind = "kde",
color="purple") # contour plot
如何輕鬆實現數據可視化?

上面顯示的圖表稱為輪廓圖。 輪廓圖(有時稱為“水平圖”)是一種在二維平面上顯示三維表面的方法。 它繪製了y軸上的兩個預測變量X Y和輪廓的響應變量Z。

矩陣圖 (Pairplot)

矩陣圖基本上繪製了變量之間的成對關係。 它支持用 “hue” 來為類別變量繪圖著色。

sns.pairplot(“dataframe”)

# Pairplot of Tips
sns.pairplot(tips, hue = "sex", palette="Set2")
# this will color the plot gender wise
如何輕鬆實現數據可視化?

下面我們來了解下矩陣圖的含義。對角線部分顯示了具有核密度估計的 distplot圖或直方圖,矩陣圖的上部和下部顯示散點圖。 “hue”使用列的類別為繪圖著色。

  • hue = “sex” — 設置為按不同的性別進行著色;
  • palette = “Set2” - “Set2” 是顏色的一個系列。

條形圖 (Barplot)

條形圖用於繪製分類列和數字列。 它在可視化中創建了條形。 讓我們用“性別”創建一個“total_bill”的條形圖,讓我們看看哪類人支付更多。

sns.barplot(x = , y =, data=)

# Barplot
sns.barplot(x ="sex" , y ="total_bill" , data=tips)
# Inference - Total Bill Amount for males is more than Females.
如何輕鬆實現數據可視化?

# Lets Plot Smoker Vs Total Bill :: The purpose is to find out if 
# Smokers pay more bill than Non Smokers
sns.barplot(x = "smoker", y = "total_bill", data =tips)
# Inference - More Bill for Smokers
如何輕鬆實現數據可視化?

# Lets Find If There is more Bill In Weekend or Weekdays
sns.barplot(x = "day", y = "total_bill", data =tips)
# People tend to visit more on weekends
如何輕鬆實現數據可視化?

箱形圖 (Boxplot)

箱形圖 (Boxplot)是給定數據集的五點彙總統計的直觀表示,五個數字摘要包括:

  • Minimum 最小值;
  • First Quartile 1/4 值;
  • Median (Second Quartile) 中位數;
  • Third Quartile 3/4 值;
  • Maximum 最大值。

此外,值得注意的一點是,為分類 - 連續變量創建了一個箱線圖,這意味著如果x軸是分類的並且y軸是連續的,則應創建箱線圖或小提琴圖。

讓我們從 tips數據集創建一個 “day” 和 “total_bill” 的箱線圖。

sns.boxplot(x = , y =, data=)

# Boxplot
sns.boxplot(x = "day", y = "total_bill", data=tips)
如何輕鬆實現數據可視化?

# Add hue to split the barplot. Making it more fancier
sns.boxplot(x = "day", y = "total_bill", data=tips, hue = "smoker")
# On Friday people have more bill if they are a Non smoker vs smoker
如何輕鬆實現數據可視化?

hue =“smoker”: - 它為吸菸者和非吸菸者創造了一個箱線圖。 例如: 在星期五的情況下,可以清楚地看到,與當天的吸菸者相比,非吸菸者的食物費用更多。

# Violin Plots
sns.violinplot(x = "day", y = "total_bill", data = tips)
如何輕鬆實現數據可視化?

小提琴圖跟箱形圖有些類似。他們之間的描述可以參考下面的圖示內容:

如何輕鬆實現數據可視化?

sns.lmplot 是繪製一個在散點圖中進行線性迴歸擬合的直線。 它遵循普通的最小二乘法,線代表最佳擬合線。為了更好地理解這一點,建議進一步瞭解一下線性迴歸的相關知識。

代碼如下:

# LM PLot
sns.lmplot(x = "total_bill", y = "tip", data = tips, hue="day")
如何輕鬆實現數據可視化?

上圖顯示了不同日期的total_bill變量的線性迴歸擬合,如圖例中所示,這是在 sns.lmplot 中使用 hue =“day” 獲得的。

恭喜! 你已完成 Seaborn 初學者教程。希望這篇文章能夠提供有關 Seaborn 的基本知識,並且可以幫助你創建所有這些圖。

作者:Lemon,氣候變化及新能源領域從業者,跨界玩Python,秉承“讓數據更有價值”的理念,希望能透過數據感知世界。


分享到:


相關文章: