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]) 反向按元素指數冪。
廣告