iT邦幫忙

2025 iThome 鐵人賽

DAY 7
0
自我挑戰組

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

Day 7 新北人口年齡分配:人口金字塔與老化趨勢

  • 分享至 

  • xImage
  •  

今天要進一步挑戰人口金字塔與老化趨勢分析。人口金字塔是一種水平長條圖,通常用來顯示不同年齡層男女比例。雖然我們的資料只分為三大年齡區段(0–14、15–64、65+),仍然可以畫出一個簡化版的人口金字塔。

實作方法是把男性數值設定為負數,女性為正數,然後用barh水平條形圖畫出來。這樣左邊就代表男性,右邊代表女性,整體形成對稱的金字塔形狀。如果把不同年份的金字塔並排,就能看出人口結構隨時間的變化,例如青壯年比例下降與老年人口增加的趨勢。

import pandas as pd
import matplotlib.pyplot as plt

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

# 篩選某一年度,例如 2020
year_to_plot = 2020
df_year = df[df["year"] == year_to_plot].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"]]

y = range(len(age_groups))

plt.barh(y, male, color="blue", label="Male")
plt.barh(y, female, color="red", label="Female")
plt.yticks(y, age_groups)
plt.xlabel("Percentage (%)")
plt.title(f"Population Pyramid - New Taipei {year_to_plot}")
plt.legend()
plt.show()

https://ithelp.ithome.com.tw/upload/images/20250907/20178624LxZ3PXDsXi.pnghttps://ithelp.ithome.com.tw/upload/images/20250907/20178624SCbHcYWMty.png

除了靜態比較,也可以用折線圖追蹤「65歲以上人口比例」的變化。做法是把男性 65+與女性 65+相加,得到總比例,再依年份繪製折線。從圖中我們可以看到新北市逐年增加的高齡化現象,並進一步推測未來社會結構的挑戰。

import pandas as pd
import matplotlib.pyplot as plt

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

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

# -----------------------------
# 2. 老化趨勢(65 歲以上比例折線圖)
# -----------------------------
df["old_ratio_total"] = df["male_65_plus"] + df["female_65_plus"]

plt.plot(df["year"], df["old_ratio_total"], marker="o", color="purple")
plt.xlabel("Year")
plt.ylabel("Percentage (%)")
plt.title("Trend of Population 65+ in New Taipei")
plt.grid(True)
plt.show()

https://ithelp.ithome.com.tw/upload/images/20250907/20178624URB2rESiZy.pnghttps://ithelp.ithome.com.tw/upload/images/20250907/20178624xeypnHcBcL.png

透過這兩種視覺化,我們不僅能更直觀理解資料,也能提出社會議題的討論,例如:高齡化社會帶來的醫療需求、勞動力下降問題,以及平均壽命差異對政策規劃的啟發。今天的成果算是資料分析中一個很有代表性的里程碑。


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

尚未有邦友留言

立即登入留言