致敬情人节,用数据分析我国5年婚姻状况,且行且珍惜
今年回老家过年,姑妈一直催刚刚大学毕业的表弟找女朋友。被催婚的表弟说“养活自己都不容易了,哪有钱找女朋友,我不结婚的”。姑妈无奈说,“你不结婚早说啊,不用我那么辛苦供你上大学”。虽然我们都知道表弟不是真的不想找对象结婚,姑妈也知道表弟他只是气话,但是确实说出了我们年轻人的无奈。估计姑妈做梦都想不到,他们那年代的人结婚就是三两天的事情,两人通过媒人婆介绍坐在一起,当场立断定姻缘,合适就发个大红包,不合适就回礼个小红包。
无独有偶,我堂哥87年的仍未结婚。中专毕业一直在城市打拼,前几年回村务农种植点三华李,相亲数十场,仍未遇到良缘 。现在农村结婚也那么难的了吗?还是我们年轻人想法多了?越多想法越难凑合?
我也想一探究竟,用数据说话,看看结婚是不是很难,看看我国目前婚姻年龄分布情况,分地区农村婚姻状况分布等信息。
让我的杠精表弟且行且珍惜,遇到了就不要错过,错过了可能就是永远。不信?数据是不会骗人的。
本过程采用Anaconda-Jupyter-notebook开发环境,用到pandas、plotly等库,所有脚本及数据请点击下载,谢谢!
目录
一 数据准备清洗
为此,我找了两份数据,一份是2015-2019年各省农村性别婚姻状况,一份是2018-2019年按年龄层性别分布婚姻状况。数据均取自于国家统计局http://www.stats.gov.cn/tjsj./ndsj/
各省农村性别婚姻状况取自于《中国人口和就业统计年鉴》-2-39《全国1人口省略各地区乡村分性别婚姻状况的人口》,2015-2019年五年的数据,数据均是取全国1%人口抽样调查数据样本。一般《中国人口和就业统计年鉴》是次年才发布,所有没有找到2020年的数据,需要2021年发布才有。虽然不能代表最新数据,但是2015-2019年五年发数据,均可以反应我国农村目前婚姻状况。部分数据样本如下:
年份 | 地区 | 15岁及以上 | 男_15岁及以上 | 女_15岁及以上 | 未婚 | 男_未婚 | 女_未婚 | 有配偶 | 男_有配偶 | 女_有配偶 | 离婚 | 男_离婚 | 女_离婚 | 丧偶 | 男_丧偶 | 女_丧偶 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2019 | 全国 | 347154 | 175388 | 171766 | 61300 | 39196 | 22105 | 253911 | 123968 | 129943 | 6486 | 4622 | 1865 | 25456 | 7602 | 17854 |
2019 | 北京 | 2063 | 1119 | 945 | 392 | 234 | 158 | 1546 | 842 | 703 | 44 | 23 | 21 | 81 | 19 | 62 |
2019 | 天津 | 1748 | 893 | 855 | 321 | 192 | 129 | 1304 | 647 | 657 | 46 | 28 | 18 | 77 | 26 | 51 |
2019 | 河北 | 20126 | 10184 | 9942 | 3015 | 1957 | 1058 | 15546 | 7590 | 7957 | 308 | 241 | 67 | 1256 | 397 | 859 |
2019 | 山西 | 10113 | 5188 | 4925 | 1979 | 1250 | 729 | 7345 | 3638 | 3708 | 163 | 125 | 37 | 625 | 175 | 450 |
按年龄层性别分布婚姻状况,数据为《中国人口和就业统计年鉴_第二部分年人口变动情况省略及以上人口分年龄_性别的婚姻状况》,及根据年龄层分布的婚姻状况数据,数据均是取全国1%人口抽样调查数据样本。本次分析取2018-2019年数据,2017年的数据没找到,所以只分析两年数据。部分数据样本如下:
年份 | 年龄层 | 15岁及以上口 | 男_15岁及以上 | 女_15岁及以上 | 未婚 | 男_未婚 | 女_未婚 | 有配偶 | 男_有配偶 | 女_有配偶 | 离婚 | 男_离婚 | 女_离婚 | 丧偶 | 男_丧偶 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2019 | 总计 | 908609 | 459235 | 449374 | 163714 | 98992 | 64721 | 672419 | 334602 | 337817 | 20530 | 11546 | 8984 | 51947 | 14095 |
2019 | 15-19 | 55822 | 30261 | 25560 | 55038 | 30048 | 24990 | 777 | 212 | 565 | 6 | 1 | 5 | 2 | 1 |
2019 | 15 | 11586 | 6284 | 5302 | 11556 | 6267 | 5288 | 29 | 17 | 12 | 1 | 1 | |||
2019 | 16 | 10421 | 5655 | 4767 | 10376 | 5639 | 4737 | 43 | 14 | 29 | 2 | 1 | 1 | 1 | 1 |
2019 | 17 | 11229 | 6094 | 5135 | 11155 | 6069 | 5086 | 74 | 25 | 49 | |||||
2019 | 18 | 11136 | 6032 | 5104 | 10918 | 5972 | 4946 | 217 | 60 | 157 | 1 | 1 | |||
2019 | 19 | 11449 | 6197 | 5253 | 11034 | 6101 | 4932 | 414 | 95 | 318 | 1 | 1 | 1 | ||
2019 | 20-24 | 61519 | 32854 | 28665 | 50292 | 28817 | 21475 | 11036 | 3944 | 7092 | 183 | 91 | 92 | 9 | 1 |
2019 | 20 | 11121 | 5998 | 5124 | 10383 | 5768 | 4615 | 731 | 225 | 506 | 7 | 4 | 3 | ||
2019 | 21 | 12030 | 6469 | 5562 | 10778 | 6088 | 4690 | 1236 | 374 | 862 | 14 | 7 | 7 | 2 | |
2019 | 22 | 11891 | 6367 | 5525 | 9950 | 5725 | 4225 | 1911 | 628 | 1284 | 29 | 14 | 15 | 1 | |
2019 | 23 | 12411 | 6600 | 5811 | 9424 | 5488 | 3937 | 2918 | 1077 | 1841 | 68 | 36 | 32 | 1 | |
2019 | 24 | 14065 | 7421 | 6644 | 9756 | 5749 | 4008 | 4239 | 1641 | 2599 | 65 | 31 | 35 | 4 | 1 |
2019 | 25-29 | 81741 | 42186 | 39555 | 32502 | 20651 | 11851 | 48010 | 20885 | 27125 | 1182 | 641 | 541 | 47 | 9 |
2019 | 25 | 14258 | 7420 | 6838 | 8431 | 5085 | 3346 | 5700 | 2275 | 3426 | 118 | 57 | 60 | 8 | 2 |
2019 | 26 | 14941 | 7726 | 7215 | 7442 | 4589 | 2853 | 7332 | 3061 | 4271 | 159 | 73 | 86 | 8 | 2 |
2019 | 27 | 15439 | 8000 | 7439 | 6197 | 3964 | 2233 | 9015 | 3907 | 5108 | 223 | 129 | 95 | 3 |
1 数据导入
# 1-读取数据
import pandas as pd
CSV_FILE_PATH_01 = './01_各省农村婚姻状况数据.csv'
CSV_FILE_PATH_02 = './02_全国年龄层婚姻状况数据.csv'
df01 = pd.read_csv(CSV_FILE_PATH_01,sep=',',encoding="gbk")
df02 = pd.read_csv(CSV_FILE_PATH_02,sep=',',encoding="gbk")
print(df01.head(5))
print(df02.head(5))
2 样本数据清理转换
# 2 历年统计样本总数据情况
df01_total = df01[df01.地区 =='全国']
print(df01_total)
年份 | 地区 | 15岁及以上 | 男_15岁及以上 | 女_15岁及以上 | 未婚 | 男_未婚 | 女_未婚 | 有配偶 | 男_有配偶 | 女_有配偶 | 离婚 | 男_离婚 | 女_离婚 | 丧偶 | 男_丧偶 | 女_丧偶 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2019 | 全国 | 347154 | 175388 | 171766 | 61300 | 39196 | 22105 | 253911 | 123968 | 129943 | 6486 | 4622 | 1865 | 25456 | 7602 | 17854 |
31 | 2018 | 全国 | 372487 | 188280 | 184207 | 66272 | 41659 | 24613 | 272839 | 133925 | 138914 | 6568 | 4605 | 1964 | 26807 | 8091 | 18716 |
63 | 2017 | 全国 | 382931 | 193484 | 189446 | 67993 | 42154 | 25840 | 280967 | 138147 | 142821 | 6460 | 4615 | 1846 | 27510 | 8569 | 18941 |
95 | 2016 | 全国 | 398692 | 201401 | 197292 | 71988 | 44466 | 27523 | 291770 | 143175 | 148595 | 6224 | 4374 | 1850 | 28709 | 9385 | 19324 |
127 | 2015 | 全国 | 7542218 | 3808334 | 3733885 | 1361810 | 843848 | 517962 | 5544921 | 2718782 | 2826140 | 102716 | 73701 | 29014 | 532772 | 172003 | 360769 |
五年数据,15年的抽样数据样本最大有700万多,其他年份基本是30万份。总体样本数量不一样,我们将它转换成比例,方便历年数据作对比。清理转换数据为比率:
## 男女比率
df01['占比_男_15岁及以上'],df01['占比_女_15岁及以上'] = [df01['男_15岁及以上'] / df01['15岁及以上'],df01['女_15岁及以上'] / df01['15岁及以上']]
## 未婚比率
df01['占比_未婚'],df01['占比_未婚_男'] ,df01['占比_未婚_女']= [df01['未婚'] / df01['15岁及以上'],df01['男_未婚'] / df01['未婚'],df01['女_未婚'] / df01['未婚']]
## 有配偶比率
df01['占比_有配偶'],df01['占比_有配偶_男'] ,df01['占比_有配偶_女']= [df01['有配偶'] / df01['15岁及以上'],df01['男_有配偶'] / df01['有配偶'],df01['女_有配偶'] / df01['有配偶']]
## 离婚比率
df01['占比_离婚'],df01['占比_离婚_男'] ,df01['占比_离婚_女']= [df01['离婚'] / df01['15岁及以上'],df01['男_离婚'] / df01['离婚'],df01['女_离婚'] / df01['离婚']]
## 丧偶比率
df01['占比_丧偶'],df01['占比_丧偶_男'] ,df01['占比_丧偶_女']= [df01['丧偶'] / df01['15岁及以上'],df01['男_丧偶'] / df01['丧偶'],df01['女_丧偶'] / df01['丧偶']]
## 占比的列
type(df01)
cl_list = list(df01.filter(regex='占比'))
##放大100倍
df01_ratio = df01[cl_list] *100
cl_list.insert(0,'地区')
cl_list.insert(0,'年份')
df01_ratio =df01_ratio.reindex(columns=cl_list)
df01_ratio['地区'] = df01['地区']
df01_ratio['年份'] = df01['年份']
print(df01_ratio.head())
部分数据显示如下
二 全国整体婚姻状况分析
基本数据已经准备完毕,我们开始看看这些数据都有带来给我们什么信息。先看看全国整体数据情况:
部分代码:
df =df01_ratio[df01_ratio.地区 =='全国']
x = df['年份']
fig = go.Figure()
for c in list(df.columns.drop(['年份','地区'])):
fig.add_trace(go.Scatter(x=x, y=df[c],
mode='lines+markers',
name=c))
fig.show()
基本符合我们的预期,数据项比较多,我们逐一缕一缕,看看都有些什么信息。
1 未婚情况
发现,2015年-2019年未婚人数占比率逐年下降,由18%降到17.6%。女生未婚人数由38%降到36%,看样子大家都结婚啦 ,而且估计步入15岁的年轻人人口逐步减少,所以未婚率下降,比较符合我国国情。再看看男生未婚的,却是由61%上升到63%。 未婚人群中,63%都是男的打光棍,女生占比不到40%。
结论1:男人成年后,60%+是要打光棍,而且逐年上升。
2 配偶情况
再看看配偶情况,5年内有配偶占比情况均73%,而男女分布情况基本为两级分化。男生有配有占比49%左右徘徊.找不到对象的基本都是男的。很符合我们的认知。
结论2:男人成年后,60%+是要打光棍,而且逐年上升。
3 离婚情况
离婚情况,很明显,逐年上升,而且涨得非常快。
看看离婚性比分别,基本男的占70%,女的30%左右。杠精表弟说,男女离婚不是应该是五五分吗?为什么男的占比70%?很显然就是人家女生离婚后还可以找到好人家呗,离婚男还想轻易有人要?(⊙﹏⊙),所以,结婚的哥们,好好珍惜老婆,别想着你还可以找到更好的,离婚后70%*52%概率你还是没有配偶的离婚状态。
结论3:男人离婚后更难结婚
4 丧偶情况
15岁丧偶情况,整体小幅度上升趋势。估计是老龄化导致,比较年轻人占比逐步减小。而比较有意思的是,男女的上丧偶占比三七分,应该是女生丧偶后更多选择坚守曾经那份爱情吧,或是男人们工作压力大,而且从事危险工作多。程序员等996人群不容易,且包容您的丈夫吧,他为了这个家也不容易。爱情,婚姻,始终都是两个人的。
结论4:男人女人都不易,既然选择在一起就风雨兼程
杠精表弟说,这只是全国的状况,不代表我们大广东实际情况啊,可能我们广东女多男少呢,可能我们广东有钱就不一样呢?
也是,那我们看看全国各地的婚姻状况吧
三 2019年各省婚姻状况分析
1 省未婚情况
df =df01_ratio[(df01_ratio.地区 !='全国') & (df01_ratio.年份 == 2019 )]
#print(df.head())
TYPE_NAME = '占比_未婚_男'
fig = px.pie(df, values=df[TYPE_NAME], names='地区', title='2019年各省'+TYPE_NAME+'情况')
fig.show()
未婚女西藏、北京、天津多,未婚男福建、湖北、海南多。2019年整体未婚情况,西藏、海南广东最多。单独分析下广东情况:基本也是男的多。不容易啊,找个对象!
2 配偶情况分布
上海大哥有对象无疑,福建大哥未婚有对象?
3 离婚情况分布
黑龙江的爷们娘们反省下?
山东的哥们说两句?数据好像也不能反应什么,只看到分布情况。
4 丧偶情况分布
四 且行且珍惜
杠精表弟还想狡辩说自己年轻,不急。本想把2018/2019两年的我国按年龄层、性别婚姻状况数据分析给他看,让他死心的,不过我也没有这个精力了。表弟你自己分析吧,我相信基本可以反映你在那个年龄层多大概率还是未婚没有配偶。毕竟我们也不是地主人家。
所以,奉劝那些还以为自己有条件、还年轻的年轻的人们,如果找到真爱、遇到对的,请且行且珍惜。
五 最后请支持
本过程脚本及数据,请点击下载:https://download.csdn.net/download/sc_liuliye/15270917,谢谢!或关注wx公众号:freo-studio,回复“婚姻状况数据分析”,获取文件脚本地址链接