我处理各种数据集(面板数据),并且需要以编程方式检测我是否有每日,每月,每季度或只有每年的数据。所有数据集都有一个日期时间格式的日期列(例如,年度数据仅具有年末日期31-12-2017、31-12-2018等;每日数据可能看起来像02-02-2018、03-05-2018 ,2018年11月11日等,时间间隔各不相同。
对于年度数据,我希望日期间隔为1年,对于季度数据为3个月,对于月度数据为1个月,而每日数据在一个月内应至少有2个日期。
Pandas是否有办法检测数据集中可用的日期间隔?
我处理各种数据集(面板数据),并且需要以编程方式检测我是否有每日,每月,每季度或只有每年的数据。所有数据集都有一个日期时间格式的日期列(例如,年度数据仅具有年末日期31-12-2017、31-12-2018等;每日数据可能看起来像02-02-2018、03-05-2018 ,2018年11月11日等,时间间隔各不相同。
对于年度数据,我希望日期间隔为1年,对于季度数据为3个月,对于月度数据为1个月,而每日数据在一个月内应至少有2个日期。
Pandas是否有办法检测数据集中可用的日期间隔?
检查您的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
Date 是索引,并且是 datetime 类型。
所以有:
要查看每个月有多少读数,请按月运行重新采样 然后(每个月) 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月份没有数据,只有1个读数 五月。
对于其他时期,采取类似的方法,以不同的频率重采样 以及每个时期想要多少读数的标准。