2016-04-06 14 views
5

Mam plik UTF-8 z danymi Twitter i staram się ją przeczytać w ramce danych Python, ale mogę dostać tylko „obiekt” typ zamiast ciągów unicode:Jak odczytywać pliki UTF-8 za pomocą Pand?

# file 1459966468_324.csv 
#1459966468_324.csv: UTF-8 Unicode English text 
df = pd.read_csv('1459966468_324.csv', dtype={'text': unicode}) 
df.dtypes 
text    object 
Airline   object 
name    object 
retweet_count  float64 
sentiment   object 
tweet_location  object 
dtype: object 

Co to jest prawo sposób czytania i wymuszania danych UTF-8 na unicode z Pandami?

to nie rozwiązuje problemu:

df = pd.read_csv('1459966468_324.csv', encoding = 'utf8') 
df.apply(lambda x: pd.lib.infer_dtype(x.values)) 

Plik tekstowy jest tutaj: https://raw.githubusercontent.com/l1x/nlp/master/1459966468_324.csv

+0

http://stackoverflow.com/a/20670901/2141635 –

+0

Używanie 'df.apply (lambda x: pd.lib.infer_dtype (x. wartości)) 'pokazuje typy jako unicode i mixed, jeśli spojrzysz na link powyżej zobaczysz, co się dzieje –

Odpowiedz

7

Jako drugi plakat wspomniano , możesz spróbować:

df = pd.read_csv('1459966468_324.csv', encoding = 'utf8') 

Może to jednak spowodować, że będziesz patrzył na "obiekt" podczas drukowania dtypów. Aby potwierdzić, że są utf8, spróbuj tej linii po przeczytaniu CSV:

df.apply(lambda x: pd.lib.infer_dtype(x.values)) 

Przykâadowa:

args   unicode 
date   datetime64 
host   unicode 
kwargs   unicode 
operation  unicode 
+0

To nie rozwiąże :( – Istvan

+1

nadal pokazuje je wszystkie jako obiekty? – Sam

+1

To dlatego, że masz wartości 'nan'. Spróbuj' df.dropna (podzbiór = ["tekst"], inplace = True) najpierw, wtedy sugestia Sam będzie przekonwertuj kolumnę tekstową na kod Unicode w podanym pliku. – ayhan

3

Użyj słowa kluczowego encoding z odpowiednim parametrem:

df = pd.read_csv('1459966468_324.csv', encoding='utf8') 
+0

Zobacz aktualizację powyżej. – Istvan

0

pandy przechowuje ciągi w object s. W pythonie 3 wszystkie łańcuchy są domyślnie w standardzie Unicode. Więc jeśli używasz Pythona 3, twoje dane są już w Unicode (nie należy wprowadzać w błąd przez typ object).

Jeśli masz python 2, użyj df = pd.read_csv('your_file', encoding = 'utf8'). Następnie spróbuj na przykład pd.lib.infer_dtype(df.iloc[0,0]) (domyślam się, że pierwsza kolumna składa się z ciągów znaków).

Powiązane problemy