怎么用 PandasAI 进行对话式数据分析?
本文主要介绍了如何利用PandasAI这个工具进行对话式的数据分析,包括安装、引入SmartDataFrame、生成和分析数据以及绘制图表等步骤,并提醒读者注意大模型生成的结果需要进一步验证。
PandasAI 是一个能让数据分析变得更加有趣的库,它充分利用了 Pandas 的强大功能,并结合大型语言模型的优势,使得用户能够以日常对话的方式进行数据分析。例如,你问 PandasAI:
累计购买次数最多的客户是谁?
PandasAI 会直接告诉你答案,而不你用去写很多代码,也不用做一些繁琐的操作。
那么,具体应该怎么用 PandasAI 进行对话式的数据分析呢?
首先,你需要安装 PandasAI,如果你还没有安装的话,可以在数据分析环境的 Jupyter Notebook 中运行以下命令:
!pip install pandasai
其次,用以下代码,引入智能数据框 SmartDataframe:
from pandasai import SmartDataframe
接下来,为了方便演示 PandasAI 的功能,我们模拟生成一些数据:
import numpy as np
import pandas as pd
from faker import Faker
# 创建数据生成器
fake = Faker(‘zh_CN’)
# 设置随机种子以确保可重复的结果
np.random.seed(0)
fake.random.seed(0)
# 生成数据集
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)],
‘累计购买次数’: np.random.randint(1, 20, size=100),
‘累计购买金额’: np.random.normal(loc=1000, scale=500, size=100)
}
# 累计购买金额与累计购买次数的合理比例
data[“累计购买金额”] = [round(times * np.random.uniform(500, 800), 2) for times in data[“累计购买次数”]]
# 创建 DataFrame
df = pd.DataFrame(data)
你可以把数据替换为自己的数据,比如从 Excel 文件或数据库中读取数据。
然后,你可以开始调用大模型来分析数据。PandasAI 默认使用的大语言模型是 BambooLLM,你可以在 https://pandabi.ai 上用邮箱进行注册,免费获取你的 API 密钥,并复制到下面的代码中。
import os
os.environ[‘PANDASAI_API_KEY’] = “把你的 API 密钥复制到这里”
sdf = SmartDataframe(df)
现在,你就可以用自然语言与 PandasAI 进行对话式的数据分析,例如:
你还可以用下面的命令,把 PandasAI 最近执行的代码显示出来,确认它不是胡说八道,而是经过严格的数学计算。
print(sdf.last_code_generated)
需要注意的是:大模型生成的分析结果,虽然可以提供有价值的参考,但并非 100% 准确可靠。在实际应用中,我们需要加强验证,并对最终的结果负责。
你还可以让 PandasAI 帮你绘制图表,例如:sdf.chat(“请用直方图展示客户年龄分布”)因为中文字体的原因,此时系统可能会报错。你可以把系统报错的信息发给 AI,例如:
参考 AI 提供的方法,稍微修改一下提示词:
sdf.chat(“请用直方图展示客户年龄分布,
并用 plt.rcParams[‘font.sans-serif’] = [‘SimHei’] 来正常显示中文标签”)
重新运行之后,正常情况下就能得到一张图表如下:
你甚至可以提出一些额外的要求,例如:
sdf.chat(“请用直方图展示客户年龄分布,
并用 plt.rcParams[‘font.sans-serif’] = [‘SimHei’] 来正常显示中文标签,
上面的标题用 16 号字体。”)
运行结果如下:
最后,你还可以按照自己的想法,提出自己的要求,只要你的意思表达清晰明确,PandasAI 通常都会给你相应的回答。例如:
sdf.chat(“请对数据绘制相关性矩阵图,
并用 plt.rcParams[‘font.sans-serif’] = [‘SimHei’] 来正常显示中文标签”)
运行结果如下:
总之,PandasAI 能够从日常对话中,智能识别用户的意图,并生成相应的数据分析结果,帮助我们更加高效地处理和分析数据。
本文由人人都是产品经理作者【林骥】,微信公众号:【林骥】,原创/授权 发布于人人都是产品经理,未经许可,禁止转载。
题图来自Unsplash,基于 CC0 协议。
- 目前还没评论,等你发挥!