Analyzujte svá data pomocí přirozeného jazyka

Máte zájem analyzovat svá data pomocí přirozeného jazyka? Naučte se, jak to udělat pomocí knihovny Python PandasAI.

Ve světě, kde jsou data klíčová, je nezbytné jim porozumět a analyzovat je. Tradiční analýza dat však může být složitá. To je místo, kde přichází na řadu PandasAI. Zjednodušuje analýzu dat tím, že vám umožňuje mluvit s daty pomocí přirozeného jazyka.

Pandas AI funguje tak, že převádí vaše otázky na kód pro analýzu dat. Je založen na populární knihovně Python pandas. PandasAI je knihovna Pythonu, která rozšiřuje pandy, známý nástroj pro analýzu a manipulaci s daty, o funkce generativní umělé inteligence. Má pandy spíše doplňovat, než je nahrazovat.

PandasAI zavádí do pand (stejně jako do dalších široce používaných knihoven pro analýzu dat) konverzační aspekt, který vám umožňuje komunikovat s vašimi daty pomocí dotazů v přirozeném jazyce.

Tento výukový program vás provede kroky nastavení Pandas AI, jeho používání se sadou dat v reálném světě, vytváření grafů, prozkoumávání zkratek a zkoumání silných stránek a omezení tohoto mocného nástroje.

Po jeho dokončení budete moci provádět analýzu dat snadněji a intuitivněji pomocí přirozeného jazyka.

Pojďme tedy prozkoumat fascinující svět analýzy dat v přirozeném jazyce s Pandas AI!

Nastavení vašeho prostředí

Chcete-li začít s PandasAI, měli byste začít instalací knihovny PandasAI.

Pro tento projekt používám Jupyter Notebook. Můžete však použít Google Collab nebo VS Code podle svých požadavků.

Pokud plánujete používat Open AI Large Language Models (LLM), je také důležité nainstalovat Open AI Python SDK pro bezproblémový provoz.

# 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

Nyní importujeme všechny potřebné knihovny:

# 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

Klíčovým aspektem analýzy dat pomocí PandasAI je klíč API. Tento nástroj podporuje několik modelů LLM (Large Language Models) a modelů LangChains, které se používají ke generování kódu z dotazů v přirozeném jazyce. Díky tomu je analýza dat přístupnější a uživatelsky přívětivější.

PandasAI je univerzální a dokáže pracovat s různými typy modelů. Patří mezi ně modely Hugging Face, Azure OpenAI, Google PALM a Google VertexAI. Každý z těchto modelů přináší své vlastní silné stránky a rozšiřuje možnosti PandasAI.

Pamatujte, že k použití těchto modelů budete potřebovat příslušné klíče API. Tyto klíče ověřují vaše požadavky a umožňují vám využít sílu těchto pokročilých jazykových modelů při vašich úlohách analýzy dat. Při nastavování PandasAI pro vaše projekty se tedy ujistěte, že máte klíče API po ruce.

Klíč API můžete načíst a exportovat jako proměnnou prostředí.

V dalším kroku se naučíte používat PandasAI s různými typy velkých jazykových modelů (LLM) z OpenAI a Hugging Face Hub.

Použití velkých jazykových modelů

LLM si můžete vybrat buď vytvořením instance a jejím předáním konstruktoru SmartDataFrame nebo SmartDatalake, nebo ji můžete zadat v souboru pandasai.json.

Pokud model očekává jeden nebo více parametrů, můžete je předat konstruktoru nebo je zadat v souboru pandasai.json v parametru llm_options následovně:

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

Jak používat modely OpenAI?

Abyste mohli používat modely OpenAI, musíte mít klíč OpenAI API. Můžete získat jeden tady.

Jakmile budete mít klíč API, můžete jej použít k vytvoření instance objektu 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})

Nezapomeňte nahradit „my-api-key“ vaším původním klíčem API

