【基础】Pandas数据选择与过滤
发布时间: 2024-06-26 16:32:52 阅读量: 67 订阅数: 104
![【基础】Pandas数据选择与过滤](https://img-blog.csdnimg.cn/direct/00265161381a48acb234c0446f42f049.png)
# 2.1 布尔索引和掩码
布尔索引和掩码是基于布尔值(True/False)进行数据选择的强大工具。
### 2.1.1 使用比较运算符创建掩码
比较运算符(如 `==`、`!=`、`<`、`>`)可以创建布尔掩码,其中 True 表示满足条件的行,而 False 表示不满足条件的行。例如:
```python
import pandas as pd
df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie', 'Dave'],
'Age': [20, 25, 30, 35]})
# 创建一个掩码,选择年龄大于 25 的行
mask = df['Age'] > 25
# 使用掩码选择数据
df_filtered = df[mask]
```
# 2. 基于条件选择数据
在数据分析中,经常需要根据特定条件从数据集中选择特定行或列。Pandas提供了多种基于条件选择数据的机制,包括布尔索引、掩码、查询表达式等。
### 2.1 布尔索引和掩码
布尔索引是一种使用布尔值(True或False)来选择数据的机制。布尔值可以根据比较运算符或逻辑运算符创建。
#### 2.1.1 使用比较运算符创建掩码
比较运算符(如 ==、!=、>、<、>=、<=)可以用于创建布尔掩码,其中 True 表示满足条件的行,False 表示不满足条件的行。例如:
```python
import pandas as pd
df = pd.DataFrame({'Name': ['John', 'Mary', 'Bob', 'Alice'],
'Age': [25, 30, 22, 28]})
# 创建一个掩码,选择年龄大于 25 的行
mask = df['Age'] > 25
# 使用掩码选择数据
df_filtered = df[mask]
print(df_filtered)
```
输出:
```
Name Age
1 Mary 30
3 Alice 28
```
#### 2.1.2 使用逻辑运算符组合掩码
逻辑运算符(如 and、or、not)可以用于组合布尔掩码,创建更复杂的条件。例如:
```python
# 创建一个掩码,选择年龄大于 25 且姓名以 "M" 开头的行
mask = (df['Age'] > 25) & (df['Name'].str.startswith('M'))
# 使用掩码选择数据
df_filtered = df[mask]
print(df_filtered)
```
输出:
```
Name Age
1 Mary 30
```
### 2.2 查询表达式
查询表达式是一种使用字符串表达式来选择数据的机制。查询表达式可以包含比较运算符、逻辑运算符以及其他函数。
#### 2.2.1 使用query()函数进行查询
query()函数可以用于执行查询表达式。查询表达式必须使用 Pandas 数据框的列名和比较运算符。例如:
```python
# 使用query()函数选择年龄大于 25 的行
df_filtered = df.query('Age > 25')
print(df_filtered)
```
输出:
```
Name Age
1 Mary 30
3 Alice 28
```
#### 2.2.2 使用eval()函数进行高级查询
eval()函数可以用于执行更高级的查询表达式。eval()函数允许使用 Python 表达式,包括函数、变量和运算符。例如:
```python
# 使用eval()函数选择年龄大于 25 且姓名以 "M" 开头的行
df_filtered = df.eval('Age > 25 and Name.str.startswith("M")')
print(df_filtered)
```
输出:
```
Name Age
1 Mary 30
```
# 3.1 行索引
#### 3.1.1 使用loc[]索引行
**语法:**
```python
df.loc[row_labels, column_labels]
```
**参数:**
- `row_labels`:行索引标签或列表
- `column_labels`:列索引标签或列表
**说明:**
`loc[]`索引器使用行和列标签来选择数据。它对于基于标签选择特定行或行组非常有用。
**示例:**
``
0
0