Import fichier csv avec pandas

a marqué ce sujet comme résolu.

Bonjour à tous,

Je débute sur pandas mais ne parviens pas à importer un fichier .csv sur python via pandas.

Voici les 2 lignes de codes:

import pandas as pd
pd.read_csv('test.csv', sep = ',', nrows = 3,encoding = "utf-8")

Voici l’erreur que j’observe ensuite :

Traceback (most recent call last):
  File "<pyshell#69>", line 1, in <module>
    pd.read_csv('test.csv', sep = ',', nrows = 3,encoding = "utf-8")
  File "C:\Users\manon.gautier\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\io\parsers.py", line 686, in read_csv
    return _read(filepath_or_buffer, kwds)
  File "C:\Users\manon.gautier\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\io\parsers.py", line 452, in _read
    parser = TextFileReader(fp_or_buf, **kwds)
  File "C:\Users\manon.gautier\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\io\parsers.py", line 936, in __init__
    self._make_engine(self.engine)
  File "C:\Users\manon.gautier\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\io\parsers.py", line 1168, in _make_engine
    self._engine = CParserWrapper(self.f, **self.options)
  File "C:\Users\manon.gautier\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\io\parsers.py", line 1998, in __init__
    self._reader = parsers.TextReader(src, **kwds)
  File "pandas\_libs\parsers.pyx", line 537, in pandas._libs.parsers.TextReader.__cinit__
  File "pandas\_libs\parsers.pyx", line 711, in pandas._libs.parsers.TextReader._get_header
  File "pandas\_libs\parsers.pyx", line 905, in pandas._libs.parsers.TextReader._tokenize_rows
  File "pandas\_libs\parsers.pyx", line 2034, in pandas._libs.parsers.raise_parser_error
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 135: invalid continuation byte

Désolée pour ce long post.

Merci beaucoup pour votre aide,

+0 -0

Salut,

Ton fichier est sûrement encodé en autre chose. Il n’y a pas de méthode générale pour être sûr de l’encodage d’un fichier (ce qu’il y a de sûr, c’est que ce n’est pas de l’utf8 par contre ^^ ). Cela dit, il y a de fortes chances pour que ce 0xe9 soit un é encodé en cp1252 ou en latin1. Essaye de donner ces valeurs comme encoding à read_csv.

Pour ce qui est d’être sûr d’exporter proprement en utf-8 avec Excel par contre, je ne peux pas t’aider.

PS : j’ai pris la liberté de séparer les tags correctement et de mettre en forme ton code et le message d’erreur pour qu’ils soient lisibles, édite ton message pour voir comment j’ai procédé.

+2 -0

Ton fichier est sûrement encodé en autre chose. Il n’y a pas de méthode générale pour être sûr de l’encodage d’un fichier (ce qu’il y a de sûr, c’est que ce n’est pas de l’utf8 par contre ^^ )

Alors effectivement il n’y a pas de méthode fiable à 100%, néanmoins en python il y a par exemple le module chardet (et même son implémentation en C, bien plus performante, cchardet), qui a un excellent taux de reconnaissance.

Je l’utilisais dans un précédent projet, sur des données massives, extrêmement diverses et 100% inconnues, avec un taux d’erreurs vraiment très marginal.

+2 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte