假设我已经从sql或csv(不是在python中创建)加载了时间序列数据,索引将是:
DatetimeIndex(['2015-03-02 00:00:00', '2015-03-02 01:00:00',
'2015-03-02 02:00:00', '2015-03-02 03:00:00',
'2015-03-02 04:00:00', '2015-03-02 05:00:00',
'2015-03-02 06:00:00', '2015-03-02 07:00:00',
'2015-03-02 08:00:00', '2015-03-02 09:00:00',
...
'2015-07-19 14:00:00', '2015-07-19 15:00:00',
'2015-07-19 16:00:00', '2015-07-19 17:00:00',
'2015-07-19 18:00:00', '2015-07-19 19:00:00',
'2015-07-19 20:00:00', '2015-07-19 21:00:00',
'2015-07-19 22:00:00', '2015-07-19 23:00:00'],
dtype='datetime64[ns]', name=u'hour', length=3360, freq=None, tz=None)
如您所见,'freq'为None . 我想知道如何检测此系列的频率并将'freq'设置为其频率 .
如果可能的话,我希望这可以在数据不连续的情况下工作(系列中有很多中断) .
我试图找到两个时间戳之间所有差异的模式,但我不知道如何将其转换为系列可读的格式
3 回答
也许尝试区分时间索引并使用模式(或最小差异)作为频率 .
找到最小时差
通常以ns为单位 . 要获得频率,假设ns:
值得一提的是,如果数据是连续的,您可以使用pandas.DateTimeIndex.inferred_freq属性:
或pandas.infer_freq方法:
如果不连续,pandas.infer_freq将返回None . 与已经提出的方法类似,另一种方法是使用pandas.Series.diff方法: