怎么用 PandasAI 进行对话式数据分析?

0 评论 2093 浏览 9 收藏 7 分钟

本文主要介绍了如何利用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 协议。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!