Python 如何计算每周使用pandas登录用户的平均操作次数以及操作的时间和日期?
我有一个数据集,上面有登录名以及用户帖子的日期和时间Python 如何计算每周使用pandas登录用户的平均操作次数以及操作的时间和日期?,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有一个数据集,上面有登录名以及用户帖子的日期和时间 posts = {'Login':['User1', 'User2', 'User2', 'User1', 'User2', 'User1', 'User2', 'User2'], 'Posted':['17.02.2020 12:32', '19.02.2020 10:11', '21.02.2020 07:08', '22.02.2020 14:00', '23.02.2020 11:02', '25.02.2020 18:19', '2
posts = {'Login':['User1', 'User2', 'User2', 'User1', 'User2', 'User1', 'User2', 'User2'], 'Posted':['17.02.2020 12:32', '19.02.2020 10:11', '21.02.2020 07:08', '22.02.2020 14:00', '23.02.2020 11:02', '25.02.2020 18:19', '27.02.2020 00:03', '29.02.2020 15:56']}
df_posts = pd.DataFrame(posts)
Login Posted
0 User1 17.02.2020 12:32
1 User2 19.02.2020 10:11
2 User2 21.02.2020 07:08
3 User1 22.02.2020 14:00
4 User2 23.02.2020 11:02
5 User1 25.02.2020 18:19
6 User2 27.02.2020 00:03
7 User2 29.02.2020 15:56
我需要计算每个用户的平均帖子数量。例如,对于这个数据集,User1在2月17日至2月23日的一周内发表了2篇文章,在下一周(2月24日至3月1日)发表了1篇文章。因此,User1平均每周发布1.5篇文章
我需要得到以下结果:
Login Average number of posts per week
0 User1 1.5
1 User2 2.5
我尝试编写以下代码:
# Assigning a week column to each post
posts['Week'] = posts['Posted'].dt.strftime('%U')
# Calculating total number of posts per week for each user
total_posts = posts.groupby(['Login', 'Week']).size().reset_index(name ='Total_posts')
# Estimating average frequency of making posts for each user
freq_posts_per_week = total_posts.groupby('Login')['Total_posts'].mean().reset_index(name ='Avg_posts_per_week')
但我得到了以下错误:
/Users/username/opt/anaconda3/lib/python3.7/site packages/ipykernel_launcher.py:2:
使用CopyWarning设置:
试图在数据帧切片的副本上设置值。
尝试改用.loc[row\u indexer,col\u indexer]=value
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
而且,我的结果对我来说是错误的
有人能帮我解决这个问题吗?试试:
df_posts.Posted = pd.to_datetime(df_posts.Posted)
(df_posts.groupby(['Login', pd.Grouper(key='Posted',freq='W')]).size()
.groupby('Login').mean()
.reset_index(name ='Avg_posts_per_week'))
Login Avg_posts_per_week
0 User1 1.5
1 User2 2.5
这是一个警告,不是一个错误-这意味着您的代码已执行,但可能会出现意外结果。我遇到以下错误:TypeError:仅对DatetimeIndex、TimedeltaIndex或PeriodIndex有效,但得到了“Index”的实例,然后您必须首先使用:
df_posts.poster=pd.to_datetime将post
转换为datetime(df_posts.Posted)
。我把它添加到了答案中