Leer y escribir archivos JSON en Python con Pandas

L

Introducción

Pandas es una de las bibliotecas de Python más utilizadas para el manejo y visualización de datos. los Biblioteca de pandas proporciona clases y funcionalidades que se pueden utilizar para leer, manipular y visualizar datos de manera eficiente, almacenados en una variedad de formatos de archivo.

En este artículo, leeremos y escribiremos archivos JSON usando Python y Pandas.

¿Qué es un archivo JSON?

La notación de objetos JavaScript (JSON) es un formato de datos que almacena datos en un formato legible por humanos. Si bien técnicamente se puede utilizar para almacenamiento, los archivos JSON se utilizan principalmente para la serialización y el intercambio de información entre un cliente y un servidor.

Aunque se derivó de JavaScript, es independiente de la plataforma y es un formato ampliamente difundido y utilizado, principalmente en las API REST.

Crear un archivo JSON

Para crear archivos JSON a través de Python, los datos deben almacenarse de cierta manera. Hay varias formas de almacenar estos datos usando Python. Algunos de los métodos se han discutido en este artículo.

Primero crearemos un archivo usando el núcleo de Python y luego lo leeremos y escribiremos a través de Pandas.

Creación de datos JSON a través de diccionarios anidados

En Python, para crear datos JSON, puede utilizar diccionarios anidados. Cada elemento dentro del diccionario externo corresponde a una columna en el archivo JSON.

La clave de cada elemento es el encabezado de la columna y el valor es otro diccionario que consta de filas en esa columna en particular. Creemos un diccionario que se pueda usar para crear un archivo JSON que almacene un registro de pacientes ficticios:

patients = {
         "Name":{"0":"John","1":"Nick","2":"Ali","3":"Joseph"},
         "Gender":{"0":"Male","1":"Male","2":"Female","3":"Male"},
         "Nationality":{"0":"UK","1":"French","2":"USA","3":"Brazil"},
         "Age" :{"0":10,"1":25,"2":35,"3":29}
}

En el guión anterior, el primer elemento corresponde al Name columna. El valor del elemento consiste en un diccionario donde los elementos del diccionario representan filas. Las claves de los elementos del diccionario interno corresponden a los números de índice de las filas, donde los valores representan los valores de las filas.

Dado que eso puede ser un poco difícil de visualizar así, aquí hay una representación visual:

En el Name columna, el primer registro se almacena en el índice 0 donde el valor del registro es John, de manera similar, el valor almacenado en la segunda fila del Name la columna es Nick y así.

Crear datos JSON a través de listas de diccionarios

Otra forma de crear datos JSON es mediante una lista de diccionarios. Cada elemento de la lista consta de un diccionario y cada diccionario representa una fila. Este enfoque es mucho más legible que el uso de diccionarios anidados.

Creemos una lista que se puede usar para crear un archivo JSON que almacena información sobre diferentes autos:

cars = [
    {"Name":"Honda", "Price": 10000, "Model":2005, "Power": 1300},
    {"Name":"Toyota", "Price": 12000, "Model":2010, "Power": 1600},
    {"Name":"Audi", "Price": 25000, "Model":2017, "Power": 1800},
    {"Name":"Ford", "Price": 28000, "Model":2009, "Power": 1200},
         
]

Cada elemento del diccionario corresponde a una fila en un archivo JSON. Por ejemplo, el primer elemento del primer diccionario almacena el valor Honda en el Name columna. Del mismo modo, el valor de la Price La columna de la primera fila será 10000 y así.

Escribir datos en un archivo JSON a través de Python

Con nuestro diccionario anidado y una lista de diccionarios, podemos almacenar estos datos en un archivo JSON. Para lograr esto, usaremos el json módulo y el dump() método:

import json
with open('E:/datasets/patients.json', 'w') as f:
    json.dump(patients, f)
    
with open('E:/datasets/cars.json', 'w') as f:
    json.dump(cars, f)  

