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
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.
- Ouvrez le fichier
web_access.jsonsitué dans le répertoire~/projectà l'aide d'un éditeur de texte. - 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". - 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.
- Créez un nouveau fichier Python nommé
convert.pydans le répertoire~/project. - Dans le fichier
convert.py, importez les bibliothèques nécessaires :
import csv
import json
- 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)
- Définissez l'ordre des colonnes dans le fichier CSV :
fieldnames = [
"IP",
"Statut",
"Date et heure",
"HttpReferer",
"HttpUserAgent",
"Requête",
"HttpXForwardedFor",
"BodyBytesSent",
"RemoteUser",
"RequestLength",
]
- Ouvrez un nouveau fichier CSV nommé
result.csvdans le répertoire~/projectet créez un objetcsv.DictWriter:
with open("result.csv", "w", newline="") as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames, quoting=csv.QUOTE_ALL)
- Écrivez la ligne d'en-tête dans le fichier CSV :
writer.writeheader()
- É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.
- Ouvrez un terminal et accédez au répertoire
~/project. - Exécutez le script
convert.pyen utilisant la commande suivante :
python convert.py
- Une fois le script terminé, vous devriez voir un nouveau fichier nommé
result.csvdans le répertoire~/project. - Vous pouvez afficher les 10 premières lignes du fichier
result.csven 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.
Résumé
Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.



