编程语言
首页 > 编程语言> > python-尝试使用datetime64对象的Pandas系列检查数据频率

python-尝试使用datetime64对象的Pandas系列检查数据频率

作者:互联网

我有一些时间序列数据,可以是1Hz,10Hz或100Hz.我加载的文件恰好是1Hz:

In [6]: data = pd.read_csv("ftp.csv")

In [7]: data.Time
Out[7]: 
0             NaN
1     11:30:08 AM
2     11:30:09 AM
3     11:30:10 AM
4     11:30:11 AM
5     11:30:12 AM
6     11:30:13 AM

我将其转换为datetime:

In [8]: time = pd.to_datetime(data.Time)

In [9]: time
Out[9]: 
0                    NaT
1    2015-03-03 11:30:08
2    2015-03-03 11:30:09
3    2015-03-03 11:30:10
4    2015-03-03 11:30:11
5    2015-03-03 11:30:12

从这里如何验证采样频率是多少?我必须手动执行此操作还是可以使用内置的pandas方法?

解决方法:

转换为datetime64后的一种方法,如果频率采样率相同,则可以调用diff()计算应该相同的所有行之间的差异,并将其与np.timedelta64类型进行比较,因此对于您的样本数据而言是:

In [277]:

all(df.datetime.diff()[1:] == np.timedelta64(1, 's')) == True
Out[277]:
True

In [278]:

df.datetime.diff()
Out[278]:
0
1        NaT
2   00:00:01
3   00:00:01
4   00:00:01
5   00:00:01
6   00:00:01
Name: datetime, dtype: timedelta64[ns]
In [279]:

df.datetime.diff()[1:] == np.timedelta64(1, 's')
Out[279]:
0
2    True
3    True
4    True
5    True
6    True
Name: datetime, dtype: bool

要检查频率是10hz还是100hz,只需将单位更改为np.timedelta64,因此对于10hz:np.timedelta64(100,’ms’)和100hz:np.timedelta64(10,’ms’)

可以在以下位置找到np.timedelta64单位:http://docs.scipy.org/doc/numpy/reference/arrays.datetime.html#datetime-and-timedelta-arithmetic

标签:pandas,time-series,python
来源: https://codeday.me/bug/20191120/2045596.html