熊猫年/月/日分隔以提高相关性

时间:2019-06-24 17:04:06

标签: python pandas scikit-learn

我试图在时间序列数据上使用SKLearn的MinMaxScaler函数,为了使用它,我想我的值必须在dtype int64, float64上,因为我可以将datetime值转换为单独的日期和时间,例如

                 DATETIME 
0     2013-02-13 00:00:00 
1     2013-02-13 00:30:00 
2     2013-02-13 01:00:00 
3     2013-02-13 01:30:00 
4     2013-02-13 02:00:00 
5     2013-02-13 02:30:00 
6     2013-02-13 03:00:00 
7     2013-02-13 03:30:00 
8     2013-02-13 04:00:00 
9     2013-02-13 04:30:00 
10    2013-02-13 05:00:00 
11    2013-02-13 05:30:00 

到目前为止,我尝试将时间和日期分开,但是重新发布的时间甚至还没有达到0.5 enter image description here

这就是为什么我想分隔年,月和日,也许这些天的相关度为0.5或更多。

但是从熊猫到如何将其转换为我之前提到的dtypes,我该怎么做?

我知道我可以这样分开

series['YEAR'] = pd.DatetimeIndex(series['DATE']).year
series['MONTH'] = pd.DatetimeIndex(series['DATE']).month
series['DAY'] = pd.DatetimeIndex(series['DATE']).day

但是如何将它们转换为MinMax可接受的数据?

目标将其输出以将其转换为

Y     M  D   T
2013  2  3   00:00:00

选择适合以下代码的dtypes

scaler = MinMaxScaler()
scaler.fit(series)
series = scaler.transform(series)

2 个答案:

答案 0 :(得分:0)

我不确定您为什么要在日期功能上使用MinMaxScaler,但不要爆炸日期,只需将它们转换为Unix时间戳即可。那将是解决您的问题的更好方法。

答案 1 :(得分:0)

IIUC,DATETIME是一个索引,因此您需要:

df['Y'] = df.index.to_series().dt.year
df['M'] = df.index.to_series().dt.month
df['D'] = df.index.to_series().dt.day

输出:

                        Y  M   D
DATETIME                        
2013-02-13 00:00:00  2013  2  13
2013-02-13 00:30:00  2013  2  13
2013-02-13 01:00:00  2013  2  13
2013-02-13 01:30:00  2013  2  13
2013-02-13 02:00:00  2013  2  13
2013-02-13 02:30:00  2013  2  13
2013-02-13 03:00:00  2013  2  13
2013-02-13 03:30:00  2013  2  13
2013-02-13 04:00:00  2013  2  13
2013-02-13 04:30:00  2013  2  13
2013-02-13 05:00:00  2013  2  13
2013-02-13 05:30:00  2013  2  13