我有一个以下格式的CSV文件,我试图与GCP dataprep争论。
Timestamp Tag Value
2018-05-01 09:00:00 Temperature 40.1
2018-05-01 09:00:00 Humidity 80
2018-05-01 09:05:00 Temperature 40.2
2018-05-01 09:05:00 Humidity 80
2018-05-01 09:10:00 Temperature 40.0
2018-05-01 09:10:00 Humidity 82
数据以5分钟为间隔延长2周。 我想改变它,使得每隔10分钟,我显示前10分钟的平均值(或最小值/最大值/中值值)并转动它,以便我得到的最终结果如下:
Timestamp Temperature Humidity
2018-05-01 09:10:00 40.1 80.06
基本上,09:10的值是09:00,09:05和09:10的平均值。
09:25的价值是09:15,09:20,09:25的平均值。
我尝试了窗口函数和聚合,但似乎无法使其工作。
感谢您的投入!
答案 0 :(得分:0)
我将从每行的格式重新格式化数据开始:
Timestamp Temperature Humidity
2018-05-01 09:00:00 40.1 80
2018-05-01 09:05:00 40.2 80
2018-05-01 09:10:00 40 82
2018-05-01 09:15:00 41 81
2018-05-01 09:20:00 40.8 81
2018-05-01 09:25:00 40.2 84
这将使数据大小减少一半,并减少正在使用的存储空间量。您可以在Dataprep中使用“将值转换为列” 函数。这将为温度创建一个列,为湿度创建一个列。
一旦采用这种格式,您就可以使用窗口函数ROLLINGAVERAGE来计算平均值。通过设置以下参数,使函数计算在其前面的两行的平均值:
rollingaverage(Temperature, 2, 0)
第一个参数是列名,第二个参数是前面的行,最后一个参数是后面的行的数目,在这些行上计算平均值。对“湿度”列重复以上功能。结果应类似于以下内容:
接下来,在过滤器行选项下,使用“固定间隔的行数” 功能,使第三行从第三个条目开始。设置参数如下:
删除两个原始的“温度和湿度”行,您将获得以下内容:
Timestamp Temperature Humidity
2018-05-01 09:10:00 40.1 80.67
2018-05-01 09:25:00 41 82