iT邦幫忙

2024 iThome 鐵人賽

DAY 20
0
Python

30天Python資料分析挑戰:從基礎到視覺化系列 第 20

Day 20: 直方圖 (Histogram) 的應用與實作

  • 分享至 

  • xImage
  •  

Day 20: 直方圖 (Histogram) 的應用與實作

直方圖(Histogram)是一種展示數值資料分佈情況的圖表,它能夠通過將資料分成多個區間來顯示每個區間內的資料數量,這對於了解資料的集中趨勢、分佈範圍和異常值非常有幫助。今天,我們將介紹直方圖的應用場景,並使用 Matplotlib 和 Seaborn 繪製直方圖。

用昨天plot的檔案,全部程式都要先跑一遍
https://ithelp.ithome.com.tw/upload/images/20241004/20140380juTvlMOV8H.jpg

1. 直方圖的應用場景

直方圖適合用來展示以下情境的資料:

  • 數值資料的分佈:例如學生考試成績的分佈、收入的分佈等。
  • 資料的集中趨勢:查看資料集中在哪個區間,例如大部分員工的薪資水平。
  • 資料的變異程度:觀察資料是否存在極端值或異常值,如收入中的高收入者。

2. 使用 Matplotlib 繪製基本直方圖

首先,我們使用 Matplotlib 繪製一個簡單的直方圖,來顯示花瓣長度的分佈情況。


# 繪製花瓣長度的直方圖
plt.hist(iris_df['petal length (cm)'], bins=10, color='skyblue', edgecolor='black')
plt.title('Histogram of Petal Length Distribution')
plt.xlabel('Petal Length (cm)')
plt.ylabel('Frequency')
plt.show()

https://ithelp.ithome.com.tw/upload/images/20241004/20140380yvw5hYN1uL.jpg
這段程式碼會繪製一個直方圖,將花瓣長度分成 10 個區間(bins=10),並顯示每個區間內的資料數量。

3. 使用 Seaborn 繪製直方圖

接下來,我們使用 Seaborn 繪製一個更美觀的直方圖。Seaborn 提供了 histplot() 函數,可以更加靈活地控制直方圖的顯示效果。

sns.histplot(iris_df['petal length (cm)'], bins=10, kde=True, color='orange')
plt.title('Histogram of Petal Length Distribution with KDE')
plt.xlabel('Petal Length (cm)')
plt.ylabel('Frequency')
plt.show()

https://ithelp.ithome.com.tw/upload/images/20241004/20140380NDhXFJdC2U.jpg
在這段程式碼中,我們設定 kde=True,這樣可以在直方圖上加上核密度估計(KDE)曲線,用來表示資料的分佈情況。

4. 分組直方圖

有時候,我們需要比較不同群組之間的資料分佈。可以使用 hue 參數來繪製分組直方圖,顯示不同花卉種類的花萼長度分佈。

# 使用 Seaborn 繪製分組直方圖
sns.histplot(data=iris_df, x='sepal length (cm)', hue='target', bins=10, kde=True, multiple='stack')
plt.title('Histogram of Sepal Length Distribution by Flower Species')
plt.xlabel('Sepal Length (cm)')
plt.ylabel('Frequency')
plt.show()

https://ithelp.ithome.com.tw/upload/images/20241004/20140380CTylOjqzKZ.jpg
在這段程式碼中,我們通過 hue='target_0' 來區分不同花卉種類的資料分佈,multiple='stack' 會將不同花卉種類的分佈疊加在一起。

5. 累積直方圖

累積直方圖(Cumulative Histogram)顯示的是累積頻數,適合用來觀察某個值以下的資料占比。可以通過 cumulative=True 來實現。

# 使用 Matplotlib 繪製累積直方圖
plt.hist(iris_df['petal length (cm)'], bins=10, cumulative=True, color='green', edgecolor='black')
plt.title('Cumulative Histogram of Petal Length')
plt.xlabel('Petal Length (cm)')
plt.ylabel('Cumulative Frequency')
plt.show()

https://ithelp.ithome.com.tw/upload/images/20241004/20140380JWSiVRyvxx.jpg
這段程式碼會繪製一個累積直方圖,顯示不同花瓣長度以下的累積資料數量。

6. 調整直方圖的外觀

我們可以通過調整直方圖的外觀,使其更加美觀和易於理解。例如,可以調整顏色、邊界、透明度等屬性。

# 使用 Seaborn 繪製調整外觀的直方圖
sns.histplot(iris_df['sepal width (cm)'], bins=10, color='purple', alpha=0.6, edgecolor='black')
plt.title('Histogram of Sepal Width with Customized Appearance')
plt.xlabel('Sepal Width (cm)')
plt.ylabel('Frequency')
plt.show()

https://ithelp.ithome.com.tw/upload/images/20241004/20140380r7ozM8ebZW.jpg
這段程式碼設置了 alpha=0.6 來調整透明度,讓直方圖更加美觀。

7. 小結

今天我們學習了如何使用 Matplotlib 和 Seaborn 繪製直方圖,包括:

  1. 基本的直方圖,用來顯示資料的分佈情況。
  2. 加入 KDE 曲線來展示資料的分佈趨勢。
  3. 分組直方圖,用來比較不同群組之間的資料分佈。
  4. 累積直方圖,用來展示資料的累積分佈情況。
  5. 調整直方圖的外觀,使其更易於理解。

直方圖能夠幫助我們快速了解資料的分佈情況,發現資料中的集中趨勢和異常值。接下來,我們將學習如何使用面積圖來展示資料的累積變化趨勢。


上一篇
Day 19: 散點圖 (Scatter Plot) 的應用與實作
下一篇
Day 21: 面積圖 (Area Plot) 的應用與實作
系列文
30天Python資料分析挑戰:從基礎到視覺化30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言