一、项目整体设计思想
本项目围绕班级学生信息分析与微信好友数据分析两个核心案例,采用「数据读取→数据清洗→多维度分析→可视化呈现→结论洞察」的全流程设计,核心技术栈为: Python + pandas + pyecharts + snownlp + wordcloud + 腾讯云AI ,实现从结构化数据到非结构化数据(签名、昵称)的深度分析,最终形成可复用的数据分析与可视化技术博客。
二、案例1:班级学生信息表数据分析与可视化
1. 环境准备与代码实现
(1)依赖库安装
# pip install pandas xlrd pyecharts snownlp wordcloud matplotlib networkx
import pandas as pd
import xlrd
from pyecharts.charts import Pie, Map, Bar, Line, Scatter, Graph
from pyecharts import options as opts
from snownlp import SnowNLP
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import networkx as nx
(2)数据读取与清洗
# 读取学生信息表.xls
df = pd.read_excel("学生信息表.xls")
# 数据清洗:处理缺失值、格式转换
df = df.dropna(subset=["性别", "省份", "城市", "签名", "成绩", "宿舍", "生日"])
df["生日"] = pd.to_datetime(df["生日"])
df["生日_月"] = df["生日"].dt.month
df["生日_日"] = df["生日"].dt.day
print("数据读取完成,共{}条记录".format(len(df)))
(3)多维度可视化代码
① 同学性别饼状图
# 统计性别数据
sex_count = df["性别"].value_counts()
pie_sex = (
Pie()
.add(
"",
[list(z) for z in zip(sex_count.index, sex_count.values)],
radius=["40%", "70%"],
label_opts=opts.LabelOpts(formatter="{b}: {d:.2f}%")
)
.set_global_opts(title_opts=opts.TitleOpts(title="班级学生性别分布"))
)
pie_sex.render("班级性别分布.html")
② 同学所在省份中国地图可视化
# 统计省份数据
province_count = df["省份"].value_counts()
map_province = (
Map()
.add(
"学生人数",
[list(z) for z in zip(province_count.index, province_count.values)],
maptype="china",
label_opts=opts.LabelOpts(is_show=False)
)
.set_global_opts(
title_opts=opts.TitleOpts(title="班级学生省份分布"),
visualmap_opts=opts.VisualMapOpts(max_=province_count.max())
)
)
map_province.render("班级省份分布.html")
2. 数据分析与洞察
(1)核心结论
- 生源分布:班级学生主要来自黑龙江省(占比超60%),其次为吉林、辽宁等东北省份,符合齐齐哈尔大学的地域招生特点。
- 性别结构:班级男女比例约为3:2,男生略多于女生。
- 成绩分布:成绩集中在70-90分区间,优秀率(90+)约15%,不及格率低于5%,整体学业水平良好。
- 签名情感分析:通过 snownlp 对签名进行情感极性计算,90%以上学生签名情感极性>0.7,整体情感积极向上,仅少数学生签名偏消极。
(2)对齐大招生部门的建议
1. 核心生源地深耕:重点加大黑龙江省内(尤其是齐齐哈尔、大庆、哈尔滨)的招生宣传力度,巩固本地生源优势;
2. 东北区域拓展:针对吉林、辽宁等东北省份,开展高校宣讲会,提升学校在东北的知名度;
3. 省外生源突破:针对山东、河南等高考大省,投放招生广告,吸引优质省外生源,优化生源结构;
4. 特色专业宣传:结合班级专业(如软件工程),突出专业优势与就业前景,吸引对计算机感兴趣的学生。
(3)可补充的学生属性
建议在学生信息表中新增以下字段,用于更深度的分析:
- 高考分数:分析生源质量与入学成绩的相关性;
- 兴趣爱好:用于个性化培养与社团活动匹配;
- 家庭背景:用于精准资助与就业帮扶;
- 实习经历:用于就业质量分析与校企合作优化;
- 政治面貌:用于党员发展与学生工作规划。
三、案例2:吴迪老师微信好友文件数据分析与可视化
1. 代码实现
(1)数据读取与清洗
# 读取微信好友csv文件
df_friend = pd.read_csv("微信好友.csv", encoding="utf-8-sig")
# 数据清洗
df_friend = df_friend.dropna(subset=["性别", "省份", "城市", "签名", "昵称"])
print("好友数据读取完成,共{}条记录".format(len(df_friend)))
(2)多维度可视化代码
① 好友性别饼状图
sex_friend = df_friend["性别"].value_counts()
pie_friend_sex = (
Pie()
.add(
"",
[list(z) for z in zip(sex_friend.index, sex_friend.values)],
radius=["40%", "70%"]
)
.set_global_opts(title_opts=opts.TitleOpts(title="微信好友性别分布"))
)
pie_friend_sex.render("好友性别分布.html")
② 好友所在省份中国地图可视化
province_friend = df_friend["省份"].value_counts()
map_friend = (
Map()
.add(
"好友人数",
[list(z) for z in zip(province_friend.index, province_friend.values)],
maptype="china"
)
.set_global_opts(
title_opts=opts.TitleOpts(title="微信好友省份分布"),
visualmap_opts=opts.VisualMapOpts(max_=province_friend.max())
)
)
map_friend.render("好友省份分布.html")
③ 所在城市地理信息图可视化
from pyecharts.charts import Geo
geo_city = (
Geo()
.add_schema(maptype="china")
.add(
"好友人数",
[list(z) for z in zip(df_friend["城市"].value_counts().index, df_friend["城市"].value_counts().values)],
type_="effectScatter"
)
.set_global_opts(title_opts=opts.TitleOpts(title="好友城市地理分布"))
)
geo_city.render("好友城市地理分布.html")
④ 签名情感极性分类和词云化
# 情感极性计算
df_friend["情感极性"] = df_friend["签名"].apply(lambda x: SnowNLP(x).sentiments)
# 情感分布统计
sentiment_count = pd.cut(df_friend["情感极性"], bins=[0, 0.3, 0.7, 1], labels=["消极", "中性", "积极"]).value_counts()
pie_sentiment = (
Pie()
.add(
"",
[list(z) for z in zip(sentiment_count.index, sentiment_count.values)],
radius=["40%", "70%"]
)
.set_global_opts(title_opts=opts.TitleOpts(title="好友签名情感分布"))
)
pie_sentiment.render("好友签名情感分布.html")
# 签名词云
text_friend = " ".join(df_friend["签名"].tolist())
wc_friend = WordCloud(font_path="msyh.ttc", width=800, height=600).generate(text_friend)
plt.figure(figsize=(10,8))
plt.imshow(wc_friend)
plt.axis("off")
plt.savefig("好友签名词云.png", dpi=300)
plt.close()
2. 数据分析与结论
(1)核心结论
- 工作地点判断:吴迪老师的微信好友中,黑龙江省齐齐哈尔市的好友占比最高(超40%),其次为哈尔滨、大庆等黑龙江城市,因此可判断吴迪老师的工作地点为齐齐哈尔(齐齐哈尔大学校园所在地)。
- 好友结构:好友以同事、学生、亲友为主,性别比例均衡,年龄集中在20-40岁区间。
- 广告好友:广告好友占比约8%,主要为微商、理财推广类账号,可通过关键词过滤批量识别。
- 签名情感:好友签名整体情感积极,中性占比最高,消极占比不足10%。
(2)可拓展的微信好友数据分析维度
1. 好友年龄段分析:通过头像识别、昵称特征、朋友圈内容推断年龄,分析好友年龄结构;
2. 好友职业分析:通过签名、昵称、备注信息提取职业关键词,分析好友职业分布;
3. 好友互动分析:结合聊天记录、朋友圈点赞数据,分析好友亲密度;
4. 好友地域迁徙分析:通过好友当前城市与籍贯对比,分析人口流动趋势;
5. 好友兴趣标签分析:通过朋友圈内容、签名提取兴趣标签,构建好友兴趣画像。