2024-08-22|閱讀時間 ‧ 約 38 分鐘

【資料分析】Seaborn 常用視覺化基礎操作語法彙整

raw-image

Seaborn 是一個基於 Matplotlib 的 Python 資料視覺化庫,旨在使統計圖形的繪製更加簡便且美觀。它特別適合進行探索性數據分析,並且提供了許多方便的 API 來快速生成各類圖形。


# 可使用目錄功能快速確認要閱覽的主題


該使用 Seaborn 還是使用 Matplotlib ?

  • Matplotlib 適合需要高度自定義和控制的情況,尤其是在進行更複雜的、非標準的視覺化時。
  • Seaborn 適合進行快速的探索性數據分析,或是在需要美觀的統計圖表時使用。它特別適合與 Pandas 數據框整合,用於視覺化數據的分佈和關係。

Seaborn 提供了一個簡單且美觀的方式來進行資料視覺化,尤其是在進行統計分析時。Matplotlib 則提供了更靈活和強大的自定義功能,但可能需要更多的代碼和設置。兩者常常被結合使用,根據需要選擇適合的工具來進行視覺化。

【資料分析】python資料視覺化,Matplotlib基礎操作語法彙整


該選擇什麼圖來表現數據?

  • 散佈圖 sns.scatterplot: 當你想探索兩個連續變數之間的關係時,使用散佈圖。
  • 折線圖 sns.lineplot: 當你需要展示數據隨時間或其他連續變數變化的趨勢時,使用折線圖。
  • 柱狀圖 sns.barplot: 當你想比較分類變數的平均值或總值時,使用柱狀圖。
  • 直方圖 sns.histplot: 當你需要了解數據的分佈狀況時,使用直方圖。
  • 箱線圖 sns.boxplot: 當你想展示數據的集中趨勢及離群點時,使用箱線圖。
  • 熱力圖 sns.heatmap: 當你想可視化變數之間的相關性或矩陣數據時,使用熱力圖。
  • 成對圖 sns.pairplot: 當你需要同時查看多個變數之間的兩兩關係時,使用成對關係圖。


散佈圖 sns.scatterplot

用於顯示兩個數值變量之間的關係,並可以通過顏色和大小來表示其他維度。

import seaborn as sns
import matplotlib.pyplot as plt

# 加載內建的 iris 數據集
iris = sns.load_dataset("iris")

# 繪製散佈圖
sns.scatterplot(x="sepal_length", y="sepal_width", hue="species", data=iris)
plt.show()

適合情境

  • 變數間的關係:當你想要觀察兩個連續變數之間的關係時,散佈圖是理想的選擇。例如,觀察總賬單金額 (total_bill) 與小費 (tip) 之間的關係。
  • 分類變數的影響:你可以使用 huestylesize 參數來檢視分類變數如何影響變數之間的關係。


散佈圖參數調整

import seaborn as sns
import matplotlib.pyplot as plt

# 生成樣本數據
tips = sns.load_dataset("tips")

# 繪製散佈圖
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="day", style="time", size="size", palette="viridis", alpha=0.7)

plt.title('Scatterplot of Total Bill vs Tip')
plt.show()


參數說明

  • x:X 軸數據
  • y:Y 軸數據
  • hue:根據某變量的值來調整點的顏色
  • style:根據某變量的值來調整點的樣式
  • size:根據某變量的值來調整點的大小
  • palette:設置顏色調色盤
  • alpha:設置點的透明度


折線圖 sns.lineplot

用於顯示數值變量隨著某一維度(通常是時間)變化的趨勢。

# 加載內建的 flights 數據集
flights = sns.load_dataset("flights")

# 繪製折線圖
sns.lineplot(x="year", y="passengers", data=flights)
plt.show()


適合情境

  • 時間序列分析:當你想要觀察變數隨著時間的變化趨勢時,折線圖非常適合。例如,觀察某產品在一段時間內的銷售趨勢。
  • 多組比較:當你有多組數據需要在同一張圖中比較時,使用 huestyle 來區分不同的組別。


折線圖參數調整

# 繪製折線圖
sns.lineplot(data=tips, x="size", y="total_bill", hue="day", style="time", markers=True, dashes=False, errorbar="sd")

plt.title('Lineplot of Total Bill by Party Size')
plt.show()


參數說明

  • x:X 軸數據
  • y:Y 軸數據
  • hue:根據某變量的值來調整線條顏色
  • style:根據某變量的值來調整線條樣式
  • markers:設置是否顯示標記點
  • dashes:設置是否顯示虛線
  • errorbar:設置置信區間


柱狀圖 sns.barplot

用於顯示類別變量與數值變量之間的關係,通常用於比較不同組別的平均值。

# 繪製柱狀圖
sns.barplot(x="species", y="sepal_width", data=iris)
plt.show()


適合情境

  • 分類變數的比較:當你想要比較分類變數的平均值或總值時,柱狀圖是理想的選擇。例如,觀察不同日期的總賬單金額的平均值。
  • 組間比較:使用 hue 可以觀察不同組別間的差異,例如性別對總賬單金額的影響。


