Как читать файлы UTF-8 с помощью Pandas?
У меня есть файл UTF-8 с данными twitter, и я пытаюсь его прочитать в кадре данных Python, но я могу получить только тип "object" вместо строк unicode:
# 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
Каков правильный способ чтения и принудительного ввода данных UTF-8 в unicode с помощью Pandas?
Это не решает проблему:
df = pd.read_csv('1459966468_324.csv', encoding = 'utf8')
df.apply(lambda x: pd.lib.infer_dtype(x.values))
Текстовый файл находится здесь:
https://raw.githubusercontent.com/l1x/nlp/master/1459966468_324.csv
Ответы
Ответ 1
Как упоминалось в другом постере, вы можете попробовать:
df = pd.read_csv('1459966468_324.csv', encoding='utf8')
Однако это может оставить вас при взгляде на "объект" при печати dtypes. Чтобы подтвердить, что они utf8, попробуйте эту строку после прочтения CSV:
df.apply(lambda x: pd.lib.infer_dtype(x.values))
Пример вывода:
args unicode
date datetime64
host unicode
kwargs unicode
operation unicode
Ответ 2
Используйте ключевое слово encoding
с соответствующим параметром:
df = pd.read_csv('1459966468_324.csv', encoding='utf8')
Ответ 3
Pandas хранит строки в object
s. В python 3 все строки в unicode по умолчанию. Поэтому, если вы используете python 3, ваши данные уже находятся в юникоде (не вводите в заблуждение по типу object
).
Если у вас есть python 2, используйте df = pd.read_csv('your_file', encoding = 'utf8')
. Затем попробуйте, например, pd.lib.infer_dtype(df.iloc[0,0])
(я предполагаю, что первый col состоит из строк.)