我的数据框看起来像这样-
In [1]: df.head()
Out[1]:
Datetime Value
2018-04-21 14:08:30.761 offline
2018-04-21 14:08:40.761 offline
2018-04-21 14:08:50.761 offline
2018-04-21 14:09:00.761 offline
2018-04-21 14:09:10.761 offline
我有2周的数据。我想绘制一周中每一天相对于时间(小时:分钟)的值。如果我一次要查看一次数据也行得通。
我花了一整天的时间使用plotly创建了一个情节。
In[9]: df['numval'] = df.Value.apply(lambda x: 1 if x == 'online' else -1)
In[10]: df.iplot()
如果周日至周六可以使用几行类似于这样的多幅图,那么它将加快我的工作
建议- 像我可以在工作日(0-6),时间(x轴)和值(y轴)中输入参数,这样可以创建7个图。
In[11]: df['weekday'] = df.index.weekday
In[12]: df['weekdayname'] = df.index.weekday_name
In[13]: df['time'] = df.index.time
任何库都可以正常工作,因为我只想查看数据,并且需要测试对数据的修改。
答案 0 :(得分:0)
这可能不是您要查找的确切答案。只是给出一种可能有用的方法。
此处的方法是根据日期对数据进行分组,然后为每个组生成一个图。为此,您需要将DateTime列分为两列-日期和时间。下面的代码可以做到这一点:
datetime_series = df['Datetime']
date_series = pd.Series()
time_series = pd.Series()
for datetime_string in datetime_series:
date,time = datetime_string.split(" ")
date_s = pd.Series(date,dtype=str)
time_s = pd.Series(time, dtype=str)
date_series=date_series.append(date_s, ignore_index=True)
time_series = time_series.append(time_s, ignore_index=True)
上面的代码将给您两个单独的熊猫系列。一个用于约会,另一个用于时间。现在,您可以将两列添加到数据框中
df['date'] = date_series
df['time'] = time_series
现在,您可以使用groupby功能根据日期对数据进行分组并为每个组绘制数据。像这样:
首先将“离线”替换为0:
df1 = df.replace(to_replace='offline',value=0)
现在根据日期和情节对数据进行分组:
for title, group in df1.groupby('date'):
group.plot(x='time', y='Value', title=title)