每分钟的日期直方图(以熊猫为单位)

时间:2020-07-07 11:28:24

标签: python pandas plot histogram date-histogram

我正在尝试使用熊猫绘制一个简单的日期直方图(仅每N分钟计数一次发生次数)。 但是,我能做到的最好的是:

import pandas as pd
df = pd.read_csv('mydata.csv',sep=' ',usecols=[0,1])
df.columns = ['smdate', 'smtime']
df= pd.to_datetime(df['smtime'])
print(df)
df.groupby(df.dt.minute).count().plot(kind="bar",figsize=(50,10))

样本输出:

0        2020-07-07 00:00:07.538
1        2020-07-07 00:00:09.278
2        2020-07-07 00:00:09.292
3        2020-07-07 00:00:10.682
4        2020-07-07 00:00:14.198
                   ...          
262516   2020-07-07 15:54:44.056
262517   2020-07-07 15:54:44.270
262518   2020-07-07 15:54:44.450
262519   2020-07-07 15:54:44.697
262520   2020-07-07 15:54:45.210
Name: smtime, Length: 262521, dtype: datetime64[ns]

https://codepen.io/pranavraghaw1/pen/VweMWoz

我的问题是如何最好地对我的相框进行分组(即10-20分钟)? 另外,绘制这么多事件的最佳方法是什么,以便我可以按上述间隔(每N分钟)可视化它们?

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找熊猫Grouper
它允许您指定所需的任何频率或间隔。

这是一个工作示例,间隔为10分钟:

import pandas as pd
df = pd.read_csv('mydata.csv',sep=';',usecols=[0,1])
df.columns = ['smdate', 'smtime']

df['smtime'] = pd.to_datetime(df['smtime'])

df.groupby(pd.Grouper(key='smtime', freq='10Min')).count().plot(kind="bar",figsize=(50,10))

在这里,我保留了最初的数据帧结构;我无法将其与datetime Series对象一起使用(Grouper函数尝试在索引上使用而不是在该系列的值上)。我尝试了轴参数但没有成功。如果有人可以直接与该系列合作改善我的回答,我将感到非常高兴。

无效示例:

import pandas as pd
df = pd.read_csv('mydata.csv',sep=';',usecols=[0,1])
df.columns = ['smdate', 'smtime']

df = pd.to_datetime(df['smtime'])

df.groupby(pd.Grouper(freq='10Min')).count().plot(kind="bar",figsize=(50,10))