2016-04-06 34 views
5

Tôi có một file UTF-8 với dữ liệu twitter và tôi đang cố gắng để đọc nó vào một khung dữ liệu Python nhưng tôi chỉ có thể nhận được một 'đối tượng' loại thay vì chuỗi unicode:Cách đọc tệp UTF-8 bằng Pandas?

# 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 

bên phải là gì cách đọc và ép dữ liệu UTF-8 vào unicode với Pandas?

này không giải quyết vấn đề:

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

bản tập tin là ở đây: https://raw.githubusercontent.com/l1x/nlp/master/1459966468_324.csv

+0

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

+0

Sử dụng 'df.apply (lambda x: pd.lib.infer_dtype (x. giá trị)) 'không hiển thị các loại như unicode và hỗn hợp, nếu bạn nhìn vào liên kết ở trên, bạn sẽ thấy những gì đang xảy ra –

Trả lời

7

Như các poster khác được đề cập , bạn có thể thử:

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

Tuy nhiên, điều này vẫn có thể khiến bạn nhìn vào 'đối tượng' khi bạn in các dtypes. Để xác nhận họ là utf8, hãy thử dòng này sau khi đọc CSV: sản lượng

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

Ví dụ:

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

Không giải quyết nó: ( – Istvan

+1

nó vẫn hiển thị tất cả các đối tượng? – Sam

+1

Đó là vì bạn có giá trị 'nan'. Hãy thử' df.dropna (tập hợp con = ["văn bản"], inplace = True) 'trước rồi đề xuất của Sam sẽ chuyển đổi cột văn bản thành unicode trong tệp bạn đã cung cấp. – ayhan

3

Sử dụng các từ khóa encoding với tham số thích hợp:

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

Xem cập nhật ở trên. – Istvan

0

Pandas cửa hàng chuỗi trong object s. Trong python 3, tất cả các chuỗi là unicode theo mặc định. Vì vậy, nếu bạn sử dụng python 3, dữ liệu của bạn đã có trong unicode (không bị đánh lừa bởi loại object).

Nếu bạn có python 2, sau đó sử dụng df = pd.read_csv('your_file', encoding = 'utf8'). Sau đó, hãy thử ví dụ pd.lib.infer_dtype(df.iloc[0,0]) (Tôi đoán cột đầu tiên chứa chuỗi.)

Các vấn đề liên quan