将数据分组到numpy的类中

时间:2016-09-24 12:28:30

标签: python pandas numpy dataframe

我有一个数据框df,我从中提取了一列mpg

我想根据mpg的值为每一行添加类标签/名称。

我用

完成了
mpg = df.iloc[:,0]

median = np.percentile(mpg, q=50)
upper_quartile = np.percentile(mpg, q=75)
lower_quartile = np.percentile(mpg, q=25)

mpg_class = np.ones((num_observations, 1))

for i, element in enumerate(X):
    mpg = element[0]
    if mpg >= upper_quartile:
        mpg_class[i] = 3
    elif mpg >= median:
        mpg_class[i] = 2
    elif mpg >= lower_quartile:
        mpg_class[i] = 1
    else:
        mpg_class[i] = 0

但我想知道是否可以通过numpy做得更聪明?我想有可能用np.where或类似的东西来做。

1 个答案:

答案 0 :(得分:3)

好像您正在寻找pd.qcut

pd.qcut(df.iloc[:, 0], [0, 0.25, 0.5, 0.75, 1], [0, 1, 2, 3])
Out: 
0      1
1      0
2      1
3      0
4      0
5      0
6      0
...

第一个参数是您要离散的系列。第二个是分位数/百分位数。最后一个是标签(从0到25% - 0,25%到50% - 1等)