Gestion des données de fichiers bruts




Généralités

 
Le constructeur open, qui crée une connexion à un fichier, reçoit deux arguments

  • le nom du fichier avec son chemin d’accès
  • le mode d’accès au fichier, représenté par une lettre

 

‘r’ ouverture du fichier en mode lecture
‘w’ ouverture en mode écriture: les données contenues dans un fichier de même nom sont effacées
‘a’ ouverture en mode écriture: les données sont affichées à la suite des données existantes
‘r+’ ouverture en mode lecture et écriture

A l’objet créé par open, on applique la méthode write (resp. read) pour écrire (resp. lire) du texte dans le fichier passé en argument de cette méthode. Avant de passer du mode écriture au mode lecture (et réciproquement), on ferme le fichier avec la méthode close().


 
Les fichiers de données sont couramment créés à partir de tableurs en spécifiant le format (séparateur, espaces…) choisi pour la sauvegarde. Ci-dessous, sont affichés les valeurs d’une même feuille Excel sous les formats prn (espace), csv (séparateur ‘;’), et txt (tabulation)


 
Pour extraire les données ligne à ligne, on utilise la méthode readlines(), comme dans l’exemple ci-dessous


 
Pour isoler les données à traiter, on emploie la méthode split qui renvoie un objet de type list

 

Python et les fichiers .csv

 
La présentation des données séparées par des espaces ou tabulations permet difficilement de les récupérer sous des formats exploitables, contrairement aux fichiers dans lesquels les données sont délimitées par des caractères simples, comme des virgules ou points-virgules, ce qui est le ces des fichiers csv étudiés dans ce paragraphe.
Le constructeur open (voir paragraphe précédent) est appelé en passant le nom + chemin d’accès du fichier csv sans préciser le mode de connexion (par défaut lecture).
L’exemple suivant ouvre un fichier dont les données sont délimitées par un point-virgule. Le module csv contient une méthode reader qui renvoie un objet de type class_generator (ici appelé readCSV).

Chaque ligne du fichier est récupérée sous forme d’objet list, dont le premier élément est dans la 1ère colonne du fichier, ce qui permet d’extraire un dictionnaire

Pour ne conserver que les informations utiles (si les données sont directement exploitées à partir du dictionnaire), on restreint les données à partir de la 2ème ligne (c.a.d. sans la ligne d’en-tête sans supprimer celle-ci), données que l’on peut afficher ligne à ligne


 
L’objet de type dict obtenu peut être converti en objet DataFrame. Le package pandas permet aussi de récupérer les données du fichier csv directement dans un DataFrame


 
Pour extraire les données, hors indices de lignes et en-têtes, on utilise la méthode tolist() de l’objet DataFrame.values qui renvoie une liste contenant les valeurs par ligne.
Ci-dessous, création d’un DataFrame utilisant les éléments de la 1ère colonne du fichier précédent (colonne ‘Entreprise’) comme index et les en-têtes à partir de la 2ème colonne (sans ‘Entreprise’)


 
On notera la conversion de la colonne data[‘Entreprise’] au format tuple pour l’indexation de data_temp, qui doit être formée à partir d’une séquence.