我原本的时间序列格式是excel表记录的,每一行是一条时间序列,时间序列不等长。
要把excel表数据读取出来之后转换成extract_features需要的格式。
1.读取excel表数据
python
import pandas as pd
import numpy as np
from tsfresh import extract_features
mdata = pd.read_excel('文件位置',header = None)
"读取出来的dataframe中每一行是一个时间序列,不满足要求,要进行行列转置"
transposed = mdata.transpose()
2.把dataframe数据格式转换成extract_features需要的格式
python
def convert_to_extract_df(dataframe:pd.DataFrame):
"""把dataframe格式转变为extract_features需要的格式"""
covert_df = pd.DataFrame(columns=['value', 'id'])
for _col, col_series in dataframe.iteritems():
col_ser = col_series.dropna()#把nan值去掉
_col_df = pd.DataFrame(data=[col_ser.values]).T
_col_df.columns = ['value']
_col_df['id'] = _col
covert_df = pd.concat([covert_df, _col_df], axis=0, ignore_index=True)
covert_df['value'] = covert_df['value'].astype("float")
return covert_df
3.接下来就可以直接调用extract_features函数了。
python
cdf = convert_to_extract_df(transposed)
ext_feature = extract_features(cdf, column_id="id")