Pandas & NumPy Academy · Lección

Lectura de archivos Excel y JSON

Importe libros de Excel con pd.read_excel y registros JSON con pd.read_json, gestionando las variaciones habituales de formato.

Lección 2 de 413 pasos

Lectura de archivos Excel y JSON es una lección gratuita de Pandas & NumPy Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Pandas & NumPy Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.

Por qué son importantes Excel y JSON

Aunque CSV es el formato universal, los archivos de Excel (.xlsx/.xls) son el formato predominante para los datos empresariales que se comparten por correo electrónico y mediante herramientas de generación de informes. JSON es el formato nativo de las API REST y las bases de datos NoSQL. Pandas proporciona pd.read_excel() y pd.read_json(), cuyas API reflejan la del lector de CSV, por lo que las habilidades se transfieren directamente.

import pandas as pd

# The three most common load functions share the same philosophy
df_csv   = pd.read_csv('data.csv')
df_excel = pd.read_excel('data.xlsx')
df_json  = pd.read_json('data.json')

Instalación del motor de Excel

Para leer archivos de Excel se necesita un motor: openpyxl para archivos .xlsx (formato moderno) y xlrd para archivos .xls antiguos. Instálelo con pip install openpyxl. Pandas selecciona automáticamente el motor según la extensión del archivo. Para escribir, use xlsxwriter si necesita formato avanzado. Si el motor no está instalado, read_excel() genera un ModuleNotFoundError.

# Install the required engine:
# pip install openpyxl          # for .xlsx (modern)
# pip install xlrd==1.2.0       # for .xls (legacy)

import pandas as pd
df = pd.read_excel('report.xlsx', engine='openpyxl')

Selección de una hoja con sheet_name

Los libros de Excel pueden tener varias hojas. sheet_name= especifica cuál se debe leer: pase una cadena (nombre de la hoja), un entero (posición basada en cero) o una lista para leer varias hojas en un diccionario. Pase sheet_name=None para leer todas las hojas en un diccionario cuyas claves sean los nombres de las hojas. Inspeccionar las hojas disponibles con pd.ExcelFile('file.xlsx').sheet_names es un buen punto de partida.

import pandas as pd

# Read the second sheet
df = pd.read_excel('workbook.xlsx', sheet_name=1)

# Read by name
df = pd.read_excel('workbook.xlsx', sheet_name='Sales')

# Inspect available sheets
xl = pd.ExcelFile('workbook.xlsx')
print(xl.sheet_names)  # ['Summary', 'Sales', 'Costs']

Parámetros habituales de Excel

pd.read_excel() admite la mayoría de los mismos parámetros que read_csv(): header=, index_col=, usecols=, skiprows=, dtype= y nrows=. En Excel, usecols también acepta una cadena de rango de columnas de Excel, como 'A:C' o 'A,C,E', lo que resulta práctico cuando las letras de las columnas se conocen por la disposición de la hoja de cálculo.

import pandas as pd

df = pd.read_excel(
    'sales_report.xlsx',
    sheet_name='Q1',
    header=2,          # header is on row 3 (0-indexed)
    usecols='A:D',     # Excel column range
    skiprows=[3, 4],   # skip rows 4 and 5
    nrows=100
)

Lectura de JSON: formatos de orient

pd.read_json() lee JSON y lo convierte en un DataFrame. El parámetro orient= especifica la estructura del JSON: 'records' (lista de diccionarios de filas), 'columns' (diccionario de arrays de columnas, opción predeterminada), 'index' (diccionario de diccionarios de filas cuyas claves son los índices) o 'values' (array sin procesar). La mayoría de las API REST devuelven el formato 'records'; inspeccione siempre primero el JSON sin procesar para determinar el orient correcto.

import pandas as pd

# REST API response: list of records
json_str = '[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]'
df = pd.read_json(json_str, orient='records')
print(df)

Lectura de JSON desde un archivo o una URL

pd.read_json() acepta una ruta de archivo, una URL o directamente una cadena JSON. Para JSON profundamente anidado (por ejemplo, respuestas de API con objetos anidados), use json_normalize() del módulo pandas.io.json, que aplana los diccionarios anidados y los convierte en columnas con nombres separados por puntos.

import pandas as pd
from pandas.io.json import json_normalize

# From a file
df = pd.read_json('events.json')

# Flatten nested JSON
nested = [{'id': 1, 'user': {'name': 'A', 'age': 30}},
          {'id': 2, 'user': {'name': 'B', 'age': 25}}]
df_flat = json_normalize(nested)
print(df_flat.columns.tolist())  # ['id', 'user.name', 'user.age']

Formato JSON Lines

