Programm zur Datenauswertung gesucht

OP #6508806
Lesenswert?

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
Angehängte Dateien:
OP #6509073
Lesenswert?

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
#6509083
Lesenswert?

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.
Gast #6509316
Lesenswert?

> 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.
#6509325
Lesenswert?

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.
Gast #6509509
Lesenswert?

> 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.
#6509521
Lesenswert?

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.
Gast #6509538
Lesenswert?

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
Moderator #6509616
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren