Analise seus dados usando linguagem natural

Você está interessado em analisar seus dados usando linguagem natural? Aprenda como fazer isso usando a biblioteca Python PandasAI.

Num mundo onde os dados são cruciais, compreendê-los e analisá-los é essencial. No entanto, a análise de dados tradicional pode ser complexa. É aí que entra o PandasAI. Ele simplifica a análise de dados, permitindo que você converse com seus dados usando linguagem natural.

Pandas AI funciona transformando suas perguntas em código para análise de dados. É baseado na popular biblioteca Python pandas. PandasAI é uma biblioteca Python que estende o pandas, a conhecida ferramenta de análise e manipulação de dados, com recursos de IA generativa. O objetivo é complementar os pandas em vez de substituí-los.

PandasAI introduz um aspecto conversacional aos pandas (bem como outras bibliotecas de análise de dados amplamente utilizadas), permitindo que você interaja com seus dados usando consultas em linguagem natural.

Este tutorial orientará você nas etapas de configuração do Pandas AI, usando-o com um conjunto de dados do mundo real, criando gráficos, explorando atalhos e explorando os pontos fortes e limitações desta ferramenta potente.

Após concluí-lo, você poderá realizar análises de dados de forma mais fácil e intuitiva usando linguagem natural.

Então, vamos explorar o fascinante mundo da análise de dados em linguagem natural com Pandas AI!

Configurando seu ambiente

Para começar a usar o PandasAI, você deve começar instalando a biblioteca PandasAI.

Estou usando um Jupyter Notebook para este projeto. Mas você pode usar o Google Collab ou VS Code conforme suas necessidades.

Se você planeja usar Open AI Large Language Models (LLMs), também é importante instalar o Open AI Python SDK para uma experiência tranquila.

# Installing Pandas AI
!pip install pandas-ai
# Pandas AI uses OpenAI's language models, so you need to install the OpenAI Python SDK
!pip install openai

Agora, vamos importar todas as bibliotecas necessárias:

# Importing necessary libraries
import pandas as pd 
import numpy as np 

# Importing PandasAI and its components
from pandasai import PandasAI, SmartDataframe
from pandasai.llm.openai import OpenAI

Um aspecto importante da análise de dados usando PandasAI é a chave de API. Esta ferramenta oferece suporte a vários modelos de linguagem grande (LLMs) e modelos LangChains, que são usados ​​para gerar código a partir de consultas em linguagem natural. Isso torna a análise de dados mais acessível e fácil de usar.

PandasAI é versátil e pode funcionar com vários tipos de modelos. Isso inclui modelos Hugging Face, Azure OpenAI, Google PALM e Google VertexAI. Cada um desses modelos traz seus próprios pontos fortes, aprimorando os recursos do PandasAI.

Lembre-se, para usar esses modelos, você precisará das chaves de API apropriadas. Essas chaves autenticam suas solicitações e permitem aproveitar o poder desses modelos de linguagem avançados em suas tarefas de análise de dados. Portanto, certifique-se de ter suas chaves de API em mãos ao configurar o PandasAI para seus projetos.

Você pode buscar a chave de API e exportá-la como uma variável de ambiente.

Na próxima etapa, você aprenderá como usar o PandasAI com diferentes tipos de modelos de linguagem grandes (LLMs) do OpenAI e do Hugging Face Hub.

Usando grandes modelos de linguagem

Você pode escolher um LLM instanciando um e passando-o para o construtor SmartDataFrame ou SmartDatalake, ou pode especificar um no arquivo pandasai.json.

Se o modelo espera um ou mais parâmetros, você pode passá-los para o construtor ou especificá-los no arquivo pandasai.json no parâmetro llm_options, como segue:

{
  "llm": "OpenAI",
  "llm_options": {
    "api_token": "API_TOKEN_GOES_HERE"
  }
}

Como usar modelos OpenAI?

