Jupyter AI

8 数据选择与过滤

📅 发表日期: 2024年8月10日

分类: 📊Pandas 入门

👁️阅读: --

在上一篇中,我们学习了如何使用 Pandas 进行数据的导入与导出,这为我们后续的数据处理打下了基础。此次我们将重点讨论数据选择与过滤。通过掌握这一部分的知识,你将能够轻松地从复杂的数据集中提取出所需的信息。接下来,我们将通过一些实例来逐步了解这些操作。

数据选择

数据选择主要是针对 Pandas 的 DataFrameSeries 进行的操作。我们可以通过行索引和列索引来选择数据。

基本选择

首先,载入一个示例数据集:

import pandas as pd

# 创建一个示例数据集
data = {
    '姓名': ['张三', '李四', '王五', '赵六'],
    '年龄': [25, 30, 22, 28],
    '城市': ['北京', '上海', '广州', '深圳']
}

df = pd.DataFrame(data)
print(df)

上面的代码会生成如下 DataFrame

   姓名  年龄   城市
0  张三  25   北京
1  李四  30   上海
2  王五  22   广州
3  赵六  28   深圳

列选择

我们可以通过列名称选择特定的列。使用 [].loc 方法:

# 选择单列
print(df['姓名'])

# 选择多列
print(df[['姓名', '城市']])

输出结果如下:

0    张三
1    李四
2    王五
3    赵六
Name: 姓名, dtype: object

   姓名   城市
0  张三   北京
1  李四   上海
2  王五   广州
3  赵六   深圳

行选择

可以使用 ilocloc 方法来选择行。

# 选择第一行
print(df.iloc[0])

# 选择前两行
print(df.iloc[0:2])

# 使用 loc 选择第二行(注意 loc 是包含结束的)
print(df.loc[1])

输出结果为:

姓名      张三
年龄       25
城市      北京
Name: 0, dtype: object

   姓名  年龄   城市
0  张三  25   北京
1  李四  30   上海

姓名      李四
年龄       30
城市      上海
Name: 1, dtype: object

数据过滤

数据过滤是指根据某些条件选择符合条件的数据行或列。

一维过滤

可以通过布尔索引来过滤数据。例如,我们想选择年龄大于 25 岁的人:

# 过滤年龄大于 25 的数据
age_filter = df[df['年龄'] > 25]
print(age_filter)

输出结果为:

   姓名  年龄   城市
1  李四  30   上海
3  赵六  28   深圳

多条件过滤

我们还可以结合多个条件进行过滤。例如,选择年龄大于 25 并且城市是“上海”的人:

# 过滤年龄大于 25 且城市为“上海”的数据
multi_filter = df[(df['年龄'] > 25) & (df['城市'] == '上海')]
print(multi_filter)

输出结果为:

   姓名  年龄   城市
1  李四  30   上海

选择特定行和列

我们也可以在过滤后选择特定的列。以下是一个结合 loc 的例子:

# 过滤后选择特定的列
filtered_result = df.loc[df['年龄'] > 25, ['姓名', '城市']]
print(filtered_result)

输出结果为:

   姓名   城市
1  李四   上海
3  赵六   深圳

结论

在这一节中,我们学习了如何在 Pandas 数据框中选择和过滤数据。掌握这些基本操作之后,在数据分析的过程中你将能更有效地处理和筛选出你感兴趣的信息。这些技能为接下来的数据清洗与处理奠定了坚实的基础。

下一步

在下一篇文章中,我们将继续深入数据处理的另一重要方面:数据清洗与处理,包括处理缺失值、重复数据等问题。保持关注,继续我们的 Pandas 学习之旅!