使用 pd.date_range 方法,输入 '2020' 并设置频率为 '15min',周期为 n_obs,将生成一个间隔为 15 分钟的 DateTimeIndex。
您可以使用以下方法设置 pandas dataframe:
DatetimeIndex(['2020-01-01 00:00:00', '2020-01-01 00:15:00',
'2020-01-01 00:30:00', '2020-01-01 00:45:00',
'2020-01-01 01:00:00'],
dtype='datetime64[ns]', freq='15T')
您可以使用以下方法设置 pandas dataframe:
import pandas as pd
import numpy as np
# data
np.random.seed(10)
n_obs = 10
daterange = pd.date_range('2020', freq='15min', periods=n_obs)
values = np.random.uniform(low=-1, high=1, size=n_obs).tolist()
df = pd.DataFrame({'time':daterange, 'value':values})
df = df.set_index('time')
现在你可以使用pd.infer_freq(df.index)
来获取频率'15T'
,以便进行进一步的计算。仔细查看help(pd.infer_freq())
,我们可以知道pd.infer_freq 将会:
Infer the most likely frequency given the input index. If the frequency is
uncertain, a warning will be printed.
我的理解是,如果有一些观测值缺失导致时间索引不规则,那么可能会通过检索'15T'
。但是当我使用以下方法移除一些观测值时:
dropped = df.index[[1,3]]
df = df.drop(dropped)
然后当我们运行pd.infer_freq(df.index)
时,返回结果为None
。如果我们设置n_obs = 100
也会出现这种情况。因此,当我认为[...] 推断最可能的频率 [...]
意味着pd.infer_freq()
仅通过少量缺失值就可以推断出该索引实际上具有15分钟的频率时,似乎我期望过高了。是否有其他方法可以使用pandas从略微不规则的时间序列中编程地推断出索引频率?