Группировка по номеру, группы разных размеровPython

Программы на Python
Anonymous
Группировка по номеру, группы разных размеров

Сообщение Anonymous »

У меня есть набор данных, в котором я показываю покупки билетов по количеству дней до мероприятия (NDO).



НДО
Покупка
Страна< /th>




0
< td>3
Великобритания


1
3
Великобритания


1
3
Великобритания


1
3
США


23
США



Я хочу разделить данные на группы по NDO, например 0 дней, 1–5 дней, 5–10 дней, 50–100 дней, и добавить дополнительный столбец «NDOGroup», чтобы я мог затем создайте сводную таблицу с помощью NDOGroup и, в конечном итоге, тепловую карту.
Для этого я использовал следующий код:

Код: Выделить всё

bins = [-1,5,10,16,21,26,31,36,41,46,51,56,61,66,71,76,81,86,91,96,101]
labels = [f'{a0}-{a1 - 1}' for a0, a1 in zip(bins[:-2], bins[1:-1])] + [f'≥{bins[-2]}']
df['NDOGroup'] = pd.cut(df['NDO'], bins=bins, labels=labels, right=True)

countrypt = df.pivot_table(index = 'NDOGroup',columns = 'Country', values ='Purch', aggfunc='sum', observed=False)

plt.figure(figsize = (15,9))
sns.heatmap(countrypt, cmap = 'viridis', vmin=0, linewidths=0.5, linecolor='black')
но созданная тепловая карта выглядит так:
Изображение

и когда я проверяю данные, я вижу, что для NDO=0 NDOGroup = NaN



NDO
Покупка< /th>
Страна
NDOGroup




0
3
Великобритания
Нан


1
3
Великобритания
0–4


1
3
Великобритания
0-4


1
3
США
0-4


2
3
США
0–4



Я пробовал разные индексации в корзинах, например. [-1,0,5], [-1,4,5], но не удается отобразить правильные группы.
Это проблема с индексацией? Или есть более чистый способ исправить это, чтобы я получил таблицу, как показано ниже:


NDO
Купить
СтранаNDOGroup




0< /td>
3
Великобритания
0


1
3
Великобритания
1–5


3
3
Великобритания
1–5


4
3
США
1–5

5
3
США
1-5

6
3
США
6–10


12
3< /td>
США
11–15


< /таблица>

Подробнее здесь: https://stackoverflow.com/questions/790 ... ize-groups

Вернуться в «Python»