2
votes

Importation de csv à l'aide de pd.read_csv - erreur d'octet de départ non valide

J'essaie d'importer un fichier csv en utilisant:

data = pd.read_csv("filename.csv")

J'obtiens l'erreur suivante: "UnicodeDecodeError: le codec 'utf-8' ne peut pas décoder l'octet 0xb0 dans position 2: octet de départ invalide ".

La réponse à cette question: UnicodeDecodeError: le codec 'utf8' ne peut pas décoder l'octet 0x9c peut fonctionner, mais je ne sais pas comment l'implémenter (je ne peux pas commenter la réponse car je n'ai pas encore assez de réputation).

Toute aide serait appréciée.

Edit: Le problème semble être lié au fait que j'ai un symbole de diplôme. Ce serait bien pour moi si, lors de l'importation, ce problème est simplement ignoré.


2 commentaires

Vous devrez publier un lien vers vos données brutes


Merci pour la réponse @EdChum, j'ai réussi à trouver un travail autour duquel sauter la ligne qui avait le symbole incriminé: data = pd.read_csv ("filename.csv", skiprows = [1])


3 Réponses :


0
votes

Vous pouvez utiliser l'argument d'encodage de la fonction pandas read_csv.

Cela peut ressembler à ça s'il a vraiment besoin d'être encodé en utf-8.

import pandas as pd
df = pd.read_csv("filename.csv", encoding = 'utf_8')

p>


0 commentaires

7
votes

Si vous rencontrez une erreur d'encodage due au fait que l'encodage de votre fichier n'est pas celui par défaut, comme mentionné dans la documentation pd.read_csv () , vous pouvez trouver l'encodage du fichier en installant d'abord chardet suivi du code ci-dessous:

pd.read_csv(r'D:\path\file.csv',encoding = 'encoding you found')

Cela vous donnera le codage du fichier.

Une fois que vous avez le codage, vous pouvez lire comme:

pd.read_csv('D:\\path\\file.csv',encoding = 'encoding you found')

ou

import chardet    
rawdata = open('D:\\path\\file.csv', 'rb').read()
result = chardet.detect(rawdata)
charenc = result['encoding']
print(charenc)

Vous obtiendrez la liste de tous les encodages ici

J'espère que vous trouverez cela utile.


1 commentaires

Merci pour la réponse. Profitant vraiment de cette solution, elle a parfaitement fonctionné, et en plaçant charenc dans l'instruction de lecture, c'est fait automatiquement: pd.read_csv ('D: \\ chemin \\ fichier.csv', encoding = charenc)



0
votes

J'ai résolu le mien en retournant simplement à la feuille Excel et en enregistrant au format 'CSV UTF-8'


0 commentaires