- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个评级数据框,其中包含 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)
我该怎么做?
附言任何关于我如何能做得更好/更快/更短的评论都将不胜感激。
最佳答案
使用groupby
与 size
然后 Series.agg
列表中有 max
和 idxmax
:
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
具有函数列表 idxmax
和 max
用于索引和系列值的最大值:
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/
我试图找出理论上能够相处的尽可能多的 friend 群体,即群体中的每个人都应该至少认识群体中其他人的 50%。 我正在尝试为此提出一种算法,该算法不会花费太长的时间; Facebook 的 API/
我正在开发一个应用程序,用户可以在其中将图片上传到服务器,然后向他们选择的人员发送带有显示这些图片的链接的电子邮件。 我的问题是关于在数据库中组织人员(我正在使用 MySQL)。 我希望每个用户都有这
我有一个评级数据框,其中包含 userId、movieId、rating 行。我想找到评分最高的用户。 这是我写的代码: import pandas as pd ratings = pd.read_c
我有一个脚本,单击时会显示更多信息,再次单击时会隐藏信息。问题是,当单击时,它会显示和隐藏具有相同类名的所有 div 的信息,而不仅仅是被单击的 div。我环顾四周,我认为我需要在其中的某处添加“th
我是一名优秀的程序员,十分优秀!