iT邦幫忙

2025 iThome 鐵人賽

DAY 6
0
自我挑戰組

Python × 政府開放資料:30天數據探索與圖表呈現系列 第 6

Day 6 新北人口年齡分配:長條圖

  • 分享至 

  • xImage
  •  

昨天我們已經完成資料載入與檢查,今天要開始第一個簡單的視覺化練習—長條圖。長條圖是一種直觀又常見的圖表,非常適合比較不同類別的數據。我們可以先挑選一個年份,例如最新的資料,觀察各年齡層的男女比例差異。

實作上,我們先篩選某一年度的數據,例如:
df_year = df[df["year"] == 2022]

接著取出三個年齡層的男女比例,使用Matplotlib畫群組長條圖:X 軸為年齡層(0–14、15–64、65+),Y軸為比例,並用不同顏色分別表示男性與女性。最後加上標題、軸標籤與圖例,整張圖就能清楚顯示不同年齡層的性別分布。

import pandas as pd
import matplotlib.pyplot as plt

# 讀取整理過的資料(已經重新命名過欄位)
df = pd.read_csv("IT_population_age/IT_population_age_clean.csv")

# 篩選某一年度,例如 2022
df_year = df[df["year"] == 2022].iloc[0]

# -----------------------------
# 1. 年齡層男女比例長條圖
# -----------------------------
age_groups = ["0-14", "15-64", "65+"]
male = [df_year["male_0_14"], df_year["male_15_64"], df_year["male_65_plus"]]
female = [df_year["female_0_14"], df_year["female_15_64"], df_year["female_65_plus"]]

x = range(len(age_groups))  # X 軸位置
bar_width = 0.35  # 每組長條的寬度

plt.bar([i - bar_width / 2 for i in x], male, width=bar_width, label="Male")
plt.bar([i + bar_width / 2 for i in x], female, width=bar_width, label="Female")

plt.xticks(x, age_groups)
plt.xlabel("Age Group")
plt.ylabel("Percentage (%)")
plt.title("New Taipei Population by Age Group (2022)")
plt.legend()
plt.show()

https://ithelp.ithome.com.tw/upload/images/20250907/20178624y7VfBZ9gMq.png
https://ithelp.ithome.com.tw/upload/images/20250907/20178624fijD2Jp7d3.png

除了年齡結構,我們還能用另一張長條圖比較男女平均壽命。這樣一來,不僅能看出人口結構的差異,也能同時觀察壽命長短的性別落差。新北市通常呈現女性壽命較長的現象,這是全球普遍的趨勢。

import pandas as pd
import matplotlib.pyplot as plt

# 讀取整理過的資料(已經重新命名過欄位)
df = pd.read_csv("IT_population_age/IT_population_age_clean.csv")

# 篩選某一年度,例如 2022
df_year = df[df["year"] == 2022].iloc[0]

# -----------------------------
# 2. 男女平均壽命比較長條圖
# -----------------------------
# 轉成數字,避免讀成字串
male_life = float(df_year["life_expectancy_male"])
female_life = float(df_year["life_expectancy_female"])

life = {"Male": male_life, "Female": female_life}

plt.bar(life.keys(), life.values(), color=["blue", "red"])
plt.ylabel("Years")
plt.title("Life Expectancy by Gender (2022)")
plt.ylim(50, 90)  # 限制 Y 軸範圍
plt.show()

https://ithelp.ithome.com.tw/upload/images/20250907/20178624G6LmjyETMR.pnghttps://ithelp.ithome.com.tw/upload/images/20250907/20178624z2j6h3S24v.png

今天的任務是讓大家熟悉基本的繪圖方式,體驗如何把資料轉換成直觀的視覺化。明天,我們將挑戰更進階的「人口金字塔」,並觀察高齡化的發展趨勢


上一篇
Day 5 新北人口年齡分配:資料載入與檢視
系列文
Python × 政府開放資料:30天數據探索與圖表呈現6
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言