Python 如何计算分组和聚集数据的平均值?

Python 如何计算分组和聚集数据的平均值?,python,pandas,pandas-groupby,mean,Python,Pandas,Pandas Groupby,Mean,我在列中有数据:用户、操作,我想计算每个用户的平均操作数。 在示例中更容易显示: 我有这样的数据: Action User A User1 B User1 B User1 C User1 C User1 C User1 A User2 B User2 B User2 C User2

我在列中有数据:用户、操作,我想计算每个用户的平均操作数。 在示例中更容易显示:

我有这样的数据:

   Action User 
       A  User1  
       B  User1  
       B  User1  
       C  User1  
       C  User1  
       C  User1  
       A  User2  
       B  User2  
       B  User2  
       C  User2  
       C  User2  
       C  User2  
       A  User3  
       B  User3  
       B  User3  
       C  User3  
       C  User3  
我想得到的结果是:

  Action  Mean usage per user
      A             1.000000
      B             2.000000
      C             2.666667
我不知道如何从df_agg移动到df_result

from pandas import DataFrame

df = DataFrame([
    {"User": "User1", "Action": "A", "id": 1},
    {"User": "User1", "Action": "B", "id": 2},
    {"User": "User1", "Action": "B", "id": 3},
    {"User": "User1", "Action": "C", "id": 4},
    {"User": "User1", "Action": "C", "id": 5},
    {"User": "User1", "Action": "C", "id": 6},
    {"User": "User2", "Action": "A", "id": 7},
    {"User": "User2", "Action": "B", "id": 8},
    {"User": "User2", "Action": "B", "id": 9},
    {"User": "User2", "Action": "C", "id": 10},
    {"User": "User2", "Action": "C", "id": 11},
    {"User": "User2", "Action": "C", "id": 12},
    {"User": "User3", "Action": "A", "id": 13},
    {"User": "User3", "Action": "B", "id": 14},
    {"User": "User3", "Action": "B", "id": 15},
    {"User": "User3", "Action": "C", "id": 16},
    {"User": "User3", "Action": "C", "id": 17},
])
print(df)

df_agg = df.groupby(["Action", "User"]).agg({"id": ["count"]})
print(df_agg)

df_result = DataFrame([
    {"Action": "A", "Mean usage per user": 1},
    {"Action": "B", "Mean usage per user": 2},
    {"Action": "C", "Mean usage per user": 8 / 3},
])
print(df_result)
你可以用它

你可以用它

你可以试试这个

df_final = (df.groupby("Action").User.agg(lambda x: x.size / len(x.unique()))
              .reset_index(name='Mean usage per user'))

Out[14]:
  Action  Mean usage per user
0      A             1.000000
1      B             2.000000
2      C             2.666667
你可以试试这个

df_final = (df.groupby("Action").User.agg(lambda x: x.size / len(x.unique()))
              .reset_index(name='Mean usage per user'))

Out[14]:
  Action  Mean usage per user
0      A             1.000000
1      B             2.000000
2      C             2.666667
平均值
每秒级别一起使用:

df=df.groupby(['User','Action']).size().mean(level=1).reset_index(name='Mean usage per user')
print (df)

      Action  Mean usage per user
0      A             1.000000
1      B             2.000000
2      C             2.666667
平均值
每秒级别一起使用:

df=df.groupby(['User','Action']).size().mean(level=1).reset_index(name='Mean usage per user')
print (df)

      Action  Mean usage per user
0      A             1.000000
1      B             2.000000
2      C             2.666667