Skip to content

Polars vs Pandas: Eligiendo a tu Campeón del Análisis de Datos en 2023

Updated on

La batalla de los gigantes del manejo de datos, Polars vs Pandas, se ha convertido en el tema de conversación en el mundo del análisis de datos. Con el lanzamiento de Polars 0.17.0 y Pandas 2.0, ambas bibliotecas están ahora en competencia por la supremacía. Pero ¿cuál de ellas merece el título de biblioteca de procesamiento de datos por excelencia? Este artículo presenta una comparación exhaustiva de estas poderosas herramientas, investigando su sintaxis, velocidad y facilidad de uso para determinar al ganador.

Polars y Pandas: Una Introducción

¿Alguna vez has pasado horas esperando a que tu código de Pandas se ejecute en conjuntos de datos grandes? Entra en escena Polars, una biblioteca de alto rendimiento que ofrece beneficios significativos en velocidad sobre su rival, Pandas. Polars destaca en el manejo de data frames, superando a Pandas en eficiencia y velocidad.

Las recientes versiones, Polars 0.17.0 y Pandas 2.0, presumen de mejoras sustanciales en velocidad. El soporte de Apache Arrow en Pandas 2.0 ha mejorado el rendimiento, pero las operaciones básicas aún se ejecutan más rápido en arreglos de NumPy. Polars 0.17.0, lanzado hace apenas una semana, también ha recibido elogios por sus mejoras en velocidad[^1^].

Adentrémonos más y analicemos las características que le dan a Polars la ventaja:

  • Soporte de Rust: Polars está construido usando Rust. Gracias a la capacidad de Rust de compilar directamente en código de máquina, evita la necesidad de un intérprete, lo que lo hace más rápido que Python.

  • Paralelización: Polars aprovecha la multihilo, permitiendo la ejecución paralela de operaciones vectorizadas en múltiples núcleos de CPU.

  • Interfaz de Python: A pesar de sus fundamentos en Rust, Polars funciona como una biblioteca de Python, ofreciendo una interfaz de procesamiento de datos accesible mientras aprovecha los beneficios de rendimiento de Rust.

  • Evaluación Perezosa: Polars soporta tanto la evaluación anticipada (utilizada por Pandas) como las APIs de evaluación perezosa. En la evaluación perezosa, una consulta se ejecuta solo cuando es requerida, mientras que la evaluación anticipada activa la ejecución inmediata.

En esta guía detallada, vamos a:

  1. Comparar la velocidad de Pandas 2.0 (con Numpy y PyArrow como backend) y Polars 0.17.0.
  2. Ilustrar cómo hacer la transición desde un código simple de Pandas a uno más complejo en Polars.
  3. Realizar una prueba de rendimiento entre las dos bibliotecas utilizando una máquina con procesadores de 4 núcleos de CPU y 32 GB de RAM.

Configuración y Conjunto de Datos

Antes de sumergirnos en las comparaciones, asegúrate de tener instaladas las últimas versiones de Polars y Pandas en tu máquina local. Si no las tienes, utiliza el comando pip para instalarlas:

pip install polars==0.17.0 # Última versión de Polars
pip install pandas==2.0.0  # Última versión de Pandas

Nuestra comparación se basará en un conjunto de datos sintéticos con 30 millones de filas y 15 columnas, que incluyen 8 características categóricas y 7 numéricas. Este conjunto de datos artificial se puede acceder aquí (opens in a new tab).

Aquí tienes un vistazo a nuestro conjunto de datos:

# Pandas
train_pd.head()
 
# Polars
train_pl.head()

Importando las Bibliotecas

Primero, debemos importar las bibliotecas necesarias para cargar nuestros datos:

import pandas as pd
import polars as pl
import numpy as np
import time

Leyendo el Conjunto de Datos

Leyendo el Conjunto de Datos: Un Análisis Comparativo de Pandas 2.0 vs Polars 0.17

Cuando se trata de lidiar con conjuntos de datos enormes, la elección de la biblioteca de manejo de datos puede marcar la diferencia. Es por eso que estamos realizando un análisis exhaustivo de Pandas 2.0 y Polars 0.17, centrándonos en las capacidades de lectura de cada una.

Comenzamos comparando los tiempos de lectura de archivos en formato parquet de ambas bibliotecas. El parquet, como formato de archivo de almacenamiento columnar, está optimizado para su uso con marcos de trabajo de procesamiento de big data. La capacidad de leer estos archivos de manera rápida y eficiente es crucial cuando se manejan conjuntos de datos extensos.

