Mis a jour le 2025-04-14, 12:10

Lecture et écriture de fichiers

Lecture d'un dataframe à partir d'un fichier :
  • df = pandas.read_csv('myFile.csv') : par défaut, suppose qu'il y a un header (header = 0) et qu'il n'y a pas de noms de colonne (index_col = None).
  • sep = '\t' ou delimiter = '\t' : indique que le séparateur est une tabulation plutôt qu'une virgule.
  • df = pandas.read_csv('myFile.csv', sep = '\t', header = None) : lecture d'une table sans header.
  • si tableau avec étiquettes de lignes et de colonnes : df = pandas.read_csv('myFile.csv', sep = '\t', index_col = 0) (index_col est en fait le numéro de colonne contenant l'index).
  • si tableau avec étiquettes de colonnes seulement : df = pandas.read_csv('myFile.csv', sep = '\t').
  • si tableau avec étiquettes de lignes seulement : df = pandas.read_csv('myFile.csv', sep = '\t', header = None, index_col = 0).
  • si tableau sans étiquettes de lignes ni de colonnes : df = pandas.read_csv('myFile.csv', sep = '\t', header = None).
  • df = pandas.read_csv(fileName, sep = '\t', converters = {'barcode': str} : convertit la colonne barcode avec la fonction str. Attention :
    • si on se trompe dans le nom, le converter est ignoré et aucune erreur !
    • si on met un converter de type str, le na_values n'est pas pris en compte !
  • on peut imposer des noms aux colonnes :
    • si pas de header (noms de colonnes) dans le fichier initial : df = pandas.read_csv('myFile.csv', sep = '\t', names = ['X1', 'X2', 'X3'])
    • si il y a déjà un header (noms de colonnes) dans le fichier initial : df = pandas.read_csv('myFile.csv', sep = '\t', names = ['X1', 'X2', 'X3'], header = 0).
  • df = pandas.read_csv('myFile.csv', sep = '\t', quoting = csv.QUOTE_NONE) : ne touche pas aux quotes, les laisse telles qu'elles sont (pareil avec to_csv)
  • df = pandas.read_csv('myFile.csv', sep = '\t', na_values = ['-']) : on donne avec na_values la liste des valeurs qui doivent être assimilées à NaN (valeur non définie) en plus des valeurs déjà définies commme NA :
    • par défaut, '', '#N/A', 'N/A', 'NA', <NA>, 'NULL', 'null', 'NaN', 'n/a', 'nan' sont tous interprêtés comme nan
    • mettre na_filter = False en laissant le défaut pour na_values pour éviter que les cellules vides se transforment en NaN.
    • df = pandas.read_csv('myFile.csv', sep = '\t', keep_default_na = False, na_values = ['']) : enlève les valeurs interprêtées par défaut comme NA et ne garde que celles indiquées.
  • df = pandas.read_csv('myFile.csv', sep = '\t', dtype = str)
  • Pour préciser les types de certaines colonnes, on peut faire : df = read_csv(myFile, sep = '\t', dtype = {'col1': str, 'col2': int, 'col4': numpy.float})
  • on peut lire seulement le début d'un tableau : df = pandas.read_csv(..., nrows = 1000) (utile pour le debugging !)
  • on peut sauter les n premières lignes : df = pandas.read_csv(myFile, skiprows = 10) : saute les 10 premières lignes.
  • df = pandas.read_csv(myFile, sep = '\t', usecols = range(12)) : lit seulement les 12 premières colonnes.
  • df = pandas.read_csv(fileName, sep = '\t', usecols = ['A', 'C', 'G'] : lit seulement certaines colonnes (on doit toutes les préciser par index, ou toutes par nom).
  • df = pandas.read_csv('myFile.csv', sep = '\t', skiprows = [0, 1]) : lit le fichier en sautant les lignes 0 et 1 du fichier (donc ici, le header est sur la 3ème ligne, d'index 2). Très utile si ces lignes contiennent des intitulés qui perturbent alors complètement le typage de chaque colonne !
  • skip_footer = 5 : saute les 5 dernières lignes du fichier.
  • attention : si nom de colonne répété, le deuxième est modifié avec une extension .1, le troisième avec une extension .2, etc ...
  • Pour lire les 10 premières lignes en ayant sauté les 5 premières après le header : pandas.read_csv('myFile.csv', sep = '\t', index_col = 0, skiprows = lambda x : x > 0 and x <= 5, nrows = 10) (skiprows doit renvoyer True ssi on doit sauter la ligne.
  • pour un fichier avec un nombre variable d'espaces séparant les colonnes : df = pandas.read_csv(inputFile, delim_whitespace = True)
  • df = pd.read_csv('sample.csv.gz', compression='gzip') : permet de lire un fichier compressé avec gzip.
Ecriture d'un dataframe dans un fichier :
  • df.to_csv('myFile.csv', sep = '\t') : écrit le dataframe avec une tabulation comme séparateur (le défaut est une virgule).
  • header = False : supprime le header des colonnes (défaut est de l'inclure).
  • index = False : supprime le nom des lignes (défaut est de l'inclure).
  • na_rep = '-' : imprime les valeurs NaN comme '-' (le défaut est la chaîne vide).
  • pour écrire sur stdout : df.to_csv(sys.stdout, sep = '\t', index = False) ou alors print(df.to_csv(sep = '\t', index = False))
  • pour mettre un titre à la colonne d'index : df.to_csv(..., index = True, index_label = 'firstColumn')
  • df.to_csv('myfile.csv', sep = '\t', mode = 'a') : pour faire un append
df.to_csv(None, sep = '\t', index = False) : renvoie une string qui est celle qui aurait été mise dans le filehandle si il avait été fourni.

Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert