Groupby для генерации кластеров - PullRequest
0 голосов
/ 02 августа 2020

Я хотел бы знать, как я могу сгруппировать по дате / времени следующий набор данных:

     T                   Text
75  -1 days +20:07:00   orms
34  -1 days +22:07:00   rinanews
23  00:07:00            wrwfs
19  02:07:00            wwf 
28  03:07:00            geological
... ... ...
58  15:07:00            chrew
42  15:07:00            Liverpool 
27  15:07:00            seafood

Приведенный выше список отсортирован только по дате. Я хотел бы сгруппировать эти факторы по дате и построить кластеры, сгенерированные этой группировкой.

Есть какие-нибудь советы о том, как это сделать?

Я пробовал как df2.groupby(['T', 'Text']). но ничего не показывает.

1 Ответ

1 голос
/ 02 августа 2020

Непонятно, что вы пытаетесь сделать, но .groupby() возвращает объект (а не фрейм данных). Этот объект содержит список кортежей, каждый из которых содержит (tuple_of_group_labels, list_of_group_indexes), поэтому с используемой вами строкой первый элемент каждого кортежа сам будет кортежем, содержащим все уникальные комбинации T и Text, а второй элемент будет список, содержащий индексы для строк, которые принадлежат каждой группе.

Например, последний элемент в вашем groupby object будет кортежем, содержащим кортеж и список ((15:07:00, 'seafood'), [27, ])

Куда go отсюда?

Все зависит от того, что вы хотите делать с каждой группой. Возможные варианты:

  • .aggregate(): сумма, среднее, размер / количество, макс., Мин. И многие другие
  • .apply(): более сложные, но вы можете применять виртуально любая функция, которая еще не векторизована и может принимать фрейм данных / серию в качестве входных данных и возвращать либо фрейм данных / серию той же формы, либо агрегированный скаляр
  • .transform(): похож на агрегат, но он будет транслировать возвращаемое значение в той же форме, что и self (например, если у вас есть столбец со значением и вы хотите добавить столбец со средним значением для каждой группы)

Подробнее см. руководство пользователя

Я предполагаю, что вам нужно

Попробуйте

df3 = df2.groupby(['T', 'Text']).size()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...