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