CSV-Dateien mit Ipython einlesen ....in jeder Tabellenzelle ""

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
Noranora
User
Beiträge: 62
Registriert: Donnerstag 21. Januar 2016, 12:51

Hallo!

Ich habe in dem Ipython notebook eine Csv-Date eingelesen, und zwar so:

Code: Alles auswählen


import pandas as pd
import numpy as np
from dataj import fhead
pd.set_option('display.max_columns',60)

dat= pd.read_csv('xy.csv', sep=',"', skiprows=3)

column_names = ['parents','age', 'male','country','male']

dat =  pd.read_csv('xy.csv', skiprows=4, sep=',"', encoding='windows-1250', names=column_names, na_values=['.', '-'])
dat.head()



der Sep= ',"' weil eben zwischen jedem Element in der Datei ein ", steht. Eig sogar "," , aber dann funktioniert es nicht.
Mit dem Programmtext oben bekomme ich eine Tabelle mit den einzelnen Columnnames, jedoch steht in jeder Zelle der Tabelle Anführungszeichn um das Wort in der Zelle. Wie bekomme ich diese entfernt?

Ich hoffe ihr habt eine Idee. LG
BlackJack

@Noranora: Die " sind nicht Teil der Trennzeichen, sondern wie Du ja schon selbst bemerkt hast fassen die die Zeichenkettenwerte ein. Und damit muss man eigentlich gar nichts weiter machen, sondern einfach nur das ',' als Trenner angeben.

Code: Alles auswählen

In [7]: !cat test.csv
"Eine UI für Todos implementieren";1
"Einkaufsliste schreiben";0
"Weltherrschaft erlangen";0

In [8]: pandas.read_csv('test.csv', sep=';', names=['A', 'B'])
Out[8]: 
                                  A  B
0  Eine UI für Todos implementieren  1
1           Einkaufsliste schreiben  0
2           Weltherrschaft erlangen  0
Noranora
User
Beiträge: 62
Registriert: Donnerstag 21. Januar 2016, 12:51

Hallo!
Ja, ich möchte die Tabelle jedoch gerne plotten, aber dies ist nicht möglich, da die Werte in den Tabellen auf grund der "" nicht als Zahlen erkannt werden. Dies möchte ich gerne irgendwie ändern....
Danke für deine ANtwort!
Noranora
User
Beiträge: 62
Registriert: Donnerstag 21. Januar 2016, 12:51

Denn wenn ich als sep=',' angebe, bekomme ich nur eine Spalte für alle Wortketten, es müssten jedoch 5 sein.


Soe sieht eine Zeile ursprünglich in der CSV-DAtei aus:

Berlin,"2.3","0.8","4.2","2.2"

ach ich habe vergessen, ich arbeite mit der neuesten Version Jupyter ...
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@Noranora: und wo ist da jetzt das Problem? Pandas erkennt doch dennoch, dass es sich um Zahlen handelt.

Code: Alles auswählen

u = pandas.read_csv(w, names=['City','a','b','c'])
#      City    a    b    c    d
# 0  Berlin  2.3  0.8  4.2  2.2
print u['a'].dtype
# dtype('float64')
Antworten