news 2026/5/23 1:29:39

python数据分析实战案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python数据分析实战案例

一、项目整体设计思想

本项目围绕班级学生信息分析与微信好友数据分析两个核心案例,采用「数据读取→数据清洗→多维度分析→可视化呈现→结论洞察」的全流程设计,核心技术栈为: 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. 好友兴趣标签分析:通过朋友圈内容、签名提取兴趣标签,构建好友兴趣画像。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 1:30:38

I2C土壤湿度传感器Arduino驱动库详解

1. 项目概述 I2CSoilMoistureSensor 是一款专为 Catnip Electronics(现由 Miceuz 主导开发)推出的 IC 接口土壤湿度传感器设计的轻量级 Arduino 库。该传感器硬件基于 Chirp 系列设计(开源地址:https://github.com/Miceuz/i2c-moi…

作者头像 李华
网站建设 2026/5/23 1:29:42

MultiButton嵌入式按钮事件处理库详解

1. 项目概述MultiButton 是一个轻量、可靠、可移植的嵌入式按钮事件处理库,专为资源受限的微控制器平台(如 Arduino、STM32duino)设计。其核心目标并非简单读取 GPIO 电平,而是将原始、易受干扰的物理输入信号,转化为语…

作者头像 李华
网站建设 2026/5/23 1:30:23

技术创业中的项目管理:从内核开发到产品落地

技术创业中的项目管理:从内核开发到产品落地 技术人的项目管理视角 作为一名从Linux内核开发者转型产品经理再到科技创业者的人,我深刻体会到项目管理在技术创业中的重要性。好的项目管理可以帮助技术团队更高效地将创意转化为产品。 内核开发的项目管理…

作者头像 李华
网站建设 2026/5/23 1:29:47

SpringBoot 整合 Redis 缓存

Redis 作为最主流的分布式缓存,几乎是 SpringBoot 项目的“标配”——无论是减轻数据库压力、提升接口响应速度,还是实现会话共享、分布式锁,都离不开它。本篇文章就来介绍一下 SpringBoot 整合 Redis的操作步骤, 同时讲讲Redis中…

作者头像 李华
网站建设 2026/5/23 1:30:00

HarmonyOS6 半年磨一剑 - RcRadio 组件事件体系与交互逻辑深度解析

文章目录前言一、三事件分层设计1.1 三个事件的声明1.2 三事件的调用顺序二、点击处理管道2.1 handleRcRadioClick 的双重守卫2.2 方框点击与标签点击的分离2.3 按钮样式的点击处理三、禁用机制3.1 两个层级的禁用3.2 禁用状态的视觉表现四、RcRadioGroup 的事件透传链4.1 Grou…

作者头像 李华