在数据处理中,分箱、分组是一种常见的技术,用于将连续数据的间隔分组到“箱”或“桶”中。我们将讨论以下两种方法:
-
使用 Pandas 的
between
和loc
方法:-
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 ##########
-
-
使用 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 ##########
-