【问题标题】:Extract monthly categorical (dummy) variables in pandas from a time series从时间序列中提取 pandas 中的每月分类(虚拟)变量
【发布时间】:2014-12-06 02:58:57
【问题描述】:

所以我有一个数据框 (df),其中包含每月时间序列(月末)的日期数据。它看起来像这样:

Date          Data
2010-01-31    625000
2010-02-28    750000
...
2014-10-31    450000
2014-11-30    475000

我想检查季节性的每月影响。

这可能很简单,但是如何从 Date 中提取月份以创建分类虚拟变量以用于回归?

我希望它看起来像这样:

Date        01 02 03 04 05 06 07 08 09 10 11
2010-01-31  1  0  0  0  0  0  0  0  0  0  0
2010-02-28  0  1  0  0  0  0  0  0  0  0  0
...
2014-10-31  0  1  0  0  0  0  0  0  0  1  0  
2014-11-30  0  1  0  0  0  0  0  0  0  0  1

我尝试使用 pd.DataFrame(df.index.month, index=df.index)... 它为我提供了每个日期的月份。我相信我需要使用 pandas.core.reshape.get_dummies 来获取 0/1 矩阵格式的变量。有人可以告诉我怎么做吗?谢谢。

【问题讨论】:

  • pd.get_dummies(df.index.month) 应该这样做。 (确保删除其中一列,这样如果您有截距,就没有线性相关性)。您可以将其结果连接到原始 df。
  • 哇。很简单。感谢您指出这一点。先生,我真的很感激。

标签: python pandas


【解决方案1】:

这就是我得到四月的方式:

import pandas as pd
import numpy as np

dates = pd.date_range('20130101', periods=4, freq='MS')
df = pd.DataFrame(np.random.randn(4), index=dates, columns=['data'])

df.ix[dates.month==4]

这个想法是让日期成为您的索引,然后对数据框进行布尔索引选择。

>>> df
                data
2013-01-01  0.141205
2013-02-01  0.115361
2013-03-01 -0.309521
2013-04-01 -0.236317


>>> df.ix[dates.month==4]
                data
2013-04-01 -0.236317

【讨论】:

    猜你喜欢
    • 2021-07-15
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 2014-09-28
    • 2018-09-11
    • 1970-01-01
    相关资源
    最近更新 更多