[Python教學] Seaborn:高階資料視覺化工具

閱讀時間約 9 分鐘

Seaborn 是一個基於 Matplotlib 的高階資料視覺化庫,專為統計圖表設計。與 Matplotlib 相比,Seaborn 提供了更簡潔的語法、更美觀的預設樣式,以及與 Pandas 的緊密整合,非常適合用於數據分析和探索性資料分析 (EDA)。

在本教學中,我們將詳細介紹 Seaborn 的核心功能,並使用範例來展示如何繪製基本與進階圖表。


1. 安裝與載入 Seaborn

確保安裝了 Seaborn 和 Pandas。如果尚未安裝,可以使用以下指令:

pip install seaborn
pip install pandas
pip install matplotlib

在程式中引入必要的模組:

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

2. Seaborn 的主要特點

  1. 內建樣式: Seaborn 提供預設的美觀主題,讓圖表看起來更專業。
  2. 與 Pandas 的整合: Seaborn 可以直接接受 Pandas 的 DataFrame 作為資料來源。
  3. 簡化的語法: 繪製統計圖表更加簡潔,且支援高階功能如分組、調色板等。
  4. 內建資料集: 提供多個內建資料集,方便用於學習和測試。

3. 使用 Seaborn 的樣式設定

Seaborn 提供了多種樣式來改變圖表的外觀:

sns.set_theme(style="darkgrid")  # 設定樣式為深色網格

其他可用樣式:

  • white
  • dark
  • whitegrid
  • ticks

可以直接設定調色板:

sns.set_palette("pastel")  # 設定調色板為柔和色系

4. Seaborn 的基礎圖表

4.1 散點圖 (Scatter Plot)

# 加載內建資料集
tips = sns.load_dataset("tips")

# 繪製散點圖
sns.scatterplot(x="total_bill", y="tip", data=tips)
plt.title("Total Bill vs Tip")
plt.show()

進階:按類別上色

sns.scatterplot(x="total_bill", y="tip", hue="sex", style="time", data=tips)
plt.title("Scatterplot with Categories")
plt.show()
  • hue: 用於按類別改變顏色。
  • style: 用於改變標記的形狀。
raw-image



4.2 直方圖 (Histogram)

sns.histplot(tips["total_bill"], bins=20, kde=True)
plt.title("Distribution of Total Bill")
plt.show()
  • bins: 設置直方圖的區間數。
  • kde: 是否繪製核密度估計曲線。
raw-image



4.3 箱型圖 (Box Plot)

sns.boxplot(x="day", y="total_bill", data=tips)
plt.title("Box Plot of Total Bill by Day")
plt.show()

進階:增加分組顏色

sns.boxplot(x="day", y="total_bill", hue="sex", data=tips)
plt.title("Box Plot by Day and Sex")
plt.show()
raw-image



4.4 長條圖 (Bar Plot)

sns.barplot(x="day", y="total_bill", data=tips, errorbar="sd")
plt.title("Average Total Bill by Day")
plt.show()
  • x="day":指定X軸為「day」列,表示星期幾(如週一、週二等)。
  • y="total_bill":指定Y軸為「total_bill」列,表示每位顧客在餐廳的消費總額。
  • data=tips:指定資料來源為已載入的 tips 資料集。
  • errorbar="sd":表示誤差棒使用標準差來表示資料的變異性。每個柱子的頂部會顯示該類別的消費總額的標準差。
raw-image



4.5 熱力圖 (Heatmap)

熱力圖適合用於顯示矩陣資料,例如相關係數:

# 只選擇數值型列計算相關係數矩陣
numeric_cols = tips.select_dtypes(include=['float64', 'int64']) # 選擇數值型列
corr = numeric_cols.corr() # 計算相關係數矩陣

# 繪製熱力圖
sns.heatmap(corr, annot=True, cmap="coolwarm")
plt.title("Correlation Heatmap")
plt.show()
raw-image



5. 進階功能

5.1 配對圖 (Pair Plot)

配對圖可以一次性展示數據集中多列之間的散點圖和分布:

sns.pairplot(tips, hue="sex", diag_kind="kde")
plt.show()
  • hue: 按類別上色。
  • diag_kind: 設定對角線上的圖形類型,如直方圖或 KDE。
raw-image



5.2 分面圖 (FacetGrid)

分面圖可以按類別分組繪製多個子圖:

g = sns.FacetGrid(tips, col="sex", row="time", margin_titles=True)
g.map(sns.scatterplot, "total_bill", "tip")
plt.show()
raw-image



5.3 折線圖 (Line Plot)

fmri = sns.load_dataset("fmri")
sns.lineplot(x="timepoint", y="signal", hue="event", style="region", data=fmri)
plt.title("Line Plot Example")
plt.show()
raw-image



6. 與 Pandas 的整合

Seaborn 可以直接處理 Pandas 的 DataFrame,並按列名指定數據來源:

sns.histplot(data=tips, x="total_bill", hue="sex", kde=True)
plt.title("Histogram with Pandas Integration")
plt.show()
raw-image



