Análisis de datos con Python, Pandas y NumPy

Publicado el: 11/07/2026
Tempo de leitura: 4 minutos
logos do Python, Pandas e NumPy numa mesa de madeira

El análisis de datos con Python resulta mucho más práctico cuando se combinan NumPy y Pandas. NumPy proporciona arrays eficientes y operaciones matemáticas vectorizadas. Pandas añade tablas con etiquetas, limpieza de datos, agrupaciones, filtros, uniones y lectura de archivos.

Estas bibliotecas suelen trabajar juntas. NumPy se encarga del cálculo numérico, mientras que Pandas organiza la información en filas y columnas fáciles de explorar. En esta guía aprenderás un flujo completo: instalar las herramientas, cargar datos, revisar tipos, limpiar valores ausentes, calcular métricas, agrupar resultados y exportar un informe.

Qué significa analizar datos

Analizar datos consiste en recopilar, limpiar, transformar, explorar e interpretar información. Un proyecto puede intentar responder preguntas como:

  • ¿Qué ocurrió durante un periodo?
  • ¿Qué productos o categorías rindieron mejor?
  • ¿Existen valores ausentes o incoherentes?
  • ¿Cómo cambia una métrica a lo largo del tiempo?
  • ¿Qué patrones merecen una investigación adicional?

Para profundizar en cada biblioteca, consulta las guías de Pandas para principiantes y NumPy con Python.

Preparar el entorno

Crea un entorno virtual antes de instalar dependencias:

python -m venv .venv

# Windows
.venv\Scripts\activate

# macOS o Linux
source .venv/bin/activate

python -m pip install numpy pandas matplotlib

La guía de venv en Python explica cómo aislar versiones y seleccionar el intérprete correcto.

Importa las bibliotecas con sus alias convencionales:

import numpy as np
import pandas as pd

Arrays de NumPy

Un array almacena valores de un tipo compatible y permite realizar operaciones sobre todos ellos sin escribir un bucle manual:

prices = np.array([12.50, 8.90, 15.00, 6.75])
quantities = np.array([4, 8, 3, 10])

totals = prices * quantities
print(totals)
print(totals.sum())

Con listas normales, multiplicar dos listas no produce una multiplicación elemento por elemento. NumPy está diseñado para este tipo de cálculo.

La guía oficial de NumPy para principiantes explica dimensiones, formas, indexación y vectorización.

Operaciones frecuentes con NumPy

scores = np.array([72, 88, 91, 65, 84])

print(scores.mean())
print(scores.min())
print(scores.max())
print(scores.std())
print(scores[scores >= 80])

La expresión scores >= 80 crea una máscara booleana. Al utilizarla como índice, el array devuelve solamente los valores que cumplen la condición.

Series y DataFrames

Una Series es una colección unidimensional con etiquetas. Un DataFrame es una tabla bidimensional:

sales = pd.DataFrame({
    "product": ["Notebook", "Mouse", "Keyboard", "Mouse"],
    "quantity": [2, 5, 3, 4],
    "unit_price": [950.00, 25.00, 70.00, 25.00],
})

print(sales)

Un DataFrame puede contener diferentes tipos entre columnas. Pandas utiliza NumPy para muchas operaciones, pero añade nombres de columnas, índices y funciones específicas para tablas.

Cargar CSV y Excel

data = pd.read_csv("sales.csv")

Para Excel:

data = pd.read_excel("sales.xlsx")

Las guías sobre archivos CSV en Python e importación de Excel con Pandas presentan configuraciones de delimitadores, hojas, encabezados y exportación.

Inspeccionar antes de analizar

Después de cargar un archivo, revisa su estructura:

print(data.head())
print(data.shape)
print(data.columns)
print(data.dtypes)
data.info()

head() muestra las primeras filas; shape indica filas y columnas; dtypes revela los tipos. No empieces a calcular métricas sin comprobar que los datos fueron interpretados correctamente.

Seleccionar columnas y filas

Selecciona una columna con corchetes:

products = sales["product"]

Para varias columnas:

summary = sales[["product", "quantity"]]

loc utiliza etiquetas y iloc posiciones:

print(sales.loc[0, "product"])
print(sales.iloc[0:2, 0:3])

Filtrar registros

large_orders = sales[sales["quantity"] >= 4]
print(large_orders)

Para combinar condiciones, utiliza & y |, con paréntesis alrededor de cada comparación:

filtered = sales[
    (sales["quantity"] >= 3)
    & (sales["unit_price"] < 100)
]

Crear columnas calculadas

La aritmética vectorizada evita recorrer cada fila:

sales["revenue"] = (
    sales["quantity"] * sales["unit_price"]
)

NumPy también permite condiciones:

sales["order_size"] = np.where(
    sales["revenue"] >= 200,
    "large",
    "small",
)

Valores ausentes

Cuenta los valores vacíos:

print(data.isna().sum())

Rellena solamente cuando exista una regla lógica:

data["discount"] = data["discount"].fillna(0)

Elimina filas cuando faltan campos indispensables:

data = data.dropna(
    subset=["product", "quantity"]
)

No reemplaces todos los valores ausentes por cero. Un precio ausente, una categoría vacía y una fecha desconocida representan problemas diferentes.

Corregir tipos de datos

data["quantity"] = pd.to_numeric(
    data["quantity"],
    errors="coerce",
)

data["date"] = pd.to_datetime(
    data["date"],
    errors="coerce",
)

errors="coerce" convierte valores inválidos en ausentes para que puedan ser detectados y tratados.

Agrupar y resumir

product_summary = (
    sales.groupby("product", as_index=False)
    .agg(
        units=("quantity", "sum"),
        revenue=("revenue", "sum"),
        average_price=("unit_price", "mean"),
    )
    .sort_values("revenue", ascending=False)
)

print(product_summary)

groupby() es esencial para informes por producto, cliente, región o periodo.

Ordenar y obtener los mejores resultados

top_orders = (
    sales.sort_values("revenue", ascending=False)
    .head(3)
)

Para una columna numérica también puedes utilizar:

print(sales.nlargest(3, "revenue"))

Combinar tablas

products = pd.DataFrame({
    "product_id": [1, 2],
    "category": ["Computers", "Accessories"],
})

orders = pd.DataFrame({
    "product_id": [1, 2, 2],
    "quantity": [1, 3, 2],
})

combined = orders.merge(
    products,
    on="product_id",
    how="left",
)

Antes de una unión, comprueba si las claves deberían ser únicas. Claves duplicadas pueden multiplicar filas inesperadamente.

Flujo completo de análisis

import numpy as np
import pandas as pd

sales = pd.read_csv("sales.csv")

sales.columns = sales.columns.str.strip().str.lower()
sales["quantity"] = pd.to_numeric(
    sales["quantity"], errors="coerce"
)
sales["unit_price"] = pd.to_numeric(
    sales["unit_price"], errors="coerce"
)

sales = sales.dropna(
    subset=["product", "quantity", "unit_price"]
)

sales["revenue"] = (
    sales["quantity"] * sales["unit_price"]
)

sales["performance"] = np.where(
    sales["revenue"] >= sales["revenue"].median(),
    "above median",
    "below median",
)

report = (
    sales.groupby("product", as_index=False)
    .agg(
        units=("quantity", "sum"),
        revenue=("revenue", "sum"),
    )
    .sort_values("revenue", ascending=False)
)

report.to_csv("sales_report.csv", index=False)
print(report)

Este flujo carga, normaliza, convierte, limpia, calcula, agrupa, ordena y exporta.

Crear gráficos

report.plot(
    x="product",
    y="revenue",
    kind="bar",
    title="Revenue by Product",
)

La guía de Matplotlib para principiantes explica etiquetas, leyendas, tipos de gráficos y exportación.

Errores frecuentes

  • Analizar antes de revisar tipos y valores ausentes.
  • Utilizar bucles cuando una operación vectorizada es más clara.
  • Sobrescribir los datos originales antes de validar el resultado.
  • Ignorar espacios y diferencias de mayúsculas en nombres de columnas.
  • Unir tablas sin revisar claves duplicadas.
  • Extraer conclusiones de una muestra pequeña o sesgada.
  • Redondear valores demasiado pronto.

Buenas prácticas

Conserva los datos originales, guarda una versión limpia por separado, documenta las transformaciones y valida totales en cada etapa. Divide carga, limpieza, análisis y exportación en funciones o módulos.

Los tutoriales oficiales de introducción a Pandas ofrecen ejercicios adicionales con tablas reales.

Conclusión

NumPy proporciona arrays y cálculo numérico eficiente; Pandas añade tablas, limpieza, filtros, agrupaciones y uniones. Empieza con un CSV pequeño, inspecciona cada columna, corrige tipos, crea una métrica, agrupa resultados y exporta un informe. Ese flujo es la base de proyectos de visualización, estadística y machine learning.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    representação de IA com código binário na tela
    Ciencia de Datos
    Foto de perfil de Leandro Hirt da Academify

    Scikit-Learn en Python: guía para principiantes

    Aprende Scikit-Learn desde cero: prepara datos, entrena clasificación y regresión, usa pipelines, métricas, validación y evita fugas de datos.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Logo do matplotlib em um fundo branco
    Ciencia de Datos
    Foto de perfil de Leandro Hirt da Academify

    Matplotlib en Python: guía de gráficos para principiantes

    Aprende Matplotlib en Python para crear gráficos de líneas, barras, dispersión, histogramas, subplots y archivos de alta resolución.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Visualização de dados com Plotly em Python
    Ciencia de Datos
    Foto de perfil de Leandro Hirt da Academify

    Plotly en Python: gráficos interactivos paso a paso

    Aprende Plotly en Python para crear gráficos interactivos de líneas, barras y dispersión, personalizar figuras, usar Pandas y exportar resultados.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Mesa de trabalho com laptop exibindo gráficos e a logo do Pandas em primeiro plano
    Ciencia de Datos
    Foto de perfil de Leandro Hirt da Academify

    Pandas en Python: guía completa para principiantes

    Aprende Pandas en Python: Series, DataFrames, CSV, Excel, selección, filtros, valores ausentes, agrupaciones, merges y exportación.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026