微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用日期作为多个日期范围的虚拟变量?

如何解决如何使用日期作为多个日期范围的虚拟变量?

我正在处理 Pandas 数据框,我需要使用多变量回归分析。我使用的自变量是 yyyy-mm-dd 格式的日期。到目前为止,我已经明白我可以使用虚拟变量作为日期。

场景描述如下:

  • 数据集中的日期来自2017-08-18 to 2019-08-12
  • 我需要为所有日期计算 countproducts
  • 现在我需要检查多个日期和相应日期范围的 meanproducts,即,如果我取 2017-09-21,那么我需要计算 products 的平均值7 days before7 days after 2017-09-21
  • 现在我有mean_products_before (2017-09-15,2017-09-16,2017-09-17,...,2017-09-21)mean_products_after(2017-09-21,2017-09-22,2017-09-23,2017-09-28)
  • 现在我需要计算平均值的不是一个日期而是多个日期:017-09-21,2017-09-28,2017-10-17,2017-11-26,2017-12-09,and few more
  • 问题是我可以在这种情况下使用虚拟变量吗?甚至有可能还是我用其他更好的方法来做?目的是找出日期(自变量)是否与 mean_products_beforemean_products_after 这两个因变量有影响或关系。

如果有任何不清楚的地方,我深表歉意。请随时提出更多问题。

解决方法

这是您可以利用日期值获取虚拟值的方法之一。

from datetime import datetime,timedelta,date
import pandas as pd

_date = datetime.fromisoformat('2017-08-18')
dateList=[]
for i in range(0,10):
    _date += timedelta(days=1)
    dateList.append(_date.date().isoformat())

pd.get_dummies(pd.Series(dateList))

输出将是。

            2017-08-19  2017-08-20  2017-08-21  2017-08-22  2017-08-23  2017-08-24  2017-08-25  2017-08-26  2017-08-27  2017-08-28
0   1   0   0   0   0   0   0   0   0   0
1   0   1   0   0   0   0   0   0   0   0
2   0   0   1   0   0   0   0   0   0   0
3   0   0   0   1   0   0   0   0   0   0
4   0   0   0   0   1   0   0   0   0   0
5   0   0   0   0   0   1   0   0   0   0
6   0   0   0   0   0   0   1   0   0   0
7   0   0   0   0   0   0   0   1   0   0
8   0   0   0   0   0   0   0   0   1   0
9   0   0   0   0   0   0   0   0   0   1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。