怎么用 PandasAI 進行對話式數(shù)據(jù)分析?
本文主要介紹了如何利用PandasAI這個工具進行對話式的數(shù)據(jù)分析,包括安裝、引入SmartDataFrame、生成和分析數(shù)據(jù)以及繪制圖表等步驟,并提醒讀者注意大模型生成的結果需要進一步驗證。
PandasAI 是一個能讓數(shù)據(jù)分析變得更加有趣的庫,它充分利用了 Pandas 的強大功能,并結合大型語言模型的優(yōu)勢,使得用戶能夠以日常對話的方式進行數(shù)據(jù)分析。例如,你問 PandasAI:
累計購買次數(shù)最多的客戶是誰?
PandasAI 會直接告訴你答案,而不你用去寫很多代碼,也不用做一些繁瑣的操作。
那么,具體應該怎么用 PandasAI 進行對話式的數(shù)據(jù)分析呢?
首先,你需要安裝 PandasAI,如果你還沒有安裝的話,可以在數(shù)據(jù)分析環(huán)境的 Jupyter Notebook 中運行以下命令:
!pip?install?pandasai
其次,用以下代碼,引入智能數(shù)據(jù)框 SmartDataframe:
from pandasai import SmartDataframe
接下來,為了方便演示 PandasAI 的功能,我們模擬生成一些數(shù)據(jù):
import numpy as np
import pandas as pd
from faker import Faker
# 創(chuàng)建數(shù)據(jù)生成器
fake = Faker(‘zh_CN’)
# 設置隨機種子以確??芍貜偷慕Y果
np.random.seed(0)
fake.random.seed(0)
# 生成數(shù)據(jù)集
data = {
? ‘客戶姓名’: [fake.name() for _ in range(100)],
? ‘性別’: [fake.random.choice([‘男’, ‘女’]) for _ in range(100)],
? ‘年齡’: np.random.randint(18, 70, size=100),
? ‘所在省份’: [fake.province() for _ in range(100)],
? ‘最近購買時間’: [fake.date_between(start_date=’-2y’, end_date=’today’) for _ in range(100)],
? ?‘累計購買次數(shù)’: np.random.randint(1, 20, size=100),
? ?‘累計購買金額’: np.random.normal(loc=1000, scale=500, size=100)
}
# 累計購買金額與累計購買次數(shù)的合理比例
data[“累計購買金額”] = [round(times * np.random.uniform(500, 800), 2) for times in data[“累計購買次數(shù)”]]
# 創(chuàng)建 DataFrame
df = pd.DataFrame(data)
你可以把數(shù)據(jù)替換為自己的數(shù)據(jù),比如從 Excel 文件或數(shù)據(jù)庫中讀取數(shù)據(jù)。
然后,你可以開始調用大模型來分析數(shù)據(jù)。PandasAI 默認使用的大語言模型是 BambooLLM,你可以在 https://pandabi.ai 上用郵箱進行注冊,免費獲取你的 API 密鑰,并復制到下面的代碼中。
import os
os.environ[‘PANDASAI_API_KEY’] = “把你的 API 密鑰復制到這里”
sdf = SmartDataframe(df)
現(xiàn)在,你就可以用自然語言與 PandasAI 進行對話式的數(shù)據(jù)分析,例如:
你還可以用下面的命令,把 PandasAI 最近執(zhí)行的代碼顯示出來,確認它不是胡說八道,而是經(jīng)過嚴格的數(shù)學計算。
print(sdf.last_code_generated)
需要注意的是:大模型生成的分析結果,雖然可以提供有價值的參考,但并非 100% 準確可靠。在實際應用中,我們需要加強驗證,并對最終的結果負責。
你還可以讓 PandasAI 幫你繪制圖表,例如:sdf.chat(“請用直方圖展示客戶年齡分布”)因為中文字體的原因,此時系統(tǒng)可能會報錯。你可以把系統(tǒng)報錯的信息發(fā)給 AI,例如:
參考 AI 提供的方法,稍微修改一下提示詞:
sdf.chat(“請用直方圖展示客戶年齡分布,
并用 plt.rcParams[‘font.sans-serif’] = [‘SimHei’] ?來正常顯示中文標簽”)
重新運行之后,正常情況下就能得到一張圖表如下:
你甚至可以提出一些額外的要求,例如:
sdf.chat(“請用直方圖展示客戶年齡分布,
并用 plt.rcParams[‘font.sans-serif’] = [‘SimHei’] ?來正常顯示中文標簽,
上面的標題用 16 號字體。”)
運行結果如下:
最后,你還可以按照自己的想法,提出自己的要求,只要你的意思表達清晰明確,PandasAI 通常都會給你相應的回答。例如:
sdf.chat(“請對數(shù)據(jù)繪制相關性矩陣圖,
并用 plt.rcParams[‘font.sans-serif’] = [‘SimHei’] ?來正常顯示中文標簽”)
運行結果如下:
總之,PandasAI 能夠從日常對話中,智能識別用戶的意圖,并生成相應的數(shù)據(jù)分析結果,幫助我們更加高效地處理和分析數(shù)據(jù)。
本文由人人都是產(chǎn)品經(jīng)理作者【林驥】,微信公眾號:【林驥】,原創(chuàng)/授權 發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉載。
題圖來自Unsplash,基于 CC0 協(xié)議。
- 目前還沒評論,等你發(fā)揮!