Python

Análisis de datos con GPT en Pandas

La biblioteca Pandas de Python permite realizar análisis de datos complejos de una manera relativamente sencilla. Pero su uso requiere unos conocimientos básicos de programación y los métodos necesarios para realizar una operación compleja que no está al alcance de todo el mundo. Lo ideal, para que cualquier usuario pudiese realizar los análisis, sería poder usar lenguaje natural para realizar los análisis. Algo que se puede realizar con PandasAI y el API de OpenAI. Veamos cómo se pueden realizar análisis de datos con GPT en Pandas.

Instalación de PandasAI

Para poder trabajar con Grandes Modelos de Lenguaje (LLM por sus siglas en inglés, Large Language Models) como GTP de OpenAI se debe instalar la biblioteca PandasAI. Como es habitual en Python, la instalación se puede hacer con el comando pip, para lo que se deberá escribir en la terminal el siguiente comando.

pip install pandasai

Creación de una API Key en OpenAI

Una vez instalado PandasAI, para poder usar GPT, será necesario obtener una clave API. Para ello será necesario contar con una cuenta en OpenAI, iniciar sesión en el portal e ir a la sección API Keys. En donde se pulsará sobre el botón “+ Create new secret key”.

Panel en el que se gestionan las API de OpenAI

El API Key se debe guardar en un lugar seguro ya que no se volverá a mostrar y es necesario para acceder a los modelos. Si no se tiene en OpenAI cuenta se puede crear una con un saldo promocional.

Realizar análisis de datos con GPT usando lenguaje natural

Ahora, una vez instalado PandasAI y con una API de OpenAI se puede crear una conexión con el LLM importado la clase OpenAI y creando un objeto con el token. Lo que se puede conseguir con el siguiente código.

from pandasai.llm import OpenAI

# Instancia de LLM
llm = OpenAI(api_token="YOUR_API_TOKEN")

En donde se debe reemplazar YOUR_API_TOKEN por el token creado en la sección anterior. Tras lo cual se puede importar un conjunto de datos para analizar, cómo puede ser tips de Seaborn, y crear un objeto SmartDataframe con este.

La clase SmartDataframe de PandasAI requiere como parámetros el DataFrame con el conjunto de datos a analizar y la conexión al modelo que se creó anteriormente. Una vez creado el objeto, se puede solicitar cualquier análisis del conjunto mediante lenguaje natural usando el método chat(), por ejemplo, en el siguiente ejemplo se piden los cinco clientes que han dado una mayor propina.

import seaborn as sns
from pandasai import SmartDataframe

# Cargar datos de ejemplo
tips = sns.load_dataset("tips")

# Creación de un SmartDataframe
smartdf = SmartDataframe(tips, config={"llm": llm})

# Pedir información en lenguaje natura
smartdf.chat('What are the five biggest tips given by diners?')
     total_bill    tip   sex smoker   day    time  size
170       50.81  10.00  Male    Yes   Sat  Dinner     3
212       48.33   9.00  Male     No   Sat  Dinner     4
23        39.42   7.58  Male     No   Sat  Dinner     4
59        48.27   6.73  Male     No   Sat  Dinner     4
141       34.30   6.70  Male     No  Thur   Lunch     6

Un resultado que se puede comprobar fácilmente usando el método sort_values() y head() como se muestra a continuación.

tips.sort_values(by='tip', ascending=False).head()

Si se ejecutan ambos códigos se puede comprobar que el resultado es el mismo en ambos casos. Indicando que el modelo ha comprendido correctamente lo que tenía que hacer con los datos.

Análisis de datos con GPT en español

En la sección anterior se ha realizado el análisis de datos con GPT en inglés, pero el modelo funciona perfectamente en español u otros idiomas. Lo que facilita la realización de los análisis. Por ejemplo, se puede pedir en español la misma información, pero para seis clientes en lugar de cinco con el siguiente código.

