Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PCHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
FREEDOM251

Freedom251 › Blog › análisis de datos

Cómo usar pandas para analizar 100.000 filas en segundos (sin promesas de rendimiento)

By Freedom251 Team · · 7 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Sí: pandas puede analizar 100.000 filas en segundos en tareas sencillas y en un equipo adecuado, pero el número de filas no basta para predecir el tiempo. También cuentan el tamaño del archivo, las columnas y sus tipos, el peso del texto, la operación, la memoria, el almacenamiento y el hardware. Para acercarte a ese objetivo, carga solo los datos necesarios, usa operaciones vectorizadas y agregaciones integradas, y mide por separado la lectura y el cálculo.

Qué determina el tiempo de análisis

Dos archivos con 100.000 filas pueden exigir trabajos muy distintos. Un CSV con pocas columnas numéricas no se comporta igual que uno con muchas columnas de texto, ni filtrar unas filas cuesta lo mismo que aplicar una transformación compleja y agrupar el resultado. Por eso, define la tarea antes de optimizar: anota el tamaño del archivo, las columnas relevantes, los tipos esperados y el cálculo que quieres hacer.

As an Amazon Associate I earn from qualifying purchases.

La documentación oficial de pandas no publica un tiempo reproducible para analizar exactamente 100.000 filas con un archivo, esquema, equipo y operación fijados. «En segundos» es un objetivo posible, no una garantía. No se puede atribuir una cifra concreta a pandas sin medir el código y los datos reales en el equipo donde se ejecutará.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Lee solo lo que necesitas

Para un CSV, empieza con pandas.read_csv. Limitar las columnas con usecols evita cargar datos que no participan en el análisis; si ya conoces el esquema, especificar dtype puede evitar conversiones innecesarias y hacer explícita la interpretación de los valores. La documentación de read_csv y la guía de entrada y salida describen estas opciones y señalan que usecols puede acelerar la lectura y reducir el uso de memoria.

import pandas as pd

ruta = "datos.csv"
columnas = ["fecha", "region", "ventas"]
tipos = {"region": "string", "ventas": "float64"}

df = pd.read_csv(ruta, usecols=columnas, dtype=tipos)
print(df.dtypes)
print(df.isna().sum())

Adapta los nombres y tipos a tu archivo. No fuerces un tipo que no represente todos los valores: revisa los tipos y los valores ausentes después de leer. Si todavía desconoces el formato de una columna, deja que pandas lo infiera y valida el resultado antes de decidir si conviene declarar un dtype.

Optimiza filtros y resúmenes

Cuando existe una operación pandas equivalente, prefiérela a recorrer filas en Python. Las expresiones vectorizadas y las agregaciones integradas suelen expresar el trabajo directamente sobre columnas; para agrupar, usa groupby con funciones como sum, mean o count en lugar de una función personalizada con apply cuando el resultado sea el mismo. La guía oficial de pandas explica que las operaciones integradas de GroupBy son más eficientes que apply con una función de usuario.

# Filtra las filas con ventas positivas y calcula ventas por región
resultado = (
    df.loc[df["ventas"] > 0]
      .groupby("region", as_index=False)["ventas"]
      .sum()
)

El ejemplo evita una iteración fila por fila y mantiene el cálculo en operaciones de pandas. Comprueba que el filtro y la agregación responden a tu pregunta analítica; una expresión más rápida no compensa un resultado incorrecto.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Compara los motores de lectura CSV

pandas ofrece los motores C, PyArrow y Python para leer CSV. La documentación oficial dice: “The C and pyarrow engines are faster, while the python engine is currently more feature-complete.” PyArrow admite multihilo; no obstante, la compatibilidad con opciones concretas del archivo y la configuración puede variar. Si PyArrow no está instalado, tendrás que instalarlo para usar ese motor.

Motor Qué indica pandas Qué tener en cuenta
"c" Más rápido que el motor Python según la documentación. Es una opción de comparación frente a PyArrow; el tiempo depende de los datos y del equipo.
"pyarrow" Más rápido que el motor Python según la documentación; admite multihilo. Requiere PyArrow y puede no admitir todas las opciones que necesite el archivo.
"python" Actualmente ofrece más compatibilidad de funciones. Puede ser útil si una opción necesaria no está disponible en los otros motores.

La comparación y sus matices están en la documentación de entrada y salida de pandas. Puedes probar un motor explícitamente y conservarlo solo si admite tus opciones y funciona bien con tus datos:

df = pd.read_csv(ruta, usecols=columnas, dtype=tipos, engine="pyarrow")

No des por sentada una mejora porcentual ni asumas que PyArrow siempre gana: mide con el mismo archivo, columnas, tipos y condiciones que usarás en la práctica.

Mide lectura y cálculo por separado

