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”.
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')
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
Deja una respuesta