Pandas DataFrame的迭代方法

Pandas DataFrame的迭代方法

参考:iterate through pandas dataframe

在数据分析和数据科学领域,PandasPython 最受欢迎的库之一。Pandas 提供了 DataFrame 对象,这是一个强大的二维数据结构,类似于 Excel 表格。DataFrame 不仅可以存储数据,还可以进行复杂的数据操作。在处理数据时,经常需要遍历 DataFrame 中的数据,以执行各种操作,如数据清洗、转换等。本文将详细介绍如何在 Pandas 中迭代 DataFrame,并提供多个示例代码,帮助读者更好地理解和应用。

1. 使用 iterrows() 迭代 DataFrame

iterrows() 是 Pandas 中用于迭代 DataFrame 行的一个方法。它返回每行的索引及一个包含行数据的序列。这种方法比较直观,适用于不修改原始数据的场景。

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Website': ['pandasdataframe.com', 'example.com', 'test.com']}
df = pd.DataFrame(data)

for index, row in df.iterrows():
    print(f"Index: {index}, Name: {row['Name']}, Website: {row['Website']}")

Output:

Pandas DataFrame的迭代方法

2. 使用 itertuples() 迭代 DataFrame

itertuples() 是另一种迭代 DataFrame 的方法。它返回命名元组,通常比 iterrows() 快,因为它不将行转换为 Series。

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Website': ['pandasdataframe.com', 'example.com', 'test.com']}
df = pd.DataFrame(data)

for row in df.itertuples():
    print(f"Index: {row.Index}, Name: {row.Name}, Website: {row.Website}")

Output:

Pandas DataFrame的迭代方法

3. 使用 apply() 函数

apply() 函数可以沿指定轴应用一个函数,常用于对 DataFrame 中的数据进行复杂处理。它不是传统意义上的迭代,但可以实现类似的效果。

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Website': ['pandasdataframe.com', 'example.com', 'test.com']}
df = pd.DataFrame(data)

def process(row):
    return f"{row['Name']} works at {row['Website']}"

df['Description'] = df.apply(process, axis=1)
print(df)

Output:

Pandas DataFrame的迭代方法

4. 直接迭代列

有时候我们只需要迭代 DataFrame 的列。直接使用 DataFrame 对象就可以迭代其列。

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Website': ['pandasdataframe.com', 'example.com', 'test.com']}
df = pd.DataFrame(data)

for column in df:
    print(f"Column: {column}")
    print(df[column])

Output:

Pandas DataFrame的迭代方法

5. 使用 iteritems() 迭代列和值

iteritems() 用于迭代 DataFrame 的列和该列的值。它返回列名和列值的序列。

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Website': ['pandasdataframe.com', 'example.com', 'test.com']}
df = pd.DataFrame(data)

for label, content in df.iteritems():
    print(f"Label: {label}")
    print(content)

6. 使用 groupby() 后迭代

groupby() 方法常用于对数据进行分组,然后可以迭代每个分组进行更详细的分析。

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Department': ['HR', 'HR', 'IT'], 'Website': ['pandasdataframe.com', 'example.com', 'test.com']}
df = pd.DataFrame(data)

for name, group in df.groupby('Department'):
    print(f"Department: {name}")
    print(group)

Output:

Pandas DataFrame的迭代方法

7. 使用 expanding()rolling() 迭代

这两个方法用于生成扩展和滚动的窗口对象,可以对数据进行窗口统计分析。

import pandas as pd

data = {'Value': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)

# Expanding window
for index, window in df['Value'].expanding(min_periods=1):
    print(f"Index: {index}, Sum: {window.sum()}")

# Rolling window
for index, window in df['Value'].rolling(window=3):
    print(f"Index: {index}, Average: {window.mean()}")

8. 使用 pivot_table() 后迭代

pivot_table() 用于创建透视表,之后可以迭代透视表中的数据。

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Department': ['HR', 'HR', 'IT'], 'Salary': [50000, 60000, 70000]}
df = pd.DataFrame(data)

pivot = df.pivot_table(values='Salary', index='Department', aggfunc='mean')

for index, value in pivot.iterrows():
    print(f"Department: {index}, Average Salary: {value['Salary']}")

Output:

Pandas DataFrame的迭代方法

9. 使用 merge() 后迭代

合并两个 DataFrame 后,可以迭代合并结果进行进一步分析。

import pandas as pd

data1 = {'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie']}
data2 = {'ID': [1, 2, 3], 'Salary': [50000, 60000, 70000]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

merged_df = pd.merge(df1, df2, on='ID')

for index, row in merged_df.iterrows():
    print(f"ID: {row['ID']}, Name: {row['Name']}, Salary: {row['Salary']}")

Output:

Pandas DataFrame的迭代方法

10. 使用 concat() 后迭代

连接两个或多个 DataFrame 后,可以迭代连接结果进行进一步的处理。

import pandas as pd

data1 = {'Name': ['Alice', 'Bob'], 'Website': ['pandasdataframe.com', 'example.com']}
data2 = {'Name': ['Charlie'], 'Website': ['test.com']}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

concatenated_df = pd.concat([df1, df2])

for index, row in concatenated_df.iterrows():
    print(f"Name: {row['Name']}, Website: {row['Website']}")

Output:

Pandas DataFrame的迭代方法

以上是在 Pandas 中迭代 DataFrame 的一些常见方法及示例。通过这些方法,可以有效地处理和分析数据。在实际应用中,选择合适的迭代方法可以大大提高代码的效率和可读性。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程