如何使用Pandas确定时间序列DataFrame的数据频率
用Pandas自动判断时间序列数据频率的方法
当然可以用Pandas实现自动判断时间序列的频率,这里给你两种实用方法:
方法一:直接用pd.infer_freq()
Pandas内置的infer_freq()函数可以直接分析DatetimeIndex的规律,返回对应的频率字符串。针对你的数据,代码示例如下:
import pandas as pd # 假设你的DataFrame索引是df.index detected_freq = pd.infer_freq(df.index) print(detected_freq)
针对你给出的索引,它会返回类似W-THU的结果(表示每周四的周度数据);如果是每日数据会返回D,月度数据返回M,以此类推。
方法二:计算时间差众数(应对有缺失值的情况)
如果数据存在缺失值,infer_freq()可能无法准确推断,这时候可以通过计算相邻时间戳的差值,取出现次数最多的时间差来判断频率:
# 计算相邻索引的时间差 time_diffs = df.index.to_series().diff().dropna() # 获取出现次数最多的时间差 most_common_diff = time_diffs.mode()[0] # 建立时间差与频率的映射关系 freq_mapping = { pd.Timedelta(days=1): "每日(D)", pd.Timedelta(days=7): "每周(W)", pd.Timedelta(days=30): "月度(M)", # 月度天数有波动,这里取近似值 pd.Timedelta(weeks=4): "月度(M)", pd.Timedelta(days=365): "年度(A)" } # 匹配对应的频率 detected_freq = freq_mapping.get(most_common_diff, "无法识别的频率") print(detected_freq)
这种方法更灵活,即使数据有少量缺失,也能通过众数判断出最可能的频率。
内容的提问来源于stack exchange,提问作者Jacques Tebeka
相关产品推荐
相关产品推荐

