Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Normalizar Json

Aquí mi código:

import pandas as pd
import requests
import json

datos_frutas = requests.get('https://fruityvice.com/api/fruit/all')

resultado = json.loads(datos_frutas.text)

Luego podemos obtener una vista previa del DataFrame.

pd.DataFrame(resultado)

name id family order genus nutritions
0 Persimmon 52 Ebenaceae Rosales Diospyros {'calories': 81, 'fat': 0.0, 'sugar': 18.0, 'c...
1 Strawberry 3 Rosaceae Rosales Fragaria {'calories': 29, 'fat': 0.4, 'sugar': 5.4, 'ca...
2 Banana 1 Musaceae Zingiberales Musa {'calories': 96, 'fat': 0.2, 'sugar': 17.2, 'c..

Este DataFrame tiene 6 columnas: genus (género), name (nombre), id, family (familia), order (orden) e nutritions (nutriciones). Observe que la columna nutritions tiene toda la información nutricional anidada en ella. Por tanto, es necesario normalizar los datos.
El desafío ahora es normalizar este DataFrame.

pd.json_normalize(resultado)

name id family order genus nutritions.calories nutritions.fat nutritions.sugar nutritions.carbohydrates nutritions.protein
0 Persimmon 52 Ebenaceae Rosales Diospyros 81 0.00 18.00 18.00 0.00
1 Strawberry 3 Rosaceae Rosales Fragaria 29 0.40 5.40 5.50 0.80
2 Banana 1 Musaceae Zingiberales Musa 96 0.20 17.20 22.00 1.00
3 Tomato 5 Solanaceae Solanales Solanum 74 0.20 2.60 3.90 0.90

df_normalizado= pd.json_normalize(resultado)

Exportando archivo json

df_normalizado.to_json('info_nutricional.json')

1 respuesta

Hola Yara, espero que estés bien

¡Espero que estés bien! Veo que estás trabajando con la normalización de datos JSON en un DataFrame de pandas. Parece que ya has logrado normalizar los datos utilizando pd.json_normalize, lo cual es genial. Esto te permite descomponer la información anidada en columnas individuales para cada atributo nutricional, lo que facilita el análisis.

Si deseas asegurarte de que los datos se han normalizado correctamente, puedes verificar el DataFrame resultante df_normalizado imprimiéndolo o visualizándolo en un entorno de Jupyter Notebook, por ejemplo. Esto te permitirá ver si todas las columnas se han creado como esperabas.

Además, veo que has exportado el DataFrame normalizado a un archivo JSON usando df_normalizado.to_json('info_nutricional.json'). Esto debería crear un archivo JSON en tu directorio de trabajo actual. Si necesitas especificar un formato más legible, puedes usar el parámetro orient dentro de to_json, como orient='records', para estructurar el JSON de una manera que sea más fácil de leer.

Espero que esto te ayude a continuar con tu proyecto. ¡Bons estudios!