Para usar modelos OpenAI, você precisa ter uma chave de API OpenAI. Você pode conseguir um aqui.

Depois de ter uma chave de API, você pode usá-la para instanciar um objeto OpenAI:

#We have imported all necessary libraries in privious step

llm = OpenAI(api_token="my-api-key")
pandas_ai = SmartDataframe("data.csv", config={"llm": llm})

Não se esqueça de substituir “my-api-key” pela sua chave de API original

Como alternativa, você pode definir a variável de ambiente OPENAI_API_KEY e instanciar o objeto OpenAI sem passar a chave de API:

# Set the OPENAI_API_KEY environment variable 
llm = OpenAI() # no need to pass the API key, it will be read from the environment variable
pandas_ai = SmartDataframe("data.csv", config={"llm": llm})

Se você estiver atrás de um proxy explícito, poderá especificar openai_proxy ao instanciar o objeto OpenAI ou definir a variável de ambiente OPENAI_PROXY para passagem.

  Cluster dinâmico do WebSphere 8.5.x

Observação importante: ao usar a biblioteca PandasAI para análise de dados com sua chave de API, é importante acompanhar o uso do token para gerenciar custos.

Quer saber como fazer isso? Basta executar o seguinte código de contador de token para obter uma imagem clara do uso do token e das cobranças correspondentes. Desta forma, você pode gerenciar seus recursos de forma eficaz e evitar surpresas no seu faturamento.

Você pode contar o número de tokens usados ​​por um prompt da seguinte maneira:

"""Example of using PandasAI with a pandas dataframe"""

from pandasai import SmartDataframe
from pandasai.llm import OpenAI
from pandasai.helpers.openai_info import get_openai_callback
import pandas as pd
llm = OpenAI()
# conversational=False is supposed to display lower usage and cost
df = SmartDataframe("data.csv", {"llm": llm, "conversational": False})

with get_openai_callback() as cb:
    response = df.chat("Calculate the sum of the gdp of north american countries")
    print(response)
    print(cb)

Você obterá resultados como este:

#  The sum of the GDP of North American countries is 19,294,482,071,552.

#  Tokens Used: 375
#   Prompt Tokens: 210
#   Completion Tokens: 165
# Total Cost (USD): $ 0.000750

Não se esqueça de manter um registro do seu custo total se você tiver crédito limitado!

Como usar modelos de rosto abraçado?

Para usar modelos HuggingFace, você precisa ter uma chave de API HuggingFace. Você pode criar uma conta HuggingFace aqui e obtenha uma chave API aqui.

Depois de ter uma chave de API, você pode usá-la para instanciar um dos modelos HuggingFace.

No momento, PandasAI oferece suporte aos seguintes modelos HuggingFace:

  • Starcoder: bigcode/starcoder
  • Falcão: tiiuae/falcon-7b-instruct
from pandasai.llm import Starcoder, Falcon
llm = Starcoder(api_token="my-huggingface-api-key")
                    # or
llm = Falcon(api_token="my-huggingface-api-key")
df = SmartDataframe("data.csv", config={"llm": llm})

Como alternativa, você pode definir a variável de ambiente HUGGINGFACE_API_KEY e instanciar o objeto HuggingFace sem passar a chave de API:

from pandasai.llm import Starcoder, Falcon
llm = Starcoder() # no need to pass the API key, it will be read from the environment variable
                                       # or
llm = Falcon() # no need to pass the API key, it will be read from the environment variable
df = SmartDataframe("data.csv", config={"llm": llm})

Starcoder e Falcon são modelos LLM disponíveis no Hugging Face.

Configuramos nosso ambiente com sucesso e exploramos como usar os modelos OpenAI e Hugging Face LLMs. Agora, vamos prosseguir com nossa jornada de análise de dados.

Usaremos o conjunto de dados Big Mart Sales, que contém informações sobre as vendas de diversos produtos em diferentes pontos de venda do Big Mart. O conjunto de dados possui 12 colunas e 8.524 linhas. Você receberá o link no final do artigo.

