Python Pandas - DataFrame 的算术运算



Pandas DataFrame 是一种二维数据结构,用于以表格格式存储数据,类似于 SQL 或 Excel 中的表格。Pandas 的主要功能之一是能够对 DataFrame 执行矢量化算术运算。这意味着对 Pandas 数据结构的算术运算无需手动循环遍历元素即可执行。

在 Pandas 中应用算术运算可以让你快速有效地操作数据,无论你是处理单个 DataFrame 还是在多个 DataFrame 之间执行运算。

在本教程中,我们将学习如何在 Pandas DataFrame 上应用算术运算,如加法、减法、乘法和除法。

DataFrame 与标量值的算术运算

你可以直接对 DataFrame 和标量值执行算术运算。这些运算按元素应用,这意味着 DataFrame 中的每个值都会受到算术运算的影响。

以下是 Pandas DataFrame 上常用的算术运算符列表:

运算 使用运算符的示例 描述
加法 df + 2 将 2 加到 DataFrame 的每个元素上
减法 df - 2 从每个元素中减去 2
乘法 df * 2 将每个元素乘以 2
除法 df / 2 将每个元素除以 2
幂运算 df ** 2 将每个元素提升到 2 的幂
取模 df % 2 求除以 2 的余数
地板除 df // 2 除并取商的下界

示例

以下示例演示了如何在 Pandas DataFrame 上应用所有算术运算符以及标量值。

import pandas as pd

# Create a sample DataFrame
data = {'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]}
df = pd.DataFrame(data)

# Display the input DataFrame
print("Input DataFrame:\n", df)

# Perform arithmetic operations
print("\nAddition:\n", df + 2)
print("\nSubtraction:\n", df - 2)
print("\nMultiplication:\n", df * 2)
print("\nDivision:\n", df / 2)
print("\nExponentiation:\n", df ** 2)
print("\nModulus:\n", df % 2)
print("\nFloor Division:\n", df // 2)

以下是上述代码的输出:

Input DataFrame:
    A  B
0  1  5
1  2  6
2  3  7
3  4  8

Addition:
    A   B
0  3   7
1  4   8
2  5   9
3  6  10

Subtraction:
    A  B
0 -1  3
1  0  4
2  1  5
3  2  6

Multiplication:
    A   B
0  2  10
1  4  12
2  6  14
3  8  16

Division:
      A    B
0  0.5  2.5
1  1.0  3.0
2  1.5  3.5
3  2.0  4.0

Exponentiation:
     A   B
0   1  25
1   4  36
2   9  49
3  16  64

Modulus:
    A  B
0  1  1
1  0  0
2  1  1
3  0  0

Floor Division:
    A  B
0  0  2
1  1  3
2  1  3
3  2  4

两个 DataFrame 之间的算术运算

Pandas 允许你在两个 DataFrame 之间应用算术运算符。正如我们已经知道的,DataFrame 是根据它们的索引和列标签对齐的。如果在应用这些运算符时标签不匹配,则相应的结果将为 NaN。

示例

此示例演示了在两个 DataFrame 对象上应用算术运算。

import pandas as pd

# Create two DataFrames
df1 = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]})
df2 = pd.DataFrame({'A': [10, 20, 30], 'B': [50, 60, 70]}, index=[1, 2, 3])

# Display the input DataFrames
print("DataFrame 1:\n", df1)
print("\nDataFrame 2:\n", df2)

# Perform arithmetic operations
print("\nAddition:\n", df1 + df2)
print("\nSubtraction:\n", df1 - df2)
print("\nMultiplication:\n", df1 * df2)
print("\nDivision:\n", df1 / df2)

以下是上述代码的输出:

DataFrame 1:
    A  B
0  1  5
1  2  6
2  3  7
3  4  8

DataFrame 2:
     A   B
1  10  50
2  20  60
3  30  70

Addition:
       A     B
0   NaN   NaN
1  12.0  56.0
2  23.0  67.0
3  34.0  78.0

Subtraction:
       A     B
0   NaN   NaN
1  -8.0 -44.0
2 -17.0 -53.0
3 -26.0 -62.0

Multiplication:
        A      B
0    NaN    NaN
1   20.0  300.0
2   60.0  420.0
3  120.0  560.0

Division:
           A         B
0       NaN       NaN
1  0.200000  0.120000
2  0.150000  0.116667
3  0.133333  0.114286

Pandas 中的算术函数

除了上述运算符外,Pandas 还提供了各种函数来对 Pandas 数据结构执行算术运算,这些函数可以有效地处理缺失值并提供其他自定义选项,例如选择轴和指定级别。

序号 函数 描述
1 add(other[, axis, level, fill_value]) 按元素加法(二元运算符 +)。
2 sub(other[, axis, level, fill_value]) 按元素减法(二元运算符 -)。
3 mul(other[, axis, level, fill_value]) 按元素乘法(二元运算符 *)。
4 div(other[, axis, level, fill_value]) 按元素浮点除法(二元运算符 /)。
5 truediv(other[, axis, level, ...]) 按元素浮点除法(二元运算符 /)。
6 floordiv(other[, axis, level, ...]) 按元素整数除法(二元运算符 //)。
7 mod(other[, axis, level, fill_value]) 按元素取模运算(二元运算符 %)。
8 pow(other[, axis, level, fill_value]) 按元素指数幂(二元运算符 **)。
9 dot(other) 与另一个 DataFrame 或数组进行矩阵乘法。
10 radd(other[, axis, level, fill_value]) 反向按元素加法。
11 rsub(other[, axis, level, fill_value]) 反向按元素减法。
12 rmul(other[, axis, level, fill_value]) 反向按元素乘法。
13 rdiv(other[, axis, level, fill_value]) 反向按元素浮点除法。
14 rfloordiv(other[, axis, level, ...]) 反向按元素整数除法。
15 rmod(other[, axis, level, fill_value]) 反向按元素取模运算。
16 rpow(other[, axis, level, fill_value]) 反向按元素指数幂。
广告