7. 調整 Seaborn 圖表的外觀

7.1 圖表大小

可以使用 Matplotlib 的 plt.figure() 方法調整圖表大小:

plt.figure(figsize=(10, 6))
sns.boxplot(x="day", y="total_bill", data=tips)
plt.title("Custom Figure Size")
plt.show()

7.2 自訂調色板

Seaborn 支援多種內建調色板:

sns.set_palette("muted")  # 使用內建 muted 調色板
raw-image



8. 小結與實踐

  1. 簡單易用: Seaborn 通過簡潔的語法生成美觀的圖表。
  2. 強大功能: 支援分組繪圖、分面圖及內建樣式。
  3. 與 Pandas 整合: 輕鬆處理 DataFrame 資料。


9. 課後練習

  1. 使用內建資料集 tips,繪製「每天平均小費」的柱狀圖。
  2. 使用自己的數據,生成一個相關係數的熱力圖。
  3. 將 Seaborn 的繪圖與 Matplotlib 的自訂功能結合,製作報表。

通過不斷練習和實際應用,你將能夠熟練使用 Seaborn 為資料分析提供清晰且專業的視覺化圖表!

歡迎來到我的部落格!這裡記錄了軟體工程師的日常生活點滴,並分享程式設計與演算法的實用教學。無論你是初學者還是有經驗的開發者,都能在這裡找到深入淺出的技術解析與實戰技巧。此外,我也會分享工作中的心路歷程與學習心得,讓你不僅學到技術,更能瞭解軟體開發的實際應用與挑戰。希望透過這個平台,能與你共同成長,激發對技術的熱情!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Matplotlib 是 Python 中最流行且功能強大的資料視覺化工具之一。它能夠生成各種靜態、動態及互動式的圖表,是資料分析與科學計算的重要組成部分。在本教學中,我們將詳細介紹 Matplotlib 的核心功能,並以範例逐步展示如何繪製基本與進階圖表。
Pandas 是 Python 的一個強大數據操作與分析庫。它提供高效且靈活的資料結構,如 Series 和 DataFrame,適合用於資料清理、操作及分析。在本教學中,我們將深入探討 Pandas 的核心功能,並以範例展示如何進行資料處理。
在這篇文章中,我們將深入探討 Python 中的非同步程式設計,特別是使用 asyncio 模組來實現事件循環和協程。這將幫助你理解如何在 I/O 密集型任務中提高效率,並充分利用 Python 的非同步特性。
在這篇文章中,我們將深入探討 Python 中的平行程式設計,特別是使用 threading 和 multiprocessing 模組來實現多執行緒和多進程的應用。這些技術可以幫助我們充分利用現代 CPU 的多核心架構,提高程式的執行效率。
在 Python 中,生成器與裝飾器是兩個非常強大的特性,分別讓我們能更高效地處理數據流和更靈活地擴展函數的功能。
Matplotlib 是 Python 中最流行且功能強大的資料視覺化工具之一。它能夠生成各種靜態、動態及互動式的圖表,是資料分析與科學計算的重要組成部分。在本教學中,我們將詳細介紹 Matplotlib 的核心功能,並以範例逐步展示如何繪製基本與進階圖表。
Pandas 是 Python 的一個強大數據操作與分析庫。它提供高效且靈活的資料結構,如 Series 和 DataFrame,適合用於資料清理、操作及分析。在本教學中,我們將深入探討 Pandas 的核心功能,並以範例展示如何進行資料處理。
在這篇文章中,我們將深入探討 Python 中的非同步程式設計,特別是使用 asyncio 模組來實現事件循環和協程。這將幫助你理解如何在 I/O 密集型任務中提高效率,並充分利用 Python 的非同步特性。
在這篇文章中,我們將深入探討 Python 中的平行程式設計,特別是使用 threading 和 multiprocessing 模組來實現多執行緒和多進程的應用。這些技術可以幫助我們充分利用現代 CPU 的多核心架構,提高程式的執行效率。
在 Python 中,生成器與裝飾器是兩個非常強大的特性,分別讓我們能更高效地處理數據流和更靈活地擴展函數的功能。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
這篇文章介紹如何使用Python整理資料成百分比資料以及繪製百分比堆疊直條圖。
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
Tableau是一款數據視覺化工具,目的在於簡化數據分析和決策過程。通過直觀的可視化介面,讓人們無需編程也能進行數據探索和分析。支持多種數據源,包括Excel、SQL數據庫等,透過拖放操作創建圖表和儀表板,分享洞察見解。幫助使用者和組織更加數據驅動,優化決策和業務流程
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
這篇文章介紹如何使用Python整理資料成百分比資料以及繪製百分比堆疊直條圖。
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
Tableau是一款數據視覺化工具,目的在於簡化數據分析和決策過程。通過直觀的可視化介面,讓人們無需編程也能進行數據探索和分析。支持多種數據源,包括Excel、SQL數據庫等,透過拖放操作創建圖表和儀表板,分享洞察見解。幫助使用者和組織更加數據驅動,優化決策和業務流程