Crea tu propio PandasAI con LlamaIndex

Crea tu propio PandasAI con LlamaIndex' -> 'Crea tu PandasAI con LlamaIndex

 

Introducción

 

Pandas AI es una biblioteca de Python que aprovecha el poder de la inteligencia artificial generativa para potenciar Pandas, la popular biblioteca de análisis de datos. Con solo una sencilla indicación, Pandas AI te permite realizar limpieza, análisis y visualización de datos complejos que anteriormente requerían muchas líneas de código.

Más allá de los cálculos numéricos, Pandas AI comprende el lenguaje natural. Puedes hacer preguntas sobre tus datos en un inglés sencillo, y proporcionará resúmenes e información en lenguaje cotidiano, evitándote descifrar gráficos y tablas complejas.

En el siguiente ejemplo, proporcionamos un dataframe de Pandas y le pedimos a la inteligencia artificial generativa que cree un gráfico de barras. El resultado es impresionante.

pandas_ai.run(df, prompt='Dibuja el gráfico de barras del tipo de medio para cada año de lanzamiento, usando diferentes colores.')

 

 

Nota: el ejemplo de código es del tutorial de Pandas AI: Tu guía para el análisis de datos potenciado por inteligencia artificial generativa.

 

En esta publicación, utilizaremos LlamaIndex para crear herramientas similares que puedan comprender el dataframe de Pandas y producir resultados complejos como los mostrados anteriormente.

LlamaIndex permite la consulta de datos en lenguaje natural a través de chat y agentes. Permite a los grandes modelos de lenguaje interpretar datos privados a gran escala sin necesidad de volver a entrenar con nuevos datos. Integra grandes modelos de lenguaje con diversas fuentes y herramientas de datos. LlamaIndex es un marco de datos que permite la creación fácil de aplicaciones de Chat con PDF con solo unas pocas líneas de código.

 

Configuración

 

Puedes instalar la biblioteca de Python utilizando el comando pip.

pip install llama-index

 

Por defecto, LlamaIndex utiliza el modelo OpenAI gpt-3.5-turbo para la generación de texto y text-embedding-ada-002 para recuperación e incrustaciones. Para ejecutar el código sin problemas, debemos configurar la variable de entorno OPENAI_API_KEY. Podemos registrarnos y obtener la clave de API de forma gratuita en una nueva página de token de API.

import os
os.environ["OPENAI_API_KEY"] = "sk-xxxxxx"

 

También admiten integraciones de Anthropic, Hugging Face, PaLM y más modelos. Puedes aprender todo al respecto leyendo la documentación del módulo.

 

Motor de Consultas de Pandas

 

Vamos al tema principal de crear tu propio PandasAI. Después de instalar la biblioteca y configurar la clave de API, crearemos un dataframe simple de ciudades con el nombre de la ciudad y la población como columnas.

import pandas as pd
from llama_index.query_engine.pandas_query_engine import PandasQueryEngine

 

df = pd.DataFrame(
    {"city": ["Nueva York", "Islamabad", "Mumbai"], "población": [8804190, 1009832, 12478447]}
)

 

Usando el PandasQueryEngine, crearemos un motor de consulta para cargar el dataframe e indexarlo.

Después de eso, escribiremos una consulta y mostraremos la respuesta.

query_engine = PandasQueryEngine(df=df)

response = query_engine.query(
    "¿Cuál es la ciudad con la población más baja?",
)

 

Como podemos ver, ha desarrollado el código Python para mostrar la ciudad con la menor población en el dataframe.

> Instrucciones de Pandas:
```
eval("df.loc[df['población'].idxmin()]['city']")
```
eval("df.loc[df['población'].idxmin()]['city']")
> Resultado de Pandas: Islamabad

 

Y, si imprimes la respuesta, obtendrás “Islamabad.” Es sencillo pero impresionante. No tienes que idear tu propia lógica o experimentar con el código. Solo escribe la pregunta y obtendrás la respuesta.

print(response)

 

Islamabad

 

También puedes imprimir el código detrás del resultado utilizando los metadatos de la respuesta. 

print(response.metadata["pandas_instruction_str"])

 

eval("df.loc[df['population'].idxmin()]['city']")

 

Análisis de Estadísticas Globales de YouTube

 

En el segundo ejemplo, cargaremos el conjunto de datos de Estadísticas Globales de YouTube 2023 desde Kaggle y realizaremos un análisis fundamental. Es un paso más allá de los ejemplos simples. 

Utilizaremos read_csv para cargar el conjunto de datos en el motor de consulta. Luego escribiremos la instrucción para mostrar solo las columnas con valores faltantes y la cantidad de valores faltantes.

df_yt = pd.read_csv("Global YouTube Statistics.csv")
query_engine = PandasQueryEngine(df=df_yt, verbose=True)

