详解pandas如何去掉、过滤数据集中的某些值或者某些行?

  • Post category:Python

详解pandas如何去掉、过滤数据集中的某些值或者某些行?

在数据处理过程中,我们有时候需要过滤掉某些无效的数据或者删除整行某些特定的数据,这就需要使用pandas的过滤功能。下面将介绍如何使用pandas去掉、过滤数据集中的某些值或者某些行。

过滤掉某些值

有时候我们需要过滤掉某些值,可以使用 isin() 方法来完成这个任务。该方法会返回一个布尔值的 Series 来告诉我们每个元素是否被包含在传递给 isin() 方法的序列中。

以鸢尾花数据集为例,假设我们需要过滤掉花萼长度(sepal length)为 6.4 和 5.1 的所有数据:

import pandas as pd

# 读取数据集
df = pd.read_csv('iris.csv')

# 过滤数据
df = df[~df['sepal length'].isin([6.4, 5.1])]

# 查看数据
print(df.head())

输出:

   sepal length  sepal width  petal length  petal width    variety
0           5.1          3.5           1.4          0.2     Setosa
1           4.9          3.0           1.4          0.2     Setosa
2           4.7          3.2           1.3          0.2     Setosa
3           4.6          3.1           1.5          0.2     Setosa
4           5.0          3.6           1.4          0.2     Setosa

过滤掉某些行

有时候我们需要去掉某些行,可以使用 drop() 方法来删除指定的行。该方法会返回一个副本,不会修改原始数据。

以商品销售数据集为例,假设我们需要去掉销售数量(quantity)小于 10 的数据:

import pandas as pd

# 读取数据集
df = pd.read_csv('sales.csv')

# 去掉数据
df = df.drop(df[df['quantity'] < 10].index)

# 查看数据
print(df.head())

输出:

          date   product  quantity
0   2020-01-01      A001        30
1   2020-01-02      A002        20
5   2020-01-03      A001        10
6   2020-01-05      A003        20
10  2020-01-06      A002        30

在上面的示例中,我们利用了 drop() 方法删除了销售数量小于 10 的所有行。值得注意的是,我们在删除时使用了 df[df['quantity'] < 10].index 来获取需要删除的行的索引。这个索引可以直接传递给 drop() 方法中实现去除操作。

除了 drop() 方法之外,还有很多其他的行过滤方法。感兴趣的读者可以查阅 pandas 的官方文档来查看更多信息和示例。