Seite 1 von 1

CSV-Datei wird nicht getrennt

Verfasst: Donnerstag 12. Juli 2018, 09:01
von Chris99
Hallo liebe Python-Gemeinde,

ich bin neu hier und habe ein Problem beim importieren einer CSV-Datei.
CSV-Datei Herkunft: https://www.kaggle.com/philmohun/crypto ... /version/1

Ich möchte gerne eine CSV-Datei importieren und mir den "Kopf" anzeigen lassen (hat bisher immer funktioniert), leider werden die Daten nicht beim Komma getrennt.
Der "Kopf" wird ausgegeben, die Spaltennamen getrennt, die Daten allerdings nicht.

Hatte von euch schon jemand dieses Problem bzw. hat jemand einen Lösungsvorschlag für mich?

Code: Alles auswählen

import pandas as pd
dataframe = pd.read_csv('consolidated_coin_data.csv', sep=',')
dataframe.head()
Vielen Dank schon mal im Voraus!
Chris99

Re: CSV-Datei wird nicht getrennt

Verfasst: Donnerstag 12. Juli 2018, 09:06
von Sirius3
Wie sehen denn die Daten aus?

Re: CSV-Datei wird nicht getrennt

Verfasst: Donnerstag 12. Juli 2018, 09:25
von Chris99
Hallo Sirius3,

was meinst du damit "Wie sehen die Daten aus?" ?

Oben ist der Link zu den Daten, da kannst du auch die ersten 200 Reihen sehen.

Fallst du meinst wie der "Kopf" aussieht dann:

Currency Date Open High Low Close Volume Market Cap
0 0x,"Dec 27, 2017",0.648181,0.712597,0.617503... NaN NaN NaN NaN NaN NaN NaN
1 0x,"Dec 26, 2017",0.693401,0.708796,0.563918... NaN NaN NaN NaN NaN NaN NaN
2 0x,"Dec 25, 2017",0.634725,0.717725,0.630453... NaN NaN NaN NaN NaN NaN NaN
3 0x,"Dec 24, 2017",0.651100,0.672352,0.534855... NaN NaN NaN NaN NaN NaN NaN
4 0x,"Dec 23, 2017",0.502023,0.768043,0.485584... NaN NaN NaN NaN NaN NaN NaN

Danke für deine Hilfe :)

LG
Chris99

Re: CSV-Datei wird nicht getrennt

Verfasst: Donnerstag 12. Juli 2018, 09:39
von __blackjack__
@Chris99: Die Seite will das ich mich anmelde um die CSV-Datei herunter zu laden. Nö.

Das was Du zeigst ist inkonsistent. Der Kopf ist durch Leerzeichen getrennt, die Werte am Anfang jedes Datensatzes durch Kommas und am Ende dann durch Leerzeichen‽

Re: CSV-Datei wird nicht getrennt

Verfasst: Donnerstag 12. Juli 2018, 09:50
von Chris99
Hallo _blackjack_ ,
ja, der Kopf wurde bereits richtig getrennt, deshalb sind da keine "," mehr.

Ja das ist mein Problem, die Spaltenüberschriften wurden richtig getrennt, der Rest der getrennt werden sollte wird nicht getrennt und steht unter "Currency".
Das NaN ist auch eine Ausgabe von Python. Normalerweise bzw. Ziel wäre es das der Kopf folgendermaßen aussieht:

Currency Date Open High Low Close Volume Market Cap
0 0x Dec 27, 2017 0.648181 0.712597 0.617503 0.669701 "11,866,800" "306,131,000"
usw.

Hier die ersten 5 Zeilen aus der CSV-Datei:
Currency,Date,Open,High,Low,Close,Volume,Market Cap
0x,"Dec 27, 2017",0.648181,0.712597,0.617503,0.669701,"11,866,800","306,131,000"
0x,"Dec 26, 2017",0.693401,0.708796,0.563918,0.647725,"12,996,000","327,270,000"
0x,"Dec 25, 2017",0.634725,0.717725,0.630453,0.696416,"8,668,880","317,362,000"
0x,"Dec 24, 2017",0.651100,0.672352,0.534855,0.628460,"11,478,700","325,550,000"

Danke nochmal für eure Hilfe!

Re: CSV-Datei wird nicht getrennt

Verfasst: Donnerstag 12. Juli 2018, 10:10
von Sirius3
Mit den 5 Zeilen, die Du gepostet hast, kann ich das Problem nicht nachvollziehen:

Code: Alles auswählen

>>> dataframe
  Currency          Date      Open      High       Low     Close      Volume   Market Cap
