当前位置: 首页 > news >正文

数据分析与可视化:班级学生与微信好友分析

一、案例1:班级学生信息表数据分析与可视化

(一)可视化实现与数据处理

1. 核心代码(可直接运行)

python

# 导入依赖库

import pandas as pd

import xlrd

from pyecharts.charts import Pie, Map, Bar, Line, Scatter

from pyecharts import options as opts

from pyecharts.globals import ThemeType

from wordcloud import WordCloud

import matplotlib.pyplot as plt

import networkx as nx

from 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, columns=headers)

# 数据清洗:处理缺失值

df = df.dropna(subset=["性别", "省份", "城市", "签名", "成绩", "宿舍", "生日"])

return df

df = get_student_data("学生信息表.xls")

# ---------------------- 2. 可视化图表实现 ----------------------

# ① 同学性别饼状图

sex_count = df["性别"].value_counts()

sex_data = list(zip(sex_count.index, sex_count.values))

pie_sex = (

Pie(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))

.add(series_name="性别分布", data_pair=sex_data, radius=["40%", "70%"])

.set_global_opts(title_opts=opts.TitleOpts(title="班级学生性别分布"))

.render("学生性别饼图.html")

)

# ② 同学所在省份中国地图可视化

province_count = df["省份"].value_counts()

province_data = list(zip(province_count.index, province_count.values))

map_province = (

Map(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))

.add(series_name="生源地", data_pair=province_data, maptype="china")

.set_global_opts(title_opts=opts.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_opts=opts.InitOpts(theme=ThemeType.LIGHT))

.add_xaxis(city_attr)

.add_yaxis("人数", city_value, color="lightblue")

.set_global_opts(title_opts=opts.TitleOpts(title="班级学生城市分布Top10"), yaxis_opts=opts.AxisOpts(name="人数"))

.render("学生城市柱状图.html")

)

# ④ 签名词云化

text = " ".join(df["签名"].tolist())

wc = WordCloud(font_path="msyh.ttc", width=800, height=600, background_color="white").generate(text)

plt.imshow(wc)

plt.axis("off")

plt.savefig("学生签名词云.png", dpi=300)

# ⑤ 成绩分布折线图可视化

score_data = df.sort_values("成绩")

score_attr = score_data["学号"].tolist()

score_value = score_data["成绩"].tolist()

line_score = (

Line(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))

.add_xaxis(score_attr)

.add_yaxis("成绩", score_value, color="red")

.set_global_opts(title_opts=opts.TitleOpts(title="班级学生成绩分布"), yaxis_opts=opts.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(i+1, len(members)):

G.add_edge(members[i], members[j])

plt.figure(figsize=(12, 8))

nx.draw(G, with_labels=True, node_color="lightblue", node_size=2000)

plt.title("班级学生宿舍关系图")

plt.savefig("宿舍关系图.png", dpi=300)

# ⑦ 生日散点图可视化

df["生日_month"] = pd.to_datetime(df["生日"]).dt.month

df["生日_day"] = pd.to_datetime(df["生日"]).dt.day

scatter_birth = (

Scatter(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))

.add_xaxis(df["生日_month"].tolist())

.add_yaxis("生日", df["生日_day"].tolist(), color="green")

.set_global_opts(title_opts=opts.TitleOpts(title="班级学生生日分布"), xaxis_opts=opts.AxisOpts(name="月份"), yaxis_opts=opts.AxisOpts(name="日期"))

.render("学生生日散点图.html")

)

2. 数据可视化结果

生成7个可视化文件:

交互式HTML: 学生性别饼图.html 、 学生省份地图.html 、 学生城市柱状图.html 、 学生成绩折线图.html 、 学生生日散点图.html

静态图片: 学生签名词云.png 、 宿舍关系图.png

(二)数据分析与建议

1. 生源省份分析与招生建议

- 分析结论:通过中国地图可视化,可直观看到班级学生主要来自吉林省(东北三省),省外生源占比极低,生源高度集中在本地。

- 招生建议:

