按周和ID分组,平均,再次按周分组并绘制

时间:2019-08-11 15:25:02

标签: python pandas matplotlib pandas-groupby frequency-distribution

我有一条称为“ labelled_data”的tweet熊猫数据帧,其中包括“ tweep_username”,“ tweetcreated_at”(时间)和“ label”

我想按“ tweep_username”和“ tweetcreated_at”(按星期)将它们分组,然后取“ labels”的平均值。然后,我想采用这些获得的平均值,然后按“ tweetcreated_at”(按周)将它们分组,然后从中绘制出连续的频率分布。

这意味着我希望每周在第一部分中获得的“标签”均具有独立的频率分布

我尝试了以下代码:

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()

并收到以下错误:

  

“系列”对象没有属性“ toordinal”

this photo shows the data

2 个答案:

答案 0 :(得分:1)

也许您可以尝试以下方法:

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()

答案 1 :(得分:0)

我这样解决了:

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)