J'ai un fichier csv
qui contient des données avec des noms de colonnes:
J'ai un problème avec le troisième"IAS_lissé"qui est mal interprété par la méthode pd.read_csv()
et renvoyé sous forme de.
Quel est ce personnage?
Puisqu'il génère un bogue dans mon application de flacon, existe-t-il un moyen de lire cette colonne d'une autre manière sans modifier le fichier?
In [1]: import pandas as pd
In [2]: pd.read_csv("Openhealth_S-Grippal.csv",delimiter=";").columns
Out[2]: Index([u'PERIODE', u'IAS_brut', u'IAS_liss�', u'Incidence_Sentinelles'], dtype='object')
Vous pouvez modifier le paramètre encoding
pour read_csv, voir le document relatif aux pandas ici . De plus, les codages standard Python sont ici .
Je crois que pour votre exemple, vous pouvez utiliser le codage utf-8
(en supposant que votre langue est le français).
df = pd.read_csv("Openhealth_S-Grippal.csv", delimiter=";", encoding='utf-8')
Voici un exemple montrant un exemple de sortie. Tout ce que je fis fut de créer un fichier csv avec une colonne en utilisant les caractères problématiques.
df = pd.read_csv('sample.csv', encoding='utf-8')
Sortie:
IAS_lissé
0 1
1 2
2 3
Utiliser utf-8 n'a pas fonctionné pour moi. Par exemple. ce morceau de code:
bla = pd.DataFrame(data = [1, 2])
bla.to_csv('funkyNamé , things.csv')
blabla = pd.read_csv('funkyNamé , things.csv', delimiter=";", encoding='utf-8')
blabla
Finalement renvoyé: OSError: l'initialisation à partir d'un fichier a échoué
Je sais que vous avez dit que vous ne vouliez pas modifier le fichier. Si vous vouliez dire le contenu du fichier par rapport au nom du fichier, je renommerais le fichier en un élément sans accent, lirais le fichier csv sous son nouveau nom, puis rétablirais le nom du fichier.
originalfilepath = r'C:\Users\myself\\funkyNamé , things.csv'
originalfolder = r'C:\Users\myself'
os.rename(originalfilepath, originalFolder+"\\tempName.csv")
df = pd.read_csv(originalFolder+"\\tempName.csv", encoding='ISO-8859-1')
os.rename(originalFolder+"\\tempName.csv", originalfilepath)
Si vous vouliez dire "sans modifier le fichierprénom, mes excuses pour ne pas vous aider, et j'espère que cela aidera quelqu'un d'autre.
J'ai trouvé le même problème avec l'espagnol, résolu avec l'encodage "latin1":
import pandas as pd
pd.read_csv("Openhealth_S-Grippal.csv",delimiter=";", encoding='latin1')
J'espère que ça aide!