Saltar al contenido

Importar datos de un recurso JSON con Python

Si necesitamos que lea un archivo con formato JSON y convierta su contenido en objetos Python, utilizaremos el método .load() del módulo json . A diferencia de .loads(), que toma una cadena como argumento, .load() espera un objeto de archivo. En resumen, ambas funciones realizan la misma tarea, pero difieren en el tipo de entrada que manejan. De forma similar, .dumps() convierte los objetos de Python en cadenas, mientras que .dump() los guarda en un archivo.

En su forma más simple, usaríamos la siguiente suite para leer nba_teams.json en una variable de tipo lista llamada datos :

Importar datos de un recurso JSON con Python
Importar datos de un recurso JSON con Python
12withopen($0027nba_teams.json$0027)as f: data = json.load(f)

pitón

Sin embargo, tanto .loads() como .load() aceptan, como argumento opcional, una función que puede ser usada para implementar un decodificador personalizado. Supongamos que queremos agrupar los equipos en divisiones (Atlántico, Central, Sudeste, Noroeste, Pacífico y Suroeste) y devolver una lista de los equipos de cada división.

Para empezar, definiremos una función llamada group_teams_by_division(). Esta función tomará cada equipo del objeto del archivo y lo decodificará en una tupla con el nombre del equipo y la división:

12defgroup_teams_by_division(team):return(team[$0027nombrecompleto$0027], team[$0027divName$0027])

pitón

A continuación, abriremos el archivo y pasaremos como argumento object_hook = team_by_division.

12withopen($0027nba_teams.json$0027)as f: data = json.load(f, object_hook = group_teams_by_division)

pitón

Finalmente, crearemos un diccionario donde las claves serán los nombres de las divisiones y el valor correspondiente será una lista de todos los equipos de esa división:

123456 teams_by_division ={}for i inrange(len(data)): team, division = data[i]if division notin teams_by_division.keys(): teams_by_division[division]=[] teams_by_division[division].append(team)

pitón

Ten en cuenta que puedes imprimir el diccionario o usar .dump() para guardarlo en un archivo llamado teams_by_division.json como se ve en la Fig. 6:

12withopen($0027equipos_por_división.json$0027,$0027w$0027)as f: json.dump(equipos_por_división, f, indent =4, sort_keys =True)

pitón

En este punto se puede utilizar potencialmente lo que aprendimos en la importación de datos de los archivos de Microsoft Excel con Python para crear hojas de cálculo para una visualización más fácil.