Nuestra investigación indicó un rendimiento comparable entre Polars y Pandas 2.0 en lo que respecta a la lectura de archivos parquet. Sin embargo, es importante tener en cuenta que Pandas, al utilizar el backend de NumPy, tardó el doble de tiempo en completar esta tarea en comparación con Polars.

Operaciones de Agregación: Polars vs. Pandas

Ahora, pasemos a la evaluación de las funciones de agregación. Estas operaciones son esenciales en el análisis de datos, proporcionando estadísticas de resumen críticas para revisar los datos.

En términos de sintaxis y rendimiento para consultas simples, Pandas resultó ser la opción superior. Sin embargo, la diferencia de rendimiento entre las dos bibliotecas fue mínima. Polars ofrece una ventaja única en que puede trabajar con una lista de características que se deben agregar utilizando la misma función de agregación, una capacidad que Pandas no ofrece para el escenario que evaluamos.

Operaciones de Filtrado y Selección: Pandas y Polars en Competencia

Las operaciones de filtrado y selección implican especificar una condición para la extracción de datos de la base de datos. Nuestras pruebas involucraron contar valores únicos para columnas categóricas cuando una columna numérica cumplía cierta condición, y calcular la media de todas las columnas numéricas cuando una columna categórica era igual a cierto valor.

En esta comparación directa, Polars superó a Pandas en cuanto a velocidad de ejecución para operaciones de filtrado numérico por un factor de dos a cinco veces. Sin embargo, cabe destacar que Pandas requiere menos código para ser escrito y la biblioteca funciona algo más lento al tratar con cadenas de texto (características categóricas).

Visualiza tu Dataframe de Pandas y Polars con PyGWalker

PyGWalker (opens in a new tab) es una biblioteca de Python de código abierto que te puede ayudar a crear visualizaciones de datos a partir de tu dataframe de Pandas y Polars de manera fácil. Por favor, proporcione la traducción al español de este archivo markdown sin traducir el código incrustado: PyGWalker para visualización de datos (opens in a new tab)

¡Ya no es necesario completar un procesamiento complicado con programación Python, simplemente importa tus datos y arrastra y suelta variables para crear todo tipo de visualizaciones de datos! Aquí hay un video de demostración rápida sobre cómo funciona:


Aquí te mostramos cómo usar PyGWalker en tu Jupyter Notebook:

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)

Alternativamente, puedes probarlo en Kaggle Notebook/Google Colab:

Ejecutar PyGWalker en Kaggle Notebook (opens in a new tab)Ejecutar PyGWalker en Google Colab (opens in a new tab)Dale una ⭐️ a PyGWalker en GitHub (opens in a new tab)
Ejecutar PyGWalker en Kaggle Notebook (opens in a new tab)Ejecutar PyGWalker en Google Colab (opens in a new tab)Ejecutar PyGWalker en Google Colab (opens in a new tab)

PyGWalker se basa en el apoyo de nuestra comunidad de código abierto. ¡No olvides visitar PyGWalker GitHub (opens in a new tab) y darnos una estrella!

Preguntas frecuentes sobre Pandas y Polars

A lo largo de este análisis, hemos visto tanto a Pandas como a Polars mostrar sus fortalezas y debilidades. Para ayudarte a comprender mejor estas dos bibliotecas, hemos reunido algunas preguntas frecuentes:

  1. Pregunta: ¿Por qué alguien elegiría Polars en lugar de Pandas? Respuesta: Alguien podría elegir Polars en lugar de Pandas al tratar con conjuntos de datos grandes debido a su mayor velocidad de ejecución para muchas operaciones, especialmente aquellas que involucran datos numéricos. Sin embargo, como Polars es una biblioteca más nueva, puede requerir una curva de aprendizaje para aquellos familiarizados con Pandas.

  2. Pregunta: ¿Existen escenarios en los que Pandas es una mejor opción que Polars? Respuesta: Sí, para consultas simples y cuando la brevedad del código es una prioridad, Pandas puede ser la mejor opción. Además, Pandas es una biblioteca madura con un sólido apoyo de la comunidad, lo cual puede ser beneficioso al solucionar problemas o buscar consejos sobre tareas complejas de manipulación de datos.

  3. Pregunta: ¿Cómo manejan Pandas y Polars los valores nulos en las operaciones de agrupación de manera diferente? Respuesta: Durante las operaciones de agrupación, Pandas eliminará automáticamente los valores nulos, mientras que Polars no lo hará. Esto podría afectar potencialmente los resultados de tu análisis, por lo que es crucial tener en cuenta esta diferencia al elegir una biblioteca.