我有几个(大约10个)以CSV格式排列的数据集。每个数据集的每一列代表运行系统的一个方面(可用内存、CPU使用率、打开的TCP连接等)。每一行包含了这些列在某一时刻的值。
这些数据集是在同一测试的不同运行中捕获的。每个数据集的行数不能保证相同(即:有些测试运行时间比其他测试长)。
我想要生成一个新的CSV文件,它表示给定时间偏移量和给定列的所有数据集的“平均”值。理想情况下,一个数据集中缺失的值将被忽略。如果必要,缺失的值可以被假定为与最后已知的值相同,或者是该行已知值的平均值。
以下是一个简化的例子:
+---------------+ +---------------+ +---------------+
| Set 1 | | Set 2 | | Average |
+---+-----+-----+ +---+-----+-----+ +---+-----+-----+
| t | A | B | | t | A | B | | t | A | B |
+---+-----+-----+ +---+-----+-----+ +---+-----+-----+
| 1 | 10 | 50 | | 1 | 12 | 48 | | 1 | 11 | 49 |
| 2 | 13 | 58 | | 2 | 7 | 60 | | 2 | 10 | 59 |
| 3 | 9 | 43 | | 3 | 17 | 51 | => | 3 | 13 | 47 |
| 4 | 14 | 61 | | 4 | 12 | 57 | | 4 | 13 | 59 |
| : | : | : | | : | : | : | | : | : | : |
| 7 | 4 | 82 | | 7 | 10 | 88 | | 7 | 7 | 86 |
+---+-----+-----+ | 8 | 15 | 92 | | 8 | 15 | 92 |
| 9 | 6 | 63 | | 9 | 6 | 63 |
+---+-----+-----+ +---+-----+-----+
我是numpy的新手,专门为了这个项目而学习它。最好的方法是什么?对于具有相同行数的数据集(我通过将较长的数据集截短来实现),我只需执行以下操作:
d_avg = sum(dsets) / float(len(dsets))
其中"dsets"是包含每个CSV文件数据的ndarrays列表。这个方法很好,但我不想丢弃长运行时间的数据。
我也可以将较短的运行时间调整为最长运行时间的长度,但所有新字段都填充了"NoneType"。之后的操作会在添加(例如)float和NoneType时出错。
有什么建议吗?