Ahora, tenemos dos archivos JSON: patients.json y cars.json. El siguiente paso es leer estos archivos a través de la biblioteca Pandas.

Si desea leer más sobre cómo leer y escribir JSON en un archivo en Core Python, ¡lo tenemos cubierto!

Leer archivos JSON con Pandas

Para leer un archivo JSON a través de Pandas, utilizaremos el read_json() y pasarle la ruta al archivo que nos gustaría leer. El método devuelve un Pandas DataFrame que almacena datos en forma de columnas y filas.

Aunque, primero, tendremos que instalar Pandas:

$ pip install pandas

Leer JSON desde archivos locales

El siguiente script lee el patients.json archivo de un directorio del sistema local y almacena el resultado en el patients_df marco de datos. El encabezado del marco de datos se imprime a través de la head() método:

import pandas as pd
patients_df = pd.read_json('E:/datasets/patients.json')
patients_df.head()

Ejecutar este código debería producir:

De manera similar, el siguiente script lee el cars.json archivo del sistema local y luego llama al head() método en el cars_df para imprimir el encabezado:

cars_df = pd.read_json('E:/datasets/cars.json')
cars_df.head()

Ejecutar este código debería producir:

Leyendo JSON desde archivos remotos

los read_json() El método no se limita a leer solo archivos locales. También puede leer archivos JSON ubicados en servidores remotos. Solo tiene que pasar la ruta del archivo JSON remoto a la llamada a la función.

Leamos e imprimamos el encabezado del Iris Dataset, un conjunto de datos muy popular que contiene información sobre varias flores de Iris:

import pandas as pd
iris_data = pd.read_json("https://raw.githubusercontent.com/domoritz/maps/master/data/iris.json")
iris_data.head()

Ejecutar este código debería producirnos:

Escribir archivos de datos JSON a través de Pandas

Para convertir un marco de datos de Pandas en un archivo JSON, usamos el to_json() función en el marco de datos y pasar la ruta al archivo que pronto será como parámetro.

Creemos un archivo JSON desde el tips conjunto de datos, que se incluye en la biblioteca Seaborn para la visualización de datos.

Primero que nada, instalemos Seaborn:

$ pip install seaborn

Luego, importémoslo y carguemos las sugerencias en un conjunto de datos:

import seaborn as sns

dataset = sns.load_dataset('tips')
dataset.head()

Así es como se ve el conjunto de datos:

Seaborn’s load_dataset() la función devuelve un pandas DataFrame, por lo que cargar el conjunto de datos de esta manera nos permite simplemente llamar al to_json() función para convertirlo.

Una vez que hayamos obtenido el conjunto de datos, guardemos su contenido en un archivo JSON. Hemos creado un datasets directorio para esto:

dataset.to_json('E:/datasets/tips.json')

Navegando al E:/datasets directorio, deberías ver tips.json. Al abrir el archivo, podemos ver JSON que corresponden a registros en el marco de datos de Pandas que contiene el tips conjunto de datos:

{
   "total_bill":{
       "0":16.99,
       "1":10.34,
       "2":21.01,
       "3":23.68,
       "4":24.59,
       "5":25.29,
       ...
   }
   "tip":{
       "0":1.01,
       "1":1.66,
       "2":3.5,
       "3":3.31,
       "4":3.61,
       "5":4.71,
       ...
   }
   "sex":{
        "0":"Female",
        "1":"Male",
        "2":"Male",
        "3":"Male",
        "4":"Female",
        "5":"Male",
        ...
   }
    "smoker":{
        "0":"No",
        "1":"No",
        "2":"No",
        "3":"No",
        "4":"No",
        "5":"No",
        ...
    }
    ...

Conclusión

JSON es un formato ampliamente utilizado para el almacenamiento e intercambio de datos entre un cliente y un servidor. Los desarrolladores suelen utilizar este formato sobre formatos como XML debido a lo ligero y legible que es.

En este artículo, hemos cubierto cómo leer y escribir archivos JSON utilizando la popular biblioteca Pandas de Python, desde archivos locales a remotos.

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad