certmundo.
es‑mx

6 min de lectura

¿Cómo usar pandas para cargar y explorar un conjunto de datos?

pandas es la biblioteca de Python que te permite cargar, organizar y explorar datos tabulares en segundos.

En esta lección aprenderás a importar archivos CSV y Excel, y a usar las funciones básicas de exploración. Usaremos ejemplos con datos de ventas al estilo de Liverpool y Bimbo.


¿Qué es un DataFrame?

Un DataFrame es la estructura principal de pandas. Es una tabla con filas y columnas, igual que una hoja de Excel.

Cada columna tiene un nombre y un tipo de dato. Cada fila representa un registro, por ejemplo, una venta.


Cómo importar pandas

Antes de cargar cualquier archivo, importa la biblioteca. La convención estándar es usar el alias pd:

import pandas as pd

Si ves el error ModuleNotFoundError, revisa la lección anterior. Debes activar tu entorno virtual e instalar pandas con pip install pandas.


Cargar un archivo CSV

Usa pd.read_csv() para leer archivos de valores separados por comas.

Estructura

df = pd.read_csv("ruta/al/archivo.csv")

Ejemplo 1 — Ventas de Liverpool

Supón que tienes un archivo ventas_liverpool.csv con este contenido:

fecha,producto,cantidad,precio_unitario
2024-01-05,Televisor,3,8500
2024-01-06,Lavadora,1,12500
2024-01-07,Cafetera,5,1200
2024-01-08,Televisor,2,8500
2024-01-09,Refrigerador,1,18500

Carga el archivo así:

df = pd.read_csv("ventas_liverpool.csv")
print(df)

Salida esperada:

        fecha       producto  cantidad  precio_unitario
0  2024-01-05      Televisor         3             8500
1  2024-01-06       Lavadora         1            12500
2  2024-01-07       Cafetera         5             1200
3  2024-01-08      Televisor         2             8500
4  2024-01-09  Refrigerador         1            18500

Parámetros útiles de read_csv

Parámetro Para qué sirve Ejemplo
sep Define el separador sep=";"
encoding Codificación del archivo encoding="utf-8"
header Fila que contiene los nombres de columna header=0
usecols Columnas que deseas cargar usecols=["producto","precio_unitario"]
nrows Número de filas a cargar nrows=100

Si tu archivo usa punto y coma como separador (común en exportaciones del SAT), escribe pd.read_csv("archivo.csv", sep=";").


Cargar un archivo Excel

Usa pd.read_excel() para archivos .xlsx o .xls.

Estructura

df = pd.read_excel("ruta/al/archivo.xlsx", sheet_name="Hoja1")

Necesitas la biblioteca openpyxl instalada. Si no la tienes, ejecuta pip install openpyxl.

Ejemplo 2 — Producción de Bimbo

Supón que tienes un archivo produccion_bimbo.xlsx con la hoja Enero:

df_bimbo = pd.read_excel(
    "produccion_bimbo.xlsx",
    sheet_name="Enero"
)
print(df_bimbo.head())

El parámetro sheet_name acepta el nombre de la hoja o su índice numérico (empezando en 0).


Explorar el DataFrame

Una vez que cargaste los datos, lo primero es conocer su estructura. pandas tiene funciones específicas para esto.

.head() y .tail()

.head(n) muestra las primeras n filas. El valor por defecto es 5.

print(df.head(3))

.tail(n) muestra las últimas n filas. Útil para ver si el archivo terminó bien.

print(df.tail(2))

.shape

.shape devuelve una tupla (filas, columnas). No lleva paréntesis porque es un atributo, no un método.

print(df.shape)
# Salida: (5, 4)

Eso significa 5 filas y 4 columnas en el ejemplo de Liverpool.

.dtypes

.dtypes muestra el tipo de dato de cada columna.

print(df.dtypes)

Salida:

fecha              object
producto           object
cantidad            int64
precio_unitario     int64
dtype: object

Cuando una columna de fechas aparece como object, debes convertirla con pd.to_datetime().

.info()

.info() combina varios datos en una sola vista: tipo de dato, valores no nulos y uso de memoria.

df.info()

Salida:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 4 columns):
 #   Column           Non-Null Count  Dtype
---  ------           --------------  -----
 0   fecha            5 non-null      object
 1   producto         5 non-null      object
 2   cantidad         5 non-null      int64
 3   precio_unitario  5 non-null      int64
dtypes: int64(2), object(2)
memory usage: 292.0+ bytes

Revisa siempre la columna Non-Null Count. Si hay menos valores que filas, tienes datos faltantes.

.describe()

.describe() genera estadísticas descriptivas de las columnas numéricas.

