Как объединить данные в зависимости от частоты - PullRequest
0 голосов
/ 21 мая 2018

Вот что мои данные

id   data
1      89
2      54
3      45
4      67
5      78
6      80

Вот тип вывода, который я хочу

Interval    Count
45 - 54         2
67 - 78         2
80 - 89         2

Я хочу, чтобы данные распределялись более равномерно

1 Ответ

0 голосов
/ 21 мая 2018

pandas имеет функцию с именем qcut(), которая будет делать то, что вы хотите.Просто укажите в столбце data:

In []:
qc = pd.qcut(df['data'], q=3, precision=0)
qc

Out[]:
0    (79.0, 89.0]
1    (44.0, 63.0]
2    (44.0, 63.0]
3    (63.0, 79.0]
4    (63.0, 79.0]
5    (79.0, 89.0]
Name: data, dtype: category
Categories (3, interval[float64]): [(44.0, 63.0] < (63.0, 79.0] < (79.0, 89.0]]

. Вы можете использовать qc.value_counts(), чтобы получить значения:

In []:
qc.value_counts().sort_index()

Out[]:
(44.0, 63.0]    2
(63.0, 79.0]    2
(79.0, 89.0]    2
Name: data, dtype: int64
...