IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Problème de lecture de mon fichier CSV


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2019
    Messages : 4
    Par défaut Problème de lecture de mon fichier CSV
    Bonjour à tous !

    Je suis un débutant en programmation python donc soyez indulgent.

    Je dois importer un fichier CSV, séparé par des virgules. Normalement j'y arrive assez facilement mais celui la est récalcitrant.

    Quelqu'un aurait la solution en lisant le code et surtout le message d'erreur qui va suivre ? Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # coding: utf8
     
    import numpy as np
    import pandas as pd 
    import seaborn as sns
    import sys
     
    # Import des données des bilans alimentaires
    DataComplete = pd.read_csv("/Users/thomastripodi/Desktop/BilansAlimentaires_F_Toutes_les_DonnÇes.csv")
     
    DataComplete.head()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    UnicodeDecodeError                        Traceback (most recent call last)
    <ipython-input-26-5c45d076489a> in <module>
          1 # Import des données des bilans alimentaires
    ----> 2 DataComplete = pd.read_csv("/Users/thomastripodi/Desktop/BilansAlimentaires_F_Toutes_les_DonnÇes.csv")
          3 
          4 DataComplete.head()
     
    //anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py in parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, dialect, tupleize_cols, error_bad_lines, warn_bad_lines, delim_whitespace, low_memory, memory_map, float_precision)
        700                     skip_blank_lines=skip_blank_lines)
        701 
    --> 702         return _read(filepath_or_buffer, kwds)
        703 
        704     parser_f.__name__ = name
     
    //anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py in _read(filepath_or_buffer, kwds)
        427 
        428     # Create the parser.
    --> 429     parser = TextFileReader(filepath_or_buffer, **kwds)
        430 
        431     if chunksize or iterator:
     
    //anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py in __init__(self, f, engine, **kwds)
        893             self.options['has_index_names'] = kwds['has_index_names']
        894 
    --> 895         self._make_engine(self.engine)
        896 
        897     def close(self):
     
    //anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py in _make_engine(self, engine)
       1120     def _make_engine(self, engine='c'):
       1121         if engine == 'c':
    -> 1122             self._engine = CParserWrapper(self.f, **self.options)
       1123         else:
       1124             if engine == 'python':
     
    //anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py in __init__(self, src, **kwds)
       1851         kwds['usecols'] = self.usecols
       1852 
    -> 1853         self._reader = parsers.TextReader(src, **kwds)
       1854         self.unnamed_cols = self._reader.unnamed_cols
       1855 
     
    pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader.__cinit__()
     
    pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._get_header()
     
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc9 in position 5: invalid continuation byte

  2. #2
    Membre émérite

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 661
    Par défaut
    Bonjour et bienvenu.

    Pense à insérer ton code entre les balises correspondantes pour les prochaines fois. C'est bien plus lisible ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # coding: utf8
     
    import numpy as np
    import pandas as pd
    import seaborn as sns
    import sys
     
    # Import des données des bilans alimentaires
    DataComplete = pd.read_csv("/Users/thomastripodi/Desktop/BilansAlimentaires_F_Toutes_les_DonnÇes.csv")
     
    DataComplete.head()
    Bien, pour revenir au problème, je remarque dans le message d'erreur la ligne:
    self._reader = parsers.TextReader(src, **kwds)
    Le problème vient sans aucun doute du contenu du fichier. Est-ce que tu pourrais montrer à quoi il ressemble? Les quelques premières lignes?

    Julien

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 683
    Par défaut
    Salut,

    Citation Envoyé par TomTrip Voir le message
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc9 in position 5: invalid continuation byte
    Le message d'erreur dit juste que votre fichier n'est pas "encodé" utf-8.
    C'est une information à passer à .read_csv via encoding=...
    Mais on ne va pas inventer quoi mettre à la place des ...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2019
    Messages : 4
    Par défaut
    Merci pour votre accueil et réactivités.

    J'ai essayé le code avec encoding :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # Import des données des bilans alimentaires
     
    data = pd.read_csv("/Users/thomastripodi/Desktop/BilansAlimentaires_F_Toutes_les_DonnÇes.csv", encoding = 'utf-8')
    Le message d'erreur est le même : " UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc9 in position 5: invalid continuation byte "

    J'ai vraiment du mal à comprendre pourquoi ça ne fonctionne pas. Voici les 2 premières ligne de mon fichier (j'ai réussi à mettre le code dans les balises mais pas pour ce qu'il va suivre):

    Code zone,Zone,Code Produit,Produit,Code Élément,Élément,Unité,Y1961,Y1961F,Y1962,Y1962F,Y1963,Y1963F,Y1964,Y1964F,Y1965,Y1965F,Y1966,Y1966F,Y1967,Y1967F,Y1968,Y1968F,Y1969,Y1969F,Y1970,Y1970F,Y1971,Y1971F,Y1972,Y1972F,Y1973,Y1973F,Y1974,Y1974F,Y1975,Y1975F,Y1976,Y1976F,Y1977,Y1977F,Y1978,Y1978F,Y1979,Y1979F,Y1980,Y1980F,Y1981,Y1981F,Y1982,Y1982F,Y1983,Y1983F,Y1984,Y1984F,Y1985,Y1985F,Y1986,Y1986F,Y1987,Y1987F,Y1988,Y1988F,Y1989,Y1989F,Y1990,Y1990F,Y1991,Y1991F,Y1992,Y1992F,Y1993,Y1993F,Y1994,Y1994F,Y1995,Y1995F,Y1996,Y1996F,Y1997,Y1997F,Y1998,Y1998F,Y1999,Y1999F,Y2000,Y2000F,Y2001,Y2001F,Y2002,Y2002F,Y2003,Y2003F,Y2004,Y2004F,Y2005,Y2005F,Y2006,Y2006F,Y2007,Y2007F,Y2008,Y2008F,Y2009,Y2009F,Y2010,Y2010F,Y2011,Y2011F,Y2012,Y2012F,Y2013,Y2013F

    2,"Afghanistan","2501","Population","511","Population totale","1000 personnes","8954.000000","","9142.000000","","9340.000000","","9547.000000","","9765.000000","","9990.000000","","10222.000000","","10466.000000","","10729.000000","","11016.000000","","11323.000000","","11644.000000","","11966.000000","","12274.000000","","12552.000000","","12807.000000","","13034.000000","","13200.000000","","13257.000000","","13180.000000","","12964.000000","","12634.000000","","12242.000000","","11854.000000","","11529.000000","","11262.000000","","11063.000000","","11013.000000","","11215.000000","","11731.000000","","12612.000000","","13812.000000","","15175.000000","","16485.000000","","17586.000000","","18415.000000","","19021.000000","","19497.000000","","19987.000000","","20595.000000","","21348.000000","","22203.000000","","23116.000000","","24019.000000","","24861.000000","","25631.000000","","26349.000000","","27032.000000","","27708.000000","","28398.000000","","29105.000000","","29825.000000","","30552.000000",""

  5. #5
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Le nom du fichier interroge un peu : problème d'accent déjà.
    Ce que je ferais : je l'ouvrirai avec Openoffice et je l'enregistrerais avec l'option utf-8.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 683
    Par défaut
    Salut,

    Citation Envoyé par TomTrip Voir le message
    Le message d'erreur est le même : " UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc9 in position 5: invalid continuation byte "
    Vous saviez déjà que l'encoding utf-8 n'est pas celui de votre fichier, donc çà ne change rien d'essayer avec encoding="utf-8".
    Et si vous utilise encoding=... c'est justement pour y mettre autre chose i.e. l'encoding qui va bien.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2019
    Messages : 4
    Par défaut
    Je comprends mieux. Mais comment connaitre l'encodage du fichier csv que je dois remplir après le encoding = ... ?

    J'ai essayé une autre méthode qui a résolu une partie du problème, je m'explique.
    J'ai ouvert le fichier avec Sublime Text pour le convertir en UTF-8. J'ai pu le lire avec python, mais il y avait un souci d'affichage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	Code zone	Zone	Code Produit	Produit	Code Élément	Élément	Unité	Y1961	Y1961F	Y1962	...	Y2009	Y2009F	Y2010	Y2010F	Y2011	Y2011F	Y2012	Y2012F	Y2013	Y2013F
    0	2,"Afghanistan","2501","Population","511","Pop...	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	...	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN
    1	2,"Afghanistan","2901","Total General","664","...	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	...	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN
    2	2,"Afghanistan","2901","Total General","674","...	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	...	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN
    Tous les champs se concentrent dans la première colonne "Code Zone".. Même avec le sep = ','

    Après j'ai tenté une autre manipulation en allant sur le fichier (en UTF-8) via excel et j'ai modifié le fichier en allant dans Données ---> Convertir ---> Séparateur ---> ","
    Pour qu'il devienne un véritable tableur. Mais impossible de la lire par la suite. Je ne pense pas utiliser les bons arguments.

  8. #8
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Tu ne peux pas mettre en PJ ton fichier csv ? Ce serait peut-être plus simple.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2019
    Messages : 4
    Par défaut
    Je sais pas pourquoi, mais j'ai retéléchargé les données. Refais les manipulations évoquées précédemment et ça à fonctionné !

    Merci à tous pour votre aide.

    Et j'espère pouvoir aider d'autres utilisateurs à mon tour désormais

  10. #10
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Super. Pense à mettre ton sujet en résolu.

Discussions similaires

  1. Problème de lecture d'un fichier CSV via DataSet
    Par frearnaud dans le forum C#
    Réponses: 3
    Dernier message: 22/12/2014, 12h33
  2. Problème de lecture d'un fichier .csv.
    Par Azuchi dans le forum VB 6 et antérieur
    Réponses: 23
    Dernier message: 20/12/2010, 11h45
  3. Problème de split lors d'une lecture d'un fichier csv
    Par Mawinette dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 25/03/2009, 11h48
  4. Réponses: 2
    Dernier message: 25/10/2007, 13h56
  5. Réponses: 1
    Dernier message: 20/10/2005, 10h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo