【python Pandas】算术运算与逻辑运算

文章目录

  • Pandas 算术运算与逻辑运算
    • 1. 算术运算
      • 通俗的介绍:
      • 学术概念:
    • 2. 算术运算操作
      • 2.1 对`Series`进行算术运算
        • 2.1.1 加法操作
        • 2.1.2 通过方法进行加法
      • 2.2 对`DataFrame`进行算术运算
        • 2.2.1 `DataFrame`加法
        • 2.2.2 处理缺失值的加法
      • 2.3 算术运算的广播
        • 2.3.1 `Series`与`DataFrame`算术运算
    • 3. 逻辑运算
      • 3.1 基本的逻辑运算符
        • 3.1.1 使用`&`(与)运算符
        • 3.1.2 使用`|`(或)运算符
        • 3.1.3 使用`~`(非)运算符
      • 3.2 逻辑运算与条件筛选
        • 3.2.1 筛选满足条件的数据
      • 3.3 使用`np.where()`进行条件赋值
        • 3.3.1 使用`np.where()`进行赋值
    • 4. 总结


Pandas 算术运算与逻辑运算

1. 算术运算

在Pandas中,算术运算是对SeriesDataFrame进行数学运算的基础操作。这些运算包括加法、减法、乘法、除法等,Pandas提供了丰富的方法来执行这些操作。算术运算可以通过对应的运算符或专用的方法完成。

通俗的介绍:

算术运算就像你在做数学题,给每个数做加法、减法、乘法或者除法等运算。你可以对表格中的每一行或每一列执行这些操作,Pandas会自动帮你做计算。

学术概念:

在Pandas中,算术运算指的是对SeriesDataFrame中的数据执行数学操作,包括加法、减法、乘法、除法等。这些操作可以通过运算符直接进行,也可以使用Pandas提供的算术方法来执行,支持标量与向量化操作。通过这些操作,可以方便地处理和变换数据,为数据分析提供基础运算能力。

2. 算术运算操作

2.1 对Series进行算术运算

Series中的算术运算可以通过运算符或者add(), sub(), mul(), div()等方法进行。Pandas会对齐索引,确保两个Series的对应元素进行运算。

2.1.1 加法操作

示例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.1.2 通过方法进行加法

示例2:使用add()方法加法

result_method = s1.add(s2)
print(result_method)

输出:

a    5
b    7
c    9
dtype: int64

2.2 对DataFrame进行算术运算

DataFrame中,算术运算可以对行和列之间的元素进行操作。默认情况下,Pandas会根据列的标签对齐数据。

2.2.1 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
2.2.2 处理缺失值的加法

如果两个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

2.3 算术运算的广播

算术运算支持广播机制。也就是说,你可以对DataFrameSeries之间进行运算,即使它们的形状不同,只要它们的索引对齐。

2.3.1 SeriesDataFrame算术运算

示例5:SeriesDataFrame加法

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

3. 逻辑运算

在Pandas中,逻辑运算主要用于对SeriesDataFrame的值进行条件判断,常见的操作包括“与” (&)、“或” (|)、“非” (~) 等。逻辑运算常常用于数据筛选与过滤。

3.1 基本的逻辑运算符

Pandas使用标准的Python逻辑运算符进行逻辑操作。需要注意的是,逻辑运算符如&|用于逐元素比较,而不是直接的布尔值比较。

3.1.1 使用&(与)运算符

示例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
3.1.2 使用|(或)运算符

示例7:使用|运算符进行逻辑或运算

result = (df['A'] > 1) | (df['B'] < 6)  # A > 1 或 B < 6
print(result)

输出:

0     True
1     True
2     True
dtype: bool
3.1.3 使用~(非)运算符

示例8:使用~运算符进行逻辑非运算

result = ~(df['A'] > 1)  # 非 A > 1
print(result)

输出:

0     True
1    False
2    False
dtype: bool

3.2 逻辑运算与条件筛选

逻辑运算符通常与条件筛选结合使用,用于从DataFrame中筛选满足特定条件的数据。

3.2.1 筛选满足条件的数据

示例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

3.3 使用np.where()进行条件赋值

np.where()函数结合条件判断,可以用来根据条件进行赋值。它返回符合条件的元素值。

3.3.1 使用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

4. 总结

Pandas的算术运算和逻辑运算是数据分析中非常常见的操作。通过算术运算,我们可以对SeriesDataFrame进行元素级的数学操作,例如加法、减法、乘法、除法等。而通过逻辑运算,我们可以进行条件判断,筛选符合特定条件的数据。这些操作是数据清洗、转换

你可能感兴趣的:(杂谈,pandas,python,开发语言,python3.11,目标检测,机器学习,人工智能)