Convertir le JSON au format CSV

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce projet, vous allez apprendre à convertir des données JSON au format CSV à l'aide de Python. C'est une tâche courante en science des données et en développement, car le JSON est souvent utilisé pour les réponses d'API, tandis que le CSV est un format populaire pour stocker des données tabulaires.

👀 Aperçu

$ head result.csv
"IP","Statut","Date et heure","HttpReferer","HttpUserAgent","Requête","HttpXForwardedFor","BodyBytesSent","RemoteUser","RequestLength"
"72.55.30.187","202","[2016-02-23 16:25:10]","http://www.google.cn/search?q=hive","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0;.NET CLR 2.0.50727)","GET /index.html HTTP/1.1","-","-","-","0"
"55.222.156.202","200","[2016-02-23 16:25:10]","-","Mozilla/4.0 (compatible; MSIE6.0; Windows NT 5.0;.NET CLR 1.1.4322)","GET /login.php HTTP/1.1","-","-","-","0"
"190.215.55.29","201","[2016-02-23 16:25:10]","-","Mozilla/4.0 (compatible; MSIE6.0; Windows NT 5.0;.NET CLR 1.1.4322)","GET /view.php HTTP/1.1","-","-","-","0"
"63.132.98.30","200","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /list.php HTTP/1.1","-","-","-","0"
"214.124.190.132","201","[2016-02-23 16:25:10]","-","Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B511 Safari/9537.53","GET /login.php HTTP/1.1","-","-","-","0"
"98.215.187.30","202","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /upload.php HTTP/1.1","-","-","-","0"
"143.55.168.187","201","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /login.php HTTP/1.1","-","-","-","0"
"98.190.201.29","200","[2016-02-23 16:25:10]","-","Mozilla/5.0 (Linux; Android 4.2.1; Galaxy Nexus Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19","GET /view.php HTTP/1.1","-","-","-","0"
"10.168.55.143","301","[2016-02-23 16:25:10]","http://cn.bing.com/search?q=spark mlib","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /admin/login.php HTTP/1.1","-","-","-","0"

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment lire et comprendre des données JSON
  • Comment convertir des données JSON en un fichier CSV
  • Comment écrire le fichier CSV avec les noms de colonnes corrects et le bon formatage

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Convertir efficacement des données JSON obtenues à partir d'APIs au format CSV structuré
  • Comprendre le processus de parsing des données JSON et de les écrire dans un fichier CSV
  • Appliquer ces compétences à diverses tâches de traitement et d'analyse de données

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/FileHandlingGroup -.-> python/file_opening_closing("Opening and Closing Files") python/FileHandlingGroup -.-> python/file_reading_writing("Reading and Writing Files") python/FileHandlingGroup -.-> python/file_operations("File Operations") python/FileHandlingGroup -.-> python/with_statement("Using with Statement") python/PythonStandardLibraryGroup -.-> python/data_serialization("Data Serialization") subgraph Lab Skills python/file_opening_closing -.-> lab-302709{{"Convertir le JSON au format CSV"}} python/file_reading_writing -.-> lab-302709{{"Convertir le JSON au format CSV"}} python/file_operations -.-> lab-302709{{"Convertir le JSON au format CSV"}} python/with_statement -.-> lab-302709{{"Convertir le JSON au format CSV"}} python/data_serialization -.-> lab-302709{{"Convertir le JSON au format CSV"}} end

Lire et comprendre les données JSON

Dans cette étape, vous allez apprendre à lire et à comprendre les données JSON à partir du fichier web_access.json.

  1. Ouvrez le fichier web_access.json situé dans le répertoire ~/project à l'aide d'un éditeur de texte.
  2. Examinez le contenu du fichier. Vous devriez voir un tableau d'objets, où chaque objet représente une entrée de journal d'accès web. Chaque entrée a plusieurs propriétés, telles que "IP", "Statut", "Date et heure", "HttpReferer", "HttpUserAgent", "Requête", "HttpXForwardedFor", "BodyBytesSent", "RemoteUser" et "RequestLength".
  3. Familiarisez-vous avec la structure et le contenu des données JSON. Cette information sera utile dans l'étape suivante lorsque vous convertirez les données au format CSV.

Convertir le JSON au format CSV

Dans cette étape, vous allez apprendre à convertir les données JSON du fichier web_access.json en un fichier CSV.

  1. Créez un nouveau fichier Python nommé convert.py dans le répertoire ~/project.
  2. Dans le fichier convert.py, importez les bibliothèques nécessaires :
import csv
import json
  1. Lisez les données JSON à partir du fichier web_access.json :
with open("web_access.json", "r") as json_file:
    data = json.load(json_file)
  1. Définissez l'ordre des colonnes dans le fichier CSV :
fieldnames = [
    "IP",
    "Statut",
    "Date et heure",
    "HttpReferer",
    "HttpUserAgent",
    "Requête",
    "HttpXForwardedFor",
    "BodyBytesSent",
    "RemoteUser",
    "RequestLength",
]
  1. Ouvrez un nouveau fichier CSV nommé result.csv dans le répertoire ~/project et créez un objet csv.DictWriter :
with open("result.csv", "w", newline="") as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames, quoting=csv.QUOTE_ALL)
  1. Écrivez la ligne d'en-tête dans le fichier CSV :
writer.writeheader()
  1. Écrivez les lignes de données dans le fichier CSV :
for row in data:
    writer.writerow(row)

Votre fichier convert.py complet devrait ressembler à ceci :

import csv
import json

## Lire les données JSON à partir du fichier
with open("web_access.json", "r") as json_file:
    data = json.load(json_file)

## Définir l'ordre des colonnes
fieldnames = [
    "IP",
    "Statut",
    "Date et heure",
    "HttpReferer",
    "HttpUserAgent",
    "Requête",
    "HttpXForwardedFor",
    "BodyBytesSent",
    "RemoteUser",
    "RequestLength",
]

## Écrire dans le fichier CSV
with open("result.csv", "w", newline="") as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames, quoting=csv.QUOTE_ALL)

    ## Écrire l'en-tête
    writer.writeheader()

    ## Écrire les lignes de données
    for row in data:
        writer.writerow(row)

Exécuter le script Python

Dans cette étape, vous allez exécuter le script convert.py pour générer le fichier result.csv.

  1. Ouvrez un terminal et accédez au répertoire ~/project.
  2. Exécutez le script convert.py en utilisant la commande suivante :
python convert.py
  1. Une fois le script terminé, vous devriez voir un nouveau fichier nommé result.csv dans le répertoire ~/project.
  2. Vous pouvez afficher les 10 premières lignes du fichier result.csv en utilisant la commande suivante :
head result.csv

Cela devrait afficher la ligne d'en-tête et les 9 premières lignes de données du fichier CSV.

"IP","Statut","Date et heure","HttpReferer","HttpUserAgent","Requête","HttpXForwardedFor","BodyBytesSent","RemoteUser","RequestLength"
"72.55.30.187","202","[2016-02-23 16:25:10]","http://www.google.cn/search?q=hive","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0;.NET CLR 2.0.50727)","GET /index.html HTTP/1.1","-","-","-","0"
"55.222.156.202","200","[2016-02-23 16:25:10]","-","Mozilla/4.0 (compatible; MSIE6.0; Windows NT 5.0;.NET CLR 1.1.4322)","GET /login.php HTTP/1.1","-","-","-","0"
"190.215.55.29","201","[2016-02-23 16:25:10]","-","Mozilla/4.0 (compatible; MSIE6.0; Windows NT 5.0;.NET CLR 1.1.4322)","GET /view.php HTTP/1.1","-","-","-","0"
"63.132.98.30","200","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /list.php HTTP/1.1","-","-","-","0"
"214.124.190.132","201","[2016-02-23 16:25:10]","-","Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B511 Safari/9537.53","GET /login.php HTTP/1.1","-","-","-","0"
"98.215.187.30","202","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /upload.php HTTP/1.1","-","-","-","0"
"143.55.168.187","201","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /login.php HTTP/1.1","-","-","-","0"
"98.190.201.29","200","[2016-02-23 16:25:10]","-","Mozilla/5.0 (Linux; Android 4.2.1; Galaxy Nexus Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19","GET /view.php HTTP/1.1","-","-","-","0"
"10.168.55.143","301","[2016-02-23 16:25:10]","http://cn.bing.com/search?q=spark mlib","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /admin/login.php HTTP/1.1","-","-","-","0"

Félicitations! Vous avez réussi à convertir les données JSON du fichier web_access.json en un fichier CSV nommé result.csv.

✨ Vérifier la solution et pratiquer

Sommaire

Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.