返回

数据选取与处理:从基础到高级技巧

开发工具

当我们处理数据时,经常需要根据某些条件来选取或处理特定部分的数据。Pandas 提供了多种灵活且强大的方法来实现这些操作。

基本选取

最基本的数据选取方法是使用布尔索引。布尔索引根据给定的条件返回 True 或 False,然后根据这些值选取相应的数据。例如,以下代码使用布尔索引选取所有年龄大于 21 的行:

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({
    "姓名": ["张三", "李四", "王五"],
    "年龄": [18, 22, 25]
})

# 使用布尔索引选取数据
df_filtered = df[df["年龄"] > 21]

# 打印选取后的数据
print(df_filtered)

输出结果:

   姓名  年龄
1  李四   22
2  王五   25

切片

切片是一种从 DataFrame 中选取连续块数据的常用方法。切片可以使用 lociloc 方法来实现。loc 方法使用标签来索引数据,而 iloc 方法使用整数索引来索引数据。

例如,以下代码使用 loc 方法选取第一行到第二行的数据:

df_sliced = df.loc[0:1]

# 打印选取后的数据
print(df_sliced)

输出结果:

   姓名  年龄
0  张三   18
1  李四   22

以下代码使用 iloc 方法选取第一行到第二行的数据:

df_sliced = df.iloc[0:2]

# 打印选取后的数据
print(df_sliced)

输出结果:

   姓名  年龄
0  张三   18
1  李四   22

排序

排序是另一种常见的数据处理操作。Pandas 提供了多种排序方法,包括使用 sort_values() 方法根据列值排序,以及使用 sort_index() 方法根据索引排序。

例如,以下代码使用 sort_values() 方法根据 "年龄" 列的值对数据进行升序排序:

df_sorted = df.sort_values("年龄")

# 打印排序后的数据
print(df_sorted)

输出结果:

   姓名  年龄
0  张三   18
1  李四   22
2  王五   25

以下代码使用 sort_index() 方法根据索引对数据进行升序排序:

df_sorted = df.sort_index()

# 打印排序后的数据
print(df_sorted)

输出结果:

   姓名  年龄
0  张三   18
1  李四   22
2  王五   25

算术运算

Pandas 支持对 DataFrame 中的数据进行算术运算,包括加、减、乘、除等操作。这些运算可以逐个元素进行,也可以对整个列或行进行。

例如,以下代码对 "年龄" 列中的值加上 1:

df["年龄"] = df["年龄"] + 1

# 打印运算后的数据
print(df)

输出结果:

   姓名  年龄
0  张三   19
1  李四   23
2  王五   26

以下代码对 "年龄" 列中的值乘以 2:

df["年龄"] = df["年龄"] * 2

# 打印运算后的数据
print(df)

输出结果:

   姓名  年龄
0  张三   38
1  李四   46
2  王五   52

数据类型转换

有时,我们需要将 DataFrame 中的数据类型从一种类型转换为另一种类型。Pandas 提供了多种数据类型转换方法,包括使用 astype() 方法将数据类型转换为指定的类型,以及使用 to_numeric() 方法将数据类型转换为数值类型。

例如,以下代码将 "年龄" 列中的数据类型从整数转换为浮点数:

df["年龄"] = df["年龄"].astype(float)

# 打印转换后的数据
print(df)

输出结果:

   姓名   年龄
0  张三   19.0
1  李四   23.0
2  王五   26.0

以下代码将 "年龄" 列中的数据类型从浮点数转换为整数:

df["年龄"] = df["年龄"].astype(int)

# 打印转换后的数据
print(df)

输出结果:

   姓名  年龄
0  张三   19
1  李四   23
2  王五   26

结语

在本文中,我们介绍了在 Pandas DataFrame 中选取和处理数据的基础知识和高级技巧。通过使用布尔索引、切片、排序、算术运算和数据类型转换,我们可以轻松地从 DataFrame 中选取所需的数据并对其进行处理。这些技巧对于数据分析和数据处理任务非常有用。