從20年來的人口結構變化看,90後中年壓力有多大!

從20年來的人口結構變化看,90後中年壓力有多大!

————數據可視化50圖(十五)

前言

本期開始不在使用寶可夢數據。因為接下來是15期的時序圖,他們體現了時間變化週期。數據包括,經濟,人口,歷史等等許多豐富的數據圖表。數據來自國家統計局和世界銀行的公開數據。

例35 折線圖

讀取表格

file_name=r"..\\data\\國家統計.xlsx"
df_raw = pd.read_excel(file_name,sheet_name =r'人口',encoding="gbk")
#pd.read_csv('https://github.com/selva86/datasets/raw/master/AirPassengers.csv')
df_raw.head(10)
從20年來的人口結構變化看,90後中年壓力有多大!

df=df_raw
x=u"年份"
y=u"年末總人口(萬人)"
y2=u"少兒撫養比(%)"
y3=u"老年撫養比(%)"
y4=u'總撫養比(%)'

# Draw Plot
fig=plt.figure(figsize=(10.5,7), dpi= 80)
ax1 = fig.add_subplot(111)
ax2 = ax1.twinx()
ax2.plot(x, y, data=df, color='tab:red')
ax1.plot(x, y2, data=df)
ax1.plot(x, y3, data=df)
ax1.plot(x, y4, data=df)
從20年來的人口結構變化看,90後中年壓力有多大!

圖像解釋

  • Y軸 百分比數值
  • Y2軸 總人口數量(萬人)
  • X軸 年份
  • 按照目前趨勢2025年老年人口就會反超少年人口

函數解釋

  • 注意 導入表格需要使用編碼參數。encoding=“GBK” 否則中文識別出錯。
  • ax2 = ax1.twinx() 使用第二Y軸,如果只使用一個ax軸,那麼10000和100將按公共比例出現再一張圖上,也就是說再10000的尺度下看不出100的變化量。所以要再各自的比例軸上繪製圖像

例 36 帶轉折點折線圖

file_name=r"..\\data\\國家統計.xlsx"
df_raw_hl = pd.read_excel(file_name,sheet_name =u'匯率',encoding="gbk")
df_raw_hl.head(10)
從20年來的人口結構變化看,90後中年壓力有多大!

從20年來的人口結構變化看,90後中年壓力有多大!

import matplotlib as mpl

df = df_raw_hl
x=u'年份'
y=u'每100美元'
y2=u'每100歐元'

# Get the Peaks and Troughs
data = df[y].values
doublediff = np.diff(np.sign(np.diff(data)))
peak_locations = np.where(doublediff == -2)[0] + 1

doublediff2 = np.diff(np.sign(np.diff(-1*data)))
trough_locations = np.where(doublediff2 == -2)[0] + 1

# Draw Plot
plt.figure(figsize=(7,5), dpi= 80)
plt.plot(x, y, data=df, color='tab:blue', label='100美元匯率')
plt.plot(x, y2, data=df, color='tab:blue', label='100歐元匯率')
plt.scatter(df[x][peak_locations], df[y][peak_locations], marker=mpl.markers.CARETUPBASE, color='tab:green', s=100, label='Peaks')
plt.scatter(df[x][trough_locations], df[y][trough_locations], marker=mpl.markers.CARETDOWNBASE, color='tab:red', s=100, label='Troughs')

圖像解釋

  • 再上升下降的轉折點用箭頭標記
  • X軸 年份
  • Y軸 100外匯等值人民幣數量

函數解釋

  • np.diff() 求差分,相當於用導數求單調性。這裡去結果的符號就是單調性。
  • plt.scatter()marker=mpl.markers.CARETUPBASE 點的形狀設為三角形。

結論

可以看出未來10年也就是90後的30幾歲,經濟人口壓力都在上漲,而人生中年30-40正是心理低谷期,正好和人生的曲線相反。一漲一落,我們該如何應對未來這場中年危機?唯有現在努力,把曲線拉平,避免大起大落。

看到這幾張圖,自然想到去預測未來幾年的變化。有機會做一期線性迴歸。

下期預告

世界歷史大數據

數據地址:

https://github.com/ub3132003/pynotebook/blob/master/data/%E5%9B%BD%E5%AE%B6%E7%BB%9F%E8%AE%A1.xlsx?raw=true

由於篇幅所限文章代碼省略了數據標準化,和畫板標註的代碼。完整代碼見我的github:https://github.com/ub3132003/pynotebook/blob/master/plot/50%20graph.ipynb

靈感來自: machinelearningplus 感謝b站UP "菜菜TsaiTsai" 分享這個博客.

上期內容:

jupyter安裝教程:


分享到:


相關文章: