depuis peu je rencontre un problème de type de données quand je lis un fichier csv avec pandas.
Les données récupérées sont soit “‘donnée’” (guillemets doubles+simple) ou “donnée”, y compris pour les noms de colonnes, déclarées pourtant “nom_col”. Une piste ? Les données sont en UTF-8, délimiteur=virgule : du standard fait avec LibreOffice.
import pandas as pd
import os
#Lecture
if os.path.exists(“ex.csv”):
df = pd.read_csv(“ex.csv”, header=0)
df = df.fillna(“sans”)
else:
df = pd.DataFrame(columns=[“etat_rb”, “d_min”, “cycle”, “d_rdv”, “heure”, “motif”])
for z in range(len(df)):
if df.iat[z,0] == “RdV non cyclique” or df.iat[z,0] == “‘RdV non cyclique’”:
df.iat[z,5] #[1:-1]
print(len(df.iat[z,5]))
print(df.columns)
Je viens d’essayer et effectivement si je cherche un champ en guillemets double, je le récupère bien; mais je ne comprends pas pourquoi je suis obligé de mettre le paramètre quotechar…
Parce que ton CSV utilise des ' et non des " (par défaut) pour délimiter les chaînes de caractères.
Et en l’état je ne comprends même pas pourquoi il y a des ' dans ce fichier CSV alors qu’il n’y a rien à échapper (donc aucun délimiteur requis).
Après avoir recherché d’autres solutions, j’ai finalement opté pour fixer dans LibreOffice que le texte doit être entre guillemets doubles (et non simple car je me retrouvais avec une apostrophe droite dactylographique ou courbe typographique) et quand j’enregistre une df en csv j’ai ajouté un encoding=“utf-8-sig”. Pour l'instant cela semble fonctionner sans problème...
Les guillemets simple j’imagine que ca peu buguer si ton CSV a une colonne qui s’apelle par exemple ‘l’étoile peau-l’air’ .
Peut-être que de base tu devrais te fixer sur quoi utiliser comme séparateur (les “““ peuvent marcher aussi?).
Après je ne peut pas t’aider et je ne connais pour le moment que les fichiers texte en général…
Concernant les chiffres je crois que tu doit les convertir car python les traite peut-être comme des chaines de caractères donc pour les utiliser comme de vrais chiffres faudra les convertir (est-ce que ca redeviens des str a la sauvegarde? Je sais que c’est le cas ailleurs.).
mes noms de colonne ne comportent pas d’apostrophe (ni aucun caractère accentué) mais j’en ai dans les cellules. La solution trouvée sur internet fonctionne assez bien et je n’ai plus de problème. Quant aux chiffres ils sont effectivement de type texte mais on peut les convertir facilement si on les utilise pour des calculs.