smartdf.chat('¿Cuáles son las seis mayores propinas dadas por los comensales?')
     total_bill    tip     sex smoker   day    time  size
170       50.81  10.00    Male    Yes   Sat  Dinner     3
212       48.33   9.00    Male     No   Sat  Dinner     4
23        39.42   7.58    Male     No   Sat  Dinner     4
59        48.27   6.73    Male     No   Sat  Dinner     4
141       34.30   6.70    Male     No  Thur   Lunch     6
214       28.17   6.50  Female    Yes   Sat  Dinner     3

Con lo que se obtienen los mismos resultados que antes con el campo adicional. Ahora que se pueden aumentar la complejidad de las operaciones, en lugar de las seis mayores propinas se puede pedir las mayores, pero en base al porcentaje (no hay un campo porcentaje en la tabla) y ver que se obtiene como resultado.

smartdf.chat('¿Cuáles son las seis mayores propinas en porcentaje dadas por los comensales?')
     total_bill   tip     sex smoker  day    time  size  tip_percentage
172        7.25  5.15    Male    Yes  Sun  Dinner     2       71.034483
178        9.60  4.00  Female    Yes  Sun  Dinner     2       41.666667
67         3.07  1.00  Female    Yes  Sat  Dinner     1       32.573290
232       11.61  3.39    Male     No  Sat  Dinner     2       29.198966
183       23.17  6.50    Male    Yes  Sun  Dinner     4       28.053517
109       14.31  4.00  Female    Yes  Sat  Dinner     2       27.952481

En este caso se puede ver que el modelo ha creado el nuevo un nuevo campo y ordenado el resultado por este. Si se tiene dudas se puede comprobar el resultado con el siguiente código.

tips['tip_percentage'] = 100 * tips.tip / tips.total_bill
tips.sort_values(by='tip_percentage', ascending=False).head(6)

Observándose en ambos casos el mismo resultado.

Creación de gráficas

El modelo no se queda en análisis de datos básicos, también se puede usar para la creación de gráficos, solamente se deben indicar lo que se desea representar en lenguaje natural.

smartdf.chat('Necesito una figura en la que se muestre la propina total en función del número de comensales')
La propina total en función del número de comensales creado con PandasAI

Conclusiones

En esta publicación se ha visto cómo usar el API de OpenAI en PandasAI para la realización de análisis de datos con GPT en Pandas mediante lenguaje natural. Una opción que permite realizar preguntas sobre conjuntos de datos de forma natural. A medida que se simplifique la integración de modelos LLM con las herramientas de análisis de datos estos podrán ayudar a los usuarios a comprender los datos de una forma más sencilla e intuitiva.

La biblioteca PandasAI permite usar los modelos LLM de OpenAI para realizar tareas complejas de forma sencilla. Un uso que se puede complementar con llamadas que se pueden realizar directamente a ChatGPT desde Python.

Imagen de Steve Buissinne en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Subplots en Matplotlib: cómo organizar múltiples gráficos en una sola figura

Llevas un rato analizando datos y tienes cuatro gráficos abiertos en ventanas separadas: ventas, usuarios,…

11 horas ago

Síndrome del objeto brillante en ciencia de datos: el error simétrico a los costes hundidos

Hace poco publiqué una entrada en la que trataba de un sesgo bien documentado: aferrarse…

5 días ago

De la Regresión Logística al Scorecard: La Transformación Matemática

En un entrada previa explicamos qué son el WOE y el IV y por qué…

1 semana ago

Analytics Lane lanza la versión 1.1 del laboratorio con nuevas suites de CLV y Scoring

Seguimos evolucionando el laboratorio de Analytics Lane y hoy lanzamos la versión 1.1, disponible en:…

1 semana ago

Interés compuesto: la fuerza que multiplica tu dinero (y los errores que la anulan)

“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…

2 semanas ago

Cómo comparar datos con barras en Matplotlib: agrupadas, apiladas y porcentuales

Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…

2 semanas ago

This website uses cookies.