python滑动窗口处理时序数据

使用库sklearn, pandas, numpy

读取数据

读取日期格式的数据,转化为DateFrame,如
2019-01-02 00:00:01.001

import pandas as pd
df = pd.read_csv(file_path,#文件地址
			header=0,#0为手动输入表头
			names=['date', 'value'],#表头名称
			index_col='date', #设置'date'列为索引
			parse_dates=['date'],#对'date'列进行转化为DateFrame
			date_parser=lambda d: pd.datetime.strptime(d, '%Y-%d-%m %H:%M%S.%f')#转化方法
			)

滑动窗口

在使用rolling函数时,通常需要对数据按时间顺序进行排序。需要强调的是,使用offset作为窗口长度时,必须保证时间是升序的dateframe,否则会报错。

df.sort_index(True)#对索引做排序
r = df.rolling(window='1d')#使用1天作为窗口长度,必须是dateframe格式的数据才可以使用offset;否则必须用数据点个数
features = pd.concat([r.min(), r.max(),r.mean(), r.median()], axis=1) # 提取统计特征
features = features.dropna(axis=0)
features = features.to_numpy()

聚类

import sklearn.cluster as clt
kmeans = clt.KMeans(n_clusters=k).fit(features)

其他处理

有时我们还需要对数据进行其他的处理,比如获取某一天、月、年或者一段时刻的数据,或者对特定的数据做处理。

# 获取一段时刻的数据
target_df = df[(df.index > starttime & df.index < endtime)]

#获取某一天的数据
for d_i in pd.date_range(start='2014-1-1', end='2014-1-31', freq='1d'):
	target_d = df[d_i.strftime('%Y-%m-%d')] #strftime转化为字符,进行索引
	#其他操作

#处理特定数据
#获取x大于10或y大于100的数据
new_df = dt[df.apply(lambda d: d['x'] >= 10 or d['y'] > 100, axis=1)]

你可能感兴趣的:(笔记,python,大数据)