Analysera dina data med naturligt språk

Är du intresserad av att analysera din data med naturligt språk? Lär dig hur du gör det med Python-biblioteket PandasAI.

I en värld där data är avgörande är det viktigt att förstå och analysera det. Traditionell dataanalys kan dock vara komplex. Det är där PandasAI kommer in. Det förenklar dataanalys genom att låta dig prata med din data med naturligt språk.

Pandas AI fungerar genom att förvandla dina frågor till kod för dataanalys. Den är baserad på de populära pandorna i Python-biblioteket. PandasAI är ett Python-bibliotek som utökar pandor, det välkända verktyget för dataanalys och manipulation, med generativa AI-funktioner. Det är tänkt att komplettera pandor snarare än att ersätta dem.

PandasAI introducerar en konversationsaspekt till pandor (liksom andra allmänt använda dataanalysbibliotek), vilket gör det möjligt för dig att interagera med din data med hjälp av naturliga språkfrågor.

Den här handledningen går igenom stegen för att ställa in Pandas AI, använda den med en datauppsättning från verkligheten, skapa plotter, utforska genvägar och utforska styrkorna och begränsningarna hos detta potenta verktyg.

När du har slutfört den kommer du att kunna utföra dataanalys enklare och intuitivt med naturligt språk.

Så låt oss utforska den fascinerande världen av dataanalys av naturligt språk med Pandas AI!

Ställa in din miljö

För att komma igång med PandasAI bör du börja med att installera PandasAI-biblioteket.

Jag använder en Jupyter Notebook för det här projektet. Men du kan använda Google Collab eller VS Code enligt dina krav.

Om du planerar att använda Open AI Large Language Models (LLM) är det också viktigt att installera Open AI Python SDK för en smidig upplevelse.

# 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

Låt oss nu importera alla nödvändiga bibliotek:

# 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

En nyckelaspekt av dataanalys med PandasAI är API-nyckeln. Det här verktyget stöder flera stora språkmodeller (LLM) och LangChains-modeller, som används för att generera kod från naturliga språkfrågor. Detta gör dataanalys mer tillgänglig och användarvänlig.

PandasAI är mångsidig och kan arbeta med olika typer av modeller. Dessa inkluderar Hugging Face-modeller, Azure OpenAI, Google PALM och Google VertexAI. Var och en av dessa modeller ger sina egna styrkor till bordet, vilket förbättrar PandasAIs kapacitet.

Kom ihåg att för att använda dessa modeller behöver du lämpliga API-nycklar. Dessa nycklar autentiserar dina förfrågningar och låter dig utnyttja kraften i dessa avancerade språkmodeller i dina dataanalysuppgifter. Så se till att ha dina API-nycklar till hands när du ställer in PandasAI för dina projekt.

Du kan hämta API-nyckeln och exportera den som en miljövariabel.

I nästa steg kommer du att lära dig hur du använder PandasAI med olika typer av stora språkmodeller (LLM) från OpenAI och Hugging Face Hub.

Använda stora språkmodeller

Du kan antingen välja en LLM genom att instansiera en och skicka den till SmartDataFrame- eller SmartDatalake-konstruktorn, eller så kan du ange en i filen pandasai.json.

Om modellen förväntar sig en eller flera parametrar kan du skicka dem till konstruktorn eller specificera dem i filen pandasai.json i parametrarna llm_options, enligt följande:

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

Hur använder man OpenAI-modeller?

För att kunna använda OpenAI-modeller måste du ha en OpenAI API-nyckel. Du kan få en här.

När du har en API-nyckel kan du använda den för att instansiera ett OpenAI-objekt:

#We have imported all necessary libraries in privious step

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

Glöm inte att ersätta ”my-api-key” med din ursprungliga API-nyckel

Som ett alternativ kan du ställa in miljövariabeln OPENAI_API_KEY och instansiera OpenAI-objektet utan att skicka API-nyckeln:

# 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})

Om du står bakom en explicit proxy kan du ange openai_proxy när du instansierar OpenAI-objektet eller ställa in miljövariabeln OPENAI_PROXY att passera.

Viktig anmärkning: När du använder PandasAI-biblioteket för dataanalys med din API-nyckel är det viktigt att hålla reda på din tokenanvändning för att hantera kostnader.

Undrar du hur man gör detta? Kör helt enkelt följande tokenräknare för att få en tydlig bild av din tokenanvändning och motsvarande avgifter. På så sätt kan du effektivt hantera dina resurser och undvika överraskningar i din fakturering.

Du kan räkna antalet tokens som används av en prompt enligt följande:

