Python使用pandasai實(shí)現(xiàn)數(shù)據(jù)分析
一、引言
最近,一位名叫Gabriele Venturi的軟件工程師在github上建立了pandasai的項(xiàng)目。據(jù)官方介紹,pandasai是一個(gè) Python 第三方庫(kù),將人工智能的生成能力集成到pandas包中,使數(shù)據(jù)分析具有對(duì)話性。實(shí)際上,該第三方包通過(guò)調(diào)用openai的API,并根據(jù)交互指令來(lái)對(duì)數(shù)據(jù)框中的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,可以篩選、計(jì)算、分析出用戶想要的數(shù)據(jù),甚至還可以繪制圖表,功能可謂十分強(qiáng)大。目前,在github上有68000顆星,447個(gè)fork,已經(jīng)更新了18個(gè)版本。
有了這個(gè)工具,在不熟悉Python命令的情況下,也通過(guò)發(fā)送詳細(xì)的數(shù)據(jù)分析需求,借助pandasai和openai的API生成所需要的數(shù)據(jù)或者圖表,減化了數(shù)據(jù)分析的流程,降低了利用Python進(jìn)行計(jì)算、制圖的門(mén)檻。
二、pandasai的初步使用
1. pandasai的安裝
安裝完P(guān)ython3.8以上版本后,采用pip命令安裝:
pip install pandasai
2.官方代碼樣例
import pandas as pd
from pandasai import PandasAI
# Sample DataFrame
df = pd.DataFrame({
"country": ["United States", "United Kingdom", "France", "Germany", "Italy", "Spain", "Canada", "Australia", "Japan", "China"],
"gdp": [19294482071552, 2891615567872, 2411255037952, 3435817336832, 1745433788416, 1181205135360, 1607402389504, 1490967855104, 4380756541440, 14631844184064],
"happiness_index": [6.94, 7.16, 6.66, 7.07, 6.38, 6.4, 7.23, 7.22, 5.87, 5.12]
})
# Instantiate a LLM
from pandasai.llm.openai import OpenAI
llm = OpenAI(api_token="YOUR_API_TOKEN")
pandas_ai = PandasAI(llm, conversational=False)
pandas_ai(df, prompt='Which are the 5 happiest countries?')3. 樣例代碼修改
在調(diào)試此樣例過(guò)程中,一方面要獲得openai的API(貌似免費(fèi)的額度已經(jīng)沒(méi)有),如果想申請(qǐng)可以看這個(gè):
另一方面就是要能夠訪問(wèn)這個(gè)api。如果想順利訪問(wèn)api,需要用到以下文章中第四種方法:
修改后的樣例代碼如下:
import pandas as pd
from pandasai import PandasAI
from pandasai.llm.openai import OpenAI
import openai
openai.api_base = "https://XXX.com/v1" #這里設(shè)置自己的網(wǎng)址
# Sample DataFrame #從數(shù)據(jù)框中取樣
df = pd.DataFrame({
"country":["United States", "United Kingdom", "France", "Germany", "Italy", "Spain", "Canada", "Australia", "Japan", "China"],
"gdp":[19294482071552,2891615567872,2411255037952,3435817336832,1745433788416,1181205135360,1607402389504,1490967855104, 4380756541440, 14631844184064],
"happiness_index":[6.94,7.16,6.66,7.07,6.38,6.4,7.23,5.87,5.87,5.12]
})
# Instantiate a LLM 生成LLM實(shí)例
llm = OpenAI(api_token="Your Own Open_API_Key") # 這里放置自己的api
pandas_ai = PandasAI(llm, conversational=False)
print(pandas_ai.run(df, prompt='Which are the 5 happiest countries? '))與官方的代碼樣例相比,我們?cè)黾恿藢?dǎo)入openai,同時(shí)也把我設(shè)置的base_url指定,最后需要通過(guò)print()把生成的結(jié)果打印出來(lái),測(cè)試時(shí)發(fā)現(xiàn)也可以用中文提問(wèn)。生成的結(jié)果展示

4. 可視化制圖
如果相生成圖表,可以在prompt中指定,例如把上面修改的樣例代碼最后一行改為:
print(pandas_ai(df,"Plot the histogram of countries showing for each the gdp, using different colors for each bar"))
意思就是生成每一個(gè)國(guó)家GDP的直方圖。得到的結(jié)果如下圖:

