¿Cómo convertir datos JSON a un archivo CSV en Python?

Convertir datos JSON a un archivo CSV en Python es una tarea habitual para la manipulación y el análisis de datos. JSON (JavaScript Object Notation) es un formato popular para el intercambio de datos porque es fácil de leer y escribir tanto para humanos como para máquinas. CSV (Comma Separated Values) es un formato sencillo para almacenar datos tabulares, muy utilizado en el análisis y la visualización de datos. Esta guía le mostrará cómo convertir datos JSON a un archivo CSV en Python utilizando varios métodos.

¿Por qué convertir JSON a CSV?

Antes de sumergirnos en el proceso de conversión, es importante comprender las razones que lo motivan. JSON y CSV tienen diferentes propósitos:

  • JSON: ideal para estructuras de datos jerárquicas o anidadas. Se utiliza habitualmente en aplicaciones web para el intercambio de datos.
  • CSV: más adecuado para datos planos y tabulares. Se utiliza ampliamente en herramientas de análisis de datos y aplicaciones de hojas de cálculo.

Comprender las ventajas y desventajas de JSON frente a CSV puede ayudarle a decidir cuál es el mejor formato para sus necesidades.

Método 1: Uso de las bibliotecas csv y json

Las bibliotecas csv y json integradas en Python proporcionan una forma sencilla de convertir datos JSON a CSV.

      import json
import csv

# Ejemplo de datos JSON
json_data = '''
[
    {"name": "John", "age": 30, "city": "New York"},
    {"name": "Anna", "age": 22, "city": "London"},
    {"name": "Mike", "age": 32, "city": "Chicago"}
]
'''

# Parseo de los datos JSON
data = json.loads(json_data)

# Abrir un archivo CSV para escribir
with open('output.csv', 'w', newline='') as csv_file:
    # Crear un objeto escritor CSV
    csv_writer = csv.writer(csv_file)
    
    # Escribir la fila de encabezado
    header = data[0].keys()
    csv_writer.writerow(header)
    
    # Escribir las filas de datos
    for row in data:
        csv_writer.writerow(row.values())
    

Este método lee datos JSON, los realiza mediante parseo en un diccionario Python y, a continuación, los escribe en un archivo CSV.

Método 2: Uso de pandas

Pandas es una potente biblioteca para la manipulación y el análisis de datos. Hace que el proceso de conversión sea fácil y eficiente.

      import pandas as pd

# Datos JSON de muestra
json_data = '''
[
    {"name": "John", "age": 30, "city": "New York"},
    {"name": "Anna", "age": 22, "city": "London"},
    {"name": "Mike", "age": 32, "city": "Chicago"}
]
'''

# Cargar los datos JSON en un DataFrame
df = pd.read_json(json_data)

# Escribir el DataFrame en un archivo CSV
df.to_csv('output.csv', index=False)
    

Pandas gestiona la conversión con solo unas pocas líneas de código, lo que lo convierte en la opción preferida para tareas complejas de manipulación de datos.

Método 3: Uso de csv y json con JSON anidado

El manejo de estructuras JSON anidadas requiere aplanar los datos antes de la conversión. La función json_normalize de pandas se puede utilizar para este fin.

      import pandas as pd
from pandas import json_normalize

# Ejemplo de datos JSON anidados
nested_json_data = '''
[
    {
        "name": "John",
        "age": 30,
        "address": {"city": "New York", "zip": "10001"}
    },
    {
        "name": "Anna",
        "age": 22,
        "address": {"city": "London", "zip": "SW1A"}
    }
]
'''

# Cargar y normalizar los datos JSON
df = pd.json_normalize(json.loads(nested_json_data))

# Escribir el DataFrame en un archivo CSV
df.to_csv('output.csv', index=False)

    

Este enfoque es útil para convertir estructuras JSON complejas en un formato CSV plano.

JSON frente a XML

Aunque tanto JSON como XML se utilizan para el intercambio de datos, JSON suele ser más fácil de leer y escribir. Sin embargo, XML puede ser más potente debido a su capacidad para definir esquemas complejos. Comprender las diferencias entre JSON y XML puede ayudarle a elegir el formato adecuado para su proyecto.

Conclusión

La conversión de datos JSON a CSV en Python es un proceso sencillo que utiliza bibliotecas como csv, json y pandas. Cada método tiene sus ventajas, y la elección depende de la complejidad de sus datos y de sus necesidades específicas. Si le interesa obtener información sobre JSON frente a CSV, lea este artículo.

Regístrese hoy mismo en Bright Data y explore los mejores productos de Scraping web.

CONFIADO POR 20,000+ CLIENTES EN TODO EL MUNDO

¿Listo para empezar?