JSON Lines (NDJSON) almacena un objeto JSON por línea, lo que facilita transmitir grandes conjuntos de datos. Use pd.read_json('file.jsonl', lines=True) para analizar este formato. Es habitual en archivos de registro, exportaciones de Kafka y formatos de conjuntos de datos de machine learning. Cada línea debe ser un objeto JSON válido; las líneas con formato incorrecto hacen que falle la lectura.

import pandas as pd

# file.jsonl contains one JSON record per line:
# {"id": 1, "event": "click"}
# {"id": 2, "event": "view"}
df = pd.read_json('events.jsonl', lines=True)
print(df)

Gestión del análisis de fechas en JSON

JSON no tiene un tipo de fecha nativo: las fechas se almacenan como cadenas o marcas de tiempo Unix (milisegundos o segundos desde el epoch). Establezca convert_dates=True (opción predeterminada) para que Pandas intente convertir automáticamente las columnas cuyos nombres contengan 'date', 'time' o 'at'. Para nombres de columnas o marcas de tiempo personalizados, realice la conversión explícitamente con pd.to_datetime(df['col'], unit='ms').

import pandas as pd

# Unix milliseconds timestamp column
df = pd.read_json('events.json', orient='records')
df['created_at'] = pd.to_datetime(df['created_at'], unit='ms')
print(df['created_at'].dtype)  # datetime64[ns]

Comparación de problemas habituales de Excel y JSON

Problemas habituales de Excel: las celdas combinadas producen filas con NaN, las filas y columnas ocultas se incluyen en la salida y el formato de los números (por ejemplo, fechas almacenadas como flotantes) debe corregirse después de la carga. Problemas habituales de JSON: la presencia incoherente de campos entre los registros produce NaN y las claves enteras de un objeto JSON se convierten en nombres de columnas de tipo cadena.

import pandas as pd

# Excel date stored as float (Excel serial date)
df = pd.read_excel('old_report.xls')
# If dates appear as floats (e.g., 44927.0), convert:
# from xlrd import xldate_as_datetime
# df['date'] = df['date'].apply(lambda x: xldate_as_datetime(x, 0))

pd.ExcelFile para varias hojas

Cuando necesite leer varias hojas del mismo archivo de forma eficiente, abra un gestor de contexto pd.ExcelFile y llame a parse(sheet_name) para cada hoja. Así evita volver a abrir y analizar el archivo para cada hoja, algo importante en libros grandes. El gestor de contexto cierra automáticamente el descriptor del archivo.

import pandas as pd

with pd.ExcelFile('annual_report.xlsx') as xf:
    df_q1 = xf.parse('Q1')
    df_q2 = xf.parse('Q2')

print(df_q1.shape, df_q2.shape)

Uso de requests para cargar API JSON

Para obtener datos de una API REST, use la biblioteca requests para recuperar el JSON y pase el objeto de Python analizado a pd.DataFrame() o pd.json_normalize(). Este patrón separa la gestión HTTP del análisis de datos y le permite acceder a encabezados, autenticación y paginación antes de que Pandas procese los datos.

import pandas as pd
import requests

response = requests.get('https://api.example.com/records')
data = response.json()   # Python list of dicts
df = pd.DataFrame(data)
print(df.head())

Comprobación rápida

Ponga a prueba su comprensión de la lectura de archivos de Excel y JSON con Pandas en esta lección.

Resumen de la lección

En esta lección ha aprendido que pd.read_excel() lee archivos xlsx y permite especificar qué hoja cargar mediante sheet_name, que pd.read_json() gestiona varias estructuras JSON controladas por el parámetro orient y que json_normalize() aplana objetos JSON anidados y los convierte en un DataFrame plano. A continuación, exportaremos DataFrames a archivos CSV y Excel para compartirlos y procesarlos posteriormente.

Gratis para empezar

Aprende Python con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
30
Lecciones
120

Preguntas frecuentes

¿La lección «Lectura de archivos Excel y JSON» es gratis?

Sí — el texto completo de «Lectura de archivos Excel y JSON» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Pandas & NumPy Academy, actualiza a CoddyKit PRO. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Lectura de archivos Excel y JSON»?

Importe libros de Excel con pd.read_excel y registros JSON con pd.read_json, gestionando las variaciones habituales de formato. Practicas Pandas & NumPy Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Pandas & NumPy Academy?

No se requiere experiencia previa. Pandas & NumPy Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Lectura de archivos Excel y JSON»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Pandas & NumPy Academy?

Sí. Cada lección de Pandas & NumPy Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Lectura de archivos CSV
  2. Lectura de archivos Excel y JSON
  3. Escritura de DataFrames en archivos
  4. Lectura desde URL y StringIO
← Volver a Pandas & NumPy Academy