按周和 ID 分组,取平均值,再次按周分组并绘图

Grouping by week and ID, averaging, Grouping by week again and plotting

我有一个名为 "labelled_data" 的熊猫推文数据框,其中包括 'tweep_username'、'tweetcreated_at'(时间)和 'label'

我想按 'tweep_username' 和 'tweetcreated_at'(按周)对它们进行分组,然后取 'labels' 的平均值。然后我想采用这些获得的方法并将它们按 'tweetcreated_at'(按周)分组,然后从中绘制一个连续的频率分布。

意思是我想在第一部分获得的 'labels' 的平均值上有单独的频率分布,每周

我试过这个代码:

labelled_data['tweetcreated_at'] = pd.to_datetime(labelled_data['tweetcreated_at'], errors='coerce')
s=labelled_data.groupby(['tweep_username',pd.Grouper(key='tweetcreated_at', freq='W')])['label'].mean()..set_index('tweetcreated_at').resample('W')

plt.hist(s)
plt.show()

并收到以下错误:

'Series' object has no attribute 'toordinal'

也许你可以试试这个:

labelled_data['tweetcreated_at'] = pd.to_datetime(labelled_data['tweetcreated_at'], 
errors='coerce')
labelled_data = labelled_data.set_index('tweetcreated_at')
s = labelled_data.groupby(['tweep_username','tweetcreated_at']).label.resample('W').mean()

plt.hist(s)
plt.show()

我是这样解决的:

labelled_data.groupby(['tweep_username',pd.Grouper(key='tweetcreated_at', freq='W')])['label'].mean().reset_index().groupby('tweetcreated_at')['label'].plot(kind='density', legend=True)