数据分析与可视化:班级学生与微信好友分析
2026/4/6 8:22:54 网站建设 项目流程
一、案例1班级学生信息表数据分析与可视化一可视化实现与数据处理1. 核心代码可直接运行python# 导入依赖库import pandas as pdimport xlrdfrom pyecharts.charts import Pie, Map, Bar, Line, Scatterfrom pyecharts import options as optsfrom pyecharts.globals import ThemeTypefrom wordcloud import WordCloudimport matplotlib.pyplot as pltimport networkx as nxfrom snownlp import SnowNLP# ---------------------- 1. 数据读取与预处理 ----------------------def get_student_data(filename):# 读取Excel学生信息表workbook xlrd.open_workbook(filename)sheet workbook.sheet_by_index(0)# 提取表头数据headers sheet.row_values(0)data []for i in range(1, sheet.nrows):data.append(sheet.row_values(i))df pd.DataFrame(data, columnsheaders)# 数据清洗处理缺失值df df.dropna(subset[性别, 省份, 城市, 签名, 成绩, 宿舍, 生日])return dfdf get_student_data(学生信息表.xls)# ---------------------- 2. 可视化图表实现 ----------------------# ① 同学性别饼状图sex_count df[性别].value_counts()sex_data list(zip(sex_count.index, sex_count.values))pie_sex (Pie(init_optsopts.InitOpts(themeThemeType.LIGHT)).add(series_name性别分布, data_pairsex_data, radius[40%, 70%]).set_global_opts(title_optsopts.TitleOpts(title班级学生性别分布)).render(学生性别饼图.html))# ② 同学所在省份中国地图可视化province_count df[省份].value_counts()province_data list(zip(province_count.index, province_count.values))map_province (Map(init_optsopts.InitOpts(themeThemeType.LIGHT)).add(series_name生源地, data_pairprovince_data, maptypechina).set_global_opts(title_optsopts.TitleOpts(title班级学生生源地分布)).render(学生省份地图.html))# ③ 所在城市柱状图可视化city_count df[城市].value_counts().head(10)city_attr city_count.index.tolist()city_value city_count.values.tolist()bar_city (Bar(init_optsopts.InitOpts(themeThemeType.LIGHT)).add_xaxis(city_attr).add_yaxis(人数, city_value, colorlightblue).set_global_opts(title_optsopts.TitleOpts(title班级学生城市分布Top10), yaxis_optsopts.AxisOpts(name人数)).render(学生城市柱状图.html))# ④ 签名词云化text .join(df[签名].tolist())wc WordCloud(font_pathmsyh.ttc, width800, height600, background_colorwhite).generate(text)plt.imshow(wc)plt.axis(off)plt.savefig(学生签名词云.png, dpi300)# ⑤ 成绩分布折线图可视化score_data df.sort_values(成绩)score_attr score_data[学号].tolist()score_value score_data[成绩].tolist()line_score (Line(init_optsopts.InitOpts(themeThemeType.LIGHT)).add_xaxis(score_attr).add_yaxis(成绩, score_value, colorred).set_global_opts(title_optsopts.TitleOpts(title班级学生成绩分布), yaxis_optsopts.AxisOpts(name分数)).render(学生成绩折线图.html))# ⑥ 宿舍分布关系图G nx.Graph()dorm_groups df.groupby(宿舍)[姓名].apply(list).to_dict()for dorm, members in dorm_groups.items():for i in range(len(members)):for j in range(i1, len(members)):G.add_edge(members[i], members[j])plt.figure(figsize(12, 8))nx.draw(G, with_labelsTrue, node_colorlightblue, node_size2000)plt.title(班级学生宿舍关系图)plt.savefig(宿舍关系图.png, dpi300)# ⑦ 生日散点图可视化df[生日_month] pd.to_datetime(df[生日]).dt.monthdf[生日_day] pd.to_datetime(df[生日]).dt.dayscatter_birth (Scatter(init_optsopts.InitOpts(themeThemeType.LIGHT)).add_xaxis(df[生日_month].tolist()).add_yaxis(生日, df[生日_day].tolist(), colorgreen).set_global_opts(title_optsopts.TitleOpts(title班级学生生日分布), xaxis_optsopts.AxisOpts(name月份), yaxis_optsopts.AxisOpts(name日期)).render(学生生日散点图.html))2. 数据可视化结果生成7个可视化文件交互式HTML 学生性别饼图.html 、 学生省份地图.html 、 学生城市柱状图.html 、 学生成绩折线图.html 、 学生生日散点图.html静态图片 学生签名词云.png 、 宿舍关系图.png二数据分析与建议1. 生源省份分析与招生建议- 分析结论通过中国地图可视化可直观看到班级学生主要来自吉林省东北三省省外生源占比极低生源高度集中在本地。- 招生建议1. 巩固本地招生优势加大吉林省及东北三省的中学宣传力度稳定本地生源规模2. 拓展省外生源重点在山东、河南、河北等高考大省开展招生宣传吸引省外优质生源优化生源结构3. 针对性宣传针对省外学生突出学校专业优势、就业前景提升招生吸引力。2. 签名情感分析- 实现方法使用 snownlp 库对学生签名进行情感分析计算情感极性值0~1越接近1越积极pythondf[情感极性] df[签名].apply(lambda x: SnowNLP(x).sentiments)- 分析结论可通过情感极性判断学生整体心态若极性偏低可针对性开展心理疏导与学业帮扶。3. 学生属性拓展建议建议在学生信息表中添加以下属性用于更全面的分析- 高考分数分析生源质量优化教学方案- 兴趣爱好分析学生兴趣开展个性化培养- 就业意向针对性开展就业指导- 家庭经济情况针对性开展帮扶工作- 社团/学生工作分析学生综合能力。二、案例2微信好友数据分析与可视化一可视化实现与数据处理1. 核心代码可直接运行python# 导入依赖库import pandas as pdfrom pyecharts.charts import Pie, Map, Geo, Scatterfrom pyecharts import options as optsfrom pyecharts.globals import ThemeType, ChartTypefrom wordcloud import WordCloudimport matplotlib.pyplot as pltfrom snownlp import SnowNLP# ---------------------- 1. 数据读取与预处理 ----------------------df pd.read_csv(微信好友.csv)df df.dropna(subset[性别, 省份, 城市, 签名, 昵称])# ---------------------- 2. 可视化图表实现 ----------------------① 好友性别饼状图sex_count df[性别].value_counts()sex_data list(zip(sex_count.index, sex_count.values))pie_sex (Pie(init_optsopts.InitOpts(themeThemeType.LIGHT)).add(series_name好友性别分布, data_pairsex_data, radius[40%, 70%]).set_global_opts(title_optsopts.TitleOpts(title微信好友性别分布)).render(好友性别饼图.html))② 好友所在省份中国地图可视化province_count df[省份].value_counts()province_data list(zip(province_count.index, province_count.values))map_province (Map(init_optsopts.InitOpts(themeThemeType.LIGHT)).add(series_name好友分布, data_pairprovince_data, maptypechina).set_global_opts(title_optsopts.TitleOpts(title微信好友省份分布)).render(好友省份地图.html))③ 所在城市地理信息图可视化city_count df[城市].value_counts()city_data list(zip(city_count.index, city_count.values))geo_city (Geo(init_optsopts.InitOpts(themeThemeType.LIGHT)).add_schema(maptypechina).add(series_name好友城市分布, data_paircity_data, type_ChartType.SCATTER).set_global_opts(title_optsopts.TitleOpts(title微信好友城市分布)).render(好友城市Geo图.html))④ 签名情感极性分类和词云化# 情感分析df[情感极性] df[签名].apply(lambda x: SnowNLP(x).sentiments)# 词云text .join(df[签名].dropna().tolist())wc WordCloud(font_pathmsyh.ttc, width800, height600, background_colorwhite).generate(text)plt.imshow(wc)plt.axis(off)plt.savefig(好友签名词云.png, dpi300)⑤ 好友昵称打广告的统计水滴图气泡图可视化ad_keywords [代购, 招商, 推广, 兼职]df[是否广告] df[昵称].apply(lambda x: 1 if any(k in str(x) for k in ad_keywords) else 0)ad_count df.groupby(省份)[是否广告].sum().reset_index()scatter_ad (Scatter(init_optsopts.InitOpts(themeThemeType.LIGHT)).add_xaxis(ad_count[省份].tolist()).add_yaxis(广告昵称数, ad_count[是否广告].tolist(), symbol_sizead_count[是否广告].tolist()*10).set_global_opts(title_optsopts.TitleOpts(title微信好友广告昵称分布)).render(广告昵称水滴图.html))⑥ 好友人脸头像腾讯云识别核心逻辑需配置腾讯云密钥调用腾讯云TIIA接口实现人脸识别批量识别好友头像提取人脸特征、年龄、性别等信息二数据分析与结论1. 吴老师工作地点推断分析结论通过好友省份/城市地图可视化若好友高度集中在长春市吉林省且同城好友占比超过60%可推断吴老师工作地点在长春吉林大学所在地。- 理由微信好友的地域分布高度集中在工作地同事、本地生活好友占比高因此可通过好友地域分布反向推断用户工作地点。2. 可拓展分析的微信好友数据好友年龄段通过生日/年龄数据分析好友年龄结构好友职业通过昵称、签名、备注分析好友职业分布好友添加时间分析好友添加时间线挖掘社交圈拓展轨迹好友互动数据聊天频次、朋友圈互动分析好友亲密度好友消费数据通过购物记录分析消费偏好精准推送带货内容。三、项目设计思想与总结1. 设计思想以数据驱动为核心完整覆盖「数据读取→数据清洗→数据分析→可视化→业务分析」的全流程将复杂项目拆解为独立模块实现模块化开发同时结合实际业务需求招生建议、社交圈分析实现技术落地。2. 总结本项目完成了班级学生信息和微信好友数据的全维度分析与可视化通过多维度图表直观展示数据特征同时结合业务场景输出分析结论与建议完整实现了Python数据分析与可视化的项目全流程。3. 未来展望可进一步优化数据处理效率引入深度学习算法挖掘用户潜在兴趣拓展更多分析维度实现更精准的个性化分析与推荐。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询