Introducción
En este proyecto, aprenderás a convertir datos JSON a formato CSV utilizando Python. Esta es una tarea común en la ciencia de datos y el desarrollo, ya que JSON se utiliza a menudo para respuestas de API, mientras que CSV es un formato popular para almacenar datos tabulares.
👀 Vista previa
$ head result.csv
"IP","Estado","Hora","HttpReferer","HttpUserAgent","Solicitud","HttpXForwardedFor","BodyBytesSent","UsuarioRemoto","LongitudSolicitud"
"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"
🎯 Tareas
En este proyecto, aprenderás:
- Cómo leer y entender datos JSON
- Cómo convertir datos JSON a un archivo CSV
- Cómo escribir el archivo CSV con los nombres de columna correctos y el formato adecuado
🏆 Logros
Después de completar este proyecto, podrás:
- Convertir eficientemente datos JSON obtenidos de APIs a un formato CSV estructurado
- Comprender el proceso de análisis de datos JSON y escritura en un archivo CSV
- Aplicar estas habilidades a una variedad de tareas de procesamiento y análisis de datos
Leer y entender los datos JSON
En este paso, aprenderás a leer y entender los datos JSON del archivo web_access.json.
- Abre el archivo
web_access.jsonubicado en el directorio~/projectutilizando un editor de texto. - Examina el contenido del archivo. Deberías ver una matriz de objetos, donde cada objeto representa una entrada de registro de acceso web. Cada entrada tiene varias propiedades, como
"IP","Estado","Hora","HttpReferer","HttpUserAgent","Solicitud","HttpXForwardedFor","BodyBytesSent","UsuarioRemoto"y"LongitudSolicitud". - Familiarízate con la estructura y el contenido de los datos JSON. Esta información resultará útil en el siguiente paso cuando conviertas los datos al formato CSV.
Convertir JSON a CSV
En este paso, aprenderás a convertir los datos JSON del archivo web_access.json a un archivo CSV.
- Crea un nuevo archivo de Python llamado
convert.pyen el directorio~/project. - En el archivo
convert.py, importa las bibliotecas necesarias:
import csv
import json
- Lee los datos JSON del archivo
web_access.json:
with open("web_access.json", "r") as json_file:
data = json.load(json_file)
- Define el orden de las columnas en el archivo CSV:
fieldnames = [
"IP",
"Estado",
"Hora",
"HttpReferer",
"HttpUserAgent",
"Solicitud",
"HttpXForwardedFor",
"BodyBytesSent",
"UsuarioRemoto",
"LongitudSolicitud",
]
- Abre un nuevo archivo CSV llamado
result.csven el directorio~/projecty crea un objetocsv.DictWriter:
with open("result.csv", "w", newline="") as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames, quoting=csv.QUOTE_ALL)
- Escribe la fila de encabezados en el archivo CSV:
writer.writeheader()
- Escribe las filas de datos en el archivo CSV:
for row in data:
writer.writerow(row)
Tu archivo convert.py completo debería verse así:
import csv
import json
## Lee los datos JSON del archivo
with open("web_access.json", "r") as json_file:
data = json.load(json_file)
## Define el orden de las columnas
fieldnames = [
"IP",
"Estado",
"Hora",
"HttpReferer",
"HttpUserAgent",
"Solicitud",
"HttpXForwardedFor",
"BodyBytesSent",
"UsuarioRemoto",
"LongitudSolicitud",
]
## Escribe en el archivo CSV
with open("result.csv", "w", newline="") as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames, quoting=csv.QUOTE_ALL)
## Escribe el encabezado
writer.writeheader()
## Escribe las filas de datos
for row in data:
writer.writerow(row)
Ejecutar el script de Python
En este paso, ejecutarás el script convert.py para generar el archivo result.csv.
- Abre una terminal y navega hasta el directorio
~/project. - Ejecuta el script
convert.pyutilizando el siguiente comando:
python convert.py
- Una vez que el script se complete, deberías ver un nuevo archivo llamado
result.csven el directorio~/project. - Puedes ver las primeras 10 líneas del archivo
result.csvutilizando el siguiente comando:
head result.csv
Esto debería mostrar la fila de encabezados y las primeras 9 filas de datos del archivo CSV.
"IP","Estado","Hora","HttpReferer","HttpUserAgent","Solicitud","HttpXForwardedFor","BodyBytesSent","UsuarioRemoto","LongitudSolicitud"
"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"
¡Felicitaciones! Has convertido con éxito los datos JSON del archivo web_access.json a un archivo CSV llamado result.csv.
Resumen
¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.



