You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 15:28:11