0       0x  Dec 27, 2017  0.648181  0.712597  0.617503  0.669701  11,866,800  306,131,000
1       0x  Dec 26, 2017  0.693401  0.708796  0.563918  0.647725  12,996,000  327,270,000
2       0x  Dec 25, 2017  0.634725  0.717725  0.630453  0.696416   8,668,880  317,362,000
3       0x  Dec 24, 2017  0.651100  0.672352  0.534855  0.628460  11,478,700  325,550,000

Re: CSV-Datei wird nicht getrennt

Verfasst: Donnerstag 12. Juli 2018, 10:20
von Chris99
Hallo Sirius3,

oke danke für die Info, jetzt weiß ich leider gar nicht mehr weiter :(

Ich führe den Code in "Jupyter Notebook" aus, aber das dürfte ja trotzdem nichts daran ändern oder?

Ich habe es schon einige Male probiert, immer mit dem selben Ergebnis. Ich habe es mit den 5 Zeilen auch schon probiert, geht allerdings leider trotzdem nicht.
Wenn ich eine andere Datei einlese funktioniert es, wenn ich dann wieder diese Datei einlesen möchte funktioniert es wieder nicht.

Ich habe keine Ahnung was das Problem ist.

LG und Danke!
Chris99

Re: CSV-Datei wird nicht getrennt

Verfasst: Donnerstag 12. Juli 2018, 10:47
von __blackjack__
Also bei mir funktioniert es auch. Wobei man `sep` nicht angeben muss, das Komma ist ja die Voreinstellung. Dafür möchte man vielleicht die Datumsspalte auch parsen lassen und den Tausendertrenner angeben, damit in den letzten beiden Spalten Zahlen stehen und keine Zeichenketten.

Code: Alles auswählen

In [22]: pd.read_csv('test2.csv', parse_dates=['Date'], thousands=',').dtypes
Out[22]: 
Currency              object
Date          datetime64[ns]
Open                 float64
High                 float64
Low                  float64
Close                float64
Volume                 int64
Market Cap             int64
dtype: object

In [23]: pd.read_csv('test2.csv', parse_dates=['Date'], thousands=',')
Out[23]: 
  Currency       Date      Open      High       Low     Close    Volume  \
0       0x 2017-12-27  0.648181  0.712597  0.617503  0.669701  11866800   
1       0x 2017-12-26  0.693401  0.708796  0.563918  0.647725  12996000   
2       0x 2017-12-25  0.634725  0.717725  0.630453  0.696416   8668880   
3       0x 2017-12-24  0.651100  0.672352  0.534855  0.628460  11478700   

   Market Cap  
0   306131000  
1   327270000  
2   317362000  
3   325550000

Re: CSV-Datei wird nicht getrennt

Verfasst: Donnerstag 12. Juli 2018, 11:03
von Chris99
Hallo _blackjack_,
ich habe es mal mit deinem Code versucht, aber irgendetwas stimmt leider noch nicht.

Die Datentypen die ich bekommen habe sind:
Currency object
Date datetime64[ns]
Open float64
High float64
Low float64
Close float64
Volume float64
Market Cap float64
dtype: object

denkst du es könnte daran liegen das "Volume und Market Cap" float64 anstatt int64 ist?

PS.: die Ausgabe ist gleich geblieben nut das jetzt unter "Date" anstatt des NaN ein NaT steht. Was bedeutet NaT?

LG
Chris99

Re: CSV-Datei wird nicht getrennt

Verfasst: Donnerstag 12. Juli 2018, 11:18
von __blackjack__
@Chris99: NaT steht für „not a time(stamp)“. Analog zu NaN („not a number“).

Was sagt denn `pandas.__version__`?

Re: CSV-Datei wird nicht getrennt

Verfasst: Donnerstag 12. Juli 2018, 11:19
von Sirius3
ohne zu wissen, was Du genau machst, kann man nicht helfen. Solange die Daten nicht richtig gelesen werden, ist es müßig, sich um die Typen Gedanken zu machen.
NaT ist not a time.

Re: CSV-Datei wird nicht getrennt

Verfasst: Donnerstag 12. Juli 2018, 11:26
von Chris99
Hallo ihr beiden,

nachdem ich ja neu in Python bin, wollte ich mich ein bisschen spielen und mal eine "Tabelle" mit pandas erstell und dannach eine Lineare Regression.
Dazu habe ich mir ein Youtube Video angesehen: https://www.youtube.com/watch?v=sKiNPjkrKg4

Ich habe die Schritte einfach nachgemacht (Daten runter geladen, Code nachgeschrieben) aber bei mir hat es nicht funktioniert, also die "Tabelle" in pandas.
Nachdem ich gegoogelt habe (ohne erfolg) und einen Freund gefragt habe was das sein könnte (auch ohne erfolg), hab ich mich an euch gewendet.

Pandas Version: 0.23.0

LG und Danke :)

Re: CSV-Datei wird nicht getrennt

