Seite 1 von 1

Datenauswertung

Verfasst: Donnerstag 2. Oktober 2008, 14:10
von lastesel
Hallo,
ich bin ein Pythonanfänger und habe folgendes Problem:
Ich habe eine Große Datenmenge, die von Messsensoren Stammt und in Spalten aufgeteilt ist.

Jetzt will ich die Sachen auswerten, mit Python, klar.
Problem ist das es nicht wirklich Sinn macht alles selber einzulesen und dann so umzuformen das ich die richtigen Ergebnisse bekomme.
Meine Idee ist das ganze mit Pytables zu machen, das erscheint mir relativ Sinnig, da man einlne Spalten def. kann und dann die Daten zu diesen Einlesen (und dann auch so späße machen kann wie Mittelwert bilden und so was). Jetzt kommt mein Problem. Ich habe keine Anhnung wie ich die Daten einlesen kann. In den Tutorials wirden immer nur Tabellen definiert und die Werden dann mit eichfachen, erst im Programm erzeugten Daten gefüllt.
Wenn ihr mir hier weiterhelfen könntet wäre es toll.
Vieleicht wisst ihr ja auch ein Skripp/Tutorial das sich mit genau diesem Problem beschäftigt.
Danke schon mal

Verfasst: Donnerstag 2. Oktober 2008, 14:13
von BlackJack
Wie liegen Deine Daten denn vor?

Verfasst: Donnerstag 2. Oktober 2008, 14:20
von lastesel
asl text file. man kann sie alsoi schon mit python einlesen, aber wie gehts dannw weiter?

Verfasst: Donnerstag 2. Oktober 2008, 14:43
von Craven
Gib doch einmal ein Beispiel für die Daten.

Verfasst: Donnerstag 2. Oktober 2008, 15:50
von lastesel
YYYYMMDD;Uhrzeit;ta_w;Ta (°C);Tf_w;Tf (°C);v (m/s);WR (°);Q (W/m²);N (mm);Vp (hPa);VPmax (hPa);RH (%);Pa (hPa);Vmax (m/s);Bat
01.05.2008;00:10:00;1.04;10.2;1.03;6.7;3.4;162;0;0;7.5;12.5;60;968;4.01;14.3
01.05.2008;00:20:00;1.04;10.3;1.03;6.7;3.9;160;0;0;7.4;12.5;59;968;4.97;14.3
01.05.2008;00:30:00;1.04;10.3;1.03;6.8;4.2;163;0;0;7.5;12.5;60;968.1;5.37;14.3
01.05.2008;00:40:00;1.04;10.1;1.03;6.7;5.1;167;0;0;7.5;12.4;61;968.2;6.04;14.3
01.05.2008;00:50:00;1.04;10.3;1.03;6.6;4.4;182;0;0;7.3;12.5;58;968.3;5.97;14.3
01.05.2008;01:00:00;1.04;10.4;1.03;6.6;4.1;181;0;0;7.2;12.6;57;968.3;4.58;14.3

So könnten die Daten beispielsweise aussehen.

Verfasst: Donnerstag 2. Oktober 2008, 15:53
von Trundle
Da dürfte das csv-Modul für dich interessant sein.

Verfasst: Donnerstag 2. Oktober 2008, 16:11
von lastesel
Danke schon mal, ich werds dann gleich mal ausprobieren..

Verfasst: Donnerstag 2. Oktober 2008, 17:59
von numerix
In konkreten Fall dürfte auch ein einfaches

Code: Alles auswählen

values = line.split(";")
genügen, um die einzelnen Zeilen in eine Liste (von Strings) umzuwandeln.
Je nach Datentyp muss dann noch eine entsprechende Typumwandlung vorgenommen werden.

Verfasst: Donnerstag 2. Oktober 2008, 18:32
von sea-live
wenn du die daten in dem textfile hast kanst du sie so einlesen

Code: Alles auswählen

# -*- coding: utf8 -*-

import csv

# Einlesen der daten ("," ist bei csv der Default-Delimiter)
content = csv.reader(open("daten.txt", 'r'), delimiter=';')
# In der ersten Zeile stehen die Spaltennamen, die speichern wir uns
keys = content.next()
data = []
for line in content:
  # Nun hängen wir die restlichen Zeilen an unsere Liste an und
  # versehen jeden Spalteneintrag mit dem entsprechenden Namen
  # ( organisiert als dictionary )
  data.append(dict(zip(keys, line)))

print data

Verfasst: Donnerstag 2. Oktober 2008, 18:52
von name
sea-live hat geschrieben:wenn du die daten in dem textfile hast kanst du sie so einlesen

Code: Alles auswählen

# -*- coding: utf8 -*-

import csv

# Einlesen der daten ("," ist bei csv der Default-Delimiter)
content = csv.reader(open("daten.txt", 'r'), delimiter=';')
# In der ersten Zeile stehen die Spaltennamen, die speichern wir uns
keys = content.next()
data = []
for line in content:
  # Nun hängen wir die restlichen Zeilen an unsere Liste an und
  # versehen jeden Spalteneintrag mit dem entsprechenden Namen
  # ( organisiert als dictionary )
  data.append(dict(zip(keys, line)))

print data
Ich weiss zwar nicht ob sein code funktioniert, so ist er aber sicherlich eleganter.

Code: Alles auswählen

import csv

# Einlesen der daten ("," ist bei csv der Default-Delimiter)
content = csv.reader(open("daten.txt", 'r'), delimiter=';')
# In der ersten Zeile stehen die Spaltennamen, die speichern wir uns
keys = content.next()
data = [dict(zip(keys, line)) for line in content]

print data

Verfasst: Donnerstag 2. Oktober 2008, 18:59
von Trundle
name hat geschrieben:Ich weiss zwar nicht ob sein code funktioniert, so ist er aber sicherlich eleganter.
Oder man benutzt einfach den bereits existierenden `csv.DictReader`.