我有一个包含以下特征的数据框架:
['plug-in time', 'plug-out time', 'charging duration','charge value']
例如'plug-in time'
是日期格式(即2020/12/31 18:32:19
),其他时间-日期特征也类似。
我正在尝试使用基于学习的方法来处理这个数据集,但是,我已经设置了一个函数,可以使用以下代码自动将pandas object
特征(例如'plug-in time', 'plug-out time', 'charging duration'
)转换为整数:
df['plug-in time'] = pd.to_datetime(df['plug-in time'])
for row in df['plug-in time']:
df['plug-in time'][row] = 3600*df['plug-in time'][row].hour+60*df['plug-in time'][row].minute+df['plug-in time'][row].second
使我在特征['plug-in time']
中的数据变成以秒为分辨率的整数(使2020/12/31 18:32:19
变成an integer
)。
然后在我的预测模型中使用这些值。这听起来有点傻,但这就是我在使用学习方法时解决属性和参数类型错误的方法。
还有别的办法吗?
我知道sklearn
有数据预处理类,但我不确定这些预处理对timestamp
功能(如pandas timestamp
)有用。
我猜最终收费值与开始收费值的关系比其他任何东西都要大。即电池电量很低时,充电效率最大。由于您不知道起始收费值,因此最可能使用星期几和一天中的小时作为代理。一种假设是,在工作日的深夜给手机充电,电池电量会比清晨或周末低。
我怀疑你可以删除插件时间,因为它与持续时间特性无关。您可以立即对您的工作日功能进行编码。记住,日和小时是有序的特征,而不是连续的——这一点很重要。
我猜鉴于你的特性,这是一个很好的起点。
在任何情况下都可以使用
df['day_of_week'] = df['plug-in time'].dt.weekday_name
df['hour_of_day'] = df['plug-in time'].dt.hour
df.drop(columns=['plug-in time','plug-out time'], inplace=True)
这里有一个关于如何处理一天中的一小时的很好的链接,不要忘记为你的工作日特征进行one-hot编码(制作假人)。