通过出现第二个小时的小时数来绘制图

时间:2019-03-22 19:51:23

标签: pandas

我有这个df:

,我想用半小时制出一半的行,而不用白天制图。

只是一个图表,其中出现次数为半小时,不包括日期。

3272    8711600410367   2019-03-11T20:23:45.415Z    d7ec8e9c5b5df11df8ec7ee130552944 home   2019-03-11T20:23:45.415Z    DISPLAY None
3273    8711600410367   2019-03-11T20:23:51.072Z    d7ec8e9c5b5df11df8ec7ee130552944 home   2019-03-11T20:23:51.072Z    DISPLAY None

这是我的尝试:

df["Created"] = pd.to_datetime(df["Created"])
df.groupby(df.Created.dt.hour).size().plot()

但是还没到半个小时

我想在图表上显示整个半小时

enter image description here

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是将编码分成几个小时和半个小时,然后将它们组合在一起。为了说明,我对您的数据示例进行了扩展:

import pandas as pd
df = pd.DataFrame({'Created':['2019-03-11T20:23:45.415Z', '2019-03-11T20:23:51.072Z', '2019-03-11T20:33:03.072Z', '2019-03-11T21:10:10.072Z']})
df["Created"] = pd.to_datetime(df["Created"])

首先创建“小时列”:

df['Hours'] = df.Created.dt.hour

然后创建一个编码半小时的列。也就是说,如果分钟数大于30,则将其视为半小时。

df['HalfHours'] = [0.5 if x>30 else 0 for x in df.Created.dt.minute] 

然后再次将它们放在一起:

df['Hours_and_HalfHours'] = df['Hours']+df['HalfHours']

最后,按groupby计算行数,并绘制:

df.groupby(df['Hours_and_HalfHours']).size().plot()