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

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Analizar 100.000 filas con pandas puede llevar segundos en tareas sencillas, pero el número de filas no basta para predecir el tiempo. También importan el tamaño del archivo, las columnas y sus tipos, la proporción de texto, la operación, el hardware, la memoria y el almacenamiento. No existe un tiempo universal garantizado.

La forma práctica de acelerar un análisis es leer solo lo necesario, usar tipos conocidos, preferir operaciones vectorizadas y medir por separado la lectura y el cálculo. Si el archivo no cabe cómodamente en memoria, procesa fragmentos cuando la operación permita agregar resultados parciales.

Qué significa analizar 100.000 filas en segundos

Una tabla de 100.000 filas con pocas columnas numéricas no supone la misma carga que un CSV del mismo número de filas con muchas columnas de texto. Tampoco es comparable leer un archivo, filtrar registros, calcular un promedio o ejecutar una transformación compleja.

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

La documentación de pandas no ofrece un benchmark reproducible para exactamente 100.000 filas con un archivo, esquema, equipo y operación definidos. Por tanto, interpreta “en segundos” como un objetivo posible para ciertos trabajos y equipos, no como un resultado garantizado.

Para que una medición sea útil, registra el tamaño del archivo, las columnas, los tipos de datos, la operación, la versión de pandas y las características relevantes del equipo. Mide con una entrada representativa de tus datos.

Lee solo las columnas necesarias

Para un CSV, empieza con read_csv. El argumento usecols evita cargar columnas que no intervienen en el análisis; si ya conoces el esquema, dtype permite especificar los tipos en la lectura. pandas señala que limitar columnas puede acelerar la lectura y reducir el uso de memoria. Consulta la referencia de pandas.read_csv.

import pandas as pd

path = "ventas.csv"

ventas = pd.read_csv(
    path,
    usecols=["fecha", "region", "importe"],
    dtype={"region": "string", "importe": "float64"},
)

print(ventas.dtypes)
print(ventas.isna().sum())

Adapta las columnas y tipos al archivo real. No fuerces un tipo sin comprobar que representa correctamente los valores: una columna puede contener datos faltantes o valores incompatibles. Si todavía no conoces bien el contenido, deja que pandas infiera los tipos en la primera lectura y revisa después dtypes y los valores faltantes.

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.

Compara motores de lectura cuando sea compatible

La referencia de read_csv indica: “The C and pyarrow engines are faster, while the python engine is currently more feature-complete.” El motor C es el predeterminado; PyArrow puede aprovechar varios hilos, pero no todas las opciones del archivo son compatibles con todos los motores. Revisa la guía oficial de entrada y salida y conserva el motor que funcione con tus datos y parámetros.

import pandas as pd

# Motor predeterminado, normalmente C
por_defecto = pd.read_csv("ventas.csv", usecols=["region", "importe"])

# Compara PyArrow si está instalado y las opciones son compatibles
con_pyarrow = pd.read_csv(
    "ventas.csv",
    usecols=["region", "importe"],
    engine="pyarrow",
)

No presupongas una mejora concreta por cambiar el motor. Compara ambas opciones en la misma máquina, con el mismo archivo y configuración, y cronometra la lectura por separado del análisis. Si PyArrow no está instalado o una opción no es compatible, usa un motor admitido por tu configuración.

Usa operaciones vectorizadas para filtrar y resumir

Evita recorrer las filas en Python cuando pandas ofrece una operación equivalente sobre una columna o un grupo. Las operaciones vectorizadas y las agregaciones integradas suelen ser más eficientes que aplicar una función Python fila por fila. Para un resumen por región, por ejemplo:

ventas_region = (
    ventas.loc[ventas["importe"] > 0]
    .groupby("region", as_index=False)
    .agg(
        total_importe=("importe", "sum"),
        promedio_importe=("importe", "mean"),
        transacciones=("importe", "size"),
    )
)

print(ventas_region)