1. 巩固本地招生优势:加大吉林省及东北三省的中学宣传力度,稳定本地生源规模;

2. 拓展省外生源:重点在山东、河南、河北等高考大省开展招生宣传,吸引省外优质生源,优化生源结构;

3. 针对性宣传:针对省外学生突出学校专业优势、就业前景,提升招生吸引力。

2. 签名情感分析

- 实现方法:使用 snownlp 库对学生签名进行情感分析,计算情感极性值(0~1,越接近1越积极):

python

df["情感极性"] = df["签名"].apply(lambda x: SnowNLP(x).sentiments)

- 分析结论:可通过情感极性判断学生整体心态,若极性偏低,可针对性开展心理疏导与学业帮扶。

3. 学生属性拓展建议

建议在学生信息表中添加以下属性,用于更全面的分析:

- 高考分数:分析生源质量,优化教学方案;

- 兴趣爱好:分析学生兴趣,开展个性化培养;

- 就业意向:针对性开展就业指导;

- 家庭经济情况:针对性开展帮扶工作;

- 社团/学生工作:分析学生综合能力。

二、案例2:微信好友数据分析与可视化

(一)可视化实现与数据处理

1. 核心代码(可直接运行)

python

# 导入依赖库

import pandas as pd

from pyecharts.charts import Pie, Map, Geo, Scatter

from pyecharts import options as opts

from pyecharts.globals import ThemeType, ChartType

from wordcloud import WordCloud

import matplotlib.pyplot as plt

from 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_opts=opts.InitOpts(theme=ThemeType.LIGHT))

.add(series_name="好友性别分布", data_pair=sex_data, radius=["40%", "70%"])

.set_global_opts(title_opts=opts.TitleOpts(title="微信好友性别分布"))

.render("好友性别饼图.html")

)

② 好友所在省份中国地图可视化

province_count = df["省份"].value_counts()

province_data = list(zip(province_count.index, province_count.values))

map_province = (

Map(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))

.add(series_name="好友分布", data_pair=province_data, maptype="china")

.set_global_opts(title_opts=opts.TitleOpts(title="微信好友省份分布"))

.render("好友省份地图.html")

)

③ 所在城市地理信息图可视化

city_count = df["城市"].value_counts()

city_data = list(zip(city_count.index, city_count.values))

geo_city = (

Geo(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))

.add_schema(maptype="china")

.add(series_name="好友城市分布", data_pair=city_data, type_=ChartType.SCATTER)

.set_global_opts(title_opts=opts.TitleOpts(title="微信好友城市分布"))

.render("好友城市Geo图.html")

)

④ 签名情感极性分类和词云化

# 情感分析

df["情感极性"] = df["签名"].apply(lambda x: SnowNLP(x).sentiments)

# 词云

text = " ".join(df["签名"].dropna().tolist())

wc = WordCloud(font_path="msyh.ttc", width=800, height=600, background_color="white").generate(text)

plt.imshow(wc)

plt.axis("off")

plt.savefig("好友签名词云.png", dpi=300)

⑤ 好友昵称打广告的统计水滴图(气泡图)可视化

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_opts=opts.InitOpts(theme=ThemeType.LIGHT))

.add_xaxis(ad_count["省份"].tolist())

.add_yaxis("广告昵称数", ad_count["是否广告"].tolist(), symbol_size=ad_count["是否广告"].tolist()*10)

.set_global_opts(title_opts=opts.TitleOpts(title="微信好友广告昵称分布"))

.render("广告昵称水滴图.html")

)

⑥ 好友人脸头像腾讯云识别(核心逻辑)

需配置腾讯云密钥,调用腾讯云TIIA接口实现人脸识别,批量识别好友头像,提取人脸特征、年龄、性别等信息

(二)数据分析与结论

1. 吴老师工作地点推断

分析结论:通过好友省份/城市地图可视化,若好友高度集中在长春市(吉林省),且同城好友占比超过60%,可推断吴老师工作地点在长春(吉林大学所在地)。

