【问题标题】:How to process a dataframe with multiple measuring time-columns and multiple measured variables, respectively如何分别处理具有多个测量时间列和多个测量变量的数据帧
【发布时间】:2019-08-06 11:33:26
【问题描述】:

我是 Python 新手,我正在处理 Pandas 中机器学习的数据预处理问题。 我要预处理的数据由 n 个测量变量组成,其中每个变量都有自己的“时间戳”。此外,每个测量变量的列长度不同(例如,变量 a 测量 50 次,变量 b 测量 1000 次)。 对于机器学习,我需要对数据进行插值。我希望每个测量变量的时间戳相同。如何有效地对这样的数据帧进行上采样和下采样?

首先,我成功地从对应的.dat文件中导入了数据。

然后,我将数据帧拆分为每个时间点和测量值的数据帧,以删除所有 nan-Values。

现在,我遇到了如何对这些数据帧进行上采样/下采样的问题。 时间向量始终以 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..."

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    现在我解决了将进程时间解析为日期时间对象的问题,如下所示:

    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)
    

    【讨论】:

      猜你喜欢
      • 2021-05-10
      • 1970-01-01
      • 2017-11-01
      • 2023-03-14
      • 2022-10-24
      • 2021-11-11
      • 2019-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多