在Pandas中,算术运算是对Series
和DataFrame
进行数学运算的基础操作。这些运算包括加法、减法、乘法、除法等,Pandas提供了丰富的方法来执行这些操作。算术运算可以通过对应的运算符或专用的方法完成。
算术运算就像你在做数学题,给每个数做加法、减法、乘法或者除法等运算。你可以对表格中的每一行或每一列执行这些操作,Pandas会自动帮你做计算。
在Pandas中,算术运算指的是对Series
或DataFrame
中的数据执行数学操作,包括加法、减法、乘法、除法等。这些操作可以通过运算符直接进行,也可以使用Pandas提供的算术方法来执行,支持标量与向量化操作。通过这些操作,可以方便地处理和变换数据,为数据分析提供基础运算能力。
Series
进行算术运算Series
中的算术运算可以通过运算符或者add()
, sub()
, mul()
, div()
等方法进行。Pandas会对齐索引,确保两个Series
的对应元素进行运算。
示例1:两个Series
相加
import pandas as pd
s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s2 = pd.Series([4, 5, 6], index=['a', 'b', 'c'])
result = s1 + s2 # 使用加法运算符进行加法
print(result)
输出:
a 5
b 7
c 9
dtype: int64
示例2:使用add()
方法加法
result_method = s1.add(s2)
print(result_method)
输出:
a 5
b 7
c 9
dtype: int64
DataFrame
进行算术运算在DataFrame
中,算术运算可以对行和列之间的元素进行操作。默认情况下,Pandas会根据列的标签对齐数据。
DataFrame
加法示例3:两个DataFrame
相加
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]})
df_sum = df1 + df2
print(df_sum)
输出:
A B
0 8 14
1 10 16
2 12 18
如果两个DataFrame
在某些位置没有数据(即存在NaN
值),Pandas会自动忽略NaN
值进行计算。你还可以指定fill_value
来替代缺失值。
示例4:处理缺失值的加法
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, None], 'B': [None, 11, 12]})
df_sum_fill = df1.add(df2, fill_value=0) # 用0填充缺失值
print(df_sum_fill)
输出:
A B
0 8 4.0
1 10 16.0
2 3 18.0
算术运算支持广播机制。也就是说,你可以对DataFrame
和Series
之间进行运算,即使它们的形状不同,只要它们的索引对齐。
Series
与DataFrame
算术运算示例5:Series
与DataFrame
加法
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
s = pd.Series([1, 2], index=['A', 'B'])
df_plus_s = df + s
print(df_plus_s)
输出:
A B
0 2 5
1 4 7
2 5 8
在Pandas中,逻辑运算主要用于对Series
或DataFrame
的值进行条件判断,常见的操作包括“与” (&
)、“或” (|
)、“非” (~
) 等。逻辑运算常常用于数据筛选与过滤。
Pandas使用标准的Python逻辑运算符进行逻辑操作。需要注意的是,逻辑运算符如&
和|
用于逐元素比较,而不是直接的布尔值比较。
&
(与)运算符示例6:使用&
运算符进行逻辑与运算
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
result = (df['A'] > 1) & (df['B'] < 6) # A > 1 且 B < 6
print(result)
输出:
0 False
1 True
2 True
dtype: bool
|
(或)运算符示例7:使用|
运算符进行逻辑或运算
result = (df['A'] > 1) | (df['B'] < 6) # A > 1 或 B < 6
print(result)
输出:
0 True
1 True
2 True
dtype: bool
~
(非)运算符示例8:使用~
运算符进行逻辑非运算
result = ~(df['A'] > 1) # 非 A > 1
print(result)
输出:
0 True
1 False
2 False
dtype: bool
逻辑运算符通常与条件筛选结合使用,用于从DataFrame
中筛选满足特定条件的数据。
示例9:筛选符合条件的数据
df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [4, 5, 6, 7]})
filtered_df = df[(df['A'] > 2) & (df['B'] < 7)] # 筛选 A > 2 且 B < 7 的行
print(filtered_df)
输出:
A B
2 3 6
np.where()
进行条件赋值np.where()
函数结合条件判断,可以用来根据条件进行赋值。它返回符合条件的元素值。
np.where()
进行赋值示例10:使用np.where()
进行条件赋值
import numpy as np
df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [4, 5, 6, 7]})
df['C'] = np.where(df['A'] > 2, 'Yes', 'No') # A > 2 时赋值为 'Yes'
print(df)
输出:
A B C
0 1 4 No
1 2 5 No
2 3 6 Yes
3 4 7 Yes
Pandas的算术运算和逻辑运算是数据分析中非常常见的操作。通过算术运算,我们可以对Series
和DataFrame
进行元素级的数学操作,例如加法、减法、乘法、除法等。而通过逻辑运算,我们可以进行条件判断,筛选符合特定条件的数据。这些操作是数据清洗、转换