Los datos rara vez vienen listos en tu código — normalmente están en archivos CSV, Excel, bases de datos o APIs. El primer paso de cualquier análisis es cargar esos datos en Python. pandas hace esto muy simple.
Leer un archivo CSV
CSV (Comma-Separated Values) es el formato más común para datos tabulares.
import pandas as pd
df = pd.read_csv('datos.csv')
print(df.head())
Si el archivo está en otra carpeta:
df = pd.read_csv('/ruta/a/mis/datos/ventas.csv')
Opciones útiles de read_csv
# Especificar separador (a veces es ; en lugar de ,)
df = pd.read_csv('datos.csv', sep=';')
# Saltar filas al inicio
df = pd.read_csv('datos.csv', skiprows=2)
# Leer solo algunas columnas
df = pd.read_csv('datos.csv', usecols=['nombre', 'salario', 'fecha'])
# Especificar el encoding (importante con acentos y ñ)
df = pd.read_csv('datos.csv', encoding='utf-8')
# o si falla:
df = pd.read_csv('datos.csv', encoding='latin-1')
# Indicar columna de fecha para parsearla automáticamente
df = pd.read_csv('datos.csv', parse_dates=['fecha_venta'])
Leer un archivo Excel
# Requiere openpyxl: pip install openpyxl
df = pd.read_excel('datos.xlsx')
# Leer una hoja específica
df = pd.read_excel('datos.xlsx', sheet_name='Ventas 2025')
# Leer todas las hojas (devuelve un diccionario)
hojas = pd.read_excel('datos.xlsx', sheet_name=None)
df_ventas = hojas['Ventas']
df_gastos = hojas['Gastos']
Verificar los datos cargados
Después de cargar, siempre revisa:
print(df.shape) # cuántas filas y columnas
print(df.dtypes) # tipos de datos
print(df.head()) # primeras filas
print(df.isnull().sum()) # valores faltantes
print(df.duplicated().sum()) # duplicados
Ejemplo completo: análisis de ventas
import pandas as pd
# Cargar datos
df = pd.read_csv('ventas.csv', parse_dates=['fecha'])
# Revisar
print(f"Filas: {df.shape[0]}, Columnas: {df.shape[1]}")
print(df.dtypes)
print(df.head(3))
# Resumen estadístico
print(df['monto'].describe())
# Ventas totales por mes
df['mes'] = df['fecha'].dt.month
print(df.groupby('mes')['monto'].sum())
Guardar el resultado
Después de limpiar o transformar los datos, puedes guardarlos:
df.to_csv('datos_limpios.csv', index=False)
df.to_excel('datos_limpios.xlsx', index=False)
index=False evita que se guarde la columna de índice numérico de pandas.
Errores frecuentes
Error de encoding con acentos: si ves caracteres raros (é en lugar de é), prueba con encoding='latin-1' o encoding='utf-8-sig'.
Separador incorrecto: si read_csv genera una sola columna con todo el contenido, es probable que el separador sea ; y no ,. Usa sep=';'.
Fechas como strings: pandas no convierte fechas automáticamente. Si necesitas operar con fechas, usa parse_dates=['columna_fecha'] al cargar.
Aprende haciendo, no solo leyendo
Leer es el primer paso. El verdadero aprendizaje ocurre cuando practicas con ejercicios reales de SQL y recibes corrección inmediata de IA.
Comenzar gratis →