📜  pandas 循环遍历大块行 - Python (1)

📅  最后修改于: 2023-12-03 15:18:14.886000             🧑  作者: Mango

Pandas 循环遍历大块行 - Python

在处理大型数据集时,经常需要使用循环遍历数据的行。Pandas 是一个强大的数据分析库,提供了多种遍历数据行的方法。

本文将介绍几种在 Pandas 中循环遍历大块行的方法,并提供相应的代码示例。

1. 使用 iterrows() 方法

iterrows() 方法返回一个迭代器,可以遍历每一行的索引和数据。

import pandas as pd

# 创建示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35]}
df = pd.DataFrame(data)

# 使用 iterrows() 方法遍历行
for index, row in df.iterrows():
    name = row['Name']
    age = row['Age']
    print(f"Name: {name}, Age: {age}")

输出结果:

Name: Alice, Age: 25
Name: Bob, Age: 30
Name: Charlie, Age: 35

使用 iterrows() 方法需要注意的是,它将 Pandas DataFrame 中的每一行转换为 Series 对象,这可能会影响性能。如果遍历大量数据,可以考虑其他更高效的方法。

2. 使用 itertuples() 方法

itertuples() 方法返回一个迭代器,可以遍历每一行的索引和数据作为具名元组。

import pandas as pd

# 创建示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35]}
df = pd.DataFrame(data)

# 使用 itertuples() 方法遍历行
for row in df.itertuples():
    name = row.Name
    age = row.Age
    print(f"Name: {name}, Age: {age}")

输出结果与前面的示例相同。

itertuples() 方法比 iterrows() 方法更高效,因为它返回一个具名元组,而不是 Series 对象。

3. 使用 chunksize 分块读取

如果 DataFrame 的大小超出了内存限制,可以考虑使用 chunksize 参数将数据分块读取,然后遍历每个块的行。

import pandas as pd

# 创建示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
        'Age': [25, 30, 35, 40, 45]}
df = pd.DataFrame(data)

chunk_size = 2
for chunk in pd.read_csv('data.csv', chunksize=chunk_size):
    for index, row in chunk.iterrows():
        name = row['Name']
        age = row['Age']
        print(f"Name: {name}, Age: {age}")

上述代码将数据集 data.csv 分为大小为 2 的块,然后遍历每个块的行。

4. 使用并行操作

对于需要在大量数据上执行计算密集型操作的情况,可以考虑使用并行操作以提高性能。Pandas 提供了 swifter 这样的扩展库,可以在 Pandas DataFrame 上使用并行计算。

import pandas as pd
import swifter

# 创建示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35]}
df = pd.DataFrame(data)

df['Age_squared'] = df['Age'].swifter.apply(lambda x: x ** 2)

使用 swifter 库中的 apply() 方法,可以在 Pandas DataFrame 上使用并行计算。

以上就是在 Pandas 中循环遍历大块行的几种常用方法。根据数据大小和计算需求,选择合适的方法可以提高代码的性能和效率。

希望本文能帮助你更好地使用 Pandas 进行大型数据集的处理。