Mittelwert aus Txt berechnen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
hoell
User
Beiträge: 1
Registriert: Dienstag 15. März 2022, 09:56

Hallo,
ich habe erst neu mit Python angefangen, bisher habe ich einige Zeit mit c++ Programmiert.
Es geht um folgende Aufgabe zur Messdaten Analyse bei der ich nicht weiterkomme, die selbe Aufgabe habe ich bereits in c++ gelöst, aber da ich sowieso Python lernen wollte versuche ich nun die Aufgabe auch mit Python zu lösen.

Ich möchte aus einem Orden in dem sich Txt Dateien mit Messwerten befinden(Standardmäßig 10 oder 5 stück, wenn es dynamisch gehen würde natürlich das) den Mittelwert bezogen auf die Position des "ImpressedCurrent[A]" bestimmen.

Meine Idee war es die Daten jeder Txt-Datei in eine Liste einzulesen. Somit im Fall von 10 Txt-Dateien dann 10 Listen.

vereinfacht:

Liste1 : Position Current
1 5.3
2 5.32

Liste2 : Position Current
1 5.2
2 6.1
...

(mit 2 Listen)
Liste Mittelwert: Position Current
1 5.25
2 5.71

Vom Aufbau sind die Textdateien gleich:
Timestamp;Force[N];Position[mm];ImpressedCurrent[A];TempMotor[°C];TempAir[°C];
2022-3-10 0:7:40.490;27.7;9.0;0.015;33.7;0.0;
2022-3-10 0:7:40.492;27.7;9.0;0.015;33.7;0.0;
.....
bis kanpp 6000 Zeilen pro Datei

Bsp. Name einer Txt-Datei :
x36sWH5_2022-3-10_0_7_40_490

Ziel ist es dann am Ende die Mittelwerte zu plotten( ab hier ist es dann kann Problem mehr)


Gibt es eine Möglichkeit das alle Txt-Dateien in einem Ordner ausgelesen werden unabhängig davon das man den Namen angibt da dieser ja immer anders ist?
Gibt es eine einfachere Variante diese Aufgabe zu bewältigen?

Ich wäre über jeden Ansatz sehr dankbar.

Mit freundlichen grüßen

hoell
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Deine eigentliche Frage ist es also, wie Du alle Dateien in einem Ordner auflisten kannst.
Dazu gibt es das pathlib-Modul, insbesondere pathlib.Path.iterdir, bzw. pathlib.Path.glob, falls die Dateien ein bestimmtes Pattern haben.
Ich vermute mal, Du hast keine Text-Dateien sondern csv-Dateien, und diese haben dann hoffentlich die Endung .csv.
Wenn ich es richtig verstanden habe, suchst Du dann soetwas:

Code: Alles auswählen

from pathlib import Path
import pandas as pd

def main():
    path = Path("/pfad/zu/den/dateien")
    data = pd.concat([
        pd.read_csv(filename)
        for filename in path.glob("*.csv")
    ])
    ...

if __name__ == "__main__":
    main()
Wichtig zu wissen ist, dass die Dateinamen in beliebiger Reihenfolge gefunden werden könnten. Es ist also noch wichtig, die Daten in irgendeiner Form zu sortieren. Da der Dateiname leider beim Datum keine führenden 0en hat, taugt er nicht direkt als Sortierkriterium.
Wenn Du darauf Einfluß hast, solltest Du das dringend anpassen.
Antworten