【问题标题】:Calculating descriptives on matching groups计算匹配组的描述
【发布时间】:2019-10-06 16:51:41
【问题描述】:

我正在使用具有以下结构的 pandas 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

我想计算上表的一些描述性:

首先,计算具有相同值的不同品牌的组数。这是一个帮助视觉:

如您所见,有 5 个组,每个组中的品牌不同,但匹配相同的值。所以基本上,我想编写一个查询来输出这些组的数量(在本例中为 5 个)。


其次,我想更详细地了解每个组。具体来说,计算:

  • 单条记录的组数:3(最后3条记录)
  • 有 2 条记录的组数:3(红色、绿色和蓝色组)
  • 3 条记录的组数:2(紫色和黑色组)

我试图在我的 with 上提出一个解决方案,但没有成功使用 groupby 语句。任何帮助,将不胜感激。

【问题讨论】:

  • 您只是在寻找df.groupby("value").count()吗?

标签: python pandas dataframe


【解决方案1】:

第一个问题

使用GroupBy.size 并将值与1比较的True结果相加:

(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

【讨论】:

    猜你喜欢
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 2016-03-16
    • 1970-01-01
    相关资源
    最近更新 更多