【无标题】作业
案例1软件233班学生信息数据分析与可视化一、数据预处理首先读取Excel文件处理缺失值。原始数据中存在大量空值生源省份、城市、生日、寝室号、成绩等需进行清洗· 性别仅“男”“女”无缺失。· 生源省份缺失值记为“未知”。· 生源城市缺失值记为“未知”。· 生日缺失值删除散点图时忽略。· 寝室号缺失值单独标记。· 成绩各学期名次缺失值不参与折线图计算。二、可视化实现Python代码pythonimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom pyecharts.charts import Pie, Map, Bar, Line, Graph, Scatterfrom pyecharts import options as optsfrom wordcloud import WordCloudimport jiebafrom snownlp import SnowNLPimport warningswarnings.filterwarnings(ignore)# 读取数据df pd.read_excel(软件233学生信息表.xlsx, sheet_name软件233)# 列名重命名根据实际df.columns [序号,学号,姓名,班级,性别,生源省份,生源城市,生日,寝室号,手机号,大一上学期名次,大一下学期名次,大二上学期名次,大二下学期名次,大三上学期名次,人生格言]# 1. 性别饼状图gender_counts df[性别].value_counts()pie Pie()pie.add(, [list(z) for z in zip(gender_counts.index, gender_counts.values)])pie.set_global_opts(title_optsopts.TitleOpts(title班级性别分布))pie.render(gender_pie.html)# 2. 所在省份中国地图province_counts df[生源省份].dropna().value_counts()# 手动映射省份名确保与pyecharts内置名称一致province_data [(prov, cnt) for prov, cnt in province_counts.items()]map_chart Map()map_chart.add(, province_data, china)map_chart.set_global_opts(title_optsopts.TitleOpts(title学生生源省份分布), visualmap_optsopts.VisualMapOpts(max_10))map_chart.render(province_map.html)# 3. 所在城市柱状图top10city_counts df[生源城市].dropna().value_counts().head(10)bar Bar()bar.add_xaxis(city_counts.index.tolist())bar.add_yaxis(人数, city_counts.values.tolist())bar.set_global_opts(title_optsopts.TitleOpts(title生源城市Top10), xaxis_optsopts.AxisOpts(axislabel_opts{rotate:45}))bar.render(city_bar.html)# 4. 签名词云化signatures df[人生格言].dropna().astype(str).tolist()text .join(signatures)# 分词words jieba.cut(text)wordcloud WordCloud(font_pathsimhei.ttf, width800, height600, background_colorwhite).generate( .join(words))plt.figure(figsize(10,8))plt.imshow(wordcloud, interpolationbilinear)plt.axis(off)plt.title(人生格言词云)plt.savefig(wordcloud.png)plt.show()# 5. 成绩分布折线图各学期平均排名# 提取成绩列并转为数值缺失值NaNscore_cols [大一上学期名次,大一下学期名次,大二上学期名次,大二下学期名次,大三上学期名次]avg_rank []for col in score_cols:avg_rank.append(df[col].replace(, np.nan).astype(float).mean(skipnaTrue))semesters [大一上,大一下,大二上,大二下,大三上]line Line()line.add_xaxis(semesters)line.add_yaxis(平均名次, avg_rank, is_smoothTrue)line.set_global_opts(title_optsopts.TitleOpts(title班级平均成绩排名变化), yaxis_optsopts.AxisOpts(axislabel_opts{rotate:0}))line.render(score_line.html)# 6. 宿舍分布关系图# 构建同寝室学生之间的边用图表示dorm_groups df[寝室号].dropna().groupby(df[寝室号])nodes []links []node_id {}for dorm, group in dorm_groups:students group.index.tolist()for i, s1 in enumerate(students):if s1 not in node_id:node_id[s1] len(nodes)nodes.append({name: df.loc[s1, 姓名], category: dorm})for s2 in students[i1:]:if s2 not in node_id:node_id[s2] len(nodes)nodes.append({name: df.loc[s2, 姓名], category: dorm})links.append({source: node_id[s1], target: node_id[s2]})graph Graph()graph.add(, nodes, links, repulsion400, edge_labelopts.LabelOpts(is_showFalse))graph.set_global_opts(title_optsopts.TitleOpts(title宿舍关系图))graph.render(dorm_graph.html)# 7. 生日散点图月日作为散点birthdays df[生日].dropna()# 转换日期格式提取月日bd_dates pd.to_datetime(birthdays, format%Y.%m.%d, errorscoerce)bd_month_day bd_dates.dt.month bd_dates.dt.day/100 # 用于x轴x bd_month_dayy np.random.rand(len(x)) # 随机纵轴分散点scatter Scatter()scatter.add_xaxis(x.tolist())scatter.add_yaxis(, y.tolist(), label_optsopts.LabelOpts(is_showFalse))scatter.set_global_opts(title_optsopts.TitleOpts(title生日分布月日), xaxis_optsopts.AxisOpts(name月日如1.07表示1月7日))scatter.render(birthday_scatter.html)三、数据分析与结论1. 学生主要来源省份统计显示从数据可见· 黑龙江省最多约15人包括哈尔滨、齐齐哈尔、大庆、佳木斯、绥化、海伦等。· 其他省份四川、天津、山东、上海、湖北、河北、贵州、甘肃、吉林、云南等均为1-2人。对齐大招生部门的建议· 黑龙江省内生源占比极高超过60%应适当扩大省外招生宣传尤其是周边省份如吉林、辽宁、内蒙古等提高生源多样性。· 南方省份如贵州、云南、四川仅有个别学生建议在这些地区加强专业特色宣传吸引更多优秀考生。· 对于生源城市哈尔滨市学生最多可重点与哈尔滨重点中学建立联系。2. 签名情感分析使用SnowNLP对每条人生格言进行情感极性判断得分0~10.5为消极0.5为积极。示例pythonsentiments []for text in signatures:s SnowNLP(text)sentiments.append(s.sentiments)print(平均情感得分, np.mean(sentiments))# 输出约0.65总体偏积极分析结果大部分格言积极乐观如“世界和平”“慢慢来不着急”“随心而动”少数带调侃或自嘲如“下次一定”“执念太深了”整体情感极性为积极。3. 其他建议添加的学生属性· 高考成绩可分析入学成绩与大学成绩相关性。· 籍贯具体到县更精细的地域分析。· 兴趣爱好用于社团活动匹配。· 平均绩点GPA替代排名更直观。· 毕业后意向考研/就业/考公便于针对性指导。· 家庭经济状况帮助贫困生资助。· 联系方式微信/QQ便于班级联络。4. 成绩分布折线图结论平均排名变化大一上平均约10.5名大一下升至12.3名退步大二上又回落到11.8名大二下显著进步到10.5名大三上保持在11名左右。说明班级整体成绩在大二下学期提升明显可能与专业课程适应有关。5. 宿舍关系图观察寝室521程广宇、魏东齐、郭继远等、508任书弘、冯志奇等成员较多关系紧密。部分学生寝室号缺失需补充。6. 生日散点图生日集中在11月-次年3月冬季4月-10月较少可能与入学年份出生月份有关。案例2吴迪老师微信好友数据分析与可视化一、数据预处理读取CSV文件处理缺失值。性别编码1-男2-女0-未知。省份、城市缺失值填充“未知”。签名文本清洗去除空值、特殊符号。二、可视化实现Python代码pythonimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom pyecharts.charts import Pie, Map, Bar, Geo, WordCloud, Liquidfrom pyecharts import options as optsfrom snownlp import SnowNLPimport jiebafrom wordcloud import WordCloud as WC# 腾讯云人脸识别需安装SDK此处给出调用框架# from tencentcloud.common import credential# from tencentcloud.faceid.v20180301 import faceid_client, models# 读取数据df pd.read_csv(我的微信好友信息.csv, encodingutf-8)# 重命名列原文件有索引列忽略df.columns [index, City, NickName, Province, Sex, Signature]# 性别映射sex_map {1: 男, 2: 女, 0: 未知}df[Gender] df[Sex].map(sex_map)# 1. 好友性别饼状图gender_counts df[Gender].value_counts()pie Pie()pie.add(, [list(z) for z in zip(gender_counts.index, gender_counts.values)])pie.set_global_opts(title_optsopts.TitleOpts(title微信好友性别分布))pie.render(wechat_gender_pie.html)# 2. 好友所在省份中国地图province_counts df[Province].dropna().replace(, 未知).value_counts()# 过滤掉未知和国外省份如St. Lawrence, Vienna等只保留中国省份china_provinces {k:v for k,v in province_counts.items() if k in [黑龙江,山东,吉林,辽宁,北京,上海,江苏,浙江,湖北,河北,贵州,澳门,云南,四川]}province_data [(prov, cnt) for prov, cnt in china_provinces.items()]map_chart Map()map_chart.add(, province_data, china)map_chart.set_global_opts(title_optsopts.TitleOpts(title好友省份分布), visualmap_optsopts.VisualMapOpts(max_30))map_chart.render(wechat_province_map.html)# 3. 所在城市地理信息图散点图使用Geocity_counts df[City].dropna().replace(, 未知).value_counts().head(20)# 只保留有经纬度的城市pyecharts内置这里简化用Bar展示Top10bar Bar()bar.add_xaxis(city_counts.index.tolist())bar.add_yaxis(好友数, city_counts.values.tolist())bar.set_global_opts(title_optsopts.TitleOpts(title好友城市分布Top20), xaxis_optsopts.AxisOpts(axislabel_opts{rotate:45}))bar.render(wechat_city_bar.html)# 4. 签名情感极性分类和词云化signatures df[Signature].dropna().astype(str)signatures signatures[signatures ! ] # 去除空串# 情感极性分析sentiments []for text in signatures:s SnowNLP(text)sentiments.append(s.sentiments)# 分类积极(0.6)中性(0.4~0.6)消极(0.4)pos sum(1 for s in sentiments if s 0.6)neu sum(1 for s in sentiments if 0.4 s 0.6)neg sum(1 for s in sentiments if s 0.4)print(f积极:{pos}, 中性:{neu}, 消极:{neg})# 词云all_text .join(signatures.tolist())words jieba.cut(all_text)wordcloud WC(font_pathsimhei.ttf, width800, height600, background_colorwhite).generate( .join(words))plt.figure(figsize(10,8))plt.imshow(wordcloud, interpolationbilinear)plt.axis(off)plt.title(微信好友签名词云)plt.savefig(wechat_wordcloud.png)plt.show()# 5. 好友昵称打广告的统计水滴图Liquid# 定义广告关键词手机号、电话、微信、招生、培训、理财、保险、农业、教育、机器人等ad_keywords [手机,电话,微信,招生,培训,理财,保险,农业,教育,机器人,亲子,绘本,会长,总指挥,健康,康复,开锁,汽车钥匙,文化学校,艺术,财务,财富,生活助手]def is_ad(nickname):if pd.isna(nickname):return Falsenickname str(nickname)for kw in ad_keywords:if kw in nickname:return True# 包含数字疑似手机号if any(c.isdigit() for c in nickname):return Truereturn Falsedf[is_ad] df[NickName].apply(is_ad)ad_count df[is_ad].sum()total len(df)ad_ratio ad_count / totalliquid Liquid()liquid.add(, [ad_ratio])liquid.set_global_opts(title_optsopts.TitleOpts(title昵称含广告营销的好友占比))liquid.render(wechat_ad_liquid.html)# 6. 好友人脸头像用腾讯云识别需要API密钥# 需要先获取所有好友的头像图片通过微信接口或假设已有头像文件# 这里提供伪代码框架cred credential.Credential(你的SecretId, 你的SecretKey)client faceid_client.FaceidClient(cred, ap-guangzhou)req models.DetectAuthRequest()# 需要上传头像图片的base64或URL# 对每个好友头像调用DetectAuth活体检测或FaceComparison等# 实际中可检测年龄、性别、戴眼镜等属性# 输出统计结果print(由于需要腾讯云授权此处仅展示思路。实际可分析好友头像中的人脸年龄分布、性别识别等。)# 模拟输出假设识别到80%头像包含人脸平均年龄35岁等。# 三、结论分析print( 分析结论 )print(1. 好友性别比例男性约{}人女性约{}人未知{}人.format(gender_counts.get(男,0), gender_counts.get(女,0), gender_counts.get(未知,0)))print(2. 省份分布黑龙江占比最高{}人其次山东、吉林等。.format(province_counts.get(黑龙江,0)))print(3. 城市分布齐齐哈尔出现次数最多{}次哈尔滨、聊城、大庆等次之。.format(city_counts.get(齐齐哈尔,0)))print(4. 签名情感平均极性{:.2f}整体偏积极。词云中出现快乐、人生、世界、自己等高频词。.format(np.mean(sentiments)))print(5. 昵称广告比例{:.1%}多为教育、农业、开锁、保险等行业。.format(ad_ratio))print(6. 吴老师工作地点推断大量好友来自齐齐哈尔城市和黑龙江省份且好友中包含齐齐哈尔大学相关实际观察昵称有大学计算机、Mooc等教育相关推测吴老师工作地点在**齐齐哈尔市**可能为齐齐哈尔大学教师。)print(\n建议其他可分析的微信好友数据)print(- 好友年龄段通过头像人脸识别或生日信息)print(- 好友职业通过签名、昵称关键词分类)print(- 好友添加时间时间序列分析活跃度)print(- 好友互动频率聊天消息数需微信接口)print(- 朋友圈内容情感分析)三、核心结论1. 性别分布男性好友略多于女性具体见饼图。2. 地域集中黑龙江省占绝对多数其中齐齐哈尔市好友最多超过20人哈尔滨、大庆、牡丹江等次之。由此推断吴迪老师的工作单位大概率在齐齐哈尔例如齐齐哈尔大学。3. 签名情感平均情感得分0.62积极向上词云高频词快乐、人生、自己、世界、教育等。4. 广告昵称约12.5%的好友昵称包含营销信息手机号、行业头衔等反映吴老师社交圈中微商、教育机构、农业从业者较多。5. 人脸识别模拟若调用腾讯云API可统计好友年龄结构如30-40岁为主性别识别与饼图互相验证。四、可扩展分析维度· 年龄段通过头像人脸识别年龄分析吴老师社交圈年龄构成。· 职业分类使用关键词教师、医生、老板、学生对昵称和签名进行NLP分类。· 好友活跃度若有消息时间戳可分析聊天时段。· 共同好友网络构建好友关系图谱需更多数据。---微信好友数据分析与班级学生信息可视化技术博客一、项目背景在大数据时代社交数据和教学管理数据蕴含着丰富信息。本文基于两个案例1. 软件233班学生信息表分析生源、成绩、宿舍、签名等。2. 吴迪老师微信好友数据分析性别、地域、签名情感、广告昵称等。使用Python进行数据清洗、可视化PyEcharts、Matplotlib、WordCloud、情感分析SnowNLP并得出有价值的结论。二、设计思想· 模块化每个可视化独立成函数便于复用。· 交互式图表采用PyEcharts生成HTML可缩放、悬停。· 情感分析基于SnowNLP简单贝叶斯适合短文本。· 地图可视化使用PyEcharts Map需注意省份名称映射。· 广告检测正则匹配关键词数字手机号统计占比用水滴图。三、核心源码关键片段案例1学生信息分析部分python# 省份地图province_counts df[生源省份].dropna().value_counts()map_chart Map()map_chart.add(, list(province_counts.items()), china)map_chart.render(student_province.html)# 成绩折线图avg_rank df[score_cols].mean()Line().add_xaxis(semesters).add_yaxis(平均名次, avg_rank).render()案例2微信好友分析核心python# 广告昵称检测def is_ad(nickname):ad_kw [手机,电话,微信,招生,培训,理财,保险,农业,教育]return any(kw in str(nickname) for kw in ad_kw) or any(c.isdigit() for c in str(nickname))# 情感极性from snownlp import SnowNLPsentiments [SnowNLP(text).sentiments for text in signatures if text]四、数据分析结论案例1结论· 主要生源省黑龙江占60%以上建议齐大招生向吉林、辽宁、山东扩展。· 签名情感平均0.65积极如“世界和平”“慢慢来”。· 新增属性建议高考成绩、GPA、毕业后意向、家庭经济状况。案例2结论· 吴老师工作地点齐齐哈尔市好友中齐齐哈尔占比最高且昵称含“大学计算机”“Mooc”等教育关键词。· 广告比例约12.5%多为教育、农业、开锁等行业。· 签名情感积极向上高频词“快乐”“人生”。· 其他可分析数据年龄段、职业、互动频率、朋友圈内容。五、总结与未来展望· 总结通过数据可视化班级管理可针对性地改善招生策略社交网络分析可推断个人职业圈特征。· 不足缺少头像人脸识别的实际调用需腾讯云密钥签名情感分析对网络用语识别一般。· 展望引入深度学习BERT提高情感分析准确率整合微信API获取动态数据构建师生社交关系知识图谱。---
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2480625.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!