response = query_engine.query(
    "Liste las columnas con valores faltantes y la cantidad de valores faltantes. Solo muestre las columnas con valores faltantes.",
)

 

> Instrucciones de Pandas:
```
df.isnull().sum()[df.isnull().sum() > 0]
```
df.isnull().sum()[df.isnull().sum() > 0]
> Salida de Pandas: category                                    46
Country                                    122
Abbreviation                               122
channel_type                                30
video_views_rank                             1
country_rank                               116
channel_type_rank                           33
video_views_for_the_last_30_days            56
subscribers_for_last_30_days               337
created_year                                 5
created_month                                5
created_date                                 5
Gross tertiary education enrollment (%)    123
Population                                 123
Unemployment rate                          123
Urban_population                           123
Latitude                                   123
Longitude                                  123
dtype: int64

 

Ahora, haremos preguntas directas sobre los tipos de canal populares. En mi opinión, el motor de consulta LlamdaIndex es altamente preciso y aún no ha producido ninguna alucinación.

response = query_engine.query(
    "¿Qué tipo de canal tiene más visualizaciones?",
)

 

> Instrucciones de Pandas:
```
eval("df.groupby('channel_type')['video views'].sum().idxmax()")
```
eval("df.groupby('channel_type')['video views'].sum().idxmax()")
> Salida de Pandas: Entertainment
Entertainment

 

Al final, le pediremos que visualice un gráfico de barras y los resultados son asombrosos. 

response = query_engine.query(
    "Visualice un gráfico de barras de los diez principales canales de YouTube según los suscriptores y agregue el título.",
)

 

> Instrucciones de Pandas:
```
eval("df.nlargest(10, 'subscribers')[['Youtuber', 'subscribers']].plot(kind='bar', x='Youtuber', y='subscribers', title='Los Diez Principales Canales de YouTube Basados en Suscriptores')")
```
eval("df.nlargest(10, 'subscribers')[['Youtuber', 'subscribers']].plot(kind='bar', x='Youtuber', y='subscribers', title='Los Diez Principales Canales de YouTube Basados en Suscriptores')")
> Salida de Pandas: AxesSubplot(0.125,0.11;0.775x0.77)

 

 

Con una instrucción y un motor de consulta sencillos, podemos automatizar nuestro análisis de datos y realizar tareas complejas. Hay mucho más en LamaIndex. Te recomiendo encarecidamente que leas la documentación oficial y trates de construir algo sorprendente.

 

Conclusión

 

En resumen, LlamaIndex es una nueva y emocionante herramienta que permite a los desarrolladores crear su propio PandasAI, aprovechando el poder de los grandes modelos de lenguaje para un análisis y una conversación de datos intuitivos. Al indexar e incrustar su conjunto de datos con LlamaIndex, puede habilitar capacidades avanzadas de lenguaje natural en sus datos privados sin comprometer la seguridad ni volver a entrenar modelos.

Esto es solo el comienzo, con LlamaIndex puedes construir preguntas y respuestas sobre documentos, Chatbots, Inteligencia Artificial automatizada, Gráficos de conocimiento, Motor de consulta SQL de IA, Aplicación web de pila completa y construir aplicaciones de IA generativas privadas. Abid Ali Awan (@1abidaliawan) es un profesional certificado en ciencia de datos que ama construir modelos de aprendizaje automático. Actualmente, se enfoca en la creación de contenido y la escritura de blogs técnicos sobre tecnologías de aprendizaje automático y ciencia de datos. Abid tiene un título de Maestría en Gestión de Tecnología y un título de licenciatura en Ingeniería de Telecomunicaciones. Su visión es construir un producto de IA utilizando una red neuronal de gráficos para estudiantes que luchan contra enfermedades mentales.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Conoce a Tarsier Una biblioteca de código abierto en Python para habilitar la interacción web con LLMs multimodales como GPT4

A medida que la IA continúa creciendo y afectando todos los aspectos de nuestras vidas, se está llevando a cabo una i...

Inteligencia Artificial

Las 10 mejores herramientas para detectar ChatGPT, GPT-4, Bard y Claude.

Las mejores herramientas gratuitas para detectar tesis, trabajos de investigación, asignaciones, documentación y blog...

Inteligencia Artificial

Robot se posiciona en el podio como director de orquesta en Seúl.

Un robot android creado por el Instituto de Tecnología Industrial de Corea del Sur recientemente dirigió la orquesta ...

Inteligencia Artificial

Una técnica de mapeo de posturas podría evaluar de forma remota a pacientes con parálisis cerebral

El método de aprendizaje automático funciona en la mayoría de los dispositivos móviles y podría ampliarse para evalua...

Inteligencia Artificial

Explorando el Procesamiento del Lenguaje Natural - Inicio de NLP (Paso #2)

Recientemente, como parte de un proceso de entrevista, se me pidió explorar dos preguntas y en el camino, aprendí alg...