“一胎化”35年,Python可視化初探中國人口變化 | 州的先生

1980年9月,《關於控制我國人口增長問題的公開信》標誌着“一胎化”政策開始;

1982年9月,計劃生意被定爲基本國策;

1982年12月,計劃生育被寫入憲法;

2015年10月,中共十八屆五中全會,提出“全面實施一對夫婦可生育兩個孩子政策,積極開展應對人口老齡化行動”,標誌着“一胎化”政策的終結。

在這35年間,中國經歷了經濟巨大發展,經歷了城市化進程的不斷加快,經歷了社會物質生活的不斷豐富,同時也經歷了很多問題,並且由“一胎化”政策所帶來和引起的問題也逐漸顯現到中國的社會發展中,最終導致了此政策在2015年底被終結。

那麼在這35年間,中國的人口發生了怎樣的變化?又出現了怎樣的趨勢呢?

本文藉助Python從國家統計局提供的中國人口數據中,使用可視化的手段來初探這35年來,中國人口的變化。

注:本文所使用數據來源於國家統計局官方網站——“國家數據” 1981年及以前人口數據爲戶籍統計數;1982、1990、2000、2010年數據爲當年人口普查數據推算數;其餘年份數據爲年度人口抽樣調查推算數據。總人口和按性別分人口中包括現役軍人,按城鄉分人口中現役軍人計入城鎮人口。————《國家數據》網站網頁數據說明 圖表中數量單位爲:萬人,大多數佔比單位爲%,出生率、死亡率和自然增長率單位爲‰

在國家數據網站,我們可以獲得到建國以來至2016年的人口數據,但是下載的數據有一些小小的限制,很零亂也不便於整理。我們藉助Python編寫一個小小的工具,將數據下載彙總到一個CSV文件中:

方便後期直接使用Pandas庫進行讀取和操作。

一、中國總人口增長趨勢放緩

首先來看看中國總人口的變化趨勢。

我們將1949年至2016年共計67年的年末總人口數據通過柱狀圖的形式展示出來:

from pyecharts import Line

year = data['年份']
total = data['年末總人口(萬人)']
men = data['男性人口(萬人)']
women = data['女性人口(萬人)']
men_women = data['男女人口差值']
city = data['城鎮人口(萬人)']
no_city = data['鄉村人口(萬人)']

line = Line("中國人口變化趨勢",title_pos='center',subtitle="1949年~2016年年末總人口變化(萬人)")

line.add(
    "總人口",
    year,total,
    legend_top='bottom',
    is_more_utils=True,
    mark_point=[
        'min','max',{'coord':[data[data['年份']=='1980年'].index,data[data['年份']=='1980年']['年末總人口(萬人)'].values[0]]}
    ],
    mark_point_symbolsize=80
)
line

在圖中,我們設置了三個標記點,分別是:

  • 1949年建國;
  • 1980年“一胎化”政策實施那年
  • 最近的2016年。

在這67年間,我國人口從1949年末的5億多人口增長到了2016年末的近14億人口,其中,在1980年末人口爲9億8千多萬,即將突破10億大關。

總體而言,在這67年間,我國的人口總數是呈上升趨勢的。

但是從這個柱狀圖的走勢中,我們很難看清“一胎化”政策實施前和實施後對人口的自然增長造成的影響如何。下面,我們通過計算“一胎化”政策實施前後32年(爲了方便對比,取對等的年數)人口增長的總數,來大概看看“一胎化”政策對人口增長所產生的影響。

total_1949 = data[data['年份']=='1949年']['年末總人口(萬人)'].values
total_1980 = data[data['年份']=='1980年']['年末總人口(萬人)'].values
total_2012 = data[data['年份']=='2012年']['年末總人口(萬人)'].values

from pyecharts import Bar

cate = ['人口增長總數']
after_total = total_1980-total_1949
last_total = total_2012-total_1980
bar_1980 = Bar("“一胎化”政策前後32年中國人口增長總數對比",title_pos='center',subtitle="1949-1980年人口增長總數與1980-2012年人口增長總數")
bar_1980.add('前32年',cate,after_total,legend_top='bottom',mark_point=["average"],mark_point_symbol='roundRect')
bar_1980.add('後32年',cate,last_total,legend_top='bottom',mark_point=["average"],mark_point_symbol='roundRect')
bar_1980

從上圖“一胎化”政策前後32年中國人口增長總數對比來看,自1949年年末至1980年年末,中國人口總數從54167萬人增長至98705萬人,合計增長了44538萬人;而自1980年“一胎化”政策出臺至2012年,中國人口總數從98705萬人增長至135404萬人,合計增長了36699萬人。

在“一胎化”政策出臺後的32年間,中國總體人口增長總數比之前少了7839萬人,可以說中國總體的人口增長趨勢較之於之前是有明顯的放緩的。

二、男女人口比例整體拉大

男女人口比例失衡一直是新聞媒體年年喜歡炒的冷飯,那麼中國人口中的男女比例到底是個什麼情況,我們來簡單看看:

