pyechart可视化分析有缘网18岁以上女性的相关信息(单身狗请进~)
目录
前言
- pyechart模块可以通过
pip install pyechart
来安装,这个可视化模块我之前的博文也有用到过,就不多介绍了。其官方文档:http://pyecharts.org,包含了许许多多的案例代码可以拿来修改并复用的。 - 这些数据是基于我的上一篇博客文章【Scrapy学习心得】爬虫实战五(Scrapy-Redis分布式爬虫)所爬取得到的。
- 如果只是单纯地爬取数据,而不对其做一些分析,似乎不够完美,而且当你真正去分析之后,会惊奇地发现原来数据中隐藏着很多有趣的信息的。
- 由于网站的限制导致获取的数据可能不完整,所以分析的结果可能会存在些许偏差。敬请谅解~
废话不多说,下面直接开始吧
一、读取数据
因为我已经把数据保存在MySQL上了,下面直接从数据库中读取就行。
import pymysql
# 建立连接
conn=pymysql.connect(host='localhost',user='',password='',database='db',charset='utf8')
# 建立游标
cursor=conn.cursor()
# 获取数据
sql='select * from youyuan'
cursor.execute(sql)
items=cursor.fetchall()
# 关闭连接
cursor.close()
conn.close()
二、数据预处理
整理读取的数据后,并保存为pandas中dataframe的格式,展示前3条数据:
有一些数据存在与资料里面了,而一条资料是用一个字典来存放的,其结构内容如下:
因此,我们需要对资料中的一些信息进行汇总、合并、处理。
add_dict={} # 籍贯
weight_dict={} # 体重
edu_dict={} # 学历
baby_dict={} # 是否想要小孩
quxiang_dict={} # 喜欢的异性类型
dadnmom_dict={} # 是否愿意与父母同住
wed_dict={} # 婚姻
occupation_dict={} # 职业
otherarealove_dict={} # 能否接受异地恋
sexbeforewed_dict={} # 能否接受婚前性行为
charm_dict={} # 最有魅力的部位
for each in df['资料'].values:
for key,value in each.items():
if key == '籍 贯:':
if value not in list(add_dict.keys()):
add_dict[value]=1
else:
add_dict[value]+=1
if key == '体 重:':
if value not in list(weight_dict.keys()):
weight_dict[value]=1
else:
weight_dict[value]+=1
if key == '学 历:':
if value not in list(edu_dict.keys()):
edu_dict[value]=1
else:
edu_dict[value]+=1
if key == '是否想要小孩:':
if value not in list(baby_dict.keys()):
baby_dict[value]=1
else:
baby_dict[value]+=1
if key == '喜欢的异性类型:':
if value not in list(quxiang_dict.keys()):
quxiang_dict[value]=1
else:
quxiang_dict[value]+=1
if key == '是否愿意与父母同住:':
if value not in list(dadnmom_dict.keys()):
dadnmom_dict[value]=1
else:
dadnmom_dict[value]+=1
if key == '婚姻:':
if value not in list(wed_dict.keys()):
wed_dict[value]=1
else:
wed_dict[value]+=1
if key == '职业:':
if value not in list(occupation_dict.keys()):
occupation_dict[value]=1
else:
occupation_dict[value]+=1
if key == '能否接受异地恋:':
if value not in list(otherarealove_dict.keys()):
otherarealove_dict[value]=1
else:
otherarealove_dict[value]+=1
if key == '能否接受婚前性行为:':
if value not in list(sexbeforewed_dict.keys()):
sexbeforewed_dict[value]=1
else:
sexbeforewed_dict[value]+=1
if key == '最有魅力的部位:':
if value not in list(charm_dict.keys()):
charm_dict[value]=1
else:
charm_dict[value]+=1
三、数据可视化
因为数据中可分析的字段比较多,这里就挑了几个个人觉得还挺有趣的来进行可视化分析。
1、年龄的分布情况
ps:由于可视化画图的代码基本都差不多,这里就不重复代码块了
from pyecharts.charts import Bar
import pyecharts.options as opts
data=df['年龄'].value_counts()
# 按字典的键值排序
temp=sorted(data.items(),key=lambda x:x[0])
# 柱状图
c=Bar()
c.add_xaxis([i[0] for i in temp])
c.add_yaxis('',[i[1] for i in temp])
c.set_global_opts(
title_opts=opts.TitleOpts(title="年龄的分布情况"),
datazoom_opts=opts.DataZoomOpts(), # 可拖动的x轴
)
c.render_notebook()
年龄分布的折线图:
可以看到:最小的17岁,最大的有72岁,24岁有三百多人是最多的,并且还发现了一个趋势,就是24岁之后到35岁之前呈现的是一个下滑的趋势,但35岁之后又呈现出了一个上升的趋势,并且持续到了51岁。可想而知,在这个网站上征男友的人绝大部分是大龄剩女、又或者是已经离婚的;还有小部分20来岁想寻找刺激的。
2、婚姻,住房及学历情况
如图,离异的占了48.76%,将近一半的比例,并且已购房的超过一半有57.3%,还注意到硕士学历以上的占了41.43%。
所以这里,从婚姻和住房的情况,也同样可以知道为什么35岁之后的人数会出现一个上升的趋势了,大部分已经离异,并且可能已经是有房子的了;又或者是博士后吧,大龄剩女。
3、籍贯分布情况
从热力图中知道,四川、湖南湖北以及广东的人数比较多,但是呢,竟有1200多个人选择了保密。下面再看下她们是否接受异地恋的情况吧。
4、是否接受异地恋
如下图所示,有30.21%的女性选择了能接受异地恋,有40.88%选择了看情况。
5、能否接受婚前性行为
有58.54%的女性选择了看情况,有15.25%的女性选择了能,而7.38%的选择了不能。
6、喜欢的异性类型
大部分女性喜欢的异性类型是温柔体贴、稳重内敛。很少一部分女性喜欢外表帅气以及性格可爱的了。从这里也能够侧面反映出为什么35岁之后会有那么多的女性在这个有缘网上寻找伴侣了吧。
四、总结
在有缘网上寻找伴侣的女性,大部分的婚姻情况是离异,可能已经是有房子的(富婆,你懂得),又或者是硕士以上的学历的大龄剩女。她们已经不再喜欢外表帅气、可爱的男孩子,而是要求温柔体贴,成熟稳重的男人;她们的籍贯大部分选择了保密,没有保密的那部分女性主要分布在四川、湖南湖北以及广东这些地区,并且她们应该都不排斥异地恋以及婚前性行为等情况。
好了,看到这里的你们现在知道怎么做了么?[滑稽]
想少奋斗30年的可以去了解了解,不过我觉得还是那句话:网恋有风险,交友需谨慎~
扫描下方二维码关注我的公众号回复20200715
即可获得本文全部代码
写在最后
“不经历风雨,怎么见彩虹,没有人能随随便便成功。”
共勉~