Fermer

juin 22, 2023

Travailler avec des fichiers CSV à l’aide de Python, avec des exemples –

Travailler avec des fichiers CSV à l’aide de Python, avec des exemples –


Dans cet article, nous apprendrons comment utiliser Python pour lire et écrire des données dans des fichiers CSV, et comment convertir des fichiers CSV au format JSON et vice versa. Nous explorerons comment utiliser le module csv et examinerons également des exemples qui aident à comprendre son fonctionnement.

UN CSV (valeurs séparées par des virgules) est un format de fichier texte qui permet d’enregistrer les données dans une structure tabulaire. Il s’agit d’un format populaire utilisé pour exporter et importer des données à partir de bases de données et de feuilles de calcul.

Comme son nom l’indique, chaque donnée d’un fichier CSV est séparée par une virgule (,). Parfois, le terme « CSV » peut être utilisé pour décrire des formats avec d’autres types de séparateurs, tels que les deux-points (:), points-virgules (;) et les onglets (\t). Pour les besoins de cet article, nous traiterons uniquement des fichiers CSV qui utilisent des virgules comme délimiteurs (appelés RFC 4180).

Une fois ouvert, le contenu d’un fichier CSV ressemble à ceci :

Employee Id,First Name,Gender,Start Date,Last Login Time,Salary,Bonus %,Senior Management,Team
1,Douglas,Male,8/6/1993,12:42 PM,,6.945,TRUE,Marketing
2,Thomas,Male,3/31/1996,6:53 AM,61933,4.17,,
3,Maria,Female,4/23/1993,11:17 AM,,11.858,FALSE,Finance
4,Jerry,Male,3/4/2005,1:00 PM,138705,9.34,,Finance

Comme vu ci-dessus, le délimiteur virgule, ,est utilisé pour séparer chaque donnée spécifique du fichier.

La première ligne de données peut éventuellement servir d’en-tête, identifiant chaque colonne de données en dessous. Les fichiers CSV sont généralement enregistrés avec un .csv extension de fichier.

Le module CSV

Depuis les feuilles de calcul et bases de données comme MS SQL peuvent être importés et exportés sous forme de fichiers CSV, il est important de savoir comment gérer par programme les données servies au format CSV. La plupart des langages de programmation tels que Python prennent en charge la gestion des fichiers au format CSV et leur transformation en d’autres formats tels que JSON.

Python fournit le CSV module de lecture, d’écriture et d’exécution d’autres formes de la gestion des fichiers au format CSV. La bibliothèque intégrée fournit des fonctions et des classes qui facilitent le travail avec les fichiers CSV.

Comment lire des fichiers CSV avec Python

Le CSV module a le csv.reader() fonction de lecture de fichiers CSV. Il est utilisé avec des objets (y compris des objets de fichier) tels que ceux produits avec Python intégré open() fonction.

Étant donné un objet fichier à partir d’un appel à open(), csv.reader() renverra un objet lecteur. L’objet lecteur peut être utilisé pour itérer sur chaque ligne de données CSV, où les lignes sont renvoyées sous forme de liste de chaînes.

Prenons un exemple :

import csv

with open('employees.csv', newline='') as file_obj:
    reader_obj = csv.reader(file_obj)
    for row in reader_obj:
        print(row)

Voici la sortie du code ci-dessus :

['Employee Id', 'First Name', 'Gender', 'Start Date', 'Last Login Time', 'Salary', 'Bonus %', 'Senior Management', 'Team']
['1', 'Douglas', 'Male', '8/6/1993', '12:42 PM', '', '6.945', 'TRUE', 'Marketing']
['2', 'Thomas', 'Male', '3/31/1996', '6:53 AM', '61933', '4.17', '', '']
['3', 'Maria', 'Female', '4/23/1993', '11:17 AM', '', '11.858', 'FALSE', 'Finance']
['4', 'Jerry', 'Male', '3/4/2005', '1:00 PM', '138705', '9.34', '', 'Finance']
['5', 'Larry', 'Male', '1/24/1998', '4:47 PM', '101004', '1.389', 'TRUE', 'Client Services']
...

Dès le premier extrait de code, le employees.csv fichier est ouvert, après quoi le csv.reader() La fonction l’analyse et renvoie un objet lecteur. Une simple boucle for est utilisée pour itérer sur l’objet lecteur, qui renvoie une liste de données à partir de chaque ligne du employees.csv fichier, en commençant par le haut.

Comment écrire dans des fichiers CSV à l’aide de Python

Outre la lecture de données à partir de fichiers CSV, nous pouvons également écrire des données dans ces fichiers en Python. Le csv.writer() La fonction nous permet d’écrire des données au format CSV. Après avoir ouvert le fichier en mode écriture, le csv.writer() La fonction renvoie un objet écrivain, qui convertit les données fournies en chaînes délimitées sur l’objet fichier fourni. L’objet écrivain a le writerow() méthode pour écrire une ligne – un itérable de chaînes ou de nombres de valeurs séparées par des virgules par temps – tandis que le writerows() La méthode est utilisée pour plusieurs lignes à la fois. Le writerow() et writerows() Les méthodes ne sont-elles que deux options pour écrire des données dans un fichier CSV.

Tous les objets de liste utilisés dans l’extrait de code ci-dessus peuvent être regroupés dans une liste 2D et transmis en tant qu’argument au writerows() méthode de l’objet écrivain pour obtenir le même résultat.

Après le with est exécutée, un fichier CSV (products.csv) est créé dans le répertoire de travail actuel contenant ces valeurs séparées par des virgules.

Voici un exemple :

import csv

with open('products.csv', 'w', newline='') as file_obj:
    writer_obj = csv.writer(file_obj)
    writer_obj.writerow(['Product Name', 'Price', 'Quantity', 'SKU Number' ])
    writer_obj.writerow(['Rice', 80, 35, 'RI59023'])
    writer_obj.writerow(['Curry', 2, 200, 'CY13890'])
    writer_obj.writerow(['Milk', 9.5, 315, 'MK10204'])

Voici la sortie du code ci-dessus :

Product Name,Price,Quantity,SKU Number
Rice,80,35,RI59023
Curry,2,200,CY13890
Milk,9.5,315,MK10204

Comment convertir CSV en JSON en utilisant Python

Lors de l’exécution d’opérations d’E/S de fichiers, nous pouvons vouloir convertir un fichier CSV en JSON format — qui est populaire pour recevoir et transmettre des données entre un client et un serveur. Le CSV module fournit le csv.DictReader classe pour nous aider à y parvenir.

Le csv.DictReader les méthodes de classe aident à convertir un fichier CSV donné en un dictionnaire Python avant d’appliquer le json modules json.dump() pour convertir le dictionnaire Python résultant en un fichier JSON. Le csv.DictReader() la classe prend une option fieldnames argument. Lorsque les noms de champs sont omis, les valeurs de la première ligne seront mappées au reste des données en tant que noms de champs.

Prenons un exemple :

import csv
import json

my_dict = {}

with open('employees.csv', newline='') as file_obj:
    reader_object = csv.DictReader(file_obj)
    for row in reader_object:
        key = row['Employee Id']
        my_dict[key] = row

with open('employee.json', 'w', encoding='utf-8') as file_obj:
    json.dump(my_dict, file_obj, indent=4)   

Voici la sortie du code ci-dessus :

"1": {
    "Employee Id": "1",
    "First Name": "Douglas",
    "Gender": "Male",
    "Start Date": "8/6/1993",
    "Last Login Time": "12:42 PM",
    "Salary": "",
    "Bonus %": "6.945",
    "Senior Management": "TRUE",
    "Team": "Marketing"
},
"2": {
    "Employee Id": "2",
    "First Name": "Thomas",
    "Gender": "Male",
    "Start Date": "3/31/1996",
    "Last Login Time": "6:53 AM",
    "Salary": "61933",
    "Bonus %": "4.17",
    "Senior Management": "",
    "Team": ""
},
...

Pour convertir un fichier CSV en un équivalent JSON, nous avons appliqué les étapes suivantes :

  • a ouvert le employees.csv fichier en mode lecture
  • créé un dictionnaire Python à partir de l’objet de fichier renvoyé à l’aide de la csv.DictReader classe
  • ouvert un fichier JSON en mode écriture, tel que employees.json (si un tel fichier n’avait pas existé, un aurait été créé)
  • utilisé le dump() fonction de la json module pour convertir le dictionnaire Python (my_dict) dans un fichier JSON

Comment convertir JSON en CSV en utilisant Python

Dans cette section, nous verrons comment convertir les données d’un fichier JSON au format CSV. Pour y parvenir, nous utiliserons à la fois le CSV et json Modules Python. Le json modules json.load() aidera à convertir un fichier JSON en dictionnaire Python, tandis que la CSV modules csv.DictWiter les méthodes de classe aideront à convertir le dictionnaire Python en un fichier CSV.

Voici un exemple :

import csv
import json

py_dict = {}


with open('employees.json', 'r', encoding='utf-8') as file_obj:
    py_dict = json.load(file_obj)


with open('employees_records.csv', 'w', newline='') as file_obj:
    csv_writer = csv.DictWriter(file_obj, fieldnames=py_dict['1'].keys())
    csv_writer.writeheader()
    for key in py_dict.keys():
        csv_writer.writerow(py_dict[key])

Pour convertir un fichier JSON en un équivalent CSV, nous avons appliqué les étapes suivantes :

  • a ouvert le employees.json fichier en mode lecture
  • utilisé le json.load() fonction pour créer un dictionnaire Python py_dict
  • ouvert un fichier CSV employees_records.csv en mode écriture (si un tel fichier n’avait pas existé, un aurait été créé)
  • créé un objet écrivain avec le csv.DictWriter classe avec les arguments nécessaires
  • utilisé les méthodes d’objet écrivain pour mapper les dictionnaires dans le nombre approprié de lignes

Conclusion

Les fichiers CSV sont très populaires et souvent utilisés pour exporter et importer des feuilles de calcul et des bases de données. Ce format de fichier est très souvent utilisé par ceux qui travaillent avec des données. Cependant, lors de la programmation avec Python, il peut être nécessaire d’utiliser rapidement des fichiers CSV, il est donc important d’apprendre à effectuer des opérations d’E/S de fichiers avec CSV.

Python CSV module est très pratique pour travailler avec des fichiers CSV, car il fournit les fonctions et les classes nécessaires pour ce type de tâches.

Il est important de noter également que nous devrons peut-être convertir des fichiers d’un format à un autre (CSV vers JSON) comme indiqué dans nos exemples ci-dessus.






Source link