gender_line = Line("1949-2016年中國男女人口數量變化走勢",title_pos='center')
gender_line.add("男性人口",year,men,legend_top='bottom',is_more_utils=True,is_fill=True)
gender_line.add("女性人口",year,women,legend_top='bottom',is_fill=True)
gender_line.add(
    '男女人口差值',year,men_women,
    mark_line=["average"],
    legend_top='bottom',
    mark_point=[{'coord':[data[data['年份']=='1980年'].index,data[data['年份']=='1980年']['男女人口差值'].values[0]]}]
)
gender_line

對1949年至2016年中國男性人口和女性人口分別繪製折線圖,我們可以發現,從建國以來我國一直都是出於“男多女少”的局面,男性人口始終多於女性人口一定的數量。

之前我們已經通過Pandas對每一年的男女差值進行了計算,爲了更加清晰地看到每年的男女人口數量差異值,我們單獨將男女人口差值呈現在圖表中:

gender_differ_line = Line("中國男女人口差值變化",title_pos='center',subtitle="1949-2016年")
gender_differ_line.add(
    '男女人口差值',year,men_women,
    mark_line=["average"],
    legend_top='bottom',
    is_fill=True,
    line_opacity=0.2,
    area_opacity=0.5,
    mark_point=['min','max',{'coord':[data[data['年份']=='1980年'].index,data[data['年份']=='1980年']['男女人口差值'].values[0]]}]
)
gender_differ_line

可以發現,自1949年至2016年,中國男女人口差值最小的是1965年,僅爲一千七百多萬,最高爲2000年的四千多萬,均值爲兩千八百餘萬,其值在實施“一胎化”政策左右的年份。

在實施“一胎化”前,男女比例呈現出階段性的起伏態勢,但是人口差值基本處於六十餘年的人口差值平均值之下:

  • 從1949年到1959年,男女人口差值緩慢上升;
  • 從1960年到1969年,男女人口差值迅速降至谷底,並在谷底徘徊了好幾年;
  • 從1970年到1980年,男女人口差值又緩慢上升了;

這個變化情況是否受到了當時的社會和政治活動的影響,這個暫不深究,大家如果有興趣可以自己結合其他數據進行研究。

在實施“一胎化”之後,中國男女人口差值有過走高,也有過驟降的低谷,之後又達到了歷史最大的差值4131萬人(2000年),最後有階梯性的下降,但還是維持在了差值高位上。

同時,女性人口無論是建國初期還是最近,在中國總人口中的佔比始終沒有超過50%(佔比最低的年份爲1949年末的48.04%,佔比最高的年份爲1996年的49.17%),下圖爲男女人口差值變化走勢和三個基本年份的男女人口占比圖:

在新聞媒體言及男女人口問題時,我們至少該知道“每年XXXX萬男性將成爲光棍”的背後,是我國人口基數的不斷增長,以及男女人口占比的一個基本面

三、人口自然增長率持續走低

“一胎化”政策的一個目的,就是通過減少新生兒的增加,降低人口出生率,進而降低人口自然增長率,從而減輕人口負擔。那麼,“一胎化”政策實施之後,我國的人口出生率,死亡率和自然增長率又有什麼變化呢。

from pyecharts import Line,Bar

year = borth_data['年份']
borth_rate = borth_data['出生率']
death_rate = borth_data['死亡率']
natural_rate = borth_data['自然增長率']

borth_rate_line = Line("中國人口出生率、死亡率及自然增長率變化走勢",title_pos='center',subtitle='1949年~2016年,單位:‰')

borth_rate_line.add("出生率",year,borth_rate,legend_top='bottom')
borth_rate_line.add("死亡率",year,death_rate,legend_top='bottom')
borth_rate_line.add("自然增長率",year,natural_rate,legend_top='bottom',)
borth_rate_line

由中國人口出生率、死亡率、自然增長率走勢折線圖我們可以發現,中國人口的死亡率在正常年份下都是比較穩定的,而出生率和自然增長率則在1981年之後,經歷小幅波動然後逐年降低。

可以看到,“一胎化”政策帶來的人口出生率和自然增長率的降低作用是十分明顯的。在物質生活、醫療條件越來越好的情況下,人口的死亡率不會出現大幅的變動,那麼出生人口的變動則直接影響着總的人口的變動。出生率的變化,則直接左右人口自然增長率的變化。

四、人口老齡化加劇

伴隨着人口自然增長率的降低,人口年齡結構也會相應地發生一些變化,基於此,我們收集了人口年齡結構和撫養比數據,以增加可視化探索的方向。

由於歷史原因,“國家數據”中只提供了從1982年至2016年的人口年齡結構和撫養比數據,所以我們就只從“一胎化”後看中國人口的年齡結構變化。

在大多數情況下,簡單的折線圖走勢、柱狀圖對比、餅圖結構分析就能夠讓我們從繁雜的數據中明瞭地看到一些隱藏其中的事實。所以這裏我們依然先用折線圖繪製出青少年(0-14歲)和老年(65歲及以上)人口的佔比變化。

from pyecharts import Line,Bar