Este ejemplo filtra importes positivos y calcula tres métricas por región. Cambia la condición y las agregaciones según la pregunta que debas responder. La guía de usuario de pandas explica las operaciones disponibles; para agregaciones por grupos, prefiere métodos integrados a GroupBy.apply cuando exista una alternativa adecuada.

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

Cuándo leer el archivo completo y cuándo usar chunksize

Sin chunksize o iterator, read_csv carga el archivo completo en un DataFrame. Esa suele ser la opción más sencilla si la memoria disponible es suficiente. Si el conjunto completo resulta demasiado grande para trabajar cómodamente, lee fragmentos y actualiza un resultado parcial, siempre que el cálculo admita ese enfoque.

Enfoque Ventaja Limitación Cuándo elegirlo
Lectura completa El DataFrame está disponible para filtros, transformaciones y análisis posteriores. Requiere memoria para el conjunto cargado y las operaciones que ejecutes. Cuando los datos caben con margen suficiente y necesitas combinar varios pasos de análisis.
Lectura por fragmentos con chunksize Permite procesar una parte del archivo cada vez y mantener acotada la memoria del lote leído. El análisis debe poder realizarse o agregarse incrementalmente; algunos cálculos requieren conservar o combinar datos entre fragmentos. Cuando la lectura completa presiona la memoria y puedes acumular resultados parciales.
import pandas as pd

acumulado = {}

for fragmento in pd.read_csv(
    "ventas.csv",
    usecols=["region", "importe"],
    dtype={"region": "string", "importe": "float64"},
    chunksize=20_000,
):
    parcial = fragmento.groupby("region")["importe"].sum()
    for region, total in parcial.items():
        acumulado[region] = acumulado.get(region, 0) + total

print(acumulado)

El tamaño de fragmento del ejemplo es una elección de configuración, no una cifra óptima universal. Ajusta chunksize a la memoria disponible y al rendimiento observado. Además, low_memory=True no significa que pandas mantenga el DataFrame final en fragmentos: para iterar por lotes debes solicitar chunksize o iterator, como se explica en la referencia de read_csv.

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

Evalúa query y eval solo si la expresión lo justifica

query y eval pueden ser útiles para expresiones grandes, pero no son interruptores de aceleración automática. La guía de rendimiento de pandas ofrece como orientación usar eval() con DataFrames de más de 10.000 filas; la guía de indexación sitúa los beneficios de query() con numexpr alrededor de más de 100.000 filas en un ejemplo concreto con tres columnas numéricas y una booleana. No conviertas esas referencias en promesas para cualquier archivo u operación.

# Forma habitual: directa y fácil de leer
seleccion = ventas.loc[ventas["importe"] > 100]

# Alternativa para una expresión compatible
seleccion_query = ventas.query("importe > 100")

Para expresiones sencillas, la forma normal de pandas suele ser más clara. Si la expresión es compleja y el DataFrame suficientemente grande, compara el resultado y el tiempo en tus datos. Consulta la guía de rendimiento y la guía de indexación y rendimiento de query.

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

Cómo medir la mejora en tu equipo

  1. Prepara una entrada representativa. Anota el tamaño del CSV, las columnas que usarás y si predominan números, fechas o texto.
  2. Separa lectura y cálculo. Cronometra la llamada a read_csv por un lado y el filtro, la transformación o la agregación por otro.
  3. Compara una variable cada vez. Prueba primero usecols y tipos explícitos; después, si procede, compara los motores de lectura. Mantén iguales archivo, operación y equipo.
  4. Verifica que la respuesta no cambió. Comprueba tipos, valores faltantes y resultados del análisis antes de adoptar una variante más rápida.
  5. Revisa memoria y estrategia. Si la carga completa resulta incómoda, prueba lectura por fragmentos solo si puedes combinar correctamente los resultados parciales.

La documentación de pandas disponible en funciones básicas y operaciones y en sus guías de rendimiento describe las herramientas, pero no sustituye una medición sobre tu archivo y equipo.

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.