Introducci贸n
Contenido
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.