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
Mittelwert aus Txt berechnen
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:
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.
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()
Wenn Du darauf Einfluß hast, solltest Du das dringend anpassen.