print(df.describe())

Salida:

       cantidad  precio_unitario
count       5.0              5.0
mean        2.4           9840.0
std         1.5           6317.7
min         1.0           1200.0
25%         1.0           8500.0
50%         2.0           8500.0
75%         3.0          12500.0
max         5.0          18500.0

La columna precio_unitario tiene un valor mínimo de $1,200 (cafetera) y un máximo de $18,500 (refrigerador).

.value_counts()

.value_counts() cuenta cuántas veces aparece cada valor en una columna.

print(df["producto"].value_counts())

Salida:

producto
Televisor       2
Lavadora        1
Cafetera        1
Refrigerador    1
Name: producto, dtype: int64

Esto te dice que el Televisor fue el producto más vendido en el período.


Calcular columnas nuevas

Ejemplo 3 — Ingreso total por venta

Multiplica cantidad por precio_unitario para crear la columna ingreso_total:

df["ingreso_total"] = df["cantidad"] * df["precio_unitario"]
print(df[["producto", "ingreso_total"]])

Salida:

        producto  ingreso_total
0      Televisor          25500
1       Lavadora          12500
2       Cafetera           6000
3      Televisor          17000
4   Refrigerador          18500

El ingreso total del período es:

total = df["ingreso_total"].sum()
print(f"Ingreso total: ${total:,.0f}")
# Salida: Ingreso total: $79,500

Errores comunes

Error 1 — Ruta incorrecta del archivo

Si escribes pd.read_csv("ventas.csv") y el archivo está en otra carpeta, obtendrás FileNotFoundError.

Solución: usa rutas absolutas o coloca el archivo en la misma carpeta que tu script. Puedes verificar tu carpeta actual con:

import os
print(os.getcwd())

Error 2 — Codificación incorrecta

Los archivos exportados desde sistemas mexicanos a veces usan latin-1 en lugar de utf-8. Verás caracteres extraños en los acentos.

Solución: agrega el parámetro encoding:

df = pd.read_csv("ventas.csv", encoding="latin-1")

Error 3 — Confundir .shape con .shape()

.shape es un atributo, no un método. Si escribes df.shape() obtendrás TypeError: 'tuple' object is not callable.

Solución: escribe siempre df.shape sin paréntesis.

Error 4 — Olvidar instalar openpyxl

Si intentas abrir un .xlsx sin esta biblioteca, verás ModuleNotFoundError: No module named 'openpyxl'.

Solución: instala con pip install openpyxl dentro de tu entorno virtual activo.


Tabla de referencia rápida

Función / Atributo Qué devuelve Ejemplo
pd.read_csv() DataFrame desde CSV pd.read_csv("ventas.csv")
pd.read_excel() DataFrame desde Excel pd.read_excel("reporte.xlsx")
.head(n) Primeras n filas df.head(5)
.tail(n) Últimas n filas df.tail(3)
.shape Tupla (filas, columnas) df.shape
.dtypes Tipos de dato por columna df.dtypes
.info() Resumen estructural df.info()
.describe() Estadísticas numéricas df.describe()
.value_counts() Frecuencia de valores df["col"].value_counts()
.sum() Suma de una columna df["col"].sum()

Puntos clave

  • Usa pd.read_csv() para archivos CSV y pd.read_excel() para archivos Excel; ambas funciones aceptan parámetros opcionales como sep y encoding.
  • Siempre ejecuta .info() al cargar un nuevo dataset para detectar columnas con valores nulos o tipos de dato incorrectos.
  • .describe() te da en segundos la distribución estadística de tus columnas numéricas: media, mínimo, máximo y percentiles.
  • Crea columnas nuevas directamente con operaciones aritméticas entre columnas existentes del DataFrame.
  • Verifica la codificación del archivo si ves caracteres extraños; los sistemas mexicanos frecuentemente exportan en latin-1.

Puntos clave

  • Usa `pd.read_csv()` para archivos CSV y `pd.read_excel()` para archivos Excel; ajusta los parámetros `sep` y `encoding` según el origen del archivo.
  • Ejecuta siempre `.info()` al cargar un nuevo conjunto de datos para identificar columnas con valores nulos y tipos de dato incorrectos.
  • `.describe()` genera estadísticas descriptivas de columnas numéricas en una sola línea: útil para detectar valores atípicos desde el primer vistazo.
  • Puedes crear columnas nuevas multiplicando o sumando columnas existentes directamente en el DataFrame, como calcular el ingreso total de ventas.
  • Si ves caracteres extraños en textos con acentos, agrega `encoding="latin-1"` a tu función de carga; es el formato más común en exportaciones de sistemas mexicanos.

Comparte esta lección: