查看原文
其他

从第七次人口普查看中国人口变化|Stata与Python交互绘图

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:任   哲,中南财经政法大学经济学院

本文编辑:陈梦华

技术总编:戴   雯

Stata&Python云端课程来啦!

好雨知时节,当春乃发生。为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》。关于Stata,爬虫俱乐部推出了系列课程,内容包括字符串函数、正则表达式、爬虫专题和文本分析,可以随心搭配,价格美丽,物超所值,更多信息可查看Stata系列推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程》等。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦!

引言


大家好,让不少人翘首以待的第七次人口普查结果终于在5月11日公布了。根据这次普查的结果,我们在宏观上不仅可以了解中国人口总量的变化趋势,也能够得到人口分布和人口结构的变动信息。可是干枯枯的数字呈现的是一种抽象的信息,我们需要的是将这些信息更加具体形象的表达出来。那如何将枯燥的数字变得生动起来呢?最好的方法自然就是利用这些数据来绘制图形。在新版的Stata17中也优化了与Python的交互,今天本文就尝试在Stata中调用Python来绘制一些生动炫酷的图形,来展示近十年来的中国人口变化。
本文分为两部分,第一部分展示绘制的图形,第二部分解析如何在Stata中调用Python来绘制图形。文中数据仅包含中国大陆地区,数据来自国家统计局公布的《第七次全国人口普查公报》、《第六次全国人口普查主要数据》。
1第七次人口普查数据图形化

首先是中国大陆人口密度图,第七次人口普查中的人口密度是按照常住人口计算的,比户籍人口反映的人口密度更加真实。图中颜色越红,代表人口密度越大。可以看到中国大陆地区的人口密度分布和大家的印象还是相一致的,人口主要还是分布在胡焕庸线以南。但是除去山东、河南两个传统人口大省,北京、上海、天津、广州、江苏的人口密度明显比周边数据高出一个水平,似乎展现了一种人口向经济发达地区聚集的现象。


其次是中国历次人口普查受教育程度人口变化图,从图中可以看到上过大学(含大专)的人数在近20年快速增加,目前已经达到了每10万人中有15467人拥有大学(含大专)学历。同时,高中文化程度的受教育人口也在稳定增加,伴随着中国高等教育的扩招,可以预见下个十年中国的大学生会继续保持快速增长。
可令人担忧的是,在2010-2020年期间拥有初中文化程度的人数出现了下跌,甚至拥有小学文化程度的人数从2000年开始就出现了下跌。虽然用拥有小学文化程度的人的数量下跌来代指少子化情况的加重是不严谨的,但管中窥豹,在中国大力普及义务教育的背景下,拥有初中、小学文化程度的人数下降仍是一个值得关注的问题。随便说一句,0-14岁人口所占比重最少的地区就是上海(9.8%),远低于全国平均水平(17.95%)。


紧接着是中国大陆各地区男女比例图,由于男女比例都是类似105.07(全国)的数据,为了绘制的图形能有更好的显示效果,本文对男女比例做了数值上的处理得到FM值,计算过程如下:

最后由FM值得到的图形如下所示,同样是按照常住人口统计,颜色越红,代表男性越多。和一般人的印象不同,中国整体上呈现的是,北方男女比例更加均衡,而南方男多女少的现象。当然,这并不能直接说明南方有性别歧视,因为这是常住人口的性别比,而不是新生婴儿的性别比。考虑到人口向经济发达地区聚集,一个可能的解释是中国的男性更倾向于去南方工作。


最后是中国城乡人口变化图。如图可见,伴随着中国城市化的发展,中国的城镇人口数量在逐年稳定增长,2020城镇居民已经高达9亿人。伴随着城镇人口增加的是剧烈的人口流动,根据第七次人口普查的:我国人户分离人口为49276万人,其中,市辖区内人户分离人口为11694万人,流动人口为37582万人,其中,跨省流动人口为12484万人。与2010年相比,人户分离人口增长88.52%,市辖区内人户分离人口增长192.66%,流动人口增长69.73%。我国经济社会持续发展,为人口的迁移流动创造了条件,人口流动趋势更加明显,流动人口规模进一步扩大。或许,在不远的将来,故土难离一词只会存在中国人的记忆之中。

以上就是本文绘制的全部图形了,接下来我们来看看该如何绘制这些图形吧!

2绘图过程解析

本文图形的绘制过程大同小异,都是分为传递数据绘制图形两部。所以就只对中国大陆人口密度图进行解析,剩下的图形大家依葫芦画瓢即可。
在Stata中调用Python来绘制图形最重要的就是数据的调用,还好Stata公司开发的Python第三方库SFI(the Stata Function Interface)可以帮助用户轻松地完成这一目标。SFI有很多的功能,但在本文中只需要用到最简单也是最常用的一种——输出变量。根据七普公报我们得到的全国各省的人口密度数据如下所示:

为了将这些数据传递到Python环境中,我们需要在Stata中打开Python,然后使用SFI的Data模块,并使用get()方法将数据集中的省份人口密度2020两个变量的数据传递到Python环境中,并赋给provinces和density两个列表。操作如下:
python:from sfi import Dataprovinces= Data.get("省份")density= Data.get("人口密度2020")print(provinces) #打印provinces查看end
得到结果如下,可以看到变量省份中的数据已经传递到列表provinces之中了。

将Stata的数据调用到Python环境中后,就可以使用pyecharts来绘制图形。关于pyecharts想必大家都不陌生,爬虫俱乐部已经出了无数篇绘图案例,所以这里就不再赘述,直接将绘制图形的代码放到上文传递数据的代码之后就可以了。具体代码如下:
python:from sfi import Datafrom pyecharts import options as optsfrom pyecharts.charts import Map        //人口密度图provinces= Data.get("省份")density= Data.get("人口密度2020")c = ( Map() .add("", [list(z) for z in zip(provinces, density)], "china") .set_global_opts( title_opts=opts.TitleOpts(title="中国大陆人口密度图"), visualmap_opts=opts.VisualMapOpts(max_=800), ) .render("map_density_China.html"))end
这样就可以得到中国大陆人口密度图了:

最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。

以上就是本文的全部内容,如果你觉得有用的话,就请给我们一个点赞吧!


对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!

往期推文推荐  

 200万投资者关注!!哪家公司这么牛?

 
带你领略一天天气之变化

 利用pyecharts看微博粉丝地区分布

 零值太多怎么办?解锁Stata17新命令ziologit

  Stata17新功能之Python API 小罗肥归升级啦|解锁Stata17之新命令xtmlogit 
速度大比拼之Stata17有多快?

初识PyStata

辞旧迎新——Stata17之Do-file编辑器优化

Stata17新亮点——解放表格输出生产力

【爬虫+可视化】链家网北京租房信息

 手把手教你如何获取股票数据和可视化

  Countvalues——数数的超级小帮手

         frame框架进阶篇

 下拉选择框如何变成“小猫咪” | selenium小技巧

  Python中的运算符知多少?

  快来get缺失值的正确打开方式

  frame框架——我到底在哪个“房间”

如何使用Pandas读取txt文件?

基于MySQL数据库实现增量式爬取

寻找春日气息|本月最受欢迎的景点都在这里!

问世间情为何物,大数据也想参悟——后考研时代,何以解忧?唯有数据!

Python与数据库交互—浅述pymysql

偷懒小妙招|selenium之玩转鼠标键盘操作--鼠标篇

大家用Stata来“找茬”

“粉墨登场”——多期双重差分法(DID)的Stata操作

Python与百度地图合璧,绘制棒呆的热力地图

关于我们 


微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存