Seite 1 von 1

Liste in csv schreiben, Spaltentrennung funktioniert nicht

Verfasst: Dienstag 13. August 2013, 11:10
von Marleb
Hallo, ich habe eine Liste (Pandas Dataframe) in der immer die Position und der Wert gelistet sind.
0 230
1 240
.
.
.
20 270

Beim schreiben in eine csv bekomme ich die Auftrennung von Wert und Position nicht hin. Es wird immer als zusammengehörig gelesen. Hat jemand eine Idee?

import csv
import pandas as pd
import numpy as np
from scipy import *
from numpy import *
import matplotlib.pyplot as plt

dF = pd.read_csv("Example.csv", sep=';') #schreibt csv daten in pandas dataframe(dF)

xresult = [] #kreiert leere liste
xresult = dF.x #schreibt Daten aus csv in leere liste
print xresult #zeigt inhalt der liste in python

setmax = 285
setmin = 210

for i in range(len(xresult)):
if xresult > setmax:
xresult= 'NaN'
elif xresult < setmin:
xresult = 'NaN'
print xresult

l = len(xresult) #bestimmt die Anzahl der Werte
print "Datenanzahl:",l
b=xresult.count()
print "Anzahl vorhandener Werte:",b
e = l-b
print "Anzahl fehlender Werte:",e

xresult = dF.x.fillna(method = 'ffill') #bfill=backwardfill, ffill is filling the list with value before if na(=NaN)

xresult = [abs(xresult)]#bildet den Betrag der Zahl

mean=np.mean(xresult)#berechnet den Mittelwert
print "Mittelwert:",mean
std=(np.std(xresult))#berechnet Standardabweichung
print "Standardabweichung:",std

max = mean*1.15#berechnet oberen Toleranzwert
min = mean*0.85#berechnet unteren Toleranzwert
print "Obere Toleranz:",max
print "Untere Toleranz:",min

print xresult

out = csv.writer(open("Ausgabe.csv","w"), delimiter='\t',quotechar='"', quoting=csv.QUOTE_MINIMAL)
for row in xresult:
out.writerow(row)

Re: Liste in csv schreiben, Spaltentrennung funktioniert nic

Verfasst: Dienstag 13. August 2013, 11:38
von Sirius3
Du hast immer noch nicht die code-Tags im Forum gefunden???
90% Deines Codes sind für die Frage irrelevant.
Trotzdem ein Hinweis:
Was gibt denn Dein "print xresults" aus? Ist es ein Objekt, das aus Zeilen und Zellen besteht?

Re: Liste in csv schreiben, Spaltentrennung funktioniert nic

Verfasst: Dienstag 13. August 2013, 13:07
von Zennoe
Ich weiß nicht wieso du versucht die CSV-Datei mit pandas auszulesen.
Mach es am besten so:

Code: Alles auswählen

import csv
reader = csv.reader(open("datei.csv"), delimiter=";")
Die Liste könntest du so ausgeben (an dieser Stelle sollte dein Teil folgen):

Code: Alles auswählen

for row in reader:
    print(row)
Die Ausgabe wäre diese:

Code: Alles auswählen

['Inhalt1', 'ganzLangerInhalt', 'kurz']
['Inhalt2', 'nochmehrInhalt', 'tiny']
...
Also du weißt worauf es hinaus läuft. Vielleicht hilft dir das ja.

Re: Liste in csv schreiben, Spaltentrennung funktioniert nic

Verfasst: Dienstag 13. August 2013, 13:20
von Marleb
Mit Pandas weil es mit anderen Befehlen nicht funktionieren wollte.

@sirius3

Man muss anscheinend die Werte in string umwandeln, aber es klappt noch immer nicht

print '\n'.join(map(str, xresult)) #converts each item in the list to a string, and then joins them

out = csv.writer(open("Ausgabe_Example.csv","w"), delimiter='\t',quotechar='"', quoting=csv.QUOTE_MINIMAL)
for row in xresult:
out.writerow('{}\n'.format(row))

Re: Liste in csv schreiben, Spaltentrennung funktioniert nic

Verfasst: Dienstag 13. August 2013, 13:35
von Sirius3
Nein Marleb, csv kann sehr gut mit Zahlen umgehen. Um Dir aber sinnvoll helfen zu können, wäre ein Minimalbeispiel nötig.
Z.B.:

Code: Alles auswählen

xresult = [[0, 0.213], [1, 0.321]]
with open("ausgabe.csv", "w") as out_csv:
    out = csv.writer(out_csv)
    for row in xresult:
        out.writerow(row)
Jetzt erwarte ich dies und bekomme aber das, oder es kommt der Fehler xy.

Re: Liste in csv schreiben, Spaltentrennung funktioniert nic

Verfasst: Dienstag 13. August 2013, 13:46
von Marleb
Voher hatte ich eine Trennung der Werte durch Leerzeilen, durch deinen Code durch Komma

Re: Liste in csv schreiben, Spaltentrennung funktioniert nic

Verfasst: Dienstag 13. August 2013, 14:41
von cofi
Uhm ... Comma-Seperated-Values-Dateien sind nunmal (standardmaessig) durch Kommas getrennt.
Fuer Leerzeilen kann man den Begrenzer aendern:

Code: Alles auswählen

xresult = [[0, 0.213], [1, 0.321]]
with open("ausgabe.csv", "w") as out_csv:
    out = csv.writer(out_csv, delimiter="\n\n")
    for row in xresult:
        out.writerow(row)

Re: Liste in csv schreiben, Spaltentrennung funktioniert nic

Verfasst: Dienstag 13. August 2013, 15:48
von Marleb
Dankeschön!