Alternativně můžete nastavit proměnnou prostředí OPENAI_API_KEY a vytvořit instanci objektu OpenAI bez předání klíče 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})

Pokud jste za explicitním proxy, můžete zadat openai_proxy při vytváření instance objektu OpenAI nebo nastavit proměnnou prostředí OPENAI_PROXY, aby procházela.

  Jak změnit polohu na Chromebooku

Důležitá poznámka: Když používáte knihovnu PandasAI pro analýzu dat pomocí klíče API, je důležité sledovat využití vašeho tokenu pro správu nákladů.

Ptáte se, jak to udělat? Jednoduše spusťte následující kód počítadla tokenů, abyste získali jasnou představu o používání vašeho tokenu a odpovídajících poplatcích. Tímto způsobem můžete efektivně spravovat své zdroje a vyhnout se jakýmkoli překvapením ve fakturaci.

Počet tokenů použitých výzvou můžete spočítat následovně:

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

Dostanete takové výsledky:

#  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

Pokud máte omezený kredit, nezapomeňte si vést záznamy o vašich celkových nákladech!

Jak používat Hugging Face Models?

Abyste mohli používat modely HuggingFace, musíte mít klíč API HuggingFace. Můžete si vytvořit účet HuggingFace tady a získat klíč API tady.

Jakmile budete mít klíč API, můžete jej použít k vytvoření instance jednoho z modelů HuggingFace.

V současné době PandasAI podporuje následující modely HuggingFace:

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

Alternativně můžete nastavit proměnnou prostředí HUGGINGFACE_API_KEY a vytvořit instanci objektu HuggingFace bez předání klíče 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 a Falcon jsou oba modely LLM dostupné na Hugging Face.

Úspěšně jsme nastavili naše prostředí a prozkoumali, jak používat modely OpenAI a Hugging Face LLMs. Nyní pojďme vpřed s naší cestou analýzy dat.

Budeme používat dataset Big Mart Sales data, který obsahuje informace o prodejích různých produktů v různých prodejnách Big Mart. Soubor dat má 12 sloupců a 8524 řádků. Odkaz najdete na konci článku.

Analýza dat pomocí PandasAI

Nyní, když jsme úspěšně nainstalovali a importovali všechny potřebné knihovny, přistoupíme k načtení naší datové sady.

Načtěte datovou sadu

Můžete si vybrat LLM vytvořením instance a jejím předáním do SmartDataFrame. Odkaz na datovou sadu najdete na konci článku.

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

Použijte model LLM OpenAI

Po načtení našich dat. K použití PandasAI budu používat model LLM OpenAI

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

Vše dobré! Nyní zkusme použít výzvy.

Vytiskněte prvních 6 řádků naší datové sady

Zkusme načíst prvních 6 řádků poskytnutím pokynů:

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

Prvních 6 řádků z datové sady

To bylo opravdu rychlé! Pojďme pochopit naši datovou sadu.

Generování popisné statistiky DataFrame

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

Popis

V Item_Weigth je 7060 hodnot; možná tam chybí nějaké hodnoty.

Najít chybějící hodnoty

Existují dva způsoby, jak najít chybějící hodnoty pomocí pandas ai.

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

Hledání chybějících hodnot

# Zástupce pro čištění dat

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

Tato zkratka provede čištění dat v datovém rámci.

Nyní doplňte chybějící hodnoty null.

Doplňte chybějící hodnoty

#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

Vyplněné hodnoty null

Je to užitečná metoda k vyplnění hodnot null, ale při vyplňování hodnot null jsem čelil některým problémům.

# Zkratka pro Vyplnit hodnoty Null

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

Tato zkratka bude imputovat chybějící hodnoty v datovém rámci.

Vypusťte hodnoty Null

Pokud chcete vypustit všechny hodnoty null z vašeho df, můžete zkusit tuto metodu.

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

