人口結構分佈
-
臺灣區間人口數(population_taiwan_age2024.csv)
世界各國區間人口數_0_14(population_world_age2024_0_14.csv)
世界各國區間人口數_15_64(population_world_age2024_15_64.csv)
世界各國區間人口數_65以上(population_world_age2024_65_plus.csv)
import pandas as pd import numpy as np import plotly.graph_objs as go import plotly.io as pio # 針對 Colab 的顯示設定 pio.renderers.default = 'colab' # 1. 讀取資料 臺灣區間人口數 = pd.read_csv('population_taiwan_age2024.csv') 世界各國區間人口數_0_14 = pd.read_csv('population_world_age2024_0_14.csv') 世界各國區間人口數_15_64 = pd.read_csv('population_world_age2024_15_64.csv') 世界各國區間人口數_65以上 = pd.read_csv('population_world_age2024_65_plus.csv') # 2. 設定參數 目標年份 = '2023' 參考國家 = { '日本': 'Japan', '南韓': 'Korea, Rep.', '中國': 'China' } p1, p2, p3 = [], [], [] country_names = ['臺灣', '日本', '南韓', '中國'] # 3. 處理資料 # --- A. 處理臺灣資料 (修正版) --- # 因為台灣檔案的結構是:年份在「標題」,年齡層標籤在「第一欄(Year)」 tw_p1 = 臺灣區間人口數[臺灣區間人口數['Year'] == 'Age_0_14'][目標年份].values[0] tw_p2 = 臺灣區間人口數[臺灣區間人口數['Year'] == 'Age_15_64'][目標年份].values[0] tw_p3 = 臺灣區間人口數[臺灣區間人口數['Year'] == 'Age_65_Plus'][目標年份].values[0] tw_all = float(tw_p1 + tw_p2 + tw_p3) p1.append(tw_p1 / tw_all * 100) p2.append(tw_p2 / tw_all * 100) p3.append(tw_p3 / tw_all * 100) # --- B. 處理世界各國資料 --- for label, wb_name in 參考國家.items(): v1 = 世界各國區間人口數_0_14[世界各國區間人口數_0_14['Country Name'] == wb_name][目標年份].values[0] v2 = 世界各國區間人口數_15_64[世界各國區間人口數_15_64['Country Name'] == wb_name][目標年份].values[0] v3 = 世界各國區間人口數_65以上[世界各國區間人口數_65以上['Country Name'] == wb_name][目標年份].values[0] total = v1 + v2 + v3 p1.append(v1 / total * 100) p2.append(v2 / total * 100) p3.append(v3 / total * 100) # 4. 繪圖資料 trace1 = go.Bar(x=country_names, y=p1, name='0-14 歲') trace2 = go.Bar(x=country_names, y=p2, name='15-64 歲') trace3 = go.Bar(x=country_names, y=p3, name='65 歲以上') traces=[trace1, trace2, trace3] # 5. 建立 Layout layout = go.Layout( title=f'{目標年份} 年各國人口結構比例圖', xaxis={'title': '國家'}, yaxis={'title': '百分比 (%)', 'range': [0, 100]}, barmode='stack' ) # 6. 組合並顯示 fig = go.Figure(traces, layout=layout) fig.show()執行結果
