mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6mobile wallpaper 7mobile wallpaper 8mobile wallpaper 9mobile wallpaper 10mobile wallpaper 11mobile wallpaper 12mobile wallpaper 13mobile wallpaper 14mobile wallpaper 15mobile wallpaper 16mobile wallpaper 17mobile wallpaper 18mobile wallpaper 19mobile wallpaper 20mobile wallpaper 21mobile wallpaper 22mobile wallpaper 23
439 字
1 分钟
笔记|数据分析学习笔记21|DataFrame案例

本系列所有文章都放在数据科学标签,总目录如下:

合集|数据分析学习笔记|系列总目录

上一篇:笔记|数据分析学习笔记20|DataFrame的常用方法


21.1 案例概述#

本节通过三个实际案例,综合运用 DataFrame 的创建、列运算、条件筛选、排序和聚合操作。

import numpy as np
import pandas as pd

21.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 75
1 李四 92 88 80
2 王五 78 85 88
3 赵六 88 92 85
4 钱七 95 80 90

计算总分和平均分:

scores['总分'] = scores[['数学', '英语', '物理']].sum(axis=1)
scores['平均分'] = scores['总分'] / 3
print(scores)

输出:

姓名 数学 英语 物理 总分 平均分
0 张三 85 90 75 250 83.333333
1 李四 92 88 80 260 86.666667
2 王五 78 85 88 251 83.666667
3 赵六 88 92 85 265 88.333333
4 钱七 95 80 90 265 88.333333

sum(axis=1) 按行求和(沿列方向),计算每位学生的三科总分。

筛选条件组合:

# 数学高于90分 或 英语高于85分
print(scores[(scores['数学'] > 90) | (scores['英语'] > 85)])

输出:

姓名 数学 英语 物理 总分 平均分
0 张三 85 90 75 250 83.333333
1 李四 92 88 80 260 86.666667
3 赵六 88 92 85 265 88.333333
4 钱七 95 80 90 265 88.333333

| 表示逻辑或,& 表示逻辑与。注意每个条件需要用括号括起来。

按总分排序取前 3 名:

print(scores.nlargest(3, columns='总分'))

输出:

姓名 数学 英语 物理 总分 平均分
3 赵六 88 92 85 265 88.333333
4 钱七 95 80 90 265 88.333333
1 李四 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 50
1 B 150 30
2 C 200 20
3 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 5000
3 D 120 40 4800
1 B 150 30 4500
2 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 1
1 102 Bob 服饰 300 3
2 103 Charlie 电子产品 800 2
3 104 David 家居 150 5
4 105 Eve 服饰 200 4

计算消费金额与最优用户:

df['消费金额'] = df['商品单价'] * df['购买数量']
print(df.nlargest(1, columns='消费金额'))

输出:

用户ID 用户名 商品类别 商品单价 购买数量 消费金额
2 103 Charlie 电子产品 800 2 1600
print('平均消费金额:', 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 数据读取与写入


分享

如果这篇文章对你有帮助,欢迎分享给更多人!

笔记|数据分析学习笔记21|DataFrame案例
https://luq-blog.xyz/posts/2026-07-04-data-notes-21-df-cases/
作者
Luquiescene
发布于
2026-07-04
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录