Analýza dat je nezbytná pro identifikaci trendů, krátkodobých i dlouhodobých, které mohou být neocenitelné pro podniky, vlády, výzkumníky i jednotlivce.

  Jak používat Apple Watch k maximálnímu využití běžeckých tréninků

Zkusme najít celkový trend prodeje za léta od jeho založení.

Hledání trendu prodeje

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

Prodej v průběhu roku (Line plot)

Počáteční proces vytváření zápletky byl trochu pomalý, ale po restartu jádra a spuštění toho všeho běžel rychleji.

# Zkratka pro vykreslování liniových grafů

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

Tato zkratka vykreslí spojnicový graf datového rámce.

Možná se ptáte, proč dochází k poklesu trendu. Je to kvůli tomu, že nemáme data z let 1989 až 1994.

Vyhledání roku nejvyšších prodejů

Nyní pojďme zjistit, který rok má nejvyšší prodeje.

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

Takže rok s nejvyššími prodeji je 1985.

Chci však zjistit, který typ položky generuje nejvyšší průměrné prodeje a který typ generuje nejnižší průměrné tržby.

Nejvyšší a nejnižší průměrné tržby

# 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

Škrobové potraviny mají nejvyšší průměrné tržby a Ostatní mají nejnižší průměrné tržby. Pokud nechcete, aby ostatní měli nejnižší tržby, můžete vylepšit prompt podle svých potřeb.

Nádherný! Nyní chci zjistit distribuci prodeje v různých prodejnách.

Distribuce prodeje napříč různými prodejnami

Existují čtyři typy prodejen: Supermarket Typ 1/2/3 a Obchody s potravinami.

# 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

Distribuce prodeje do různých prodejen

Jak bylo pozorováno v předchozích výzvách, vrchol prodeje nastal v roce 1985 a tento graf ukazuje nejvyšší prodeje v roce 1985 z prodejen supermarketů typu 3.

# Zkratka pro vykreslení pruhového grafu

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

Tato zkratka vykreslí sloupcový graf datového rámce.

# Zkratka pro vykreslení histogramu

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

Tato zkratka vykreslí histogram datového rámce.

Nyní pojďme zjistit, jaké jsou průměrné prodeje položek s obsahem tuku „nízkotučný“ a „běžný“.

Najděte průměrné prodeje pro položky s obsahem tuku

# 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

Psaní výzev, jako je tato, vám umožní porovnat dva nebo více produktů.

Průměrný prodej pro každý typ položky

Chci porovnat všechny produkty s jejich průměrným prodejem.

#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

Koláčový graf průměrného prodeje

Všechny části výsečového grafu vypadají podobně, protože mají téměř stejné údaje o prodeji.

# Zkratka pro vykreslení koláčového grafu

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

Tato zkratka vynese výsečový graf datového rámce.

Top 5 nejprodávanějších typů položek

Zatímco jsme již porovnali všechny produkty na základě průměrného prodeje, nyní bych rád určil 5 nejlepších položek s nejvyššími prodeji.

#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

Nejprodávanějším artiklem na základě průměrných tržeb je podle očekávání Starchy Foods.

Top 5 nejprodávanějších typů položek

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

Možná vás překvapí, když uvidíte nealkoholické nápoje v kategorii nejméně prodávaných. Je však nezbytné poznamenat, že tato data sahají pouze do roku 2008 a trend nealkoholických nápojů nabral o několik let později.

Prodej kategorií produktů

Zde jsem použil slovo „kategorie produktu“ místo „typ položky“ a PandasAI stále vytvořil grafy, které ukazují, že rozumí podobným slovům.

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

Prodej druhu zboží

Můžete najít naše zbývající zkratky Tady.

Můžete si všimnout, že když napíšeme výzvu a poskytneme pokyny pro PandasAI, poskytuje výsledky založené výhradně na této konkrétní výzvě. Neanalyzuje vaše předchozí výzvy, aby nabídl přesnější odpovědi.

