gpt4 book ai didi

python - 如何找到最大的 Pandas 群体

转载 作者:行者123 更新时间:2023-11-28 20:57:01 26 4
gpt4 key购买 nike

我有一个评级数据框,其中包含 userId、movieId、rating 行。我想找到评分最高的用户。

这是我写的代码:

import pandas as pd
ratings = pd.read_csv('ratings.csv') # userId,movieId,rating
user_rating_counts = ratings[['userId','movieId']].groupby('userId')['movieId'].agg(['count'])
top_rator = user_rating_counts[user_rating_counts['count']==user_rating_counts['count'].max()]

文件如下所示:

userId,movieId,rating
1,1,4.0
1,3,4.0
1,6,4.0
1,47,5.0
1,50,5.0
1,70,3.0
1,101,5.0
1,110,4.0

当我在 jupyter notebook 中查看 top_rator 时,它看起来像这样:

       count
userId
414 2698

我想从中得到的是一个像这样的元组:

(414, 2698)

我该怎么做?

附言任何关于我如何能做得更好/更快/更短的评论都将不胜感激。

最佳答案

使用groupbysize然后 Series.agg列表中有 maxidxmax:

tup = tuple(ratings.groupby('userId').size().agg(['idxmax','max']))
print (tup)
(1, 8)

解释:

第一聚合size每组:

#changed data - multiple groups
print (df)
userId movieId rating
0 1 1 4.0
1 1 3 4.0
2 1 6 4.0
3 2 47 5.0
4 2 50 5.0
5 2 70 3.0
6 2 101 5.0
7 3 110 4.0

print (df.groupby('userId').size())
userId
1 3
2 4
3 1
dtype: int64

输出是Series,所以加了Series.agg具有函数列表 idxmaxmax 用于索引和系列值的最大值:

print (df.groupby('userId').size().agg(['idxmax','max']))
idxmax 2
max 4
dtype: int64

最后转换为元组:

print (tuple(df.groupby('userId').size().agg(['idxmax','max'])))
(2, 4)

如果多个组具有相同的最大大小的解决方案:

print (ratings)   
userId movieId rating
0 1 1 4.0
1 1 3 4.0
2 1 6 4.0
3 2 47 5.0
4 2 50 5.0
5 2 70 3.0
6 3 101 5.0
7 3 110 4.0

第一聚合size每组,但有 2 个组的最大 3 值:

user_rating_counts = ratings.groupby('userId')['movieId'].size()
print (user_rating_counts)
userId
1 3
2 3
3 2
Name: movieId, dtype: int64

所以使用boolean indexing第一:

top_rator = (user_rating_counts[user_rating_counts == user_rating_counts.max()])
print (top_rator)
userId
1 3
2 3
Name: movieId, dtype: int64

创建 DataFrame 并转换为元组列表:

tup = list(map(tuple, top_rator.reset_index().values.tolist()))
print (tup)
[(1, 3), (2, 3)]

关于python - 如何找到最大的 Pandas 群体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53883296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com