数据分析Pandas专栏---第九章<Pandas数据筛选和过滤(1)>

时间:2024-03-03 14:57:08

前言:

Pandas数据筛选和过滤在数据分析和处理中起着至关重要的作用。无论是清理数据、提取有效信息,还是进行统计分析,有效地筛选和过滤数据是关键步骤之一。

通过数据筛选,我们可以根据特定条件选择感兴趣的数据子集,并排除不相关或不需要的数据。这使得我们能够更好地理解数据、发现隐藏的模式和趋势。数据筛选还有助于检查和处理空缺值、异常值和错误数据,确保我们所使用的数据准确和可靠。

Pandas提供了丰富的筛选和过滤方法,如布尔索引、位置索引以及条件筛选等。我们可以根据需要*组合这些方法,以便快速、灵活地操作数据。这样,我们能够轻松选择特定列或行,并进行条件查找、比较和逻辑运算。

有效的数据筛选和过滤使得我们能够更精确地分析数据、做出准确的决策,并提高工作效率。无论是探索性数据分析还是建模预测,良好的筛选和过滤技术可以帮助我们发现有价值的信息和见解,支持数据驱动的业务决策和创新。

因此,熟练掌握Pandas数据筛选和过滤是数据分析人员必备的技能之一。它不仅提供了对数据的灵活处理能力,而且能够加速分析流程并提高工作质量。

正文:

基本数据筛选和过滤技术

A. 布尔索引

1. 介绍布尔索引的概念和用法

布尔索引在Pandas中是一种强大的工具,可以帮助我们根据条件快速筛选和过滤数据。简单来说,布尔索引是通过创建一个布尔(True/False)值数组来选择数据的方法

2. 如何使用布尔索引筛选行和列

假设我们有一个包含学生信息的数据集,其中包括姓名、年龄和成绩三列。我们想要找出成绩高于80分的学生的相关信息。首先,我们可以使用比较运算符(如>)来创建一个布尔索引,指示每个学生是否满足条件。

import pandas as pd

# 创建示例数据
data = {'姓名': ['小明', '小红', '小刚', '小华'],
        '年龄': [18, 20, 19, 21],
        '成绩': [75, 92, 85, 78]}

df = pd.DataFrame(data)

# 使用布尔索引筛选行
bool_index = df['成绩'] > 80
filtered_df = df[bool_index]

print(filtered_df)

运行以上代码,我们将得到满足条件的学生数据:

  姓名  年龄  成绩
1  小红  20  92
2  小刚  19  85

除了筛选行,我们还可以使用布尔索引来筛选列。假设我们只关心成绩高于80分的学生姓名和年龄,我们可以使用以下代码:

# 使用布尔索引筛选列
columns = ['姓名', '年龄']
filtered_df = df.loc[bool_index, columns]

print(filtered_df)

运行以上代码,我们将得到以下结果:

  姓名  年龄
1  小红  20
2  小刚  19

通过布尔索引,我们可以根据复杂的条件快速筛选和过滤数据,从而灵活地处理和分析数据。不论是在数据分析、数据清洗或者数据可视化方面,布尔索引都是一项重要的技术工具,能够提升我们的工作效率和准确性。

B. 使用loc和iloc的位置索引

1. 说明loc和iloc的区别和用法

使用lociloc进行位置索引,以选择和筛选行和列。这两个索引器有一些区别,让我们一起来了解一下它们的用法和区别

  1. loc使用标签索引(Label-based indexing)进行选择。它接受标签作为输入,并根据这些标签来选择数据。这意味着我们可以使用行或列的标签来进行选择。
  2. iloc使用整数索引(Integer-based indexing)进行选择。它接受整数作为输入,并根据这些整数来选择数据。这意味着我们可以使用行或列的整数位置来进行选择。
2. 如何使用loc和iloc进行行和列的选择和筛选

假设我们有一个包含学生信息的数据集,包括姓名、年龄和成绩三列。我们要选择索引为1和2的行,并选择姓名和成绩两列。

import pandas as pd

# 创建示例数据
data = {'姓名': ['小明', '小红', '小刚', '小华'],
        '年龄': [18, 20, 19, 21],
        '成绩': [75, 92, 85, 78]}

df = pd.DataFrame(data)

# 使用loc进行选择
loc_selection = df.loc[1:2, ['姓名', '成绩']]
print("使用loc进行选择:")
print(loc_selection)

# 使用iloc进行选择
iloc_selection = df.iloc[1:3, [0, 2]]
print("\n使用iloc进行选择:")
print(iloc_selection)

运行以上代码,我们将得到以下结果:

使用loc进行选择:
  姓名  成绩
1  小红  92
2  小刚  85

使用iloc进行选择:
  姓名  成绩
1  小红  92
2  小刚  85

可以看到,使用lociloc都能达到我们的目标。但需要注意的是,loc是包含结束标签的,而iloc是不包含结束位置的。这是两者之间主要的区别之一。

总而言之,使用lociloc可以方便地根据标签或整数位置选择和筛选行和列。

了解它们之间的区别和使用方法将使我们能够更灵活地处理和操作数据。

无论是基于标签还是基于位置的操作,lociloc都是Pandas提供的强大工具,可以帮助我们轻松处理数据。

条件筛选和过滤

A. 使用比较运算符进行条件筛选

1. 如何使用比较运算符(例如等于、大于、小于等)进行条件筛选

当我们需要根据条件筛选和过滤数据时,比较运算符是非常有用的工具。

我们可以使用比较运算符来执行等于、大于、小于等操作,进而筛选出符合条件的数据。同时,我们也可以使用多个条件结合起来进行更复杂的筛选

2. 多条件筛选的技巧和示例
        1.使用比较运算符进行条件筛选:

假设我们有一个包含学生信息的数据集,其中包括姓名、年龄和成绩三列。我们想筛选年龄大于等于18岁的学生。可以使用大于等于运算符(>=)进行条件筛选。

import pandas as pd

# 创建示例数据
data = {'姓名': ['小明', '小红', '小刚', '小华'],
        '年龄': [18, 20, 19, 21],
        '成绩': [75, 92, 85, 78]}

df = pd.DataFrame(data)

# 使用比较运算符进行条件筛选
filtered_df = df[df['年龄'] >= 18]

print(filtered_df)

运行以上代码,我们将得到年龄大于等于18岁的学生数据:

  姓名  年龄  成绩
0  小明  18  75
1  小红  20  92
2  小刚  19  85
3  小华  21  78
        2.多条件筛选的技巧和示例:

除了基本的比较运算符,我们还可以将多个条件结合起来进行复杂的筛选。

假设我们要筛选成绩在80到90之间且年龄大于等于18岁的学生。我们可以使用逻辑运算符(如AND或OR)将多个条件组合在一起。

# 使用多条件筛选
filtered_df = df[(df['成绩'] >= 80) & (df['成绩'] <= 90) & (df['年龄'] >= 18)]

print(filtered_df)

运行以上代码,我们将得到符合多个条件的学生数据:

  姓名  年龄  成绩
2  小刚  19  85

通过这个示例,我们可以理解如何使用逻辑运算符(如AND、OR)结合多个条件进行筛选。

无论是使用简单的比较运算符还是结合多个条件的复杂筛选,比较运算符都是一种强大而有用的工具,可以让我们灵活地筛选和过滤数据。

B. 使用isin()函数进行多值筛选

1. 介绍isin()函数的使用方法和功能

isin()函数是在Pandas中用于进行多值筛选的一种实用工具。它可以帮助我们筛选出某一列中包含指定值的行。

2. 如何使用isin()进行多个值的筛选
1.使用isin()函数进行多值筛选:

假设我们有一个包含学生信息的数据集,其中包括姓名、年龄和成绩三列。我们想筛选出成绩为75和85的学生。可以使用isin()函数进行多值筛选。

import pandas as pd

# 创建示例数据
data = {'姓名': ['小明', '小红', '小刚', '小华'],
        '年龄': [18, 20, 19, 21],
        '成绩': [75, 92, 85, 78]}

df = pd.DataFrame(data)

# 使用isin()函数进行多值筛选
filtered_df = df[df['成绩'].isin([75, 85])]

print(filtered_df)

运行以上代码,我们将得到成绩为75和85的学生数据:

  姓名  年龄  成绩
0  小明  18  75
2  小刚  19  85

---------------------------------------待续------------------------------------------------