968 字
5 分钟
页面浏览--访问次数--
数据分析|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 篇,共 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

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取

评论

正在加载评论...

最后更新于 ,距今已过 92 天

部分内容可能已过时