Análise de dados com PandasAI

Agora que instalamos e importamos com sucesso todas as bibliotecas necessárias, vamos carregar nosso conjunto de dados.

Carregar o conjunto de dados

Você pode escolher um LLM instanciando um e passando-o para o SmartDataFrame. Você receberá o link para o conjunto de dados no final do artigo.

#Load the dataset from device
path = r"D:\Pandas AI\Train.csv"
df = SmartDataframe(path)

Use o modelo LLM da OpenAI

Depois de carregar nossos dados. Vou usar o modelo LLM da OpenAI para usar o PandasAI

llm = OpenAI(api_token="API_Key")
pandas_ai = PandasAI(llm, conversational=False)

Tudo certo! Agora, vamos tentar usar prompts.

Imprima as primeiras 6 linhas do nosso conjunto de dados

Vamos tentar carregar as primeiras 6 linhas, fornecendo instruções:

Result = pandas_ai(df, "Show the first 6 rows of data in tabular form") 
Result

As primeiras 6 linhas do conjunto de dados

Isso foi muito rápido! Vamos entender nosso conjunto de dados.

Gerando Estatísticas Descritivas do DataFrame

# To get descriptive statistics
Result = pandas_ai(df, "Show the description of data in tabular form") 
Result

Descrição

Existem 7.060 valores em Item_Weigth; talvez haja alguns valores ausentes.

Encontre valores ausentes

Existem duas maneiras de encontrar valores ausentes usando o pandas ai.

#Find missing values
Result = pandas_ai(df, "Show the missing values of data in tabular form") 
Result

Encontrando valores ausentes

# Atalho para limpeza de dados

df = SmartDataframe('data.csv')
df.clean_data()

Este atalho fará a limpeza dos dados no quadro de dados.

Agora, vamos preencher os valores nulos ausentes.

Preencha os valores ausentes

#Fill Missing values
result = pandas_ai(df, "Fill Item Weight with median and Item outlet size null values with mode and Show the missing values of data in tabular form") 
result

Valores nulos preenchidos

É um método útil para preencher valores nulos, mas enfrentei alguns problemas ao preencher valores nulos.

# Atalho para preencher valores nulos

df = SmartDataframe('data.csv')
df.impute_missing_values()

Este atalho imputará valores ausentes no quadro de dados.

Eliminar valores nulos

Se você deseja eliminar todos os valores nulos do seu df, você pode tentar este método.

result = pandas_ai(df, "Drop the row with missing values with inplace=True") 
result

A análise de dados é essencial para identificar tendências, tanto de curto como de longo prazo, que podem ser inestimáveis ​​para empresas, governos, investigadores e indivíduos.

Vamos tentar encontrar uma tendência geral de vendas ao longo dos anos desde a sua criação.

Encontrando Tendências de Vendas

# finding trend in sales 
result = pandas_ai(df, "What is the overall trend in sales over the years since outlet establishment?") 
result

Vendas ao longo do ano (gráfico de linha)

  Como redefinir as configurações de fábrica do meu laptop Nextbook

O processo inicial de criação do enredo foi um pouco lento, mas depois de reiniciar o kernel e rodar tudo, ele ficou mais rápido.

# Atalho para traçar gráficos de linhas

df.plot_line_chart(x = ['a', 'b', 'c'], y = [1, 2, 3])

Este atalho irá traçar um gráfico de linhas do quadro de dados.

Você deve estar se perguntando por que há um declínio na tendência. É porque não temos dados de 1989 a 1994.

Encontrando o ano de maiores vendas

Agora, vamos descobrir qual ano tem as maiores vendas.

# finding year of highest sales
result = pandas_ai(df, "Explain which years have highest sales") 
result

Portanto, o ano com maiores vendas é 1985.

Porém, quero descobrir qual tipo de item gera a maior média de vendas e qual tipo gera a menor média de vendas.

Vendas médias mais altas e mais baixas

# finding highest and lowest average sale
result = pandas_ai(df, "Which item type generates the highest average sales, and which one generates the lowest?") 
result

Starchy Foods tem as vendas médias mais altas e Outros têm as vendas médias mais baixas. Se você não deseja que outros tenham as vendas mais baixas, você pode melhorar o prompt conforme sua necessidade.

Excelente! Agora, quero descobrir a distribuição das vendas nos diferentes pontos de venda.

Distribuição de vendas em diferentes pontos de venda

Existem quatro tipos de pontos de venda: Supermercado Tipo 1/2/3 e Mercearias.

# distribution of sales across different outlet types since establishment
response = pandas_ai(df, "Visualize the distribution of sales across different outlet types since establishment using bar plot, plot size=(13,10)") 
response

Distribuição das vendas em diferentes pontos de venda

Conforme observado nas instruções anteriores, o pico de vendas ocorreu em 1985, e este gráfico destaca as vendas mais altas em 1985 nos supermercados tipo 3.

# Atalho para traçar gráfico de barras

df = SmartDataframe('data.csv')
df.plot_bar_chart(x = ['a', 'b', 'c'], y = [1, 2, 3])

Este atalho irá traçar um gráfico de barras do quadro de dados.

# Atalho para traçar histograma

df = SmartDataframe('data.csv')
df.plot_histogram(column = 'a')

Este atalho irá traçar um histograma do quadro de dados.

Agora, vamos descobrir quais são as vendas médias dos itens com teor de gordura ‘Low Fat’ e ‘Regular’.

Encontre médias de vendas para itens com conteúdo gordo

# finding index of a row using value of a column 
result = pandas_ai(df, "What is the average sales for the items with 'Low Fat' and 'Regular' item fat content?") 
result

Escrever prompts como esse permite comparar dois ou mais produtos.

Vendas médias para cada tipo de item

Quero comparar todos os produtos com suas vendas médias.

#Average Sales for Each Item Type
result = pandas_ai(df, "What are the average sales for each item type over the past 5 years?, use pie plot, size=(6,6)") 
result

Gráfico de pizza média de vendas

Todas as seções do gráfico de pizza parecem semelhantes porque têm quase os mesmos números de vendas.

# Atalho para traçar gráfico de pizza

df.plot_pie_chart(labels = ['a', 'b', 'c'], values = [1, 2, 3])

Este atalho irá traçar um gráfico de pizza do quadro de dados.

Os 5 tipos de itens mais vendidos

Embora já tenhamos comparado todos os produtos com base nas vendas médias, agora gostaria de identificar os 5 itens com maiores vendas.

#Finding top 5 highest selling items
result = pandas_ai(df, "What are the top 5 highest selling item type based on average sells? Write in tablular form") 
result

Como esperado, Starchy Foods é o item mais vendido com base nas vendas médias.

Os 5 tipos de itens mais vendidos

result = pandas_ai(df, "What are the top 5 lowest selling item type based on average sells?")
result

Você pode se surpreender ao ver refrigerantes na categoria de menor venda. Porém, é fundamental ressaltar que esses dados só vão até 2008, e a tendência dos refrigerantes disparou alguns anos depois.

Vendas de categorias de produtos

Aqui, usei a palavra “categoria de produto” em vez de “tipo de item”, e o PandasAI ainda criou os gráficos, mostrando sua compreensão de palavras semelhantes.

result = pandas_ai(df, "Give a stacked large size bar chart of the sales of the various product categories for the last FY") 
result

Vendas do tipo de item

Você pode encontrar nossos atalhos restantes Aqui.

Você pode perceber que quando escrevemos um prompt e fornecemos instruções a um PandasAI, ele fornece resultados baseados exclusivamente nesse prompt específico. Ele não analisa suas solicitações anteriores para oferecer respostas mais precisas.