"""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)

Du kommer att få resultat som detta:

#  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

Glöm inte att registrera din totala kostnad om du har begränsad kredit!

Hur använder man Hugging Face Models?

För att kunna använda HuggingFace-modeller måste du ha en HuggingFace API-nyckel. Du kan skapa ett HuggingFace-konto här och få en API-nyckel här.

När du väl har en API-nyckel kan du använda den för att instansiera en av HuggingFace-modellerna.

För närvarande stöder PandasAI följande HuggingFace-modeller:

  • Starcoder: bigcode/starcoder
  • Falcon: 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})

Som ett alternativ kan du ställa in miljövariabeln HUGGINGFACE_API_KEY och instansiera HuggingFace-objektet utan att skicka API-nyckeln:

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 och Falcon är båda LLM-modeller tillgängliga på Hugging Face.

Vi har framgångsrikt konfigurerat vår miljö och utforskat hur man använder både OpenAI och Hugging Face LLMs modeller. Låt oss nu gå vidare med vår dataanalysresa.

Vi kommer att använda datasetet Big Mart Sales data, som innehåller information om försäljningen av olika produkter i olika butiker av Big Mart. Datauppsättningen har 12 kolumner och 8524 rader. Du får länken i slutet av artikeln.

Dataanalys med PandasAI

Nu när vi framgångsrikt har installerat och importerat alla nödvändiga bibliotek, låt oss fortsätta att ladda vår datauppsättning.

Ladda datamängden

Du kan antingen välja en LLM genom att instansiera en och skicka den till SmartDataFrame. Du får länken till datasetet i slutet av artikeln.

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

Använd OpenAI:s LLM-modell

Efter att ha laddat vår data. Jag kommer att använda OpenAI:s LLM-modell för att använda PandasAI

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

Allt väl! Nu ska vi försöka använda uppmaningar.

Skriv ut de första 6 raderna i vår datauppsättning

Låt oss försöka ladda de första 6 raderna genom att ge instruktioner:

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

De första 6 raderna från datasetet

Det var riktigt snabbt! Låt oss förstå vår datauppsättning.

Generera beskrivande statistik för DataFrame

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

Beskrivning

Det finns 7060 värden i Item_Weigth; kanske det saknas värden.

Hitta saknade värden

Det finns två sätt att hitta saknade värden med pandas ai.

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

Hitta saknade värden

# Genväg för datarensning

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

Den här genvägen kommer att rensa data på dataramen.

Nu, låt oss fylla i de saknade nollvärdena.

Fyll i saknade värden

#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

Fyllda nullvärden

Det är en användbar metod att fylla i null-värden, men jag stötte på några problem när jag fyllde i null-värden.

# Genväg för Fyll null-värden

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

Denna genväg kommer att tillskriva saknade värden i dataramen.

Släpp nollvärden

Om du vill ta bort alla nollvärden från din df kan du prova den här metoden.

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

Dataanalys är avgörande för att identifiera trender, både kortsiktiga och långsiktiga, som kan vara ovärderliga för företag, regeringar, forskare och privatpersoner.

Låt oss försöka hitta en övergripande försäljningstrend under åren sedan dess etablering.

Hitta försäljningstrenden

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

Försäljning under året (Linjeplot)

Den initiala handlingsprocessen var lite långsam, men efter att ha startat om kärnan och kört allt gick det snabbare.

# Genväg till plottlinjediagram

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

Denna genväg kommer att rita ett linjediagram över dataramen.

Du kanske undrar varför det finns en nedgång i trenden. Det beror på att vi inte har data från 1989 till 1994.

Hitta år med högsta försäljning

Nu ska vi ta reda på vilket år som har den högsta försäljningen.

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

Så året med den högsta försäljningen är 1985.

Men jag vill ta reda på vilken artikeltyp som genererar den högsta genomsnittliga försäljningen och vilken typ som genererar den lägsta genomsnittliga försäljningen.

Högsta och lägsta genomsnittliga försäljning

# 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 har den högsta genomsnittliga försäljningen och andra har den lägsta genomsnittliga försäljningen. Om du inte vill att andra ska ha den lägsta försäljningen kan du förbättra snabbheten enligt dina behov.

Utmärkt! Nu vill jag ta reda på fördelningen av försäljningen mellan olika butiker.

Fördelning av försäljning på olika butiker

Det finns fyra typer av butiker: Supermarket Typ 1/2/3 och Livsmedelsbutiker.

# 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

Fördelning av försäljning på olika försäljningsställen

Som observerats i tidigare uppmaningar inträffade toppförsäljningen 1985, och denna plot visar den högsta försäljningen 1985 från stormarknad typ 3-butiker.

# Genväg till plotta stapeldiagram

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

Denna genväg kommer att rita ett stapeldiagram över dataramen.

# Genväg till Plot Histogram

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

Denna genväg kommer att plotta ett histogram av dataramen.

Låt oss nu ta reda på vad är den genomsnittliga försäljningen för artiklar med ”Low Fat” och ”Regular” objektfetthalt.

Hitta den genomsnittliga försäljningen för artiklar med fettinnehåll

# 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

Genom att skriva sådana här uppmaningar kan du jämföra två eller flera produkter.

Genomsnittlig försäljning för varje artikeltyp

Jag vill jämföra alla produkter med deras genomsnittliga försäljning.

#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

Genomsnittlig försäljning Cirkeldiagram

Alla delar av cirkeldiagrammet ser likadana ut eftersom de har nästan samma försäljningssiffror.

# Genväg till Rita cirkeldiagram

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

Denna genväg kommer att rita ett cirkeldiagram över dataramen.

Topp 5 mest sålda objekttyper

Även om vi redan har jämfört alla produkter baserat på genomsnittlig försäljning, vill jag nu identifiera de fem bästa artiklarna med högst försäljning.

#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

Som väntat är Starchy Foods den mest sålda varan baserat på genomsnittlig försäljning.

Topp 5 lägst säljande objekttyper

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

Du kanske blir förvånad över att se läskedrycker i den minst sålda kategorin. Det är dock viktigt att notera att dessa uppgifter bara går fram till 2008, och trenden för läskedrycker tog fart några år senare.

Försäljning av produktkategorier

Här använde jag ordet ”produktkategori” istället för ”varutyp”, och PandasAI skapade fortfarande plotten, vilket visade sin förståelse av liknande ord.

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

Försäljning av artikeltyp

Du hittar våra återstående genvägar Här.

Du kanske märker att när vi skriver en uppmaning och ger instruktioner till en PandasAI, ger den resultat baserat enbart på den specifika uppmaningen. Den analyserar inte dina tidigare uppmaningar för att ge mer exakta svar.

Men med hjälp av en chattagent kan du också uppnå denna funktionalitet.

Chattagent

Med chattagenten kan du delta i dynamiska konversationer där agenten behåller sitt sammanhang under hela diskussionen. Detta gör att du kan ha mer interaktiva och meningsfulla utbyten.

Nyckelfunktionerna som möjliggör denna interaktion inkluderar Context Retention, där agenten kommer ihåg konversationshistoriken, vilket möjliggör sömlösa, sammanhangsmedvetna interaktioner. Du kan använda metoden förtydligande frågor för att begära förtydliganden om alla aspekter av konversationen, vilket säkerställer att du till fullo förstår informationen som tillhandahålls.

Dessutom är Explain-metoden tillgänglig för att få detaljerade förklaringar av hur agenten kom fram till en viss lösning eller svar, vilket ger transparens och insikter i agentens beslutsprocess.

Inled gärna konversationer, sök förtydliganden och utforska förklaringar för att förbättra din interaktion med chattagenten!

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

I motsats till en SmartDataframe eller en SmartDatalake kommer en agent att hålla reda på konversationens tillstånd och kommer att kunna svara på konversationer med flera svängar.

Låt oss gå mot fördelarna och begränsningarna med PandasAI

Fördelar med PandasAI

Att använda Pandas AI ger flera fördelar som gör det till ett värdefullt verktyg för dataanalys, till exempel:

  • Tillgänglighet: PandasAI förenklar dataanalys och gör den tillgänglig för ett brett spektrum av användare. Vem som helst, oavsett teknisk bakgrund, kan använda den för att extrahera insikter från data och svara på affärsfrågor.
  • Naturliga språkfrågor: Möjligheten att ställa frågor direkt och få svar från data med hjälp av naturliga språkfrågor gör datautforskning och analys mer användarvänlig. Denna funktion gör att även icke-tekniska användare kan interagera med data effektivt.
  • Agentchattfunktionalitet: Chattfunktionen tillåter användare att interagera med data interaktivt, medan agentchattfunktionen utnyttjar tidigare chatthistorik för att ge kontextmedvetna svar. Detta främjar en dynamisk och konversationsstrategi för dataanalys.
  • Datavisualisering: PandasAI tillhandahåller en rad datavisualiseringsalternativ, inklusive värmekarta, spridningsdiagram, stapeldiagram, cirkeldiagram, linjediagram och mer. Dessa visualiseringar hjälper till att förstå och presentera datamönster och trender.
  • Tidsbesparande genvägar: Tillgången till genvägar och tidsbesparande funktioner effektiviserar dataanalysprocessen, vilket hjälper användarna att arbeta mer effektivt och effektivt.
  • Filkompatibilitet: PandasAI stöder olika filformat, inklusive CSV, Excel, Google Sheets och mer. Denna flexibilitet tillåter användare att arbeta med data från en mängd olika källor och format.
  • Anpassade uppmaningar: Användare kan skapa anpassade uppmaningar med enkla instruktioner och Python-kod. Denna funktion ger användare möjlighet att skräddarsy sin interaktion med data för att passa specifika behov och frågor.
  • Spara ändringar: Möjligheten att spara ändringar som gjorts i dataramar säkerställer att ditt arbete bevaras, och du kan återbesöka och dela din analys när som helst.
  • Anpassade svar: Alternativet att skapa anpassade svar gör det möjligt för användare att definiera specifika beteenden eller interaktioner, vilket gör verktyget ännu mer mångsidigt.
  • Modellintegration: PandasAI stöder olika språkmodeller, inklusive modellerna Hugging Face, Azure, Google Palm, Google VertexAI och LangChain. Denna integration förbättrar verktygets kapacitet och möjliggör avancerad bearbetning och förståelse av naturligt språk.
  • Inbyggt LangChain-stöd: Det inbyggda stödet för LangChain-modeller utökar utbudet av tillgängliga modeller och funktioner ytterligare, vilket förbättrar djupet av analys och insikter som kan härledas från data.
  • Förstå namn: PandasAI visar förmågan att förstå sambandet mellan kolumnnamn och verklig terminologi. Till exempel, även om du använder termer som ”produktkategori” istället för ”varutyp” i dina meddelanden, kan verktyget fortfarande ge relevanta och korrekta resultat. Denna flexibilitet när det gäller att känna igen synonymer och mappa dem till lämpliga datakolumner förbättrar användarvänligheten och verktygets anpassningsförmåga till naturliga språkfrågor.

Även om PandasAI erbjuder flera fördelar, kommer det också med några begränsningar och utmaningar som användare bör vara medvetna om:

Begränsningar för PandasAI

Här är några begränsningar som jag observerade:

  • API-nyckelkrav: För att använda PandasAI är det viktigt att ha en API-nyckel. Om du inte har tillräckligt med krediter på ditt OpenAI-konto kanske du inte kan använda tjänsten. Det är dock värt att notera att OpenAI ger en kredit på $5 för nya användare, vilket gör den tillgänglig för de som är nya på plattformen.
  • Behandlingstid: Ibland kan tjänsten uppleva förseningar i att ge resultat, vilket kan tillskrivas hög användning eller serverbelastning. Användare bör vara förberedda på potentiella väntetider när de frågar efter tjänsten.
  • Tolkning av uppmaningar: Även om du kan ställa frågor via uppmaningar, kanske systemets förmåga att förklara svar inte är fullt utvecklad och kvaliteten på förklaringarna kan variera. Denna aspekt av PandasAI kan förbättras i framtiden med ytterligare utveckling.
  • Snabbkänslighet: Användare måste vara försiktiga när de skapar meddelanden, eftersom även små ändringar kan leda till olika resultat. Denna känslighet för frasering och snabbstruktur kan påverka konsekvensen i resultaten, särskilt när man arbetar med dataplots eller mer komplexa frågor.
  • Begränsningar för komplexa uppmaningar: PandasAI kanske inte hanterar mycket komplexa uppmaningar eller frågor lika effektivt som enklare. Användare bör vara uppmärksamma på komplexiteten i sina frågor och se till att verktyget är lämpligt för deras specifika behov.
  • Inkonsekventa DataFrame-ändringar: Användare har rapporterat problem med att göra ändringar i DataFrames, som att fylla i null-värden eller ta bort null-värdesrader, även när de anger ’Inplace=True’. Denna inkonsekvens kan vara frustrerande för användare som försöker ändra sina data.
  • Variabla resultat: När du startar om en kärna eller kör meddelanden igen, är det möjligt att få olika resultat eller tolkningar av data från tidigare körningar. Denna variation kan vara utmanande för användare som kräver konsekventa och reproducerbara resultat. Gäller inte alla uppmaningar.

Du kan ladda ner datasetet här.

Koden finns tillgänglig på GitHub.

Slutsats

PandasAI erbjuder ett användarvänligt tillvägagångssätt för dataanalys, tillgänglig även för dem utan omfattande kodningskunskaper.

I den här artikeln har jag täckt hur du ställer in och använder PandasAI för dataanalys, inklusive att skapa plotter, hantera nollvärden och dra fördel av agentchattfunktionalitet.

Prenumerera på vårt nyhetsbrev för mer informativa artiklar. Du kanske är intresserad av att lära dig mer om AI-modeller för att skapa generativ AI.

var den här artikeln hjälpsam?

Tack för din feedback!