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

问题描述

我正在处理 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