year = age_data['年份']
age_total = age_data['0-14歲人口(萬人)']
age_men = age_data['15-64歲人口(萬人)']
age_women = age_data['65歲及以上人口(萬人)']

age_line = Line("中國人口年齡結構變化趨勢",title_pos='center',subtitle='單位:萬人')

age_line.add("0-14歲",year,age_total,is_more_utils=True,legend_top='bottom')
age_line.add("15-64歲",year,age_men,legend_top='bottom')
age_line.add("65歲及以上",year,age_women,legend_top='bottom')
age_line

由“中國人口年齡結構變化趨勢圖”可以發現,65歲及以上的老年人口是逐年增加的,而0-14歲的青少年人口呈局部波動的整體下降趨勢。

通過年齡結構的餅圖,我們可以更加直觀地看到人口年齡架構發生的變化:

child_1982 = age_data[age_data['年份']=='1982年']['0-14歲人口(萬人)'].values
mature_1982 = age_data[age_data['年份']=='1982年']['15-64歲人口(萬人)'].values
old_1982 = age_data[age_data['年份']=='1982年']['65歲及以上人口(萬人)'].values

pie_1982 = Pie('1982年中國人口年齡結構',title_pos='center')
pie_1982.add(
    "",['0-14歲','15-64歲','65歲及以上'],[child_1982,mature_1982,old_1982],
    is_label_show=True,
    legend_pos="bottom",
    radius=[20, 40],
    rosetype='area'
)

child_2016 = age_data[age_data['年份']=='2016年']['0-14歲人口(萬人)'].values
mature_2016 = age_data[age_data['年份']=='2016年']['15-64歲人口(萬人)'].values
old_2016 = age_data[age_data['年份']=='2016年']['65歲及以上人口(萬人)'].values

pie_2016 = Pie('2016年中國人口年齡結構',title_pos='center')
pie_2016.add(
    "",['0-14歲','15-64歲','65歲及以上'],[child_2016,mature_2016,old_2016],
    is_label_show=True,
    legend_pos="bottom",
    radius=[20, 40],
    rosetype='area'
)

可以很明顯地看到,從1982年到2016年,0-14歲的人口占比減少了一半以上,其原因,一方面是青少年進入到15-64歲的人口結構行列中(16-64歲人口結構佔比是有提升的,轉化爲大量的勞動人口紅利),另一方面,也是“一胎化”政策導致每年出生的新生兒人口減少。同時,65歲及其以上的老年人口占比增長的一倍以上。

由於0-14歲年齡段人口的逐漸減少以及65歲及以上人口的逐漸增多,導致中國近35年來,人口撫養比也發生了不小的變化。

撫養比又稱撫養係數是指在人口當中,非勞動年齡人口對勞動年齡人口數之比。撫養比越大,表明勞動力人均承擔的撫養人數就越多,即意味着勞動力的撫養負擔就越嚴重。 少兒人口撫養比以反映每100名勞動年齡人口要負擔多少名少年兒童。 老年人口撫養比 也稱老年人口撫養係數。指某一人口中老年人口數與勞動年齡人口數之比。通常用百分比表示。用以表明每100名勞動年齡人口要負擔多少名老年人。老年人口撫養比是從經濟角度反映人口老化社會後果的指標之一

from pyecharts import Line,Bar

year = age_data['年份']
age_rate_total = age_data['總撫養比(%)']
age_rate_men = age_data['少兒撫養比(%)']
age_rate_women = age_data['老年撫養比(%)']

age_rate_line = Line("中國人口撫養比結構變化趨勢")

age_rate_line.add("總撫養比",year,age_rate_total)
age_rate_line.add("少兒撫養比",year,age_rate_men)
age_rate_line.add("老年撫養比",year,age_rate_women)
age_rate_line

在“一胎化”的前二十餘年間,得益於新生人口的減少,人口總撫養比隨着少兒撫養比的下降而下降,儘管老年人口撫養比在逐漸升高,但其作用的體現,還是要等到2009年後。從2010年開始,少兒撫養佔比保持了一定的穩定,同時大量的勞動力人口進入到了老年人口行列當中,導致老年撫養比迅速擡高,從而使得從2010年開始,中國人口總的撫養比開始重新逐漸走高。

雖然如今“一胎化”政策已經廢除,但是一方面“一胎化”廢除後可能導致新生兒增多,進而使得少兒撫養比繼續有所提升,另一方面,人口紅利持續消耗,老年人口持續增多,老年撫養比也將繼續上揚,想要在短時間內將人口總撫養佔比提高還是不大可能。

五、小緒

“一胎化”政策已經成爲歷史,但是其所產生的影響,並不會馬上消失。人口的變化,關乎中國社會政治、經濟產業等各方面的發展。廢除“一胎化”政策之後,能否很快消除其所帶來、將帶來的影響,未來又會有什麼人口政策隨着中國社會的發展而出臺,我們拭目以待。

版權申明

本文版權歸屬“州的先生”,如需轉載請在文後留言,經許可方可轉載,並在文首註明來源和作者。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章