Вычисление дескриптивных групп по сопоставимым группам - PullRequest
0 голосов
/ 06 октября 2019

Я работаю с пандой DataFrame, имеющей следующую структуру:

import pandas as pd
import numpy as np

df = pd.DataFrame({'brand' : ['A', 'B', 'A', 'B', 'A', 'B', 'A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C'], 
                   'value' : [111, 111, 222, 222, 333, 333, 444, 444, 444, 555, 555, 555, 666, 777, 888]})

print(df)

   brand  value
0      A    111
1      B    111
2      A    222
3      B    222
4      A    333
5      B    333
6      A    444
7      B    444
8      C    444
9      A    555
10     B    555
11     C    555
12     A    666
13     B    777
14     C    888

Я хотел бы рассчитать некоторые описательные значения в приведенной выше таблице:

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

enter image description here

Как вы можете видеть, есть 5 групп, в которых бренды внутри каждой группы различны и соответствуют одному и тому же значению. В общем, я хочу написать запрос, который бы выводил количество этих групп (5 в данном случае).


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

  • Количество групп с одной записью: 3 (последние 3 записи)
  • Количество групп с 2 записями: 3 (группы красные, зеленые и синие)
  • Количество групп с 3 записями: 2 (группы фиолетового и черного цвета)

Я пытался найти решение на моем без какого-либо успеха с помощью операторов groupby. Любая помощь будет оценена.

1 Ответ

2 голосов
/ 06 октября 2019

первая проблема

Используйте GroupBy.size и добавьте значения Истинный результат сравнения с 1:

(df.groupby('value').size()>1).sum()

Вывод:

5

вторая проблема

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

df_count=df.groupby('value').size().value_counts().reset_index(name='Nº Groups').rename(columns={'index':'Nº Records/Group'})
print(df_count)

   Nº Records/Group   Nº Groups
0                 2           3
1                 1           3
2                 3           2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...