Datenauswertung

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
lastesel
User
Beiträge: 22
Registriert: Freitag 13. Juni 2008, 11:39

Donnerstag 2. Oktober 2008, 14:10

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
BlackJack

Donnerstag 2. Oktober 2008, 14:13

Wie liegen Deine Daten denn vor?
lastesel
User
Beiträge: 22
Registriert: Freitag 13. Juni 2008, 11:39

Donnerstag 2. Oktober 2008, 14:20

asl text file. man kann sie alsoi schon mit python einlesen, aber wie gehts dannw weiter?
Benutzeravatar
Craven
User
Beiträge: 223
Registriert: Dienstag 24. Januar 2006, 13:37

Donnerstag 2. Oktober 2008, 14:43

Gib doch einmal ein Beispiel für die Daten.
[code]q = 'q = %s; print q %% repr(q)'; print q % repr(q) [/code]
lastesel
User
Beiträge: 22
Registriert: Freitag 13. Juni 2008, 11:39

Donnerstag 2. Oktober 2008, 15:50

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.
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Donnerstag 2. Oktober 2008, 15:53

Da dürfte das csv-Modul für dich interessant sein.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
lastesel
User
Beiträge: 22
Registriert: Freitag 13. Juni 2008, 11:39

Donnerstag 2. Oktober 2008, 16:11

Danke schon mal, ich werds dann gleich mal ausprobieren..
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Donnerstag 2. Oktober 2008, 17:59

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.
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Donnerstag 2. Oktober 2008, 18:32

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
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

Donnerstag 2. Oktober 2008, 18:52

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
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Donnerstag 2. Oktober 2008, 18:59

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`.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
Antworten