S pomocí chatovacího agenta však můžete dosáhnout i této funkce.

Chatovací agent

S chatovacím agentem se můžete zapojit do dynamických konverzací, kde si agent během diskuse zachovává kontext. To vám umožní mít interaktivnější a smysluplnější výměny.

Mezi klíčové funkce, které umožňují tuto interakci, patří Context Retention, kdy si agent pamatuje historii konverzace, což umožňuje bezproblémové, kontextové interakce. Pomocí metody Clarification Questions můžete požádat o vysvětlení jakéhokoli aspektu konverzace a zajistit, že plně rozumíte poskytnutým informacím.

  Jak najít text na webové stránce v Safari na iPhone a iPad

Navíc je k dispozici metoda Explain, která umožňuje získat podrobné vysvětlení toho, jak agent dospěl ke konkrétnímu řešení nebo reakci, a nabízí transparentnost a náhled do rozhodovacího procesu agenta.

Neváhejte zahájit konverzace, hledat vysvětlení a prozkoumat vysvětlení, abyste zlepšili své interakce s chatovacím agentem!

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

Na rozdíl od SmartDataframe nebo SmartDatalake bude agent sledovat stav konverzace a bude schopen odpovídat na konverzace s více odbočkami.

Pojďme k výhodám a omezením PandasAI

Výhody PandasAI

Používání Pandas AI nabízí několik výhod, které z ní dělají cenný nástroj pro analýzu dat, jako například:

  • Dostupnost: PandasAI zjednodušuje analýzu dat a zpřístupňuje je široké škále uživatelů. Kdokoli, bez ohledu na své technické zázemí, jej může použít k získávání poznatků z dat a zodpovězení obchodních otázek.
  • Dotazy v přirozeném jazyce: Možnost klást otázky přímo a přijímat odpovědi z dat pomocí dotazů v přirozeném jazyce činí průzkum a analýzu dat uživatelsky přívětivější. Tato funkce umožňuje efektivní interakci s daty i netechnickým uživatelům.
  • Funkce chatu agenta: Funkce chatu umožňuje uživatelům interaktivně pracovat s daty, zatímco funkce chatu agenta využívá předchozí historii chatu k poskytování kontextových odpovědí. To podporuje dynamický a konverzační přístup k analýze dat.
  • Vizualizace dat: PandasAI poskytuje řadu možností vizualizace dat, včetně teplotní mapy, bodových grafů, sloupcových grafů, koláčových grafů, spojnicových grafů a dalších. Tyto vizualizace pomáhají pochopit a prezentovat datové vzorce a trendy.
  • Zkratky šetřící čas: Dostupnost zkratek a funkcí šetřících čas zefektivňuje proces analýzy dat a pomáhá uživatelům pracovat efektivněji a efektivněji.
  • Kompatibilita souborů: PandasAI podporuje různé formáty souborů, včetně CSV, Excel, Google Sheets a dalších. Tato flexibilita umožňuje uživatelům pracovat s daty z různých zdrojů a formátů.
  • Vlastní výzvy: Uživatelé mohou vytvářet vlastní výzvy pomocí jednoduchých pokynů a kódu Pythonu. Tato funkce umožňuje uživatelům přizpůsobit své interakce s daty tak, aby vyhovovaly konkrétním potřebám a dotazům.
  • Uložit změny: Možnost uložit změny provedené v datových rámcích zajišťuje, že vaše práce zůstane zachována a můžete svou analýzu kdykoli znovu navštívit a sdílet.
  • Vlastní odpovědi: Možnost vytvářet vlastní odpovědi umožňuje uživatelům definovat konkrétní chování nebo interakce, díky čemuž je nástroj ještě všestrannější.
  • Integrace modelu: PandasAI podporuje různé jazykové modely, včetně modelů Hugging Face, Azure, Google Palm, Google VertexAI a LangChain. Tato integrace rozšiřuje možnosti nástroje a umožňuje pokročilé zpracování přirozeného jazyka a porozumění.
  • Vestavěná podpora LangChain: Vestavěná podpora pro modely LangChain dále rozšiřuje řadu dostupných modelů a funkcí a zvyšuje hloubku analýzy a náhledů, které lze odvodit z dat.
  • Porozumění názvům: PandasAI demonstruje schopnost porozumět korelaci mezi názvy sloupců a reálnou terminologií. I když například ve výzvách použijete výrazy jako „kategorie produktu“ místo „typ položky“, nástroj může stále poskytovat relevantní a přesné výsledky. Tato flexibilita při rozpoznávání synonym a jejich mapování do příslušných datových sloupců zvyšuje uživatelské pohodlí a přizpůsobivost nástroje pro dotazy v přirozeném jazyce.

