我是Python的新手,正在处理熊猫机器学习中的数据预处理问题。
我要预处理的数据由n个测量的变量组成,其中每个变量都有自己的“时间戳”。此外,每个测量变量的列长都不同(例如,变量a为50次测量,变量b为1000次测量)。
对于机器学习,我需要对数据进行插值。我希望每个测量变量的时间戳都相同。如何有效地对这样的数据帧进行升采样和降采样?
首先,我成功地从相应的.dat文件导入了数据。
然后,我将每个时间点和测量值组合的数据帧拆分为一个数据帧,以删除所有nan值。
现在,我陷入了如何对这些数据帧进行上采样/下采样的难题。
总以hh:mm:ss的总处理时间提供时间向量。不幸的是,我似乎无法在此处使用pandas resample-function,因为数据中给出的时间点不是DateTime格式。而且,处理时间本身对于机器学习任务将非常感兴趣。所以我不想将处理时间更改为日期时间。
也许您知道一种简单有效的方法来处理我的数据?
对于机器学习任务,将要处理一些GB的数据,因此对我来说,有效的方法非常有趣。
'Import data'
df = pd.read_csv('FILE', sep="\t",
names=['t_a','a','t_b','b','t_c','c',
't_d','d','t_e','e','t_f','f',
't_g','g','t_h','h','t_i','i'],
parse_dates=['t_a','t_b','t_c',
't_d','t_e','t_f',
't_g','t_h','t_i'],
decimal = ',',
header=1)
"Split df into touple of respective measuring time-point and measured
value"
"Then, Drop all nan-values"
dfs=np.split(df,[2],axis=1)
a=dfs[0]
a=a.dropna()
dfs=np.split(dfs[1],[2],axis=1)
b=dfs[0]
b=b.dropna()
dfs=np.split(dfs[1],[2],axis=1)
c=dfs[0]
c=c.dropna()
"And so on..."
最佳答案
现在,我解决了将处理时间解析为Date-Time对象的问题,如下所示:
def parse_processtime(df, df_columns):
for col in df_columns:
if df[col].dtype == object:
df[col] = pd.to_timedelta(df[col], errors='ignore')
df = pd.read_csv('FILE', sep="\t",
names=['t_a','a','t_b','b','t_c','c',
't_d','d','t_e','e','t_f','f',
't_g','g','t_h','h','t_i','i'],
parse_dates=['t_a','t_b','t_c',
't_d','t_e','t_f',
't_g','t_h','t_i'],
infer_datetime_format=True,
decimal = ',',
header=1)
## Parse process-time
parse_processtime(df, df.columns)