968 字
5 分钟
数据分析|DataFrame案例

21.1 案例概述
本节通过三个实际案例,综合运用 DataFrame 的创建、列运算、条件筛选、排序和聚合操作。
import numpy as npimport pandas as pd21.2 学生成绩分析
data = { '姓名': ['张三', '李四', '王五', '赵六', '钱七'], '数学': [85, 92, 78, 88, 95], '英语': [90, 88, 85, 92, 80], '物理': [75, 80, 88, 85, 90],}scores = pd.DataFrame(data)print(scores)输出:
姓名 数学 英语 物理0 张三 85 90 751 李四 92 88 802 王五 78 85 883 赵六 88 92 854 钱七 95 80 90计算总分和平均分:
scores['总分'] = scores[['数学', '英语', '物理']].sum(axis=1)scores['平均分'] = scores['总分'] / 3print(scores)输出:
姓名 数学 英语 物理 总分 平均分0 张三 85 90 75 250 83.3333331 李四 92 88 80 260 86.6666672 王五 78 85 88 251 83.6666673 赵六 88 92 85 265 88.3333334 钱七 95 80 90 265 88.333333sum(axis=1) 按行求和(沿列方向),计算每位学生的三科总分。
筛选条件组合:
# 数学高于90分 或 英语高于85分print(scores[(scores['数学'] > 90) | (scores['英语'] > 85)])输出:
姓名 数学 英语 物理 总分 平均分0 张三 85 90 75 250 83.3333331 李四 92 88 80 260 86.6666673 赵六 88 92 85 265 88.3333334 钱七 95 80 90 265 88.333333| 表示逻辑或,& 表示逻辑与。注意每个条件需要用括号括起来。
按总分排序取前 3 名:
print(scores.nlargest(3, columns='总分'))输出:
姓名 数学 英语 物理 总分 平均分3 赵六 88 92 85 265 88.3333334 钱七 95 80 90 265 88.3333331 李四 92 88 80 260 86.666667涉及方法: sum(axis=1)、| 条件组合、nlargest()、新增列运算。
21.3 销售数据分析
data = { '产品名称': ['A', 'B', 'C', 'D'], '单价': [100, 150, 200, 120], '销量': [50, 30, 20, 40]}df = pd.DataFrame(data)print(df)输出:
产品名称 单价 销量0 A 100 501 B 150 302 C 200 203 D 120 40计算总销售额并排序:
df['总销售额'] = df['单价'] * df['销量']print(df.nlargest(1, columns='总销售额')) # 销售额最高的产品print(df.sort_values('总销售额', ascending=False))输出:
产品名称 单价 销量 总销售额0 A 100 50 5000 产品名称 单价 销量 总销售额0 A 100 50 50003 D 120 40 48001 B 150 30 45002 C 200 20 4000涉及方法: 列间运算、nlargest()、sort_values()。
21.4 电商用户行为分析
data = { '用户ID': [101, 102, 103, 104, 105], '用户名': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'], '商品类别': ['电子产品', '服饰', '电子产品', '家居', '服饰'], '商品单价': [1200, 300, 800, 150, 200], '购买数量': [1, 3, 2, 5, 4],}df = pd.DataFrame(data)print(df)输出:
用户ID 用户名 商品类别 商品单价 购买数量0 101 Alice 电子产品 1200 11 102 Bob 服饰 300 32 103 Charlie 电子产品 800 23 104 David 家居 150 54 105 Eve 服饰 200 4计算消费金额与最优用户:
df['消费金额'] = df['商品单价'] * df['购买数量']print(df.nlargest(1, columns='消费金额'))输出:
用户ID 用户名 商品类别 商品单价 购买数量 消费金额2 103 Charlie 电子产品 800 2 1600print('平均消费金额:', df['消费金额'].mean())输出:
平均消费金额: 1050.0分类筛选统计:
# 统计电子产品的总购买数量print(df[df['商品类别'] == '电子产品']['购买数量'].sum())输出:
3分析流程: 先通过布尔索引 df['商品类别'] == '电子产品' 筛选出电子产品行,再取 ['购买数量'] 列,最后 sum() 求和。
涉及方法: 列运算、nlargest()、mean()、布尔索引 + 列筛选 + sum() 链式操作。
21.5 本节小结
本节通过三个案例综合运用了 DataFrame 的核心操作:
| 案例 | 涉及方法 |
|---|---|
| 学生成绩分析 | sum(axis=1)、nlargest()、| 条件筛选、新增列 |
| 销售数据分析 | 列间运算、nlargest()、sort_values() |
| 电商用户分析 | 布尔索引筛选、链式操作、mean()、sum() |
下一节我们将学习 Pandas 数据读取与写入。
数据分析
连载中数据分析|DataFrame案例
https://luq-blog.xyz/posts/2026-07-04-data-notes-21-df-cases/分享文章
生成精美分享图或复制链接,与更多人分享本文。
继续阅读
换条路线
从其他文章中稳定抽取
最后更新于 ,距今已过 92 天
部分内容可能已过时
评论