IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

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

    林骥发表于 2024-06-17 13:10:54
    love 0

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



沪ICP备19023445号-2号
友情链接