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

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…

2 días ago

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

En la serie Creación de una API REST con Express y TypeScript construimos una API…

4 días ago

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…

1 semana ago

Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows

En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…

2 semanas ago

La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento

Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…

2 semanas ago

Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)

En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…

3 semanas ago

This website uses cookies.