【数据可视化-16】珍爱网上海注册者情况分析
🧑 博主简介:曾任某智慧城市类企业
算法总监
,目前在美国市场的物流公司从事高级算法工程师
一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907
)
💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。
【数据可视化-16】珍爱网上海注册者情况分析
- 一、引言
- 二、数据来源与预处理
- 2.1 python库与数据导入
- 2.2 数据清洗
- 三、数据可视化
- 3.1 性别比例分析
- 3.2 年龄分布分析
- 3.3 婚姻状况分析
- 3.4 自我介绍词云图分析
- 四、总结
一、引言
随着春节的结束,相亲市场逐渐升温。为了更好地了解上海珍爱网的注册人员信息,进行了一次数据爬取,并使用 pyecharts
进行了可视化分析。以下是详细报告。
二、数据来源与预处理
爬取了珍爱网上海地区的注册人员信息,包括性别、城市、年龄、薪资或学历、婚姻状况、身高和自我介绍等字段。数据保存在一个 CSV 文件中。
2.1 python库与数据导入
首先,需要读取数据并进行预处理。以下是导入相应的库读取数据的代码:
import pandas as pd
import numpy as np
import jieba
import time
from pyecharts.charts import Bar,Line,Map,Page,Pie
from pyecharts import options as opts
from pyecharts.globals import SymbolType
# 读取CSV文件
df = pd.read_csv('shanghai_zhenai_data.csv')
2.2 数据清洗
对数据字段进行清洗,产生结构化的特征。
df1["age_cut"]=pd.cut(df1["年龄"],bins=[18,30,42,54,66,78])
df1["age_cut2"]=pd.qcut(df1["年龄"],5,labels=['青年', '壮年', '中年', '老年','晚年'])
三、数据可视化
3.1 性别比例分析
首先,分析上海珍爱网注册人员的性别比例。以下是使用 pyecharts
创建性别柱状图的代码:
temp = df1['性别'].value_counts().reset_index()
temp.columns = ['性别','计数']
data_pair = [(row['性别'], row['计数']) for _, row in temp.iterrows()]
top_city = sorted(data_pair, key=lambda x: x[1], reverse=True)
### 不同的柱子使用不同的颜色
data_pair = []
for k, v, c in zip([x[0] for x in top_city], [x[1] for x in top_city], ['red', 'blue']):
data_pair.append(
opts.BarItem(
name=k,
value=v,
itemstyle_opts=opts.ItemStyleOpts(color=c)
))
bar = (Bar(init_opts=opts.InitOpts(theme='dark',width='1000px', height='800px'))
.add_xaxis([x[0] for x in top_city])
.add_yaxis("", data_pair)
.set_series_opts(label_opts=opts.LabelOpts(is_show=True,
position='insideRight',
font_style='italic',
color='pink'),
)
.set_global_opts(
title_opts=opts.TitleOpts(title="珍爱网上海相亲性别状况表现",
subtitle="数据截止日期:2025年1月24日, 制图公众号--NLP随手记---",
pos_top='2%',
pos_left="center",
title_textstyle_opts=opts.TextStyleOpts(color='#228be6',font_size=20)),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)), #
legend_opts=opts.LegendOpts(is_show=True),
)
# .reversal_axis() #是否旋转坐标轴
)
bar.render_notebook()
# bar.render("珍爱网上海相亲性别表现.html")
通过上图,可以知道上海该时间段,注册的相亲者中,男生比女生要多。
3.2 年龄分布分析
接下来,我们分析上海珍爱网注册人员的年龄分布。以下是使用 pyecharts
创建年龄分布饼状图的代码:
df2 = df1.age_cut2.value_counts().reset_index()
data_pair = [[df2.loc[i]['index'],df2.loc[i]['age_cut2']] for i in range(len(df2))]
pie = (
Pie(
init_opts=opts.InitOpts(width='1000px', height='800px')
)
.add(series_name="",
data_pair=data_pair,
radius=["30%",'50%'],
center=["38%", "50%"],
label_opts=opts.LabelOpts(is_show=False, position="center"),
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='珍爱网上海相亲年龄状况表现',
subtitle="数据截止日期:2025年1月24日, 制图公众号--NLP随手记---",
pos_top='2%',
pos_left="center",
title_textstyle_opts=opts.TextStyleOpts(color='#228be6',font_size=20)
),
# visualmap_opts=opts.VisualMapOpts(
# is_show=False,
# max_=600,
# pos_top='70%',
# pos_left='20%',
# range_color=['blue', 'green', 'yellow', 'red']
# ),
legend_opts=opts.LegendOpts(is_show=True, pos_right="15%", pos_top="8%",orient="vertical"),
)
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
.set_colors(['#EF9050', '#3B7BA9', '#6FB27C','#CC0033','#003399'])
)
pie.render_notebook()
pie.render("pie_set_color.html")
通过上图,可以知道上海该时间段,注册的相亲者中,相亲的人的年龄状况还是比较均衡的,中年人占比稍稍多一下。
3.3 婚姻状况分析
然后,分析上海珍爱网注册人员的婚姻状况。以下是使用 pyecharts
创建婚姻状况饼图的代码:
pie = (
Pie(
init_opts=opts.InitOpts(width='1000px', height='800px')
)
.add(series_name="",
data_pair=[
list(z) for z in zip(
["离异", "未婚", "丧偶"],
[71, 40, 9],
)
],
radius=["30%",'50%'],
center=["38%", "50%"],
label_opts=opts.LabelOpts(is_show=False, position="center"),
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='珍爱网上海婚姻状况表现',
subtitle="数据截止日期:2025年1月24日, 制图公众号--NLP随手记---",
pos_top='2%',
pos_left="center",
title_textstyle_opts=opts.TextStyleOpts(color='#228be6',font_size=20)
),
# visualmap_opts=opts.VisualMapOpts(
# is_show=False,
# max_=600,
# pos_top='70%',
# pos_left='20%',
# range_color=['blue', 'green', 'yellow', 'red']
# ),
legend_opts=opts.LegendOpts(is_show=True, pos_right="15%", pos_top="8%",orient="vertical"),
)
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
.set_colors(['#EF9050', '#3B7BA9', '#6FB27C'])
)
pie.render_notebook()
pie.render("珍爱网上海婚姻状况表现.html")
通过上图,可以知道上海该时间段,注册的相亲者中,离异是最主要的因素。
3.4 自我介绍词云图分析
这里我们将使用stylecloud库来绘制词云图,看看自我介绍的词云图的分布情况,首先按照stylecloud库
!pip install stylecloud
其次,编写自我介绍的清洗函数,具体函数如下;
def get_cut_words(content_series):
# 读入停用词表
stop_words = []
with open("stopwords.txt", 'r') as f:
lines = f.readlines()
for line in lines:
stop_words.append(line.strip())
# 添加关键词
my_words = ['同频共振', '知冷暖', '毕业落户', '外冷内热', '造梦者','外冷内热','性格相投']
for i in my_words:
jieba.add_word(i)
# 自定义停用词
my_stop_words = ['设施', '学校', '我校', '希望', '...','一个','增加'
'理论', '建议', '希望', '学生', '博客','豆瓣', '叶滑生',
'简书', '全国', '增加', '建设', '搞好','基于','CSDN','2019'
]
stop_words.extend(my_stop_words)
# 分词
content=';'.join([ str(c) for c in content_series.tolist()])
word_num = jieba.lcut(content)
# 条件筛选
word_num_selected = [i for i in word_num if i not in stop_words and len(i)>=2]
return word_num_selected
最后绘制词云图;
import stylecloud
from pathlib import Path
from IPython.display import Image # 用于在jupyter lab中显示本地图片
# 绘制词云图
stylecloud.gen_stylecloud(
text=' '.join(get_cut_words(content_series=df1["自我介绍"]) ),
collocations=False,
font_path=(r'C:\\Windows\Fonts\SimHei.ttf'),#2-1字体的Path路径,
icon_name='fas fa-heart',
size = 578,
output_name='上海珍爱网的自我介绍数据可视化.png'
)
Image(filename='上海珍爱网的自我介绍数据可视化.png')
注意:在实际运行上述代码时,你需要确保已经安装了 jieba
分词库。
四、总结
通过以上分析,我们可以得出以下结论:
- 上海珍爱网注册人员的性别情况,男生比女生稍多。
- 年龄分布主要集中比例较为均衡,中年人稍多一些。
- 婚姻状况以离异和未婚为主,说明相亲市场的主要需求群体。
- 自我介绍中出现了许多与性格、爱好、工作等相关的词汇,反映了注册人员的自我认知和期望。
希望这份报告能为关注上海珍爱网相亲市场的人员提供一定的参考和帮助。祝大家早日找到心仪的另一半!