Python数据分析之 Pandas Dataframe条件筛选遍历详情

  • Post category:Python

下面给出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操作。