Python 中时间序列数据的切片与对齐
在处理历史数据时,最头疼的就是时间轴对不齐。今天复习了一下 Pandas 处理时间序列的几个基础操作,做个备忘。
- 转换为 Datetime 对象
从 CSV 里读出来的时间通常是字符串,必须转换格式,否则无法进行时间相关的计算。
# 假设原始数据有一列叫 'datetime_str'
import pandas as pd
df['datetime'] = pd.to_datetime(df['datetime_str'])
df.set_index('datetime', inplace=True) # 设为索引,方便后续切片2.按时间范围切片
用 loc 提取某一段时间的数据非常方便。
# 提取 2024年1月 到 2024年3月 的数据
subset = df.loc['2024-01-01':'2024-03-31']3。时间重采样 (Resample)
如果我想把分钟级别的数据,汇总成小时级别的数据:
# 按 1 小时重采样
ohlc = df.resample('1H').agg({
'Open': 'first',
'High': 'max',
'Low': 'min',
'Close': 'last',
}).dropna()注意这里必须用 .agg() 指定每一列的聚合方式,否则默认只会算平均值。
写代码处理数据,最怕的就是差之毫厘。尤其是时间对齐,一旦错位,后面算出来的所有结果都是错的。