【Python小程序】第1讲:如何提取指定时间段的数据子集?

机器学习训练营——机器学习爱好者的自由交流空间(入群联系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)

【Python小程序】第1讲:如何提取指定时间段的数据子集?_第1张图片
这里显示了数据集的前5行,如果我们像按第一列的时间提取一个数据子集,例如,提取2019年2月21日这一天,从15点到16点之间的数据,该如何操作呢?

解决办法

df.dtypes

time object
value object
dtype: object

时间变量timeobject, 我们要把它转换成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)

更多精彩内容请关注微信公众号“统计学习与大数据

你可能感兴趣的:(【Python小程序】第1讲:如何提取指定时间段的数据子集?)