Ich möchte mir ein Verständnis für die Daten eines csv files entwickeln. Dazu verwende ich die Methoden df.info(), df.describe() (Funktionen von Pandas) etc.
Leider habe ich das Problem, dass die numerischen Werte des csv files nicht als solches erkannt werden.
Ich glaube, dass es an dem Format der Daten liegt.
Dezimalzahlen werden mit einem Punkt getrennt (z.B. 0.123 oder 42.245 oder 342.12939).
In der selben Datei wird der Punkt aber auch verwendet um die Tausender deutlich zu machen (z.B. 123.432.423.302).
Was ich richtig komisch finde, da man dadurch nicht wirklich erkennen kann wann die Dezimalzahlen beginnen (Man kann dadurch 1000,999 (= Tausend komma neunhundertneunundneunzig) und 1000999 (=Eine Millionen neunhundertneunundneunzig) nicht unterscheiden beide zahlen würde man mit 1.000.999 darstellen ---> seeeeeehr komisch)
Das Problem ist aber auch, dass Pandas die Zahlen über 999 nicht als numerische Werte sondern als Strings erkennt. Damit werden diese Zahlen von der oben genannten Funktionen df.describe ignoriert
Kann mir bitte jemand helfen?
Vielen Dank im Voraus.
Probleme mit den dezimalzahl daten des csv files
- __blackjack__
- User
- Beiträge: 14078
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@nichtSoGuter: Du musst Dir als erstes mal klar machen was in der CSV-Datei *tatsächlich* steht. Das ist ja nur Text. Wie sind die Zahlen dort gespeichert. Und das musst Du dann beim einlesen entsprechend angeben. Also nicht nach dem einlesen in einen DataFrame den DataFrame anschauen, sondern die CSV-Datei mit einem Texteditor anschauen was da drin steht um zu sehen was man beim einlesen dann an Optionen angeben muss, damit das korrekt in einen DataFrame eingelesen wird.
Sollten die Daten tatsächlich in der CSV-Datei inkonsistent gespeichert worden sein, dann hast Du Pech und musst schauen ob es irgendein sinnvolles Kriterium gibt um entscheiden zu können was für ein Wert tatsächlich mal vorgelegen hat. Und Du solltest dann auch schauen wie solche Daten zustande gekommen sind, und das in Zukunft besser machen.
Sollten die Daten tatsächlich in der CSV-Datei inkonsistent gespeichert worden sein, dann hast Du Pech und musst schauen ob es irgendein sinnvolles Kriterium gibt um entscheiden zu können was für ein Wert tatsächlich mal vorgelegen hat. Und Du solltest dann auch schauen wie solche Daten zustande gekommen sind, und das in Zukunft besser machen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
- noisefloor
- User
- Beiträge: 4196
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Python und damit auch Pandas geht erstmal davon aus, dass der Punkt zwischen ganzer Zahl und Dezimalstellen steht. Kann man aber über das Attribut "decimal" der read_csv Methode anpassen.
Wenn in der Datei aber dummerweise auch Punkte als 1000er Trennzeichen (="europäische" Schreibweise) verwendet wird ist das Pech, weil es dann kompliziert wird. Dann muss du dir Konverter für die entsprechenden Spalten schreiben, die hoffentlich das gewünschte Ergebnis liefern. Konverter gibst du der read_csv Methode über das `converters` Attribut mit.
Gruß, noisefloor
Python und damit auch Pandas geht erstmal davon aus, dass der Punkt zwischen ganzer Zahl und Dezimalstellen steht. Kann man aber über das Attribut "decimal" der read_csv Methode anpassen.
Wenn in der Datei aber dummerweise auch Punkte als 1000er Trennzeichen (="europäische" Schreibweise) verwendet wird ist das Pech, weil es dann kompliziert wird. Dann muss du dir Konverter für die entsprechenden Spalten schreiben, die hoffentlich das gewünschte Ergebnis liefern. Konverter gibst du der read_csv Methode über das `converters` Attribut mit.
Gruß, noisefloor
-
- User
- Beiträge: 92
- Registriert: Mittwoch 13. April 2022, 17:40
Danke für eure antworten.
Ich glaube, dass ich das Problem vielleicht gelöst haben könnte.
Ich habe die Zellenformatierung bei Excel verändert zu Standard (excel --> reiter:start). Dann habe ich noch in den erweiterten Einstellungen das Dezimaltrennzeichen auf Punkt gesetzt.
Damit scheint es jetzt einigermaßen gut zu funktionieren.
Das Problem ist, dass evtl Tausender als Dezimalzahlen erkannt worden sind von Excel. Dazu muss ich noch mit meinem Betreuer reden, ob es bei dem Dokument überhaupt vorkam, dass bei Tausendern die Kommastellen angegeben wurden.
Falls nicht müsste eigentlich alles passen
Ich glaube, dass ich das Problem vielleicht gelöst haben könnte.
Ich habe die Zellenformatierung bei Excel verändert zu Standard (excel --> reiter:start). Dann habe ich noch in den erweiterten Einstellungen das Dezimaltrennzeichen auf Punkt gesetzt.
Damit scheint es jetzt einigermaßen gut zu funktionieren.
Das Problem ist, dass evtl Tausender als Dezimalzahlen erkannt worden sind von Excel. Dazu muss ich noch mit meinem Betreuer reden, ob es bei dem Dokument überhaupt vorkam, dass bei Tausendern die Kommastellen angegeben wurden.
Falls nicht müsste eigentlich alles passen
- noisefloor
- User
- Beiträge: 4196
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
wenn du Daten nach CSV exportierst solltest du generell das 1000er Trennzeichnen deaktivieren. Das macht nur Probleme.
Gruß, noisefloor
wenn du Daten nach CSV exportierst solltest du generell das 1000er Trennzeichnen deaktivieren. Das macht nur Probleme.
Gruß, noisefloor