昨天我們已經完成資料載入與檢查,今天要開始第一個簡單的視覺化練習—長條圖。長條圖是一種直觀又常見的圖表,非常適合比較不同類別的數據。我們可以先挑選一個年份,例如最新的資料,觀察各年齡層的男女比例差異。
實作上,我們先篩選某一年度的數據,例如: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()
除了年齡結構,我們還能用另一張長條圖比較男女平均壽命。這樣一來,不僅能看出人口結構的差異,也能同時觀察壽命長短的性別落差。新北市通常呈現女性壽命較長的現象,這是全球普遍的趨勢。
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()
今天的任務是讓大家熟悉基本的繪圖方式,體驗如何把資料轉換成直觀的視覺化。明天,我們將挑戰更進階的「人口金字塔」,並觀察高齡化的發展趨勢