No entanto, com a ajuda de um agente de chat, você também pode obter essa funcionalidade.

Agente de bate-papo

Com o agente de chat, você pode participar de conversas dinâmicas nas quais o agente retém o contexto durante toda a discussão. Isso permite que você tenha trocas mais interativas e significativas.

Os principais recursos que potencializam essa interação incluem a retenção de contexto, onde o agente se lembra do histórico da conversa, permitindo interações contínuas e conscientes do contexto. Você pode utilizar o método Perguntas de Esclarecimento para solicitar esclarecimentos sobre qualquer aspecto da conversa, garantindo a compreensão total das informações fornecidas.

Além disso, o método Explicar está disponível para obter explicações detalhadas de como o agente chegou a uma determinada solução ou resposta, oferecendo transparência e insights sobre o processo de tomada de decisão do agente.

  Você pode obter alertas de estoque nas lojas? Não importantes.

Sinta-se à vontade para iniciar conversas, buscar esclarecimentos e explorar explicações para aprimorar suas interações com o agente do chat!

from pandasai import Agent
agent = Agent(df, config={"llm": llm}, memory_size=10)
result = agent.chat("Which are top 5 items with highest MRP")
result

Ao contrário de um SmartDataframe ou SmartDatalake, um agente acompanhará o estado da conversa e será capaz de responder conversas múltiplas.

Vamos avançar em direção às vantagens e limitações do PandasAI

Vantagens do PandasAI

Usar o Pandas AI oferece diversas vantagens que o tornam uma ferramenta valiosa para análise de dados, como:

  • Acessibilidade: PandasAI simplifica a análise de dados, tornando-os acessíveis a uma ampla gama de usuários. Qualquer pessoa, independentemente da sua formação técnica, pode usá-lo para extrair insights de dados e responder a questões de negócios.
  • Consultas em linguagem natural: a capacidade de fazer perguntas diretamente e receber respostas de dados usando consultas em linguagem natural torna a exploração e análise de dados mais fácil de usar. Esse recurso permite que até mesmo usuários não técnicos interajam com os dados de maneira eficaz.
  • Funcionalidade de bate-papo do agente: a função de bate-papo permite que os usuários interajam com os dados de forma interativa, enquanto o recurso de bate-papo do agente aproveita o histórico de bate-papo anterior para fornecer respostas baseadas no contexto. Isso promove uma abordagem dinâmica e conversacional para análise de dados.
  • Visualização de dados: PandasAI oferece uma variedade de opções de visualização de dados, incluindo mapa de calor, gráficos de dispersão, gráficos de barras, gráficos de pizza, gráficos de linhas e muito mais. Essas visualizações ajudam a compreender e apresentar padrões e tendências de dados.
  • Atalhos que economizam tempo: A disponibilidade de atalhos e recursos que economizam tempo agiliza o processo de análise de dados, ajudando os usuários a trabalhar com mais eficiência e eficácia.
  • Compatibilidade de arquivos: PandasAI oferece suporte a vários formatos de arquivo, incluindo CSV, Excel, Planilhas Google e muito mais. Essa flexibilidade permite que os usuários trabalhem com dados de diversas fontes e formatos.
  • Prompts personalizados: os usuários podem criar prompts personalizados usando instruções simples e código Python. Esse recurso permite que os usuários adaptem suas interações com os dados para atender a necessidades e consultas específicas.
  • Salvar alterações: a capacidade de salvar alterações feitas em dataframes garante que seu trabalho seja preservado e você possa revisitar e compartilhar sua análise a qualquer momento.
  • Respostas Personalizadas: A opção de criar respostas personalizadas permite aos usuários definir comportamentos ou interações específicas, tornando a ferramenta ainda mais versátil.
  • Integração de modelo: PandasAI suporta vários modelos de linguagem, incluindo aqueles dos modelos Hugging Face, Azure, Google Palm, Google VertexAI e LangChain. Essa integração aprimora os recursos da ferramenta e permite processamento e compreensão avançados de linguagem natural.
  • Suporte LangChain integrado: O suporte integrado para modelos LangChain expande ainda mais a gama de modelos e funcionalidades disponíveis, aumentando a profundidade da análise e dos insights que podem ser derivados dos dados.
  • Compreender nomes: PandasAI demonstra a capacidade de compreender a correlação entre nomes de colunas e terminologia da vida real. Por exemplo, mesmo que você use termos como “categoria de produto” em vez de “tipo de item” em suas solicitações, a ferramenta ainda poderá fornecer resultados relevantes e precisos. Essa flexibilidade no reconhecimento de sinônimos e no mapeamento deles para as colunas de dados apropriadas aumenta a conveniência do usuário e a adaptabilidade da ferramenta a consultas em linguagem natural.

