> Modules non standards > Pandas > Lecture et écriture de fichiers
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', 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