如何使用24小时时间序列数据作为预测功能

时间:2019-04-08 15:20:06

标签: python pandas machine-learning time-series data-analysis

我只是想知道如何最好地使用这种24小时制作为预测功能。我的想法是将每天的每个小时都分为24类。有没有简单的方法可以将此对象转换为python datetime对象,从而使装箱更加容易,或者您将如何处理此功能?谢谢:)

df['Duration']

0         2:50
1         7:25
2        19:00
3         5:25
4         4:45
5         2:25

df['Duration'].dtype

dtype('O')

3 个答案:

答案 0 :(得分:0)

您可以使用datetime创建可用的datetime字符串

>>> from datetime import datetime
>>> x = datetime(2019, 1, 1, 0).strftime('%Y-%m-%d %H:%M:%S')
>>> # Use that for your timestring then you can reverse it nicely back into a datetime object
>>> d = datetime.strptime('2019-01-01 00:00:00', '%Y-%m-%d %H:%M:%S')

您当然可以使用任何有效的格式字符串。

答案 1 :(得分:0)

您应该从一些初始时间(如第一次)开始,以秒,分钟或小时为单位计算时间。然后,您可以制作数据的x-y散点图,因为x轴(时间)现在是数字。

答案 2 :(得分:0)

最佳解决方案将取决于您希望从模型中得到什么。在许多情况下,将其转换为某个时期以来的总秒数(或分钟或小时)是有意义的。要将数据从00:00开始转换为秒,可以使用:

from datetime import datetime

t_str = "2:50"

t_delta = datetime.strptime(t_str, "%H:%M") - datetime(1900, 1, 1)
seconds = t_delta.total_seconds()
hours = seconds/60**2

print(seconds)
# 10200.0

使用Python的datetime类将不支持超过23:59的时间值。由于您的数据似乎实际上是一个持续时间,因此您可能希望将其表示为Python的timedelta类的实例。

from datetime import timedelta  

h, m = map(int, t_str.split(sep=':'))
t_delta = timedelta(hours=h, minutes=m)

# Get total number of seconds
seconds = t_delta.total_seconds()