Verfasst: Donnerstag 12. Juli 2018, 11:58
von __blackjack__
Mein Pandas war auf diesem Rechner etwas älter, das habe ich jetzt mal auf die aktuelle Version (0.23.3) aktualisiert, aber bis auf eine kleine Änderung an der `repr()`-Darstellung, funktioniert das bei mir immer noch genau so:

Code: Alles auswählen

In [2]: pd.read_csv('test2.csv', parse_dates=['Date'], thousands=',')
Out[2]: 
  Currency       Date      Open     ...         Close    Volume  Market Cap
0       0x 2017-12-27  0.648181     ...      0.669701  11866800   306131000
1       0x 2017-12-26  0.693401     ...      0.647725  12996000   327270000
2       0x 2017-12-25  0.634725     ...      0.696416   8668880   317362000
3       0x 2017-12-24  0.651100     ...      0.628460  11478700   325550000

[4 rows x 8 columns]

In [3]: pd.read_csv('test2.csv', parse_dates=['Date'], thousands=',').dtypes
Out[3]: 
Currency              object
Date          datetime64[ns]
Open                 float64
High                 float64
Low                  float64
Close                float64
Volume                 int64
Market Cap             int64
dtype: object
Entweder liegt es an den Originaldaten, die wir ja nicht haben, oder bei Dir ist irgendetwas anders als bei Sirius3 und mir.

Re: CSV-Datei wird nicht getrennt

Verfasst: Donnerstag 12. Juli 2018, 12:04
von Chris99
Hi _blackjack_ ,

hmm das es an den Originaldaten liegt glaub ich nicht, ich habe auch schon eine neue Mappe (Kopieren/Einfügen) erstellt und als .csv abgespeichert, hat trotzdem nicht funktioniert.

Ein Freund von mir (Erfahrener Python-Programmierer) hat meinen Code jetzt auch probiert, bei ihm funktioniert es auch nicht.

Danke trotzdem für eure Hilfe!

LG
Chris99

Re: CSV-Datei wird nicht getrennt

Verfasst: Donnerstag 12. Juli 2018, 12:33
von __blackjack__
@Chris99: Also ich habe das jetzt mit der Originaldatei ausprobiert und musste noch `na_values` hinzunehmen, weil in den letzten beiden Spalten '-' steht wenn kein Wert vorhanden ist, und dann sieht das bei mir so aus:

Code: Alles auswählen

In [25]: df = pd.read_csv('consolidated_coin_data.csv', parse_dates=['Date'], th
    ...: ousands=',', na_values=['-'])

In [26]: df.dtypes
Out[26]: 
Currency              object
Date          datetime64[ns]
Open                 float64
High                 float64
Low                  float64
Close                float64
Volume               float64
Market Cap           float64
dtype: object

In [27]: df.head()
Out[27]: 
  Currency       Date      Open     ...          Close      Volume   Market Cap
0       0x 2017-12-27  0.648181     ...       0.669701  11866800.0  306131000.0
1       0x 2017-12-26  0.693401     ...       0.647725  12996000.0  327270000.0
2       0x 2017-12-25  0.634725     ...       0.696416   8668880.0  317362000.0
3       0x 2017-12-24  0.651100     ...       0.628460  11478700.0  325550000.0
4       0x 2017-12-23  0.502023     ...       0.645686  24164900.0  251012000.0

[5 rows x 8 columns]

Re: CSV-Datei wird nicht getrennt

Verfasst: Donnerstag 12. Juli 2018, 12:44
von Chris99
Hallo _blackjack_, Sirius3,

erstmal vielen Dank für eure Hilfe!

@_blackjack_ :
Danke das werd ich mir fürs nächste mal merken!

Ich hab es jetzt nach entlichen Versuchen geschafft und bin auf den Fehler drauf gekommen :)
Das File war (keine Ahnung warum) corrupted, ich habe es dann bei den Komma getrennt, erneut zusammengesetzt und als CSV abgespeichert und jetzt funktioniert es!

LG und Danke nochmal für eure Hilfe!
Chris99

Re: CSV-Datei wird nicht getrennt

Verfasst: Donnerstag 12. Juli 2018, 13:00
von Chris99
Hallo _blackjack_, Sirius3!

Danke _blackjack_ das merk ich mir fürs nächste mal :)

Ich habe auch eine Lösung gefunden und zwar:
ich bin drauf gekommen das die CSV-Datei corrupted war (keine Ahnung warum), dh. die ganze Zeile wurde als String ausgegeben, daraufhin habe ich die Daten bei den Komma getrennt und dann in eine neue CSV-Datei umgewandelt. Das hat dann funktioniert :)

Aber nochmal, vielen Dank euch beiden für die großartige unterstützung :)

LG
Chris99