尝试使用 Pandas 系列 datetime64 对象检查数据频率
Trying to check data frequency with Pandas Series of datetime64 objects
我有一些时间序列数据,可以是 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
我将其转换为日期时间:
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
我有一些时间序列数据,可以是 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
我将其转换为日期时间:
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