下面给出Python数据分析中Pandas dataframe条件筛选和遍历的详细攻略:
1. Pandas DataFrame 条件筛选
在Pandas中,DataFrame对象可以通过 bool 类型的Series对象来进行条件筛选。比如我们有一个简单的 DataFrame:
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
'score': [60, 70, 80, 90, 100],
'gender': ['F', 'M', 'M', 'M', 'F']})
那么,我们可以通过以下方式,对数据进行筛选和过滤:
1.1 筛选出满足某些条件的所有行
使用 df[condition]
,筛选出满足条件的所有行。比如,我们想要筛选出分数大于80的学生:
df[df['score'] > 80]
1.2 筛选某些列满足某些条件的所有行
使用 df.loc[condition, ['col1', 'col2', ...]]
,筛选出满足条件的行的某些列。比如,我们想要筛选出分数大于80的学生的姓名和性别:
df.loc[df['score'] > 80, ['name', 'gender']]
1.3 使用多重条件筛选
使用 df[(condition1) & (condition2)]
,筛选出满足多个条件的所有行。比如,我们想要筛选出分数大于80且为男性的学生:
df[(df['score'] > 80) & (df['gender'] == 'M')]
2. Pandas DataFrame 遍历
在Pandas中,遍历DataFrame是非常常见的操作。以下示例找出指定列中的最小值并输出对应的行。
# 创建示例DataFrame
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
'score': [60, 70, 80, 90, 100],
'gender': ['F', 'M', 'M', 'M', 'F']
})
# 遍历score列,找出最小值对应的行
min_row = None
min_val = None
for index, row in df.iterrows():
if min_val is None or row['score'] < min_val:
min_row = row
min_val = row['score']
# 输出对应的行
print(min_row)
运行结果如下:
name Alice
score 60
gender F
Name: 0, dtype: object
另外一个示例为:找出 “score” 列中所有大于等于90的值,并将其修改为100。
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
'score': [60, 70, 80, 90, 100],
'gender': ['F', 'M', 'M', 'M', 'F']
})
for index, row in df.iterrows():
if row['score'] >= 90:
df.loc[index,'score'] = 100
print(df)
运行结果如下:
name Alice
score 60
gender F
Name: 0, dtype: object
通过以上两个示例,进一步理解了条件筛选和遍历DataFrame操作。