网站首页 > 文章精选 正文
6.1 DataFrame 的算术运算
DataFrame 支持多种算术运算,这些运算会按照行列对齐的方式应用到对应元素上。
6.1.1 两个 DataFrame 相加
当两个 DataFrame 进行加法运算时,Pandas 会根据行列索引对齐元素,然后将对应位置的元素相加。如果某个位置在其中一个 DataFrame 中存在而在另一个中不存在,结果会是 NaN。
import pandas as pd
df1 = pd.DataFrame({
'A': [1, 2],
'B': [3, 4]
})
df2 = pd.DataFrame({
'A': [5, 6],
'B': [7, 8]
})
result = df1 + df2
print(result)
输出结果为:
A B
0 6 10
1 8 12
这里 df1 和 df2 的 A 列和 B 列对应位置的元素分别相加。
6.1.2 DataFrame 与标量相加
DataFrame 与标量进行运算时,标量会与 DataFrame 的每个元素进行相应运算。
import pandas as pd
df = pd.DataFrame({
'A': [1, 2],
'B': [3, 4]
})
scalar = 2
result = df + scalar
print(result)
输出为:
A B
0 3 5
1 4 6
即 df 中的每个元素都加上了标量 2。
6.1.3 不同索引的 DataFrame 运算
如果两个 DataFrame 的索引不完全相同,运算时会自动对齐索引。对于没有匹配的位置,结果为 NaN。
import pandas as pd
df1 = pd.DataFrame({
'A': [1, 2],
'B': [3, 4]
}, index=[0, 1])
df2 = pd.DataFrame({
'A': [5, 6],
'B': [7, 8]
}, index=[1, 2])
result = df1 + df2
print(result)
输出结果:
A B
0 NaN NaN
1 7.0 11.0
2 NaN NaN
在这个例子中,只有索引为 1 的行有匹配的元素,所以只有这一行能得到正确的相加结果,其他行由于索引不匹配,对应位置为 NaN。
6.2 DataFrame 的统计运算
Pandas 为 DataFrame 提供了丰富的统计运算方法,帮助我们快速了解数据的特征。
6.2.1 求和运算
- 按列求和:使用 sum() 方法并指定 axis = 0(默认值),可以计算每列的总和。
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
column_sum = df.sum(axis = 0)
print(column_sum)
输出为:
A 6
B 15
dtype: int64
这表示 A 列的总和为 6,B 列的总和为 15。
- 按行求和:通过设置 axis = 1,可以计算每行的总和。
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
row_sum = df.sum(axis = 1)
print(row_sum)
输出为:
0 5
1 7
2 9
dtype: int64
这里每行的元素相加得到每行的总和。
6.2.2 均值运算
- 按列求均值:使用 mean() 方法并指定 axis = 0 计算每列的均值。
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
column_mean = df.mean(axis = 0)
print(column_mean)
输出为:
A 2.0
B 5.0
dtype: float64
A 列的均值为 2.0,B 列的均值为 5.0。
- 按行求均值:设置 axis = 1 计算每行的均值。
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
row_mean = df.mean(axis = 1)
print(row_mean)
输出为:
0 2.5
1 3.5
2 4.5
dtype: float64
每行元素的均值分别为 2.5、3.5 和 4.5。
6.2.3 其他统计运算
除了求和与均值,DataFrame 还支持如 max()(求最大值)、min()(求最小值)、median()(求中位数)等统计运算,使用方法类似。
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
max_values = df.max()
min_values = df.min()
median_values = df.median()
print("最大值:\n", max_values)
print("最小值:\n", min_values)
print("中位数:\n", median_values)
输出结果为:
最大值:
A 3
B 6
dtype: int64
最小值:
A 1
B 4
dtype: int64
中位数:
A 2.0
B 5.0
dtype: float64
6.3 DataFrame 的分组操作
分组操作是数据分析中常用的操作,Pandas 的 groupby 方法可以根据一个或多个列对数据进行分组,并对每个组应用统计函数。
6.3.1 单分组列
假设我们有一份销售数据,包含产品名称和销售额,我们想按产品名称统计销售额总和。
import pandas as pd
data = {
'产品名称': ['苹果', '香蕉', '苹果', '香蕉'],
'销售额': [100, 150, 120, 130]
}
df = pd.DataFrame(data)
grouped = df.groupby('产品名称').sum()
print(grouped)
这里使用 groupby('产品名称') 按产品名称进行分组,然后对每个组的 销售额 列应用 sum() 函数,输出结果为:
销售额
产品名称
苹果 220
香蕉 280
可以看到,分别计算出了苹果和香蕉的总销售额。
6.3.2 多分组列
如果我们的数据还包含销售地区,想同时按产品名称和销售地区统计销售额总和。
import pandas as pd
data = {
'产品名称': ['苹果', '香蕉', '苹果', '香蕉'],
'销售地区': ['北京', '上海', '北京', '上海'],
'销售额': [100, 150, 120, 130]
}
df = pd.DataFrame(data)
grouped = df.groupby(['产品名称', '销售地区']).sum()
print(grouped)
这里通过 groupby(['产品名称', '销售地区']) 按产品名称和销售地区两个列进行分组,输出为:
销售额
产品名称 销售地区
苹果 北京 220
香蕉 上海 280
这样就可以看到不同产品在不同地区的销售总额。
6.3.3 对分组数据应用多个函数
除了使用单个统计函数,还可以对分组数据应用多个不同的函数。
import pandas as pd
data = {
'产品名称': ['苹果', '香蕉', '苹果', '香蕉'],
'销售额': [100, 150, 120, 130]
}
df = pd.DataFrame(data)
grouped = df.groupby('产品名称').agg(['sum','mean'])
print(grouped)
这里使用 agg() 方法对每个分组应用 sum(求和)和 mean(求均值)函数,输出为:
销售额
sum mean
产品名称
苹果 220 110.0
香蕉 280 140.0
可以同时看到每个产品的销售额总和与平均销售额。
- 上一篇: 嵌入式中浮点运算小技巧(嵌入式代码讲解)
- 下一篇:已经是最后一篇了
猜你喜欢
- 2025-07-23 嵌入式中浮点运算小技巧(嵌入式代码讲解)
- 2025-07-23 工程计算软件Mathcad技巧集锦(工程数学计算器)
- 2025-07-23 LLM量化背后的概念、方法、应用和原理
- 2025-07-23 浮点类型和定点类型(浮点和定点有什么组成)
- 2025-07-23 一文读懂pytorch基础语法(pytorch详解)
- 2025-07-23 js数字(Number)方法汇总(js number string)
- 2025-07-23 现场|伦敦放题展:挑战感官的盛夏之展
- 2025-07-23 C# 基础-数据类型(简述c#的数据类型)
- 2025-07-23 java中浮点类型double、float,它们之间有什么不一样?
- 2025-07-23 长沙0基础学前端培训教程:float的表示范围为什么比long大
- 07-23第六章:DataFrame 的数据运算与分组操作
- 07-23嵌入式中浮点运算小技巧(嵌入式代码讲解)
- 07-23工程计算软件Mathcad技巧集锦(工程数学计算器)
- 07-23LLM量化背后的概念、方法、应用和原理
- 07-23浮点类型和定点类型(浮点和定点有什么组成)
- 07-23一文读懂pytorch基础语法(pytorch详解)
- 07-23js数字(Number)方法汇总(js number string)
- 07-23现场|伦敦放题展:挑战感官的盛夏之展
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)
- fmt.println (52)