python - 检测数据框中的可用时间段
问题描述
我使用不同的数据集(面板数据),需要以编程方式检测我是否有每日、每月、每季度或仅每年可用的数据。所有数据集都有一个日期时间格式的日期列(例如,年度数据只有年终日期 31-12-2017、31-12-2018 等;每日数据可能看起来像 02-02-2018、03-05-2018 , 09-11-2018 等,间隔不同)。
对于年度数据,我预计日期间隔为 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
日期是索引,它是日期时间类型。
所以有:
- 一月份的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 个读数。
对于其他时期,采用类似的方法,按不同的频率和标准重新采样,了解您在每个时期想要多少读数。
推荐阅读
- python - 如何设置当我的 VPN 使用 python 断开连接时弹出的彩色点指示器。请指导我解决这个问题
- java - 通过中点算法在java中绘制圆圈
- ssl - 带有 localhost 自签名证书的 Grpc.core TLS 握手
- c++ - 如何对向量中的所有元素求和?
- c++ - OpenGL的漫反射照明问题
- javascript - 如何在 React.js 中将状态/数据从一个组件传递到另一个组件(特别是 riot api)
- visual-studio-code - 在 VS.Code 中选择整个文本的问题
- reactjs - 在 React 的弹出窗口中显示不同的值
- java - hazelcast如何在会员端启用用户代码部署
- python - Pastebin pbwrap 在 python 3.9.5 上有 AttributeError: __enter__ with io.open()