Hallo Liebe Community, Meine Ausgangslage ist, dass ich mehrere verschiedene Messdateien habe (CSV-Dateien mit 300000 Zeilen und 12 Spalten) und ich versuche diese Auszuwerten und grafisch darzustellen. Zurzeit mache ich dies in Excel, wobei mit Hilf einer VBA die Daten automatisch in eine Vorlagedatei mit den nötigen Umrechnungsschritten (Parametrierung) und die richtigen Graphen eingelesen werden. Das Problem ist nur, dass dieser Vorgang sehr langsam ist und auch mein Rechner mit Excel sehr zu kämpfen hat (habe auch schon auf 16GB RAM aufgestockt). Jetzt bin ich auf der Suche nach einem kostenlosen Programm, dass mit genau diese Datenauswertung vereinfacht und stabil mit meinen ~3.6 mio Messwerten klarkommt. Deswegen wollte ich fragen, ob jemand von euch ein derartiges Programm kennt und empfehlen kann. Es sollte die Daten nach einem kurzen Umrechnungsschritt (Messdaten * Kalibrierungswert) darstellen können und vorzugsweise kurze Ladezeiten besitzen. Ich weiß, dass das viel verlang ist für ein kostenloses Programm, ich hoffe jedoch trotzdem, dass mir jemand etwas Passendes weiterempfehlen kann. Im Anhang habe ich noch eine Beispieldatei angehängt. Die Datei hat aber weniger Zeilen, da sie sonst zu groß wäre Gruß Matthias
Hallo Matthias, für einfache Berechnungen würde ich mal GnuPlot probieren - oder GNU R wenn Du die Auswertung tiefer programmieren willst? VG (=
Python mit numpy scipy und Pandas zum Laden der csv sind hier das Mittel meiner Wahl.
sascha schrieb: > GnuPlot Das hätte ich Dir auch empfohlen, wenn es nur um die grafische Darstellung geht. sascha schrieb: > GNU R Für Berechnung mit statistischen Methoden ist das gut. Auch noch möglich wäre die Verwendung mit Octave oder wxmaxima, wenn viel berechnet werden soll.
Geht wunderbar mit Python. Das ist genau für sowas ein schönes einfaches Werkzeug. Code im Anhang. Bei Fragen fragen (-:
Vielen Dank erstmal für die Antworten. Ich werde mir das mit Numpy einmal anschauen und versuchen. Ebenfalls werde ich mir das mit Grana auch anschauen und schauen, was für mich die bessere Lösung ist. Ich habe jedoch 2 Fragen: 1)Ist es umständlich ein Python Programm auf Windows laufen zu lassen. 2)Wie sieht es Performancetechnisch aus? Also wie lange benötigt man in etwa für die Darstellung der Graphen? Gruß Matthias
Matthias P. schrieb: > 1)Ist es umständlich ein Python Programm auf Windows laufen zu lassen. Nein. Einmal Python installieren und dann das Programm starten mit python PROGRAMMNAME.py Matthias P. schrieb: > 2)Wie sieht es Performancetechnisch aus? Also wie lange benötigt man in > etwa für die Darstellung der Graphen? Hier auf meinem Laptop dauert Einlesen und Plotten, also das komplette Programm ca. eine Sekunde.
> Nein. Einmal Python installieren und dann das Programm starten
Soso.
1 | Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win32 |
2 | Type "help", "copyright", "credits" or "license" for more information. |
3 | >>> from pylab import * |
4 | Traceback (most recent call last): |
5 | File "<stdin>", line 1, in <module> |
6 | ImportError: No module named pylab |
7 | >>> import numpy |
8 | Traceback (most recent call last): |
9 | File "<stdin>", line 1, in <module> |
10 | ImportError: No module named numpy |
Mit Matlab geht das deutlich einfacher.
Jo, Matlab kostet aber auch deutlich mehr. Dein Consolen Output zeigt nur, dass du vermutlich noch nie Python verwendet hast. Bei Python ist nicht alles dabei, pylab, numpy und auch datetime sind nicht dabei. Das muss man sich alsp nachinstallieren über den Paketmanager pip. pip install pylab istalliert das Modul pylab. Der Vorteil mit den Modulen ist, dass Python selbst recht klein sein kann und dass es viele Module aus vielen Quellen gibt die man sich dazuladen kann nach Bedarf. Mittlerweile ist Python so populär, dass es für so ziemlich jedes Problem ein Modul gibt mit einer Funktion die das löst. Im aktuellen Fall: Eine Zeichenkette als Datum mit Zeit interpretieren lassen? Geht mit datetime. Eine Liste mit mehreren Spalten in ein Array speichern und transponieren? Geht mit numpy. Ein Array plotten? Geht mit pylab total einfach. In der Tat, Matlab kann das auch, kostet aber leider recht viel.
Für python jupyter nehmen, ansonsten bist du auf dem.richtigen weg. Der ist anfangs etwas steinig, aber bald kennst du dich in deinem Viertel aus und willst da nicht mehr weg 😃
> du vermutlich noch nie Python verwendet hast. Hab ich schon. Sogar auf unterschiedlichsten Systemen. Aber: > Einmal Python installieren und dann das Programm starten mit ist wohl doch zu vereinfacht dargestellt.
MatlabRegelt! schrieb: > Aber: >> Einmal Python installieren und dann das Programm starten mit > ist wohl doch zu vereinfacht dargestellt. Ach gottchen, das ist aber echt anstrengend drei weitere kurze Befehle einzutippen. Da ist deine Matlabinstallation um längen dicker und braucht auch deutlich mehr Zeit. Und dann muss auch noch eine Lizenz erworben und installiert werden ... Ja, bei Python muss man manchmal Module nachinstallieren, geht einfach aber muss man machen. Hätte ich drauf hinweisen können.
ich bin auch absoluter Python-Fan geworden: übersichtlicher Code, schnell, wahnsinnig viele Funktionen (auch wenn diese teilweise nachgeladen werden müssen, aber da lädt man halt nur was man braucht), ich sehe es auch als Vorteil an, dass es interpretiert wird, da ist das debugging einfacher, compliiert werden kann es übrigens auch. Ich mag allerdings auch Gnuplot, in wenigen Zeilen hat man eine Grafik und es ist sauschnell: gg. Excel vielleicht Faktor 100 oder noch besser: ich habe hier eine Tabelle mit 8 Spalten und fast 9000 Zeilen, die Grafik mit 5 Kurven dauert weniger als 1 Sekunde
Gustl B. schrieb: > auswerten.py Numpy hat mit loadtxt eine ziemlich mächtige Funktion zum Einlesen von Textdateien:
1 | measurings = np.loadtxt( |
2 | '20200810_meas_1356.csv', # Dateiname |
3 | |
4 | delimiter = ';', # Spaltentrennzeichen |
5 | |
6 | dtype = object, # Elementdatentyp, hier object, weil die |
7 | # Spalten verschiedene Datentypen haben |
8 | |
9 | converters = { # Konvertierungsfunktionen für die |
10 | 0: np.datetime64, # einzelnen Spalten |
11 | 1: np.float, |
12 | 2: np.float, |
13 | 3: np.float, |
14 | 4: np.datetime64 |
15 | } |
16 | ) |
Das ist nicht nur übersichtlicher, sondern vermutlich auch performanter als das Zusammenbauen einer Python-Liste in einer For-Schleife.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.