- 理由:微信好友的地域分布高度集中在工作地,同事、本地生活好友占比高,因此可通过好友地域分布反向推断用户工作地点。

2. 可拓展分析的微信好友数据

好友年龄段:通过生日/年龄数据,分析好友年龄结构;

好友职业:通过昵称、签名、备注,分析好友职业分布;

好友添加时间:分析好友添加时间线,挖掘社交圈拓展轨迹;

好友互动数据:聊天频次、朋友圈互动,分析好友亲密度;

好友消费数据:通过购物记录,分析消费偏好,精准推送带货内容。

三、项目设计思想与总结

1. 设计思想

以数据驱动为核心,完整覆盖「数据读取→数据清洗→数据分析→可视化→业务分析」的全流程,将复杂项目拆解为独立模块,实现模块化开发,同时结合实际业务需求(招生建议、社交圈分析),实现技术落地。

2. 总结

本项目完成了班级学生信息和微信好友数据的全维度分析与可视化,通过多维度图表直观展示数据特征,同时结合业务场景输出分析结论与建议,完整实现了Python数据分析与可视化的项目全流程。

3. 未来展望

可进一步优化数据处理效率,引入深度学习算法挖掘用户潜在兴趣,拓展更多分析维度,实现更精准的个性化分析与推荐。

http://www.jsqmd.com/news/588178/

相关文章:

  • 终极抖音批量下载指南:5分钟搞定无水印视频批量采集
  • OneDrive顽固残留?高效彻底卸载指南:释放系统资源的实用方案
  • MouseClick:解放双手的跨平台鼠标自动化神器,告别重复点击的烦恼
  • ai一键生成node.js环境配置教程,快马平台助你跳过繁琐安装步骤
  • 【架构实战】海量数据存储:分库分表中间件实战
  • 2026年6款AI驱动的人力系统测评:谁更适合科技企业
  • 开源游戏串流新标杆:Sunshine如何实现跨设备游戏自由
  • AI辅助开发:利用快马多模型能力为红目香薰设计智能场景联动规则
  • 小白程序员必收藏!Agent工程入门指南:轻松上手大模型,抓住AI时代红利
  • DirectX Repair:从Windows XP到Windows 11的全平台DLL修复专家
  • 光伏618政策松绑!安科瑞分布式光伏监控系统解锁电站收益新高度
  • Gemma 4 现已发布: 同等规模下性能最强的开放模型
  • 直线导轨的精度对设备运行稳定性与寿命的影响
  • 3步解锁音乐宝库:qmcdump助你轻松转换QQ音乐加密文件
  • Flux Sea Studio 架构解析:理解其底层扩散模型与注意力机制设计
  • 基于stm32的心率血氧检测仪[单片机]-计算机毕业设计源码+LW文档
  • 改进二进制粒子群算法在配电网重构中的应用:基于IEEE33节点系统的功率损耗优化与动态重构程序
  • 大模型学习指南:小白程序员必备,收藏这份2026年开源大模型体系与实战教程!
  • # 005、游戏控制自动化基础:PyAutoGUI模拟键鼠与动作时序设计
  • 三维空间智能体:不是AI在看你,而是它在“理解你在哪里”
  • Godot资源解包利器:零基础掌握游戏资产提取技术
  • 西门子200Smart PLC的Modbus RTU主站自动轮询库:简化你的工业通信
  • ai赋能vue3开发:通过快马平台智能重构与生成高质量组合式api代码
  • 如何深度定制WSA环境:Magisk与Google服务集成完全指南
  • 重磅来袭!4.11长沙老鹰一飞冲天开业盛典,行业大咖齐聚硬核分享
  • 摄像机遥控失灵?别急!3步排查法,快速恢复控制(附专业机型推荐)
  • Mysql 8.0新特性
  • 批量新员工入职培训怎么做?行政/销售/技术等5大核心岗位培训重点拆解
  • 智能地理空间任务引擎:GIS与AI的完美融合
  • Claude Code 源码泄露,拿来改造 OpenClaw