微信好友数据分析案例

张开发
2026/4/20 12:29:22 15 分钟阅读

分享文章

微信好友数据分析案例
基于Python的学生与微信好友数据可视化分析实战一、案例1班级学生信息数据分析与可视化1. 数据读取pythonimport pandas as pddf_student pd.read_excel(学生信息表.xls)2. 可视化实现1同学性别饼状图pythonfrom pyecharts.charts import Piefrom pyecharts import options as optsgender_counts df_student[性别].value_counts()pie (Pie().add(, [list(z) for z in zip(gender_counts.index, gender_counts.values)]).set_global_opts(title_optsopts.TitleOpts(title班级同学性别分布)).set_series_opts(label_optsopts.LabelOpts(formatter{b}: {c} ({d}%))))pie.render(同学性别饼状图.html)2同学所在省份中国地图pythonfrom pyecharts.charts import Geofrom pyecharts.globals import ChartTypeprovince_counts df_student[所在省份].value_counts()geo (Geo().add_schema(maptypechina).add(, [list(z) for z in zip(province_counts.index, province_counts.values)], type_ChartType.heatmap).set_global_opts(title_optsopts.TitleOpts(title班级同学省份分布),visualmap_optsopts.VisualMapOpts(max_province_counts.max())))geo.render(同学省份中国地图.html)3所在城市柱状图pythonfrom pyecharts.charts import Barcity_counts df_student[所在城市].value_counts().head(10)bar (Bar().add_xaxis(city_counts.index.tolist()).add_yaxis(人数, city_counts.values.tolist()).set_global_opts(title_optsopts.TitleOpts(title班级同学城市分布Top10),xaxis_optsopts.AxisOpts(axislabel_optsopts.LabelOpts(rotate45))))bar.render(同学城市柱状图.html)4签名词云pythonimport jiebafrom pyecharts.charts import WordCloudtext .join(df_student[签名].dropna())words jieba.lcut(text)wc (WordCloud().add(, list(zip(words, [1]*len(words))), word_size_range[20, 100]).set_global_opts(title_optsopts.TitleOpts(title班级同学签名词云)))wc.render(同学签名词云.html)5成绩分布折线图pythonfrom pyecharts.charts import Linedf_sorted df_student.sort_values(学号)line (Line().add_xaxis(df_sorted[学号].astype(str).tolist()).add_yaxis(成绩, df_sorted[成绩].tolist()).set_global_opts(title_optsopts.TitleOpts(title班级同学成绩分布),xaxis_optsopts.AxisOpts(axislabel_optsopts.LabelOpts(rotate45))))line.render(成绩分布折线图.html)6宿舍分布关系图pythonfrom pyecharts.charts import Graphnodes []links []for dorm in df_student[宿舍].unique():nodes.append({name: dorm, symbolSize: 30})for _, row in df_student.iterrows():nodes.append({name: row[姓名], symbolSize: 10})links.append({source: row[宿舍], target: row[姓名]})graph (Graph().add(, nodes, links, repulsion8000).set_global_opts(title_optsopts.TitleOpts(title宿舍-学生关系图)))graph.render(宿舍分布关系图.html)7生日散点图pythonfrom pyecharts.charts import Scatterdf_student[生日月份] pd.to_datetime(df_student[生日]).dt.monthmonth_counts df_student[生日月份].value_counts().sort_index()scatter (Scatter().add_xaxis(month_counts.index.tolist()).add_yaxis(人数, month_counts.values.tolist()).set_global_opts(title_optsopts.TitleOpts(title班级同学生日月份分布),xaxis_optsopts.AxisOpts(name月份),yaxis_optsopts.AxisOpts(name人数)))scatter.render(生日散点图.html)3. 数据分析与建议- 生源地洞察若班级学生主要来自河南、山东等省份建议招生部门加大对这些省份的宣传力度优化招生政策吸引更多优质生源。- 签名情感分析通过 snownlp 对签名进行情感极性分类若多数签名偏消极可建议辅导员开展心理疏导活动关注学生心理健康。- 字段拓展建议可添加民族、政治面貌、特长、获奖经历、家庭经济情况等字段完善学生画像辅助奖学金评定、社团招新等工作。二、案例2吴老师微信好友数据分析与可视化1. 数据读取pythonimport pandas as pddf_wechat pd.read_csv(微信好友.csv)2. 可视化实现1好友性别饼状图pythonfrom pyecharts.charts import Piefrom pyecharts import options as optsgender_map {1: 男, 2: 女, 0: 未知}df_wechat[Sex] df_wechat[Sex].map(gender_map)gender_counts df_wechat[Sex].value_counts()pie (Pie().add(, [list(z) for z in zip(gender_counts.index, gender_counts.values)]).set_global_opts(title_optsopts.TitleOpts(title微信好友性别分布)).set_series_opts(label_optsopts.LabelOpts(formatter{b}: {c} ({d}%))))pie.render(微信好友性别饼状图.html)2好友所在省份中国地图pythonfrom pyecharts.charts import Geofrom pyecharts.globals import ChartTypeprovince_counts df_wechat[Province].value_counts()geo (Geo().add_schema(maptypechina).add(, [list(z) for z in zip(province_counts.index, province_counts.values)], type_ChartType.heatmap).set_global_opts(title_optsopts.TitleOpts(title微信好友省份分布),visualmap_optsopts.VisualMapOpts(max_province_counts.max())))geo.render(微信好友省份中国地图.html)3所在城市地理信息图pythoncity_counts df_wechat[City].value_counts()geo_city (Geo().add_schema(maptypechina).add(, [list(z) for z in zip(city_counts.index, city_counts.values)]).set_global_opts(title_optsopts.TitleOpts(title微信好友城市分布)))geo_city.render(微信好友城市地理信息图.html)4签名情感极性与词云pythonfrom snownlp import SnowNLPimport jiebafrom pyecharts.charts import WordClouddef get_sentiment(text):if pd.isna(text):return 0.5return SnowNLP(text).sentimentsdf_wechat[sentiment] df_wechat[Signature].apply(get_sentiment)df_wechat[情感类别] pd.cut(df_wechat[sentiment], bins[0, 0.3, 0.7, 1], labels[消极, 中性, 积极])text .join(df_wechat[Signature].dropna())words jieba.lcut(text)wc (WordCloud().add(, list(zip(words, [1]*len(words))), word_size_range[20, 100]).set_global_opts(title_optsopts.TitleOpts(title微信好友签名词云)))wc.render(微信好友签名词云.html)5好友昵称打广告水滴图pythonfrom pyecharts.charts import Liquidad_keywords [代理, 推广, 招商, 店铺, 代购]ad_count df_wechat[NickName].str.contains(|.join(ad_keywords), naFalse).sum()total len(df_wechat)liquid (Liquid().add(广告占比, [ad_count / total]).set_global_opts(title_optsopts.TitleOpts(title微信好友昵称广告占比)))liquid.render(微信好友昵称广告水滴图.html)6好友头像腾讯云识别pythonfrom tencentcloud.common import credentialfrom tencentcloud.faceid.v20180301 import faceid_client, modelscred credential.Credential(你的SecretId, 你的SecretKey)client faceid_client.FaceidClient(cred, ap-beijing)for idx, row in df_wechat.iterrows():img_url row[HeadImgUrl]if pd.isna(img_url):continuereq models.DetectFaceRequest()req.ImageUrl img_urlresp client.DetectFace(req)print(f好友{row[NickName]}人脸检测结果{resp})3. 数据分析结论- 工作地点判断若好友中北京市海淀区人数占比最高且多为教育行业从业者可推断吴老师工作地点大概率在北京的高校✅- 额外可分析数据好友年龄段、职业、添加时间、聊天频率等可进一步分析社交圈的结构与特点。三、项目总结1. 软件制作过程明确需求 → 数据读取与清洗 → 多维度可视化 → 数据洞察与建议全程借助 pandas 、 pyecharts 等工具实现同时用AI辅助解决代码框架与技术难点。2. 设计思想- 模块化拆分将数据处理、可视化、分析拆分为独立模块便于维护与复用。- 工具选型 pandas 处理结构化数据 pyecharts 生成交互式可视化图表 jieba 与 snownlp 完成文本分析。3. 未来展望- 接入实时数据接口实现动态更新与可视化。- 结合 Streamlit 搭建交互式报表平台提升分析效率。- 引入机器学习模型实现更精准的用户画像与推荐。

更多文章