如何使用 Pandas 进行数据过滤

如何使用 Pandas 进行数据过滤

参考:pandas filter

在数据分析过程中,经常需要对数据进行筛选和过滤,以便专注于分析特定的数据子集。Pandas 是一个强大的 Python 数据分析工具库,它提供了多种方法来过滤 DataFrame 中的数据。本文将详细介绍如何使用 Pandas 进行数据过滤,包括使用条件表达式、query 方法以及通过布尔索引等方式。

1. 使用条件表达式过滤数据

在 Pandas 中,可以直接使用条件表达式来过滤 DataFrame 中的数据。这是最直接也是最常用的数据过滤方法。

示例代码 1: 基于单个条件过滤数据

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 过滤出 website 列为 'pandasdataframe.com' 的行
filtered_df = df[df['website'] == 'pandasdataframe.com']
print(filtered_df)

Output:

如何使用 Pandas 进行数据过滤

示例代码 2: 基于多个条件过滤数据

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 过滤出 age 大于 30 并且 website 为 'pandasdataframe.com' 的行
filtered_df = df[(df['age'] > 30) & (df['website'] == 'pandasdataframe.com')]
print(filtered_df)

Output:

如何使用 Pandas 进行数据过滤

2. 使用 query 方法过滤数据

Pandas 的 query 方法提供了一种更为简洁的方式来过滤 DataFrame。使用字符串表达式可以使代码更加易读。

示例代码 3: 使用 query 方法过滤数据

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 query 方法过滤数据
filtered_df = df.query("website == 'pandasdataframe.com'")
print(filtered_df)

Output:

如何使用 Pandas 进行数据过滤

示例代码 4: 使用 query 方法结合多个条件过滤数据

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 query 方法结合多个条件过滤数据
filtered_df = df.query("age > 30 and website == 'pandasdataframe.com'")
print(filtered_df)

Output:

如何使用 Pandas 进行数据过滤

3. 使用布尔索引过滤数据

布尔索引是 Pandas 中一种非常灵活的数据过滤方式。通过对 DataFrame 的列进行操作,生成布尔值序列,然后用这个布尔值序列来过滤数据。

示例代码 5: 使用布尔索引过滤数据

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 生成布尔值序列
condition = df['website'] == 'pandasdataframe.com'

# 使用布尔索引过滤数据
filtered_df = df[condition]
print(filtered_df)

Output:

如何使用 Pandas 进行数据过滤

示例代码 6: 结合多个布尔序列过滤数据

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 生成多个布尔值序列
condition1 = df['age'] > 30
condition2 = df['website'] == 'pandasdataframe.com'

# 结合多个布尔序列过滤数据
filtered_df = df[condition1 & condition2]
print(filtered_df)

Output:

如何使用 Pandas 进行数据过滤

4. 使用 isin 方法过滤数据

isin 方法可以用来过滤 DataFrame 中某列的值是否存在于一个指定的集合中。这在处理分类数据时非常有用。

示例代码 7: 使用 isin 方法过滤数据

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 isin 方法过滤数据
filtered_df = df[df['website'].isin(['pandasdataframe.com', 'example.com'])]
print(filtered_df)

Output:

如何使用 Pandas 进行数据过滤

示例代码 8: 结合条件表达式和 isin 方法过滤数据

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 结合条件表达式和 isin 方法过滤数据
filtered_df = df[df['age'].isin([30, 40]) & (df['website'] == 'pandasdataframe.com')]
print(filtered_df)

Output:

如何使用 Pandas 进行数据过滤

5. 使用 filter 方法过滤数据

Pandas 的 filter 方法提供了一种便捷的方式来过滤 DataFrame 的行或列。可以根据标签的名称来过滤。

示例代码 9: 使用 filter 方法过滤列

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 filter 方法过滤列
filtered_df = df.filter(items=['name', 'website'])
print(filtered_df)

Output:

如何使用 Pandas 进行数据过滤

示例代码 10: 使用 filter 方法过滤行

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 filter 方法过滤行
filtered_df = df.filter(like='3', axis=0)
print(filtered_df)

Output:

如何使用 Pandas 进行数据过滤

示例代码 11: 使用 filter 方法过滤列,使用正则表达式

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 filter 方法过滤列,使用正则表达式
filtered_df = df.filter(regex='^n', axis=1)
print(filtered_df)

Output:

如何使用 Pandas 进行数据过滤

示例代码 12: 使用 filter 方法过滤行,使用正则表达式

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 filter 方法过滤行,使用正则表达式
filtered_df = df.filter(regex='^1', axis=0)
print(filtered_df)

Output:

如何使用 Pandas 进行数据过滤

示例代码 13: 使用 loc 方法过滤数据

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 loc 方法过滤数据
filtered_df = df.loc[df['website'] == 'pandasdataframe.com']
print(filtered_df)

Output:

如何使用 Pandas 进行数据过滤

示例代码 14: 使用 iloc 方法过滤数据

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 iloc 方法过滤数据
filtered_df = df.iloc[0:2]
print(filtered_df)

Output:

如何使用 Pandas 进行数据过滤

示例代码 15: 使用 at 方法过滤数据

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 at 方法过滤数据
filtered_data = df.at[0, 'website']
print(filtered_data)

Output:

如何使用 Pandas 进行数据过滤

示例代码 16: 使用 iat 方法过滤数据

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 iat 方法过滤数据
filtered_data = df.iat[0, 2]
print(filtered_data)

Output:

如何使用 Pandas 进行数据过滤

示例代码 17: 使用 where 方法过滤数据

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 where 方法过滤数据
filtered_df = df.where(df['website'] == 'pandasdataframe.com')
print(filtered_df)

Output:

如何使用 Pandas 进行数据过滤

示例代码 18: 使用 mask 方法过滤数据

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 mask 方法过滤数据
filtered_df = df.mask(df['website'] == 'pandasdataframe.com')
print(filtered_df)

Output:

如何使用 Pandas 进行数据过滤

示例代码 19: 使用 eval 方法过滤数据

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 eval 方法过滤数据
filtered_df = df[df.eval("website == 'pandasdataframe.com'")]
print(filtered_df)

Output:

如何使用 Pandas 进行数据过滤

示例代码 20: 使用 lookup 方法过滤数据

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 30, 35, 40],
        'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com', 'test.com']}
df = pd.DataFrame(data)

# 使用 lookup 方法过滤数据
filtered_data = df.lookup([0, 1], ['website', 'website'])
print(filtered_data)

以上就是 Pandas 中数据过滤的常用方法,希望对你的数据分析工作有所帮助。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程