柱狀圖參數調整

# 繪製條形圖
sns.barplot(data=tips, x="day", y="total_bill", hue="sex", errorbar="sd", palette="coolwarm")

plt.title('Barplot of Total Bill by Day and Sex')
plt.show()


參數說明

  • x:X 軸數據(分類變量)
  • y:Y 軸數據(數值變量)
  • hue:根據某變量的值來調整柱子的顏色
  • errorbar:設置置信區間
  • estimator:設置用於計算條形高度的函數(默認為平均值)
  • palette:設置顏色調色盤


直方圖 sns.histplot

用於顯示數值變量的分佈情況,可以用於單一變量或多變量的直方圖繪製。

# 繪製直方圖
sns.histplot(iris["sepal_length"], kde=True)
plt.show()


適合情境

  • 數據分佈:當你想要了解某個變數的數據分佈時,直方圖是最佳選擇。例如,觀察顧客的小費分佈情況。
  • 多組分佈比較:使用 hue 可以觀察不同組別的數據分佈情況,例如性別對小費分佈的影響。


直方圖參數調整

# 繪製直方圖
sns.histplot(data=tips, x="total_bill", hue="sex", bins=20, kde=True, palette="magma")

plt.title('Histogram of Total Bill')
plt.show()


參數說明

  • x:X 軸數據
  • y:Y 軸數據(可選)
  • hue:根據某變量的值來調整顏色
  • bins:設置直方圖的分箱數量
  • multiple:設置如何處理不同類別的數據(例如 stackdodge
  • kde:設置是否顯示核密度估計


熱力圖 sns.heatmap

用於顯示矩陣數據的顏色編碼表示,通常用於顯示相關矩陣或數據透視表。

# 繪製熱力圖
flights_pivot = flights.pivot("month", "year", "passengers")
sns.heatmap(flights_pivot, annot=True, fmt="d")
plt.show()


適合情境

  • 相關矩陣的可視化:當你想要檢視多個變數之間的相關性時,熱力圖是一個很好的工具。例如,觀察各變數之間的相關係數。
  • 矩陣數據的可視化:可以用來表示其他類型的矩陣數據,例如混淆矩陣。


熱力圖參數調整

# 繪製熱力圖
correlation_matrix = tips.corr()

sns.heatmap(data=correlation_matrix, annot=True, fmt=".2f", cmap="coolwarm", linewidths=0.5, linecolor="black")

plt.title('Correlation Matrix Heatmap')
plt.show()


參數說明

  • data:矩陣數據(如相關矩陣)
  • annot:設置是否在每個格子中顯示數值
  • fmt:設置顯示數值的格式(如 .2f 顯示兩位小數)
  • cmap:設置顏色地圖
  • linewidths:設置格子之間的間隔線寬度
  • linecolor:設置格子之間的間隔線顏色


成對圖 sns.pairplot

用於顯示數據集中所有變量之間的成對關係,特別適合初步探索數據的關聯性。

# 繪製成對圖
sns.pairplot(iris, hue="species")
plt.show()


適合情境

  • 變數之間的成對關係:當你想要觀察多個變數之間的成對關係時,成對關係圖可以幫助你一次性查看所有變數的兩兩關係。例如,觀察小費數據集中的所有變數之間的關係。
  • 數據探索:在初步探索數據集時,可以快速了解數據集中各變數之間的關聯和分佈情況。


成對圖參數調整

# 繪製成對關係圖
sns.pairplot(data=tips, hue="sex", palette="husl", kind="scatter", diag_kind="kde")

plt.title('Pairplot of Tips Dataset')
plt.show()


參數說明

  • hue:根據某變量的值來調整顏色
  • palette:設置顏色調色盤
  • kind:設置散佈圖的類型(如 scatterkde
  • diag_kind:設置對角線圖的類型(如 histkde


箱線圖 sns.boxplot

用於顯示數值變量的分佈情況及其異常值,通常用於比較多個組別的數值變量。

# 繪製箱線圖
sns.boxplot(x="species", y="sepal_length", data=iris)
plt.show()


適合情境

  • 數據的集中趨勢與離群點:當你需要觀察數據的集中趨勢(如中位數)和數據的離群點時,箱線圖是非常有用的。例如,觀察不同日期的總賬單金額分佈及離群點。
  • 組間分佈比較:使用 hue 可以比較不同組別之間的數據分佈差異,例如性別對總賬單金額分佈的影響。


箱線圖參數調整

# 繪製箱線圖
sns.boxplot(data=tips, x="day", y="total_bill", hue="sex", palette="Set2", fliersize=5)

plt.title('Boxplot of Total Bill by Day and Sex')
plt.show()


參數說明

  • x:X 軸數據(分類變量)
  • y:Y 軸數據(數值變量)
  • hue:根據某變量的值來調整箱線圖的顏色
  • palette:設置顏色調色盤
  • fliersize:設置離群點的大小
  • width:設置箱線圖的寬度
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.