Python Pandas 数据分组

在数据处理中,分箱、分组是一种常见的技术,用于将连续数据的间隔分组到“箱”或“桶”中。我们将讨论以下两种方法:

  1. 使用 Pandas 的 betweenloc 方法:

    • between 方法返回一个布尔向量,指示 Series 元素是否位于给定的边界值之间。

    • loc 方法用于根据条件选择数据。

    • 示例:将学生的分数分为等级 A、B 和 C。

    • 代码示例:

      import pandas as pd
      import numpy as np
      
      # 创建随机成绩score数据
      df = pd.DataFrame({'score': np.random.randint(0, 101, 1000)})
      
      
      print(df)
      ##########
         score
      0     56
      1     94
      2     89
      3     58
      4     29
      5     37
      6     63
      7     64
      8     82
      9     76
      ##########
      
      
      # 0~50分 成绩等级grade为C
      df.loc[df['score'].between(0, 50, inclusive='both'), 'grade'] = 'C'
      # 50~80分 成绩等级grade为B
      df.loc[df['score'].between(50, 80, inclusive='right'), 'grade'] = 'B'
      # 80~100分 成绩等级grade为A
      df.loc[df['score'].between(80, 100, inclusive='right'), 'grade'] = 'A'
      
      
      print(df)
      ##########
         score grade
      0     56     B
      1     94     A
      2     89     A
      3     58     B
      4     29     C
      5     37     C
      6     63     B
      7     64     B
      8     82     A
      9     76     B
      ##########
      
      
    • 查看每个等级的人数:df['grade'].value_counts()

      print(df['grade'].value_counts())
      ##########
      grade
      B    5
      A    3
      C    2
      ##########
      
  2. 使用 Pandas 的 cut 方法:

    • cut 方法将值分类为离散的间隔。

    • 示例:将分数分为等级 C、B 和 A。

    • 代码示例:

      bins = [0, 50, 80, 100]
      labels = ['C', 'B', 'A']
      # 分仓
      df['grade'] = pd.cut(x=df['score'], bins=bins, labels=labels, include_lowest=True)
      
      
      print(df)
      ##########
         score grade
      0     56     B
      1     94     A
      2     89     A
      3     58     B
      4     29     C
      5     37     C
      6     63     B
      7     64     B
      8     82     A
      9     76     B
      ##########
      
    • 查看每个等级的人数:df['grade'].value_counts()

      print(df['grade'].value_counts())
      ##########
      grade
      B    5
      A    3
      C    2
      ##########
      
posted @ 2024-05-18 23:33  TY520  阅读(20)  评论(0编辑  收藏  举报