【问题标题】:How to get average number of transactions within groupby groups?如何获得 groupby 组内的平均事务数?
【发布时间】:2021-01-03 05:33:21
【问题描述】:

我有一个包含麦当劳和肯德基销售数据的交易数据框

       month       shop  transaction_value
0    January  McDonalds                  5
1    January        KFC                  1
2    January        KFC                 34
3    January        KFC                 12
4   February  McDonalds                 23
5   February  McDonalds                 45
6   February        KFC                 23
7   February        KFC                 56
8      March  McDonalds                 45
9      March  McDonalds                  3
10     March        KFC                  2
11     March        KFC                  1
12     March        KFC                  1

我想获得每个商店每月的平均交易量count

我已经走到这一步了,按商店和月份分组:

df.groupby([df.shop,df.month])['transaction_value'].count()


shop       month   
KFC        February    2
           January     3
           March       3
McDonalds  February    2
           January     1
           March       2

我需要的是,麦当劳和肯德基每月平均count 的交易量是多少?我可以看上面说麦当劳平均每月有 1.66 笔交易,肯德基每月有 2.66 笔交易。

但是如何在 pandas 中计算这些信息?

我试图得到 groupby 的平均值:

df.groupby([df.shop,df.month])['transaction_value'].count().mean()

但这意味着一切。它返回一个数字。

我正在尝试这样的事情:

shop       average number of transactions per month
KFC        2.66
McDonalds  1.66

添加到 groupby 可能很简单,但我想不通。

我的数据框,所以你可以使用datafarme.from_dict()

{'month': {0: 'January',
  1: 'January',
  2: 'January',
  3: 'January',
  4: 'February',
  5: 'February',
  6: 'February',
  7: 'February',
  8: 'March',
  9: 'March',
  10: 'March',
  11: 'March',
  12: 'March'},
 'shop': {0: 'McDonalds',
  1: 'KFC',
  2: 'KFC',
  3: 'KFC',
  4: 'McDonalds',
  5: 'McDonalds',
  6: 'KFC',
  7: 'KFC',
  8: 'McDonalds',
  9: 'McDonalds',
  10: 'KFC',
  11: 'KFC',
  12: 'KFC'},
 'transaction_value': {0: 5,
  1: 1,
  2: 34,
  3: 12,
  4: 23,
  5: 45,
  6: 23,
  7: 56,
  8: 45,
  9: 3,
  10: 2,
  11: 1,
  12: 1}}

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    你很亲密,需要mean per level=0

    df.groupby([df.shop,df.month])['transaction_value'].count().mean(level=0)
    

    工作原理是一样的:

    df.groupby([df.shop,df.month])['transaction_value'].count().groupby(level=0).mean()
    

    【讨论】:

    • 这行得通。谢谢。需要等待 12 分钟才能标记为答案。
    猜你喜欢
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 2023-02-17
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 2014-05-28
    • 1970-01-01
    相关资源
    最近更新 更多