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

如何用Python验证全年数据集是否覆盖所有月份的每一天

校验全年日期覆盖完整性的Python实现

核心逻辑:将数据集里的年月日转为标准日期格式去重后,和目标年份的完整合法日期集合做差集比对,即可100%准确判断是否有缺失,还能直接输出缺失的具体日期。

前提说明

  • 你提到的数据集earth2019默认是Pandas DataFrame格式
  • 已安装Pandas库,没有的话执行pip install pandas安装

完整代码

import pandas as pd

# 1. 从数据集提取已有日期并去重
earth2019['date'] = pd.to_datetime(earth2019[['year', 'month', 'day']])
exist_dates = set(earth2019['date'].dt.date.unique())

# 2. 生成目标年份的全部合法日期(自动处理闰年、大小月,不需要手动计算每月天数)
target_year = earth2019['year'].iloc[0]  # 取数据集中的年份,固定为2019也可以直接写2019
full_dates = set(pd.date_range(start=f'{target_year}-01-01', end=f'{target_year}-12-31').date)

# 3. 比对得到缺失日期
missing_dates = full_dates - exist_dates

# 4. 输出结果
if len(missing_dates) == 0:
    print("✅ 数据完整,覆盖全年每一天的观测数据")
else:
    print(f"❌ 数据存在缺失,共缺失{len(missing_dates)}天,缺失日期如下:")
    for d in sorted(missing_dates):
        print(d)

可选优化:可视化补充校验

如果还是需要用图表直观确认,可以改用散点图代替折线图,效果会清晰很多:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(10, 6))
# 只保留唯一日期避免重复点污染图表
unique_dates = earth2019[['month', 'day']].drop_duplicates()
ax.scatter(unique_dates['month'], unique_dates['day'], s=10)
ax.set_xlabel('月份')
ax.set_ylabel('日期')
ax.set_xticks(range(1,13))
ax.set_yticks(range(1,32))
plt.grid(alpha=0.3)
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:36:06