数据分析 - 中国近10年人口变化分析
数据分析 - 中国近10年人口变化分析
三千繁华的流水,一梦长安终成灰,随着社会的快速发展中国男女人口以及城镇农村人口的变化影响着这个社会的发展,同时也可以由人口变化得出一系列社会发张现象,也可更直观的体现出中国人口在数量、结构、分布和居住环境等方面的情况变化,为科学制定国民经济和社会发展规划,统筹安排人民的物质和文化生活,实现可持续发展战略,构建社会主义和谐社会,提供科学准确的统计信息支持,所以这次实验报告是在国家统计局中找的近10年人口变化表(总人口,男生女生,以及城镇和农村)用可视化表格的形式让我们更加直观的了解到进10年人口变化多带来的社会影响。
- 数据是来自于国家统计局官网,数据查询的人口年度报表且数据表为年底人口调查表所以没有2022年。
- 本数据集的数据内容包括了近10年(2012-2021)中国人口(年末总人口(万人),男性人口(万人),女性人口(万人),城镇人口(万人),乡村人口(万人))这些数据都是以万人为单位以年度来显示的人口数据集。
- 数据处理的过程,数据中没有空值以及不常规的数值所以不需要进行数据清洗。
- 数据可视化分析:
#图一源代码
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']= False
x=np.arange(10)
y1=np.array([72311,72357,72039,71864,71650,71307,70857,70522,70063,69660])
y2=np.array([68949,68855,68969,68677,68361,67925,67469,67124,66663,66262])
y3=np.array([91425,90220,88426,86433,84343,81924,79302,76738,74502,72175])
y4=np.array([49835,50992,52582,54108,55668,57308,59024,60908,62224,63747])
bar_width=0.2
plt.bar(x,y1,tick_label=['2021年','2020年','2019年','2018年','2017年','2016年','2015年','2014年','2013年','2012年'],width=bar_width,label='男性人口')
plt.bar(x+bar_width,y2,width=bar_width,label='女性人口')
plt.bar(x+bar_width+bar_width,y3,width=bar_width,label='城镇人口')
plt.bar(x+bar_width+bar_width+bar_width,y4,width=bar_width,label='农村人口')
plt.legend()
plt.title("每年男女城镇农村人口对比(万人)")
plt.xlabel('年')
plt.ylabel('人数(万人)')
plt.show()
图一:近10年中国男女以及城镇农村人口对比
我们先看2012年到2021年的男生女生人口也就是蓝色和橘色很明显的可以看出来这10年男生一直多余女生男女比例失衡,其次我们可以看到城镇人口绿色与农村(乡村)人口红色的直观变化从2012年到2021年城镇人口的增多乡村人口的减少直白的说明我们社会的发展在一步一步向前乡村人口一步一步走向了城镇,可想而知之前的乡村人口生活质量的提高,男女比例的失调也提醒这我们重男轻女的思想要舍弃男女平等才是发展王道。
#图二源代码
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['axes.unicode_minus'] = False
x = np.array(['2021年','2020年','2019年','2018年','2017年','2016年',
'2015年','2014年','2013年','2012年'])
y1 = np.array([91425,90220,88426,86433,84343,81924,
79302,76738,74502,72175])
y2 = np.array([49835,50992,52582,54108,55668,57308,
59024,60908,62224,63747])
plt.plot(x, y1,marker='o', markerfacecolor="r", color='b', linestyle='-',label='城镇')
plt.plot(x, y2,marker='v', markerfacecolor="b", color='r', linestyle='--',label='乡村')
plt.title('进10年城镇与乡村人口折线图')
plt.xlabel('日期')
plt.ylabel('城镇人口(万人),乡村人口(万人)')
plt.legend()
plt.show()
图二:近10年城镇人口与乡村人口折线图
由图我们可以大致看出在城镇人口与乡村人口的对比之下不难推理出在2021年我们城镇人口的增加是来自与之前乡村减少的,在2012年到2019年这个区间段是成正比不断上升到2019年到2021年增长缓慢大家都应该明白2019年年末到2021乃至2022新型冠状病毒对我们的影响不单单影响了我们的生命健康一方面也印象了经济的发展可能由于疫情的原因乡村的人减少了到城镇的人口以至于我们经济发展大不如从前,当然这只是一部分原因但着更一步的证实人员流动影响我们经济发展以及社会的朝向。
#图三源代码
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']= False
kinds=(['2021年','2020年','2019年','2018年','2017年','2016年','2015年','2014年','2013年','2012年'])
money_scale=([141260,141212,141008,140541,140011,139232,138326,137646,136726,135922])
dev_position=[0.1,0,0,0,0,0,0.1,0,0.1,0]
plt.pie(money_scale,labels=kinds,autopct='%3.1f%%',shadow=True,explode=dev_position)
plt.title("近十年中国人口增长率")
plt.legend(loc='lower center',
title = "peplo",
fontsize = 10,
bbox_to_anchor=(1, 0.5, 0.4, 1)
)
plt.show()
图三:近10年人口增长饼图
同样可以由饼图看出我们在2021,2015和2013年,这三年是三个分水岭其实是变化的年末在2012到2013年变化是9.8%在2013年之后开始增长0.1%虽然增长不大但是也可以发现总人口的增长在这两年的变化并不大,但是可以明显的看到从2015年到2021年人口占比没变由此可见国家放开二胎三台政策也是未了解决我们人口遇到的问题虽然占比没变但是随着时间的推移燃控老龄化加大所以我们也由此可以大致推断四胎也不会太久(可能)。
#图四源代码
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
labels = ['总人口','男性','女性','城镇','乡村']
flows = [141260,72311,68949,91425,49835]
orientations = [-1,1,-1,0,1]
sankey=Sankey()
sankey.add(flows=flows,labels=labels,orientations=orientations,color='black',
fc='red',patchlabel='2021年人口变化明细明细',alpha=0.8)
diagrams = sankey.finish()
diagrams[0].texts[-3].set_color('b')
diagrams[0].texts[-3].set_weight('bold')
diagrams[0].text.set_fontsize(10)
diagrams[0].text.set_fontweight('bold')
plt.title('2021年人口变化明细桑基图')
plt.show()
图四:2021年人口变化明细桑葚图
此图为2021年乡村,城镇,女生男生以及总人口的桑葚图 可以可观的看出2021年各个类人口总数对比比如我们可以看到城镇人口91425万人,女性68949,乡村49835万人其中总人口的宽度最大也就是说这里数据流量最大,而且乡村和男性人口的数据流量几乎差不多。
#图五源代码
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']= False
x=np.arange(10)
y1=np.array([141260,141212,141008,140541,140011,139232,138326,137646,136726,
135922])
y2=np.array([72311,72357,72039,71864,71650,71307,70857,70522,70063,69660])
y3=np.array([68949,68855,68969,68677,68361,67925,67469,67124,66663,66262])
y4=np.array([91425,90220,88426,86433,84343,81924,79302,76738,74502,72175])
y5=np.array([49835,50992,52582,54108,55668,57308,59024,60908,62224,63747])
bar_height=0.5
plt.barh(x,y1,tick_label=['2021年','2020年','2019年','2018年','2017年','2016年'
,'2015年','2014年','2013年','2012年'],height=bar_height,label='年末总人口(万人)')
plt.barh(x,y2,left=y1,height=bar_height,label='男性人口(万人)')
plt.barh(x,y3,left=y2,height=bar_height,label='女性人口(万人)')
plt.barh(x,y4,left=y3,height=bar_height,label='城镇人口(万人)')
plt.barh(x,y5,left=y4,height=bar_height,label='乡村人口(万人)')
plt.xlabel('万人')
plt.ylabel('年')
plt.title('全面展示人口堆积条形图')
plt.legend()
plt.show()
图五:全面展示人口堆积条形图
这里我们可以全面直观的看到在2012到2021年中年末总人口的变化是几乎看不到的(有细微变化)在这10年当中男性人口的减少说明我们人们不在以重男轻女这种观念从男生人数的增长侧面看出我们的思想觉悟的提高男女平等以及似乎距离我们越来越近。
#图六源代码
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
y = np.arange(1,6)
labels = ['总人口','男性','女性','城镇','乡村']
x1 = [-141260,-72311,-68949,-91425,-49835]
x2 = [141212,72357,68855,90220,50992]
fig,ax =plt.subplots(1,1)
ax.barh(y,x1,tick_label=labels,label='2021年(万人)',color='red')
ax.barh(y,x2,tick_label=labels,label='2020年(万人)',color='blue')
ax.set_xlabel("万人")
ax.set_ylabel('各类型人口')
ax.set_title("2021与2020年人口增速金字塔")
ax.legend(loc='best')
plt.grid(b=True,axis='x',linewidth=0.5)
plt.show()
图六:2021与2020人口金字塔增速金字塔
金字塔图可以反映出很多问题在这副可视化图片中我们可以看到在2020年与2021年总人口,男生人口,女生人口以及城镇乡村其实是比较对称的这其实可以侧面反映出来我们的社会发展也是比较平稳,但是还有细威变化就是女生还是少于男生,我们以后应该更加注重那女平等并不是说养儿防老女儿也一样,所以我们要注重男女平等,让我们的发展更加平衡。
#图七源代码
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.lines as mlines
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
y=['2021年','2020年','2019年','2018年','2017年',
'2016年','2015年','2014年','2013年','2012年']
a=[91425,90220,88426,86433,84343,81924,79302,76738,
74502,72175]
b=[49835,50992,52582,54108,55668,57308,59024,60908,
62224,63747]
def newline(p1, p2, color='black'):
ax = plt.gca()
l = mlines.Line2D([p1[0], p2[0]], [p1[1],p2[1]], color='orange')
ax.add_line(l)
return l
fig, ax = plt.subplots(1, 1, figsize=(8, 6))
ax.scatter(y=y, x=a, s=40, color='y', alpha=0.8)
ax.scatter(y=y, x=b, s=40, color='g', alpha=0.8)
for i, p1, p2 in zip(y,a,b):
newline([p1, i], [p2, i])
ax.set_title("全国2012-2021年城镇人口与乡村人口对比哑铃图", fontdict={'size':15})
ax.set_xlim(45000,100000)
ax.set_xticks([45000,50000,55000,60000,65000,70000,
75000,80000,85000,90000,95000,100000])
ax.set_xlabel('人口(万人)')
ax.set_ylabel('年')
ax.set_yticks(y)
ax.grid(alpha=1, axis='x')
plt.legend()
plt.show()
图七:全国2012-2021年城镇人口与乡村人口对比哑铃图
全国2012-2021年城镇人口与乡村人口对比哑铃图我们不难发现从总书上看年末我们不管是城镇还是小菜鸟人口都在增加而且是在这10年里呈正比直线增加。哑铃图我们主要还是看一个点到另一个点的变化变化最大的就是我们2021年从差不多50000万人变化到了92500万人,这个变化有不难理解一方面是我们的社会发展也在疫情之后慢慢恢复一下乡村的人还是选择出门工作这只是一种可能。
#图八源代码
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']= False
values = [72311,72357,72039,71864,71650,71307,
70857,70522,70063,69660]
values_2 = [68949,68855,68969,68677,68361,67925,
67469,67124,66663,66262]
labels = ['2021年','2020年','2019年','2018年','2017年',
'2016年','2015年','2014年','2013年','2012年']
angles = np.linspace(0, 2*np.pi, len(values), endpoint=False)
values = np.concatenate((values, [values[0]]))
values_2 = np.concatenate((values_2, [values_2[0]]))
angles = np.concatenate((angles, [angles[0]]))
labels = np.concatenate((labels, [labels[0]]))
fig = plt.figure(figsize=(8, 4), dpi=100)
ax = plt.subplot(111, polar=True)
ax.plot(angles, values, color='g')
ax.fill(angles,values,alpha=0.25)
ax.plot(angles, values_2, color='b')
ax.fill(angles,values_2,alpha=0.25)
ax.set_thetagrids(angles*180/np.pi,labels)
ax.set_theta_zero_location('N')
ax.set_rlim(50000, 100000)
ax.set_rlabel_position(100)
plt.legend(["男", "女"], loc='best')
plt.title('2012-2021年男女生人口雷达图')
plt.show()
图八:2012-2021年男女生人口雷达图
12年到21年这10年我们的男性人口远大于女性人口这不得不让我们有所反思这样的形式下不加以改变以后可想而知我们的生活会有多大影响这样以来也就意味着终究有一些男生得孤独终身(也包括个别女生)这样一来的发展只会让我们的男性过剩女性人口不足这样的社会对于持久发展并不友好,所以我们并不能让珍重情况发生所以我妈妈得尽量减少摄影情况的发生,我们得从思想让人们知道男女其实是一样的我们要提倡男女平等这样以来才可以解决我们男女不均衡问题。
三、总结
由以上的各种可视化分析我们不难得到男女人口的发展不均衡就会影响我们社会的发展不仅仅是因为疫情当然我们不可否认这是最大的阻挠,但是男女不平衡人口老龄化对我们对社会都有着深远的影响不单单只是眼前如果人口老龄化超出新生儿人口我们的社会新”能源“的注入就会下降从而我们的发展也会较慢,为什么说人口老龄化其实这侧面还是反映这男女比例的问题就是简单地说男女比例悬殊太大的画我们的新生儿一定少于我们男女人口均衡,另一方面我们乡村人口与城镇人口也可以看作简单的小型发展圈,在上面分析我们可以看出在2012到2019年乡村人口直线减少,城镇人口直线增多(并不是说乡村减少的一定去了城镇我们这里说的是大部分)我们的发展在这8年内发展也是飞快到了2020到2021设置2022年底从乡村到城镇人口的减少我们县级的发展以及各个地级市发展也远不如从前所以这些人口的变化潜移默化的影响着我们社会的发展。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?