Hallo an alle
Ich habe mal eine kleine Frage wie kann ich z.b eine
CVS Datei Zeilen weise einlesen und die spalten
und spalten werte miteinander vergleichen?
----------------------------------------------------------------------------
Date,Open,High,Low,Close,Volume,Adj Close
2010-01-08,6028.62,6053.04,5972.24,6037.61,31735200,6037.61
2010-01-07,6016.80,6037.57,5961.25,6019.36,30059600,6019.36
-----------------------------------------------------------------------------
Also ich möchte denn unteren "Close" wert einlessen, und mit dem oberen "Open" vergleichen.
Wenn der obere "Open" wert grösser ist prüffen ob der "Low" wert
gleich oder kleiner dem unterem "Close" wert ist.
Ich wäre über eure Hilfe wirklich sehr dankbar
LG ST
[/img]
cvs Datein
Hallo
Das habe ich schon das cvs file auslesen bekomme ich ja hin aber die spalten werte so wie beschrieben zu vergleichen raffe ich nicht bzw
ich finde nichts dazu?
LG ST
Das habe ich schon das cvs file auslesen bekomme ich ja hin aber die spalten werte so wie beschrieben zu vergleichen raffe ich nicht bzw
ich finde nichts dazu?
LG ST
Zuerst einmal bringen wir die Terminologie auf einen einheitlichen Stand. Unter CVS versteht man in der IT das Concurrent Versions System. Was du meinst ist CSV und das steht für Comma Separated Values - auch wenn gerne mal andere Trenner als das Komma genommen werden.sttrader hat geschrieben:Das habe ich schon das cvs file auslesen bekomme ich ja hin aber die spalten werte so wie beschrieben zu vergleichen raffe ich nicht bzw
ich finde nichts dazu?
Zu deiner Fragestellung habe ich noch eine Verständnisfrage. Hat die Datei immer nur zwei Zeilen? Wenn nicht, was ist dann für dich der "untere Close-Wert" und der "obere Open-Wert"?
Beziehst du dich eventuell einfach immer auf zwei aufeinanderfolgende Zeilen? In dem Fall benötigst du für den Vergleich natürlich die aktuelle und die vorhergehende Zeile. Dein Programmcode muss also eine Möglichkeit vorsehen, sich die Daten der letzten Zeile zu merken damit sie dann mit den Daten der aktuellen Zeile verglichen werden können.
Hallo
Nein es sind keine 2 Zeilen teilweise sind es mehr als 1000 Zeilen
diese file ist sogar 6000 Zeilen groß es muss Komplet von unten
nach oben durch Arbeiten.
LG ST
Nein es sind keine 2 Zeilen teilweise sind es mehr als 1000 Zeilen
diese file ist sogar 6000 Zeilen groß es muss Komplet von unten
nach oben durch Arbeiten.
LG ST
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Das beantwortet aber nicht die Frage, was mit den Sonderfaellen Anfang bzw Ende passieren soll.
/me hat dir ja schon verraten, wie der Algorithmus (wenn man das ueberhaupt so nennen kann) aussehen muss.
/me hat dir ja schon verraten, wie der Algorithmus (wenn man das ueberhaupt so nennen kann) aussehen muss.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Hallo Cofi
Denn unteren close wert wollte ich jeweils mit der darüber liegenden
Open wert vergleichen wenn der darüber liegene Open wert grösser ist wen ja dann schauen ob der Low wert den Vortages Close ereicht.
Das ganze in einer Schleife von unten nach oben wobei die Abbruch Bedingung das aktelle datum wäre.
LG ST
Denn unteren close wert wollte ich jeweils mit der darüber liegenden
Open wert vergleichen wenn der darüber liegene Open wert grösser ist wen ja dann schauen ob der Low wert den Vortages Close ereicht.
Das ganze in einer Schleife von unten nach oben wobei die Abbruch Bedingung das aktelle datum wäre.
LG ST
Das klingt jetzt schon nach gutem Pseudocode. Jetzt formulier das noch in Python und schon läuft es.sttrader hat geschrieben:Denn unteren close wert wollte ich jeweils mit der darüber liegenden Open wert vergleichen wenn der darüber liegene Open wert grösser ist wen ja dann schauen ob der Low wert den Vortages Close ereicht.
Das ganze in einer Schleife von unten nach oben wobei die Abbruch Bedingung das aktelle datum wäre.
Wenn du Schwierigkeiten hast, dann zeig uns deinen bisherigen Ansatz und wir schauen mal, wo wir die da unter die Arme greifen können.
Hallo /me
In Python bin ich zwar wirklich anfänger.
Das habe ich bis jetzt:
In Python bin ich zwar wirklich anfänger.
Das habe ich bis jetzt:
Code: Alles auswählen
import csv
#----------------------------------------------
# Variablen
Abruch = "0"
Close = "0"
Open = "0"
High = "0"
Low = "0"
Treffer = "0"
Verlierer = "0"
#----------------------------------------------
#Funktion
reader = csv.reader(open("table.csv", "rb"))
for row in reader:
print row
#----------------------------------------------
#Ausgabe
print"#######################################################################"
print Treffer
print Verlierer
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Du solltest den DictReader nutzen, der erspart dir schonmal die unsaeglichen Zeilen 3 - 12 (die koennte man aber auch anders vermeiden).
Die Doku zu csv ist recht spaerlich mit Beispielen, deshalb ist http://www.thehazeltree.org/pymotw/csv/index.html sehr lesenswert.
Das wichtigste des Algorithmus' hast du allerdings vergessen: Dir den letzten Wert zu merken.
Die Doku zu csv ist recht spaerlich mit Beispielen, deshalb ist http://www.thehazeltree.org/pymotw/csv/index.html sehr lesenswert.
Das wichtigste des Algorithmus' hast du allerdings vergessen: Dir den letzten Wert zu merken.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Da liegt ja mein Problem ich habe keine idee wie ich es lösen kann,cofi hat geschrieben:Du solltest den DictReader nutzen, der erspart dir schonmal die unsaeglichen Zeilen 3 - 12 (die koennte man aber auch anders vermeiden).
Die Doku zu csv ist recht spaerlich mit Beispielen, deshalb ist http://www.thehazeltree.org/pymotw/csv/index.html sehr lesenswert.
Das wichtigste des Algorithmus' hast du allerdings vergessen: Dir den letzten Wert zu merken.
da fehlt mir einfachdie Übung.
LG ST
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Achtung Pseudocode (sort of).
Da du immernoch nicht beschrieben hast, wie der Spezialfall des ersten
Durchgangs behandelt werden soll, hab ich die werte einfach mal 0 gesetzt.
Code: Alles auswählen
previous_day = {
"open" : 0,
"close" : 0
}
for line in csv:
if line["open"] < previous_day["open"]:
if line["close"] >= previous_day["close"]:
print "Hooray"
Durchgangs behandelt werden soll, hab ich die werte einfach mal 0 gesetzt.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Nur mal als Denkansatz:sttrader hat geschrieben:Code: Alles auswählen
for row in reader: print row
Code: Alles auswählen
last_row = []
for row in reader:
print last_row
print row
last_row = row
Hallo ihr alle
Das Problem habe ich nun Gelöst bekommen
es verrichtet seine Arbeit sauber und vor allem
Sau schnell
LG ST
Das Problem habe ich nun Gelöst bekommen
es verrichtet seine Arbeit sauber und vor allem
Sau schnell
LG ST
-
- User
- Beiträge: 79
- Registriert: Montag 12. Oktober 2009, 11:50
Zeig dochmal wie du es gemacht hast.