首页 > 解决方案 > 检测数据框中的可用时间段

问题描述

我使用不同的数据集(面板数据),需要以编程方式检测我是否有每日、每月、每季度或仅每年可用的数据。所有数据集都有一个日期时间格式的日期列(例如,年度数据只有年终日期 31-12-2017、31-12-2018 等;每日数据可能看起来像 02-02-2018、03-05-2018 , 09-11-2018 等,间隔不同)。

对于年度数据,我预计日期间隔为 1 年,季度数据为 3 个月,月度数据为 1 个月,每日数据应在一个月内至少有 2 个日期。

Pandas 有没有办法检测我在数据集中可用的日期间隔类型?

标签: pythonpandasdatetime

解决方案


要检查您的 DataFrame 是否包含例如每日数据(根据您的标准),您可以采用以下方法:

作为源数据框,我采用:

            Value
Date             
2019-01-10     20
2019-01-15     12
2019-01-22     10
2019-02-08     11
2019-02-22     13
2019-03-11     17
2019-03-24     22
2019-05-07     14

日期是索引,它是日期时间类型。

所以有:

  • 一月份的3 个读数,
  • 2月和 3 月的 2 个读数,
  • 四月没有读数,
  • 1读五月。

要查看每个月有多少读数,请按月运行resample然后(每个月)count

df.Value.resample('MS').count()

在上面的代码中MS表示月份开始

对于我的数据,结果是:

Date
2019-01-01    3
2019-02-01    2
2019-03-01    2
2019-04-01    0
2019-05-01    1
Freq: MS, Name: Value, dtype: int64

并执行一次检查是否每个月至少有 2 个读数,运行:

df.Value.resample('MS').count().ge(2).all()

对于我的数据,结果是False,因为 4 月份没有数据,5 月份只有 1 个读数。

对于其他时期,采用类似的方法,按不同的频率和标准重新采样,了解您在每个时期想要多少读数。


推荐阅读