Convertir JSON a CSV

PythonPythonBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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

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 JSON a CSV"}} python/file_reading_writing -.-> lab-302709{{"Convertir JSON a CSV"}} python/file_operations -.-> lab-302709{{"Convertir JSON a CSV"}} python/with_statement -.-> lab-302709{{"Convertir JSON a CSV"}} python/data_serialization -.-> lab-302709{{"Convertir JSON a CSV"}} end

Leer y entender los datos JSON

En este paso, aprenderás a leer y entender los datos JSON del archivo web_access.json.

  1. Abre el archivo web_access.json ubicado en el directorio ~/project utilizando un editor de texto.
  2. 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".
  3. 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.

  1. Crea un nuevo archivo de Python llamado convert.py en el directorio ~/project.
  2. En el archivo convert.py, importa las bibliotecas necesarias:
import csv
import json
  1. Lee los datos JSON del archivo web_access.json:
with open("web_access.json", "r") as json_file:
    data = json.load(json_file)
  1. Define el orden de las columnas en el archivo CSV:
fieldnames = [
    "IP",
    "Estado",
    "Hora",
    "HttpReferer",
    "HttpUserAgent",
    "Solicitud",
    "HttpXForwardedFor",
    "BodyBytesSent",
    "UsuarioRemoto",
    "LongitudSolicitud",
]
  1. Abre un nuevo archivo CSV llamado result.csv en el directorio ~/project y crea un objeto csv.DictWriter:
with open("result.csv", "w", newline="") as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames, quoting=csv.QUOTE_ALL)
  1. Escribe la fila de encabezados en el archivo CSV:
writer.writeheader()
  1. 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)

Ejecuta el script de Python

En este paso, ejecutarás el script convert.py para generar el archivo result.csv.

  1. Abre una terminal y navega hasta el directorio ~/project.
  2. Ejecuta el script convert.py utilizando el siguiente comando:
python convert.py
  1. Una vez que el script se complete, deberías ver un nuevo archivo llamado result.csv en el directorio ~/project.
  2. Puedes ver las primeras 10 líneas del archivo result.csv utilizando 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.

✨ Revisar Solución y Practicar

Resumen

¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.