Resuelto use esto para mirar el json :
import pandas as pd
import numpy as np
Ajustar la configuración de pandas para mostrar todas las columnas
pd.set_option('display.max_columns', None)
url = 'https://gist.githubusercontent.com/ahcamachod/24a6235f7cdf255501b5ab4f9b0fd97f/raw/fa329f6d6c1b6b00b3ba457cdc850b53210633ca/zoop_market.json'
Leer el JSON desde la URL
df = pd.read_json(url)
Verificar las primeras filas del DataFrame original
print("DataFrame original:")
print(df.head())
Verificar el contenido de las columnas 'item' y 'tienda'
print("\nContenido de la columna 'item':")
print(df['item'].head())
print("\nContenido de la columna 'tienda':")
print(df['tienda'].head())
Verificar si las columnas 'item' y 'tienda' contienen datos JSON válidos
if isinstance(df['item'].iloc[0], dict) and isinstance(df['tienda'].iloc[0], dict):
print("\nLas columnas 'item' y 'tienda' contienen datos JSON válidos.")
# Expande la columna 'item' y convierte los datos JSON en columnas
item_df = pd.json_normalize(df['item'])
# Expande la columna 'tienda' y convierte los datos JSON en columnas
tienda_df = pd.json_normalize(df['tienda'])
# Elimina las columnas originales 'item' y 'tienda' del DataFrame
df = df.drop(columns=['item', 'tienda'])
# Concatenar las columnas expandidas al DataFrame original
df = pd.concat([df, item_df, tienda_df], axis=1)
# Mostrar las primeras filas del DataFrame resultante
print("\nDataFrame resultante:")
print(df.head())
else:
print("\nLas columnas 'item' y 'tienda' NO contienen datos JSON válidos.")
muestra esto:
luego se corrige el código con DeepSeek:
import pandas as pd
import ast # Para convertir cadenas en diccionarios
url = 'https://gist.githubusercontent.com/ahcamachod/24a6235f7cdf255501b5ab4f9b0fd97f/raw/fa329f6d6c1b6b00b3ba457cdc850b53210633ca/zoop_market.json'
Leer el JSON desde la URL
df = pd.read_json(url)
Verificar las primeras filas del DataFrame original
print("DataFrame original:")
print(df.head())
Convertir las cadenas JSON en diccionarios
df['item'] = df['item'].apply(ast.literal_eval) # Convierte la columna 'item'
df['tienda'] = df['tienda'].apply(ast.literal_eval) # Convierte la columna 'tienda'
Verificar el tipo de datos de las columnas 'item' y 'tienda'
print("\nTipo de datos después de la conversión:")
print("Tipo de 'item':", type(df['item'].iloc[0]))
print("Tipo de 'tienda':", type(df['tienda'].iloc[0]))
Expande la columna 'item' y convierte los datos JSON en columnas
item_df = pd.json_normalize(df['item'])
Expande la columna 'tienda' y convierte los datos JSON en columnas
tienda_df = pd.json_normalize(df['tienda'])
Elimina las columnas originales 'item' y 'tienda' del DataFrame
df = df.drop(columns=['item', 'tienda'])
df = df.drop(columns=['index'])
Concatenar las columnas expandidas al DataFrame original
df = pd.concat([df, item_df, tienda_df], axis=1)
Mostrar las primeras filas del DataFrame resultante
print("\nDataFrame resultante:")
print(df.head())
df.info()
Filtrar solo las columnas numéricas
df_numeric = df.select_dtypes(include='number')
Ver estadísticas descriptivas solo para columnas numéricas
print(df_numeric.describe())
df.info()
a también elimine la columna índex por qué no le salía en el video al profe.