Přestože PandasAI nabízí několik výhod, přichází také s některými omezeními a výzvami, kterých by si uživatelé měli být vědomi:

Omezení PandasAI

Zde jsou některá omezení, která jsem zaznamenal:

  • Požadavek na klíč API: Chcete-li používat PandasAI, je nezbytné mít klíč API. Pokud na svém OpenAI účtu nemáte dostatek kreditů, možná nebudete moci službu používat. Stojí však za zmínku, že OpenAI poskytuje novým uživatelům kredit ve výši 5 USD, takže je přístupný pro nové uživatele.
  • Doba zpracování: Někdy může služba zaznamenat zpoždění při poskytování výsledků, což lze přičíst vysokému využití nebo zatížení serveru. Uživatelé by měli být připraveni na potenciální čekací doby při dotazování na službu.
  • Interpretace výzev: I když můžete klást otázky prostřednictvím výzev, schopnost systému vysvětlit odpovědi nemusí být plně rozvinuta a kvalita vysvětlení se může lišit. Tento aspekt PandasAI se může v budoucnu zlepšit dalším vývojem.
  • Citlivost výzev: Uživatelé musí být opatrní při vytváření výzev, protože i nepatrné změny mohou vést k různým výsledkům. Tato citlivost na frázování a rychlou strukturu může ovlivnit konzistenci výsledků, zejména při práci s datovými grafy nebo složitějšími dotazy.
  • Omezení složitých výzev: PandasAI nemusí zpracovávat vysoce složité výzvy nebo dotazy tak efektivně jako ty jednodušší. Uživatelé by si měli dávat pozor na složitost svých otázek a zajistit, aby byl nástroj vhodný pro jejich specifické potřeby.
  • Nekonzistentní změny datových rámců: Uživatelé hlásili problémy s prováděním změn datových rámců, jako je vyplňování prázdných hodnot nebo vypouštění řádků s prázdnými hodnotami, a to i při zadání ‚Inplace=True. Tato nekonzistence může být frustrující pro uživatele, kteří se snaží upravit svá data.
  • Proměnné výsledky: Při restartování jádra nebo opětovném spuštění výzev je možné získat různé výsledky nebo interpretace dat z předchozích spuštění. Tato variabilita může být náročná pro uživatele, kteří požadují konzistentní a reprodukovatelné výsledky. Neplatí pro všechny výzvy.

Můžete si stáhnout datovou sadu tady.

Kód je k dispozici na GitHub.

Závěr

PandasAI nabízí uživatelsky přívětivý přístup k analýze dat, přístupný i těm, kteří nemají rozsáhlé znalosti kódování.

V tomto článku jsem se zabýval tím, jak nastavit a používat PandasAI pro analýzu dat, včetně vytváření grafů, zpracování nulových hodnot a využití funkcí chatu agentů.

Pro více informativních článků se přihlaste k odběru našeho newsletteru. Možná vás bude zajímat informace o modelech umělé inteligence pro vytváření generativní umělé inteligence.

Byl tento článek užitečný?

Děkujeme vám za vaši reakci!