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

数据清洗中如何确保年月序列连续?数据完整性校验咨询

月度时间序列数据连续性校验方案

我有两个月度时间序列数据集:

  • 1982-01至2022-08的月度降雨天数数据
  • 1982-01至2022-08的月度降雨量(mm)数据

降雨天数数据示例

month   no_of_rainy_days
0   1982-01 10
1   1982-02 5
2   1982-03 11
3   1982-04 14
4   1982-05 10

降雨量数据示例

month   total_rainfall
0   1982-01 107.1
1   1982-02 27.8
2   1982-03 160.8
3   1982-04 157.0
4   1982-05 102.2

作为数据完整性校验环节,如何确保日期序列连续?即1982-01的下一条应为1982-02而非跳至1982-03?不清楚该检查的执行方法,已在线搜索,请问默认假设年月连续是否为通用做法?


一、日期序列连续性的检查方法

用Python Pandas实现(最常用的时间序列处理方式)

  1. 转换日期格式:先把文本型的年月转换成日期类型,方便后续计算
import pandas as pd

# 读取并转换降雨天数数据
df_days = pd.read_csv("rainy_days.csv")
df_days['month'] = pd.to_datetime(df_days['month'], format='%Y-%m')

# 读取并转换降雨量数据
df_rain = pd.read_csv("rainfall.csv")
df_rain['month'] = pd.to_datetime(df_rain['month'], format='%Y-%m')
  1. 生成标准连续时间序列:根据数据集的起止时间,生成完整的月度序列作为参照
# 生成1982-01到2022-08的连续月度序列(MS代表每月第一天)
full_date_range = pd.date_range(start='1982-01-01', end='2022-08-01', freq='MS')
full_df = pd.DataFrame({'month': full_date_range})
  1. 对比找出缺失日期:通过集合对比,定位原数据中缺失的月份
# 检查降雨天数数据的缺失月份
missing_days = full_df[~full_df['month'].isin(df_days['month'])]
print("降雨天数数据缺失的月份:")
print(missing_days['month'].dt.strftime('%Y-%m'))

# 检查降雨量数据的缺失月份
missing_rain = full_df[~full_df['month'].isin(df_rain['month'])]
print("降雨量数据缺失的月份:")
print(missing_rain['month'].dt.strftime('%Y-%m'))
  1. 相邻日期差校验:直接计算相邻行的月份差,判断是否为1个月
# 对降雨天数数据排序后计算月份差
df_days_sorted = df_days.sort_values('month')
# 把年月转换成数字(如1982-01转为1982*12+1=23785),再计算差值
df_days_sorted['month_diff'] = (df_days_sorted['month'].dt.year * 12 + df_days_sorted['month'].dt.month).diff()
# 筛选出差值不为1的行,即不连续的位置
non_continuous_days = df_days_sorted[df_days_sorted['month_diff'] != 1]
print("降雨天数数据中不连续的位置:")
print(non_continuous_days[['month', 'month_diff']])

用Excel实现(轻量场景)

  • 把month列转换成日期格式,新增列计算相邻日期差:=DATEDIF(A2,A3,"m"),返回值不为1的行就是不连续的位置
  • 或者用EDATE函数验证:=EDATE(A2,1)=A3,返回FALSE的行即为不连续的位置

二、关于"默认假设年月连续"的通用做法

绝对不能默认假设年月连续,这是数据校验的基本原则:

  • 时间序列分析(趋势、季节性等)的准确性高度依赖数据连续性,缺失的月份会直接导致分析结果偏差
  • 通用做法是主动校验连续性,而非默认连续——数据源可能存在采集遗漏、传输错误、格式转换丢失等问题,这些问题不会自动暴露
  • 只有在数据源明确承诺100%连续(比如官方发布的完整月度统计数据,且有书面说明无缺失),才可以暂时简化校验,但仍建议做一次快速确认

内容的提问来源于stack exchange,提问作者ricenix

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:46:28