Qcut Панды, возможно, округляется?

#python #pandas

Вопрос:

Я пытаюсь использовать qcut Панды, чтобы сгруппировать мои значения в ячейки на основе квантилей.

Однако при этом он просто выдает мне целые числа и не соответствует тому, что я ожидаю.

Я ожидаю чего — то следующего-в частности, не целых чисел:

введите описание изображения здесь

Выше было рассчитано с помощью КВАРТИЛИ Excel.EXC (), используя те же самые данные.

Панды, однако, просто отдают мне мусорные баки 1,2,3,4.

введите описание изображения здесь

Есть какие-нибудь идеи? Вот код:

 import pandas as pd
data = {0: 2.75,
 1: 2.875,
 2: 3.5,
 3: 3.875,
 4: 3.125,
 5: 2.25,
 6: 2.125,
 7: 3.375,
 8: 3.75,
 9: 1.875,
 10: 3.125,
 11: 2.625,
 12: 1.25,
 13: 2.625,
 14: 2.25,
 15: 3.125,
 16: 3.375,
 17: 2.25,
 18: 2.25,
 19: 3.125,
 20: 3.375,
 21: 2.5,
 22: 3.375,
 23: 3.5,
 24: 3.125,
 25: 3.0,
 26: 2.125,
 27: 3.125,
 28: 2.375,
 29: 2.375,
 30: 2.75,
 31: 3.0,
 32: 2.625,
 33: 2.0,
 34: 2.75,
 35: 3.25,
 36: 3.0,
 37: 1.5,
 38: 3.5,
 39: 2.375,
 40: 3.375,
 41: 2.625,
 42: 3.0,
 43: 2.5,
 44: 2.625,
 45: 2.875,
 46: 2.25,
 47: 2.5,
 48: 1.125,
 49: 1.625,
 50: 1.375,
 51: 2.125,
 52: 1.625,
 53: 2.125,
 54: 1.0,
 55: 1.5,
 56: 1.25,
 57: 3.125,
 58: 1.125,
 59: 1.75}
df = pd.Series(data).to_frame('values')
n_bins = 4
df['qcutbins'] = pd.qcut(df['values'], q=n_bins, labels=range(1,n_bins 1)).astype('float64')
df.groupby(['qcutbins'])['qcutbins'].describe()[['min','max']].sort_values(by='max').reset_index(drop=True)```
 

Комментарии:

1. ваши целые числа поступают из labels

Ответ №1:

похоже, вместо этого ты хочешь чего-то подобного:

 df = pd.Series(data).to_frame('values')
n_bins = 4
df['qcutbins'] = pd.qcut(df['values'], q=n_bins)
df.groupby("qcutbins").agg([min, max])
               values
                  min    max
qcutbins
(0.999, 2.125]   1.00  2.125
(2.125, 2.625]   2.25  2.625
(2.625, 3.125]   2.75  3.125
(3.125, 3.875]   3.25  3.875