【问题标题】:Import multiple multivariate time-series csv-files导入多个多元时间序列 csv 文件
【发布时间】:2021-05-15 04:57:02
【问题描述】:

我想用 LSTM 进行异常检测。但是,我还没有使用时间序列。我想一步一步地工作。

我的具体问题首先是我必须如何准备我的数据以便以后能够使用它。我有几个 csv 文件。在每个 csv 文件中,记录机器的温度和压力大约 1 到 2 分钟。采样率约为 200 毫秒,但变化很小。

例如:

Machine_1_Cycle_1.csv:

time temp pres
06:34:20,343      98          3
06:34:20,541      99          3.1
06:34:20,749      100         3.3
06:34:20,942      110         3.6
06:34:21,205      111         3.8

Machine_2_Cycle_1.csv:

time temp pres
07:12:15,262      87           2.8
07:12:15,481      88           3.0
07:12:15,707      89           3.4

Machine_2_cycle_2.csv:

time temp temp_2 pres
12:59:22,547      85     77      3.2
12:59:22,746      87     73      3.5
12:59:22,948      89     71      3.7

您可以看到,时间戳并不是完全相隔 200 毫秒。此外,每个文件的数据点数量各不相同。有时文件中还有一些不需要的附加功能。

Q1:我想绘制曲线,例如温度,在一张图表中。我是否必须将时间戳转换为相对时间,以便所有文件都从 0 开始?

Q2:如何导入文件以便以后使用?我是否必须创建一个列表,其中所有机器的所有循环都连接起来?还是我制作一个多维数据框? (记住:文件有不同的行号)

Q3:我是否必须创建两个新列来写机器编号和循环编号?例如:

Machine_2_cycle_2.csv:

time temp pres machine_nr cycle_nr
12:59:22,547      85           3.2          2             2
12:59:22,746      87           3.5          2             2
12:59:22,948      89           3.7          2             2

或者我以后如何过滤特定机器和特定周期?

【问题讨论】:

    标签: python dataframe csv time-series


    【解决方案1】:

    您似乎使用的是制表符分隔的文件格式,或者您从 Excel 中复制粘贴了值。

    如果您使用逗号分隔的文件格式,您的文件应如下所示:

    time,temp,pres
    "07:12:15,262",87,2.8
    "07:12:15,481",88,3.0
    "07:12:15,707",89,3.4
    

    在这种情况下,您可以使用 Python 的原生 csv 模块将信息解析为列表或字典。例如:

    import csv
    
    # list csv files to ingest
    files = [
        'Machine_1_Cycle_1.csv',
        'Machine_1_Cycle_2.csv',
        'Machine_2_Cycle_1.csv',
        'Machine_2_Cycle_2.csv',
    ]
    
    # create list to fill with all data
    data = []
    
    for f in files:
    
        # get machine & cycle numbers
        # requires proper naming convention
        machine = f.split('_')[1]
        cycle = f.split('_')[3][:-4] 
    
        with open(f, 'r', newline='') as csvfile:
            reader = csv.reader(csvfile, delimiter=',', quotechar='"')
            
            # skip csv header
            next(reader)
    
            for row in reader:
                row.append(machine)
                row.append(cycle)
                data.append(row)
    

    请注意,所有行都表示为字符串列表。您可以在 for 循环中设置所需的数据类型,或者稍后将数据用于可视化。

    【讨论】:

      猜你喜欢
      • 2021-09-18
      • 2015-05-03
      • 2010-10-05
      • 2018-11-22
      • 1970-01-01
      • 1970-01-01
      • 2018-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多