pandasai生成圖表
5. 分析本地圖表
把現(xiàn)有的DateFrame修改為讀取本地的Excel表,可以用pd.read_excel("data.xlsx")命令,讀取完直接賦值給變量df,注意如果數(shù)據(jù)量大的話,讀取的速度可能會(huì)慢一點(diǎn)。
import pandas as pd
from pandasai import PandasAI
from pandasai.llm.openai import OpenAI
import openai
openai.api_base = "https://XXX.com/v1"
#Sample DataFrame
df = pd.read_excel("data.xlsx")
# Instantiate a LLM
llm = OpenAI(api_token="Your Own Open_API_Key")
pandas_ai = PandasAI(llm, conversational=False)
print(pandas_ai(df, prompt='Which are the 5 happiest countries? '))三、學(xué)后反思
- pandasai整合了pandas和chatgpt的功能,降低了數(shù)據(jù)分析的學(xué)習(xí)成本,可以作為數(shù)據(jù)分析流中重要的一環(huán)。
- pandasai分析結(jié)果較為準(zhǔn)確,由于api的訪問(wèn)速度較慢,整體上看程序代碼雖然不多,運(yùn)行起來(lái)速度較慢。
- 由于openai公司已經(jīng)取消了免費(fèi)api的額度,所以如果要使用api就要設(shè)置付費(fèi)賬戶,這無(wú)疑為普通用戶的使用設(shè)置了障礙。
到此這篇關(guān)于Python使用pandasai實(shí)現(xiàn)數(shù)據(jù)分析的文章就介紹到這了,更多相關(guān)Python pandasai內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- R語(yǔ)言 vs Python對(duì)比:數(shù)據(jù)分析哪家強(qiáng)?
- 分享一下Python數(shù)據(jù)分析常用的8款工具
- PowerBI和Python關(guān)于數(shù)據(jù)分析的對(duì)比
- python數(shù)據(jù)分析之聚類分析(cluster analysis)
- python實(shí)現(xiàn)數(shù)據(jù)分析與建模
- Python數(shù)據(jù)分析之pandas比較操作
- Python數(shù)據(jù)分析模塊pandas用法詳解
- 詳解10個(gè)可以快速用Python進(jìn)行數(shù)據(jù)分析的小技巧
相關(guān)文章
Python中flatten( ),matrix.A用法說(shuō)明
這篇文章主要介紹了Python中flatten( ),matrix.A用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
Python大批量寫(xiě)入數(shù)據(jù)(百萬(wàn)級(jí)別)的方法
這篇文章主要給大家介紹了關(guān)于Python大批量寫(xiě)入數(shù)據(jù)(百萬(wàn)級(jí)別)的相關(guān)資料,在日常處理數(shù)據(jù)的過(guò)程中,我們都有批量寫(xiě)入數(shù)據(jù)的需求,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考下2023-07-07
Python還能這么玩之用Python做個(gè)小游戲的外掛
玩過(guò)電腦游戲的同學(xué)對(duì)于外掛肯定不陌生,但是你在用外掛的時(shí)候有沒(méi)有想過(guò)外掛怎么制作出來(lái)的呢?現(xiàn)在來(lái)看一下怎么制作一個(gè)外掛,首先說(shuō)下,這里的游戲外掛的概念,和那些大型網(wǎng)游里的外掛可不同,不能自動(dòng)打怪,主要為了提高一下編程技術(shù),需要的朋友可以參考下2021-06-06
使用Python實(shí)現(xiàn)圖片和base64轉(zhuǎn)換工具
這篇文章主要為大家詳細(xì)介紹了如何使用Python中的base64模塊編寫(xiě)一個(gè)工具,可以實(shí)現(xiàn)圖片和Base64編碼之間的轉(zhuǎn)換,感興趣的小伙伴可以了解下2025-02-02
Python struct.unpack() 用法及常見(jiàn)錯(cuò)誤詳解
struct.unpack() 是 Python 中用于將二進(jìn)制數(shù)據(jù)(字節(jié)序列)解析為 Python 數(shù)據(jù)類型的函數(shù),通常與 struct.pack() 配對(duì)使用,下面給大家介紹Python struct.unpack()用法及常見(jiàn)錯(cuò)誤,感興趣的朋友一起看看吧2025-06-06
pandas去重復(fù)行并分類匯總的實(shí)現(xiàn)方法
這篇文章主要介紹了pandas去重復(fù)行并分類匯總的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01

