web-dev-qa-db-fra.com

Comment lire les fichiers UTF-8 avec les pandas?

J'ai un fichier UTF-8 avec des données Twitter et j'essaie de le lire dans un cadre de données Python, mais je ne peux obtenir qu'un type 'objet' au lieu de chaînes 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

Quelle est la bonne façon de lire et de contraindre les données UTF-8 en unicode avec Pandas?

Cela ne résout pas le problème:

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

Le fichier texte est ici: https://raw.githubusercontent.com/l1x/nlp/master/1459966468_324.csv

6
Istvan

Comme l'a mentionné l'autre affiche, vous pourriez essayer:

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

Cependant, cela pourrait vous laisser regarder "objet" lorsque vous imprimez les types de données. Pour confirmer qu’ils sont bien utf8, essayez cette ligne après avoir lu le fichier CSV:

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

Exemple de sortie:

args            unicode
date         datetime64
Host            unicode
kwargs          unicode
operation       unicode
11
Sam

Utilisez le mot clé encoding avec le paramètre approprié:

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

Les pandas stockent les chaînes dans objects. En Python 3, toutes les chaînes sont en Unicode par défaut. Donc, si vous utilisez Python 3, vos données sont déjà en Unicode (ne vous trompez pas de type object).

Si vous avez Python 2, utilisez df = pd.read_csv('your_file', encoding = 'utf8'). Ensuite, essayez par exemple pd.lib.infer_dtype(df.iloc[0,0]) (je suppose que le premier col est constitué de chaînes.)

1
ptrj