Ich habe mehrere (10 oder so) CSV-formatierte Datensätze. Jede Spalte eines Datensatzes repräsentiert einen Aspekt eines laufenden Systems (verfügbarer RAM, CPU-Auslastung, offene TCP-Verbindungen usw.). Jede Zeile enthält die Werte für diese Spalten zu einem bestimmten Zeitpunkt.Mit Numpy, um den Durchschnittswert über Datensätze zu finden, mit einigen fehlenden Daten
Die Datensätze wurden während einzelner Durchläufe des gleichen Tests erfasst. Es ist nicht garantiert, dass die Anzahl der Zeilen in jedem Datensatz gleich ist (d. H. Einige Tests liefen länger als andere).
Ich möchte eine neue CSV-Datei erstellen, die den "durchschnittlichen" Wert für alle Datensätze für einen bestimmten Zeitversatz und eine bestimmte Spalte darstellt. Im Idealfall würden in einem Datensatz fehlende Werte ignoriert. Falls erforderlich, kann jedoch angenommen werden, dass fehlende Werte mit dem letzten bekannten Wert oder dem Durchschnitt bekannter Werte für diese Zeile übereinstimmen.
Ein vereinfachtes Beispiel:
+---------------+ +---------------+ +---------------+
| 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 |
+---+-----+-----+ +---+-----+-----+
Ich bin neu in numpy, es hat für dieses Projekt speziell aufgegriffen. Was ist der beste Weg, dies zu tun? Für Datensätze mit der gleichen Anzahl von Zeilen (die ich gezwungen habe durch längere Daten Hacken setzen kurz), das tue ich gerade:
d_avg = sum(dsets)/float(len(dsets))
wo „dsets“ ist eine Liste des ndarrays die Daten von jeweils CSV-Datei. Das funktioniert gut, aber ich möchte die Daten der längeren Läufe nicht verwerfen.
Ich kann auch die kürzeren Läufe auf die längste Länge ändern, aber alle neuen Felder sind mit "NoneType" gefüllt. Spätere Operationen dann Fehler beim Hinzufügen (zum Beispiel) eines Floats und eines NoneType.
Irgendwelche Vorschläge?
Ich denke, der Durchschnitt für Zeile 7 ist falsch –
Ich wusste, ich würde eine dieser Zeilen verpassen! Aktualisiert. – Lemur