Separar las dos etapas ayuda a identificar si el límite está en leer el archivo o en procesar el DataFrame. Usa una entrada representativa y repite la medición en la máquina de destino; registra la versión de pandas y el motor empleado para que la comparación tenga contexto.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
from time import perf_counter
import pandas as pd

inicio = perf_counter()
df = pd.read_csv(ruta, usecols=columnas, dtype=tipos)
fin_lectura = perf_counter()

resultado = (
    df.loc[df["ventas"] > 0]
      .groupby("region", as_index=False)["ventas"]
      .sum()
)
fin_calculo = perf_counter()

print(f"Lectura: {fin_lectura - inicio:.3f} s")
print(f"Cálculo: {fin_calculo - fin_lectura:.3f} s")
print(f"pandas: {pd.__version__}")

Estos tiempos describen únicamente tu ejecución; no son cifras de referencia para otros archivos o equipos. Si cambias el motor, compara la lectura con los mismos datos y opciones compatibles. Si cambias la forma del cálculo, verifica también que el resultado sea equivalente.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Cuándo usar chunksize

Sin chunksize o iterator, read_csv carga el archivo completo en un DataFrame. Si el conjunto no cabe cómodamente en memoria, leerlo por fragmentos reduce la cantidad de datos que mantienes a la vez. Esto añade complejidad y solo permite un resultado final sencillo cuando puedes combinar correctamente los resultados parciales.

Enfoque Ventaja Coste o límite
Lectura completa Código más simple y acceso al DataFrame entero. Necesita que el conjunto completo quepa razonablemente en memoria.
Lectura por fragmentos Procesa grupos de filas sin cargar todo el CSV de una vez. Hay que acumular o combinar resultados parciales; no toda operación puede resumirse de forma incremental.
import pandas as pd

acumulado = None
for fragmento in pd.read_csv(ruta, usecols=columnas, dtype=tipos, chunksize=20_000):
    parcial = fragmento.groupby("region")["ventas"].sum()
    acumulado = parcial if acumulado is None else acumulado.add(parcial, fill_value=0)

print(acumulado)

El tamaño de fragmento del ejemplo es una elección ilustrativa, no un valor óptimo universal. Ajusta el tamaño según la memoria disponible y el comportamiento medido. Además, low_memory=True no hace que el DataFrame final permanezca en fragmentos: para iterar por partes hay que solicitar chunksize o iterator, como especifica la referencia de read_csv.

Evalúa query y eval solo cuando tenga sentido

DataFrame.eval() y DataFrame.query() pueden ser útiles para expresiones grandes, pero no son interruptores de aceleración automática. La guía de rendimiento de pandas consultada el 7 de octubre de 2026 recomienda como orientación usar eval() solo con DataFrames de más de 10.000 filas; eso no es un umbral universal ni una garantía de mejora. La guía de indexación sitúa el beneficio de rendimiento de query() con numexpr en más de aproximadamente 100.000 filas en un ejemplo concreto con tres columnas numéricas y una booleana. No generalices ese ejemplo a cualquier operación o conjunto de datos.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
# Expresión de filtro: compara el resultado y el tiempo con una máscara normal
filtrados = df.query("ventas > 0")

La expresión normal df.loc[df["ventas"] > 0] puede ser más clara para un filtro sencillo. Consulta las condiciones y los ejemplos de la guía de rendimiento y la guía de indexación, y compara ambas alternativas en tu carga real.

Un flujo práctico para empezar

  1. Define la tarea: identifica tamaño del archivo, columnas, tipos y operación; no uses solo el número de filas como medida de carga.
  2. Lee con intención: prueba usecols y, si conoces el esquema, dtype; valida después los tipos y valores ausentes.
  3. Calcula con operaciones pandas: usa filtros vectorizados y agregaciones integradas en vez de iterar filas o recurrir a apply sin necesidad.
  4. Mide por etapas: cronometra lectura y cálculo con una entrada representativa, en el equipo donde ejecutarás el análisis.
  5. Compara motores compatibles: prueba C y PyArrow cuando la configuración lo permita; usa Python si necesitas una opción que los otros no admitan.
  6. Reduce el uso de memoria si hace falta: procesa con chunksize y acumula resultados parciales solo cuando el cálculo pueda combinarse correctamente.
  7. Prueba query o eval con criterio: conserva la alternativa únicamente si su expresión resulta útil y la medición confirma que conviene.

Para seguir aprendiendo

La página oficial de pandas para comenzar con pandas recomienda Python for Data Analysis, de Wes McKinney, creador de pandas. O’Reilly identifica una tercera edición impresa publicada en agosto de 2022; cubre pandas, NumPy, Jupyter y tareas como cargar, limpiar, transformar y agrupar datos. Es lectura opcional, no un requisito para seguir este flujo.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

análisis de datosCSVpandasprogramaciónPython

Leave a Reply

Your email address will not be published. Required fields are marked *

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.