Embora o PandasAI ofereça diversas vantagens, ele também apresenta algumas limitações e desafios dos quais os usuários devem estar cientes:

Limitações do PandasAI

Aqui estão algumas limitações que observei:

  • Requisito de chave de API: para usar o PandasAI, é essencial ter uma chave de API. Se você não tiver créditos suficientes em sua conta OpenAI, talvez não consiga usar o serviço. No entanto, é importante notar que o OpenAI oferece um crédito de US$ 5 para novos usuários, tornando-o acessível para aqueles que são novos na plataforma.
  • Tempo de processamento: Às vezes, o serviço pode sofrer atrasos no fornecimento de resultados, o que pode ser atribuído ao alto uso ou carga do servidor. Os usuários devem estar preparados para possíveis tempos de espera ao consultar o serviço.
  • Interpretação de instruções: embora você possa fazer perguntas por meio de instruções, a capacidade do sistema de explicar as respostas pode não estar totalmente desenvolvida e a qualidade das explicações pode variar. Este aspecto do PandasAI pode melhorar no futuro com maior desenvolvimento.
  • Sensibilidade dos prompts: os usuários precisam ter cuidado ao elaborar os prompts, pois mesmo pequenas alterações podem levar a resultados diferentes. Essa sensibilidade ao fraseado e à estrutura de prompts pode afetar a consistência dos resultados, especialmente ao trabalhar com gráficos de dados ou consultas mais complexas.
  • Limitações em prompts complexos: O PandasAI pode não lidar com prompts ou consultas altamente complexas com a mesma eficácia que os mais simples. Os usuários devem estar atentos à complexidade de suas dúvidas e garantir que a ferramenta seja adequada às suas necessidades específicas.
  • Alterações inconsistentes no DataFrame: os usuários relataram problemas ao fazer alterações nos DataFrames, como preencher valores nulos ou descartar linhas de valores nulos, mesmo ao especificar ‘Inplace = True’. Essa inconsistência pode ser frustrante para usuários que tentam modificar seus dados.
  • Resultados variáveis: Ao reiniciar um kernel ou executar novamente prompts, é possível receber diferentes resultados ou interpretações de dados de execuções anteriores. Essa variabilidade pode ser um desafio para usuários que exigem resultados consistentes e reproduzíveis. Não aplicável a todos os prompts.

Você pode baixar o conjunto de dados aqui.

O código está disponível em GitHub.

Conclusão

PandasAI oferece uma abordagem amigável para análise de dados, acessível até mesmo para aqueles sem grandes habilidades de codificação.

Neste artigo, abordei como configurar e utilizar o PandasAI para análise de dados, incluindo a criação de gráficos, o tratamento de valores nulos e o aproveitamento da funcionalidade de chat do agente.

Assine nosso boletim informativo para artigos mais informativos. Você pode estar interessado em aprender sobre modelos de IA para criar IA generativa.

Esse artigo foi útil?

Obrigado pelo seu feedback!