gpt4 book ai didi

python Pandas : detecting frequency of time series

转载 作者:太空狗 更新时间:2023-10-29 21:26:16 24 4
gpt4 key购买 nike

假设我已经从 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 设置为它的频率。如果可能的话,我希望这适用于不连续的数据(系列中有很多中断)。

我试图找到两个时间戳之间所有差异的模式,但我不确定如何将其转换为 Series 可读的格式

最佳答案

值得一提的是,如果数据是连续的,可以使用pandas.DateTimeIndex.inferred_freq属性:

dt_ix = pd.date_range('2015-03-02 00:00:00', '2015-07-19 23:00:00', freq='H')
dt_ix._set_freq(None)
dt_ix.inferred_freq
Out[2]: 'H'

pandas.infer_freq方法:

pd.infer_freq(dt_ix)
Out[3]: 'H'

如果不是连续的 pandas.infer_freq 将返回 None。与已经提出的类似,另一种选择是使用 pandas.Series.diff方法:

split_ix = dt_ix.drop(pd.date_range('2015-05-01 00:00:00','2015-05-30 00:00:00', freq='1H'))
split_ix.to_series().diff().min()
Out[4]: Timedelta('0 days 01:00:00')

关于 python Pandas : detecting frequency of time series,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31517728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com