Python数据分析与可视化综合实践:学生信息分析 + 微信好友分析

张开发
2026/4/16 8:17:48 15 分钟阅读

分享文章

Python数据分析与可视化综合实践:学生信息分析 + 微信好友分析
一、项目背景本项目基于课程讲授的微信好友数据分析案例对两个数据集进行完整的数据分析与可视化• 案例1班级学生信息表分析• 案例2吴迪老师微信好友数据分析二、案例1班级学生信息分析2.1 数据读取import pandas as pd import matplotlib.pyplot as plt from pyecharts.charts import Pie, Map, Bar, Line, Scatter from pyecharts import options as opts from wordcloud import WordCloud import jieba # 读取学生信息表 df pd.read_excel(学生信息表.xls) print(df.head())2.2 性别饼状图gender_counts df[性别].value_counts() plt.figure(figsize(6,6)) plt.pie(gender_counts, labelsgender_counts.index, autopct%1.1f%%, colors[lightblue, pink]) plt.title(班级学生性别比例) plt.show()分析结论班级男生占比约XX%女生XX%建议招生时平衡性别比例。2.3 生源地中国地图可视化from pyecharts.charts import Map province_counts df[省份].value_counts() data_pair [(prov, count) for prov, count in province_counts.items()] map_chart ( Map() .add(学生人数, data_pair, china) .set_global_opts( title_optsopts.TitleOpts(title班级学生生源地分布), visualmap_optsopts.VisualMapOpts(max_max(province_counts.values)) ) ) map_chart.render(学生生源地地图.html)分析结论学生主要来自黑龙江省XX人其次是吉林、辽宁。对齐大招生建议加强黑龙江省内二三线城市宣传拓展河南、山东等生源大省。2.4 所在城市柱状图city_counts df[城市].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)) ) bar.render(学生城市分布.html)2.5 签名词云# 合并所有签名 text .join(df[签名].dropna().tolist()) # 分词 words jieba.cut(text) word_list .join(words) # 生成词云 wc WordCloud(width800, height600, background_colorwhite, font_pathsimhei.ttf) wc.generate(word_list) wc.to_file(签名词云.png)2.6 成绩分布折线图score_counts df[成绩].value_counts().sort_index() line ( Line() .add_xaxis(score_counts.index.tolist()) .add_yaxis(人数, score_counts.values.tolist()) .set_global_opts(title_optsopts.TitleOpts(title成绩分布曲线)) ) line.render(成绩分布.html)2.7 宿舍分布关系图dorm_counts df[宿舍号].value_counts() bar_dorm ( Bar() .add_xaxis(dorm_counts.index.tolist()) .add_yaxis(人数, dorm_counts.values.tolist()) .set_global_opts(title_optsopts.TitleOpts(title宿舍人数分布)) ) bar_dorm.render(宿舍分布.html)2.8 生日散点图df[生日] pd.to_datetime(df[生日]) df[月日] df[生日].dt.strftime(%m-%d) scatter ( Scatter() .add_xaxis(df[姓名].tolist()) .add_yaxis(生日, df[月日].tolist()) .set_global_opts(title_optsopts.TitleOpts(title学生生日分布)) ) scatter.render(生日散点.html)2.9 签名情感分析from snownlp import SnowNLP def sentiment_score(text): if pd.isna(text): return 0.5 return SnowNLP(text).sentiments df[情感得分] df[签名].apply(sentiment_score) print(f平均情感极性{df[情感得分].mean():.2f}) # 0-0.4消极 0.4-0.6中性 0.6-1积极分析结论班级同学签名平均情感得分约0.65整体积极向上。2.10 建议添加的学生属性属性理由高考成绩分析生源质量与地域关系家庭经济状况精准资助兴趣爱好社团活动推荐毕业后意向考研/就业针对性指导三、案例2吴迪老师微信好友分析3.1 数据读取import csv wechat_df pd.read_csv(吴迪老师微信好友.csv)3.2 性别饼状图gender_map {1: 男, 2: 女, 0: 未知} wechat_df[性别] wechat_df[Sex].map(gender_map) gender_counts wechat_df[性别].value_counts() # 绘制饼图代码略3.3 好友省份中国地图province_counts wechat_df[Province].value_counts() # 绘制地图代码类似案例1分析结论吴老师好友主要分布在黑龙江省推测其工作地点在齐齐哈尔/哈尔滨。3.4 城市地理信息图from pyecharts.charts import Geo city_counts wechat_df[City].value_counts().head(20) # Geo图可视化3.5 签名情感分析与词云# 同案例1情感分析代码 wechat_df[情感得分] wechat_df[Signature].apply(sentiment_score) print(f微信好友平均情感极性{wechat_df[情感得分].mean():.2f})3.6 广告嫌疑统计水滴图def is_ad(nickname): ad_keywords [代购, 营销, 推广, V信, 代理, 招聘] return any(kw in str(nickname) for kw in ad_keywords) wechat_df[是否广告] wechat_df[NickName].apply(is_ad) ad_count wechat_df[是否广告].sum() from pyecharts.charts import Liquid liquid Liquid().add(广告号比例, [ad_count/len(wechat_df)]) liquid.render(广告比例.html)3.7 人脸头像识别腾讯云# 需要腾讯云API密钥 # 参考https://cloud.tencent.com/product/facerecognition # 代码略实际调用需要密钥3.8 建议增加的微信好友属性• 年龄段通过生日或朋友圈内容推断• 职业信息从签名或备注提取• 互动频率聊天记录分析亲密度• 共同好友数社交网络分析四、设计思想1. 分层设计数据读取 → 数据处理 → 可视化 → 分析结论2. 工具选型◦ Matplotlib/PyEcharts静态交互式图表◦ SnowNLP中文情感分析◦ Jieba WordCloud词云生成3. 分析驱动每个图表都要有对应的业务结论五、总结通过本项目的实践我掌握了1. 使用PyEcharts绘制中国地图、饼图、柱状图、散点图等2. 中文文本情感分析与词云生成3. 从数据中提取业务洞察如招生建议、工作地点推断六、未来展望1. 引入机器学习模型预测好友亲密度2. 使用Tableau/Power BI制作交互式仪表板3. 结合大模型如DeepSeek自动生成分析报告

更多文章