算法学习
、4对1辅导
、论文辅导
、核心期刊
项目的代码和数据下载
可以通过公众号
滴滴我
文章目录
0、项目介绍
《中华人民共和国民法典》将于2021年1月1日起施行,因此2021年开始后,有要离婚的夫妻就受到30天冷静期的限制。《中华人民共和国民法典》家庭婚姻编规定了一个月的离婚冷静期,在此期间,任何一方可以向登记机关撤回离婚申请,离婚冷静期将于2021年1月1日起正式执行,针对20年(2003-2022年)我国各地区结婚离婚数据进行分析,到底有哪些地区的离婚率一直高于全国呢
1、字段说明
数据一共621条。包含字段有
字段名称 | 示范值 |
---|---|
地区 | 北京市 |
年份 | 2022年 |
结婚登记(万对) | 9.13 |
内地居民登记结婚(万对) | 9.09 |
内地居民初婚登记(万对) | 11.81 |
内地居民再婚登记(万对) | 6.45 |
涉外及港澳台居民登记结婚(万对) | 0.04 |
离婚登记(万对) | 4.42 |
粗离婚率(‰) | 2.02 |
数据浏览
2、数据初步整理
# 加载库
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
from pyecharts.charts import Bar,Line,Scatter,Grid,Map,Pie
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
from pyecharts.charts import Map, Timeline
import bar_chart_race as bcr
from warnings import filterwarnings
filterwarnings('ignore')
pd.set_option('display.max_columns',60)
data = pd.read_csv(r'data.csv')
data.shape
data.head()
输出“地区”和“年份”查看是否存在异常的文本数据
for c_list in ['地区','年份']:
print(c_list,':')
print(data[c_list].unique().tolist())
print() # 作用是换行
data.info()
data.describe()
data['year'] = data['年份'].str.replace('年','').astype('int')
3、2013年至2022年全国平均"粗离婚率(‰)"
# 统计全国平均粗离婚率(‰)
data2 = data[data['year']>2012]
data2.sort_values('year',inplace = True)
result0 = data2.groupby('年份')['粗离婚率(‰)'].mean().reset_index(name = '全国平均粗离婚率(‰)')
c = (
Line()
.add_xaxis(data2['年份'].unique().tolist())
.add_yaxis('',data2[data2['地区']=='内蒙古自治区']['粗离婚率(‰)'].tolist())
.set_global_opts(title_opts = opts.TitleOpts(title = '2013至2022年全国平均"粗离婚率(‰)"'),
legend_opts = opts.LegendOpts(is_show = False)
))
c.render_notebook()
全国平均的“粗离婚率(‰)”从2020年开始是下降的,下降尤为明显的是2021年,是数据有疑点呢还是因为21年正式实行离婚冷静期的效果呢,各位同学可自信核实一下
4、近10年"粗离婚率(‰)"高于全国平均的地区
data2 = data2.merge(right = result0,how = 'left',left_on = '年份',right_on = '年份')
data2['粗离婚率(‰)是否高于平均'] = data2['粗离婚率(‰)']>data2['全国平均粗离婚率(‰)']
r1 = data2.groupby('地区')['粗离婚率(‰)是否高于平均'].sum().reset_index(name = '高于全国平均的次数')
# 筛选次数等于10的地区
r1 = r1[r1['高于全国平均的次数']==10]
print("近10年来均高于全国平均的地区:",r1['地区'].tolist())
近10年来均高于全国平均的地区: [‘内蒙古自治区’, ‘吉林省’, ‘四川省’, ‘天津市’, ‘辽宁省’, ‘重庆市’, ‘黑龙江省’]
data2.sort_values('year',inplace = True)
c = (
Line()
.add_xaxis(data2['年份'].unique().tolist())
.add_yaxis('内蒙古自治区',data2[data2['地区']=='内蒙古自治区']['粗离婚率(‰)'].tolist())
.add_yaxis('吉林省',data2[data2['地区']=='吉林省']['粗离婚率(‰)'].tolist())
.add_yaxis('四川省',data2[data2['地区']=='四川省']['粗离婚率(‰)'].tolist())
.add_yaxis('天津市',data2[data2['地区']=='天津市']['粗离婚率(‰)'].tolist())
.add_yaxis('辽宁省',data2[data2['地区']=='辽宁省']['粗离婚率(‰)'].tolist())
.add_yaxis('重庆市',data2[data2['地区']=='重庆市']['粗离婚率(‰)'].tolist())
.add_yaxis('黑龙江省',data2[data2['地区']=='黑龙江省']['粗离婚率(‰)'].tolist())
.set_global_opts(title_opts = opts.TitleOpts(title = '连续10年粗离婚率(‰)高于全国平均水平的地区'),
legend_opts = opts.LegendOpts(is_show = True,pos_top = "95%")
))
c.render_notebook()
5、全国各地近5年的结婚登记量-Timeline时间组件
可看出河南省、四川省、广东省是婚姻登记量较高的省份,建议用谷歌浏览器查看
result = data2[['地区','年份','结婚登记(万对)']]
result.fillna(0,inplace = True)
result = result[result['年份'].isin(['2018年', '2019年', '2020年', '2021年', '2022年'])]
year_list = result['年份'].unique().tolist()
t2 = Timeline()
t2.add_schema(
is_auto_play=True, #设置自动播放
play_interval=1000, #设置间间隔,毫秒
)
for i in year_list:
map0 = (
Map()
.add("结婚登记(万对)", [list(z) for z in zip(result.loc[result['年份'].str.contains(i)]['地区'].tolist(),
result.loc[result['年份'].str.contains(i)]['结婚登记(万对)'].tolist())], "china",
is_map_symbol_show = True
)
.set_global_opts(
title_opts=opts.TitleOpts(title="{}全国结婚登记量(万对)".format(i)),
visualmap_opts=opts.VisualMapOpts(max_=result.loc[result['年份'].str.contains(i)]['结婚登记(万对)'].max(),
range_color = ['#FFFFFF','#FF3342']),legend_opts = opts.LegendOpts(is_show = False)
)
.set_series_opts(label_opts = opts.LabelOpts(is_show = False))
)
t2.add(map0, "{}".format(i))
t2.render_notebook()
6、全国各地近5年的离婚率分布-Timeline时间组件
result1 = data2[['地区','年份','粗离婚率(‰)']]
result1.fillna(0,inplace = True)
result1 = result1[result1['年份'].isin(['2018年', '2019年', '2020年', '2021年', '2022年'])]
year_list1 = result1['年份'].unique().tolist()
tl = Timeline()
tl.add_schema(
is_auto_play=True, #设置自动播放
play_interval=1000, #设置间间隔,毫秒
)
for i in year_list1:
map0 = (
Map()
.add("粗离婚率(‰)", [list(z) for z in zip(result1.loc[result1['年份'].str.contains(i)]['地区'].tolist(),
result1.loc[result1['年份'].str.contains(i)]['粗离婚率(‰)'].tolist())], "china",
is_map_symbol_show = True
)
.set_global_opts(
title_opts=opts.TitleOpts(title="{}全国粗离婚率(‰)分布图".format(i)),
visualmap_opts=opts.VisualMapOpts(max_=result1.loc[result1['年份'].str.contains(i)]['粗离婚率(‰)'].max(),
range_color = ['#FFFFFF','#43c6ac']),legend_opts = opts.LegendOpts(is_show = False)
)
.set_series_opts(label_opts = opts.LabelOpts(is_show = False))
)
tl.add(map0, "{}".format(i))
tl.render_notebook()
7、动态展示20年来每年离婚率排名前5的地区
data['year'] = data['年份'].str.replace('年','').astype('int')
result2 = pd.pivot_table(data,index = 'year',columns = '地区',values = '粗离婚率(‰)')
result2.columns.name = ''
result2.fillna(0,inplace = True)
bcr.bar_chart_race(result2,
filename = None,
# steps_per_period= 10,
# period_length=200,
fixed_order = False,
n_bars = 5,
bar_size = 0.6,
perpendicular_bar_func ='median',
title = '粗离婚率(‰)前五的地区',
# cmap="set3",
filter_column_colors = True
)