机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq:2279055353)
我们的训练营经常收到从事数据分析业务的朋友提出的编程问题,这些问题都是他们在实际业务处理中遇到的,具有普遍性。我们将解决问题的代码以【Python小程序】系列推出,提供给有类似问题的朋友在编程时参考。同时,欢迎朋友们提出编程问题,我们将帮助解决!
数据文件data.npy
是一个两行多列的numpy
数组,其中的第一行是datetime
日期时间,第二行是对应的数值。我们的问题是:如何提取该数据集里指定时间段的子集?
首先,我们先将数据集加载到Python里,把它转换成适合数据处理的dataframe
.
import numpy as np
import pandas as pd
import datetime
data = np.load('data.npy', allow_pickle=True)
data = data.T
df = pd.DataFrame(data)
df.columns = ['time', 'value']
df.shape
df.head()
(2072592, 2)
这里显示了数据集的前5行,如果我们像按第一列的时间提取一个数据子集,例如,提取2019年2月21日这一天,从15点到16点之间的数据,该如何操作呢?
df.dtypes
time object
value object
dtype: object
时间变量time
是object
, 我们要把它转换成datetime
.
df['time'] = pd.to_datetime(df['time'], format='%m/%d/%Y %H:%M:%S')
然后,设置起始、终止的时间变量。
start = datetime.datetime(2019, 2, 21, 15, 0, 0)
end = datetime.datetime(2019,2,21,16,0,0)
利用datetime
变量可以直接比较时间大小,提取出从起始时间到终止时间之间的数据子集。
subset = df[df['time']>start]
final_data = subset[subset['time']
(68688, 2)
更多精彩内容请关注微信公众号“统计学习与大数据”