python数据分析 pandas遍历循环方法总结
遍历是众多编程语言中必备的一种操作,比如 Python 语言通过 for 循环来遍历列表结构。而在 Pandas 中同样也是使用 for 循环进行遍历,通过for遍历后,Series 可直接获取相应的 value,而 DataFrame 则会获取列标签。
以下是最常用的几种遍历方法:
for 循环遍历每一行/列
使用 for 循环可以遍历 DataFrame 中的每一行或每一列。需要使用 iterrows() 方法遍历每一行,或者使用 iteritems() 方法遍历每一列。
代码如下:
import pandas as pd
# 创建 DataFrame
data = {
'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'gender': ['F', 'M', 'M']
}
df = pd.DataFrame(data)
# 遍历每一行
for index, row in df.iterrows():
print(f"Index: {index}, Row: {row['name']}, {row['age']}, {row['gender']}")
# 遍历每一列
for column, value in df.iteritems():
print(f"Column: {column}")
print(value)
apply() 方法
apply() 方法可以应用一个函数到 DataFrame 中的每一个元素,返回一个新的 DataFrame。
例如:
import pandas as pd
# 创建 DataFrame
data = {
'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'gender': ['F', 'M', 'M']
}
df = pd.DataFrame(data)
# 定义一个函数,对每一个元素加 1
def add_one(x):
return x + 1
# 应用函数到 DataFrame
df_new = df.apply(add_one)
print(df_new)
applymap() 方法
applymap() 方法可以应用一个函数到 DataFrame 中的每一个元素,返回一个新的 DataFrame。
import pandas as pd
# 创建 DataFrame
data = {
'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'gender': ['F', 'M', 'M']
}
df = pd.DataFrame(data)
# 定义一个函数,对每一个元素加 1
def add_one(x):
return x + 1
# 应用函数到 DataFrame
df_new = df.applymap(add_one)
print(df_new)
map() 方法
map() 方法可以应用一个函数到 Series 中的每一个元素,返回一个新的 Series。
import pandas as pd
# 创建 Series
s = pd.Series([1, 2, 3])
# 定义一个函数,对每一个元素加 1
def add_one(x):
return x + 1
# 应用函数到 Series
s_new = s.map(add_one)
print(s_new)
iteritems()方法
iteritems()方法以 (列标签,列) 的形式遍历 DataFrame 的列。它返回一个迭代器,其中每个元素都是一个元组,元组中包含列标签和对应列的 Pandas Series。
例如:
for col_label, column in df.iteritems():
print(col_label)
print(column)
itertuples()方法
itertuples()方法以命名元组的形式遍历 DataFrame 的行。返回的每个命名元组都代表 DataFrame 中的一行。这种方法比 iterrows() 更快。
示例如下:
for row in df.itertuples(index=False):
print(row)
总的来说,对于大型的 Pandas DataFrame,应该尽量避免使用循环遍历,而是使用 Pandas 内置的方法,如 apply() 和 applymap() 等。这些方法能够更快速、高效地操作 DataFrame。