我正在处理一个聊天日志,我的数据由时间戳、用户名和消息组成。我的目标是绘制多个用户每月的消息数量,以便我可以比较用户何时活跃。
问题是x 轴。在那里,我想根据频率(在这种情况下是几个月)来确定日期。相反,似乎在那里输出了分组数据的 Multiindex。此外,数据似乎被正确分组,但图中每个月都有三个数据点。
我包含了一些代码来生成随机数据。(我正在使用 Python 3.2)
这是当前的输出:
import numpy as np
import time
import datetime
import pandas as pd
import matplotlib.pyplot as plt
from pandas.util.testing import rands
a=datetime.datetime(2012,12,3)
b=datetime.datetime(2013,12,3)
a_tstamp=time.mktime(a.timetuple())
b_tstamp=time.mktime(b.timetuple())
message_number=400
tstamps=np.random.random_integers(a_tstamp,b_tstamp,message_number)
tstamps.sort()
dates=[datetime.datetime.fromtimestamp(x) for x in tstamps]
usernames=[rands(4) for x in range(10)]
usernames=usernames*40
values=np.random.random_integers(0,45,message_number)
df=pd.DataFrame({'tstamps':dates,'usernames':usernames,'messages':[rands(5) for x in range(message_number)]})
df=df.set_index(df.tstamps)
grouped=df.groupby(df.usernames)
# trying to plot a trend to see how active user were over several months
plt.figure()
for k,g in grouped:
g=g.resample('m',how='count')
g.plot(style='*-',label=k )
plt.show()
plt.legend(loc='best')
plt.show()