pandas-gpt: 用AI数据框查询升级你的数据科学工作流程
近来大型语言模型的流行,如ChatGPT、必应聊天和Character.ai,几乎每天都会听到这些非常卓越的人工智能聊天机器人的新奇用例。保持HTML结构。
几周前,我正在撰写一份Python笔记本来分析我们在DFINITY最近推出的产品的参与度和增长。当我第一百次输入df.plot()时,我不禁想知道是否有一种使用AI加快工作流程的方法。
如果你尝试使用ChatGPT进行数据分析,你会发现很难生成正确的涉及pandas数据帧的Python源代码。由于数据集的内容仅在运行时可用,LLM经常会出现列名幻觉,并对数据的结构进行各种假设。这里有一个快速的例子:
这是一个令人印象深刻的解决方案,但它并不完全适用于我们的数据集。虽然ChatGPT几乎猜对了列的正确名称,“Order Date”应该在单词之间包含一个空格,并且值使用本地化的月/日/年格式。让我们让ChatGPT解决这些问题:
像魔法一样好用!如果能够将这个过程作为Python库自动化,你就可以直接在笔记本里输入它了。
df.ask('which day of the week had the most orders')
好消息是这个图书馆现在存在了!
pandas-gpt是一款新的Python包,它使使用自然语言查询可以(几乎)对pandas DataFrame进行任何操作成为可能。
这是通过使用提示工程来根据数据集的列信息在运行时从输入查询生成函数的方式来实现的。
您可以通过运行以下命令来安装软件包:
pip install pandas-gpt
以下是这个库所能实现的一些例子,您可以在这个Google Colab笔记本中在线尝试。
我们首先需要导入pandas_gpt并加载数据集:
import pandas as pd
import pandas_gpt
df = pd.DataFrame('https://gist.githubusercontent.com/bluecoconut/9ce2135aafb5c6ab2dc1d60ac595646e/raw/c93c3500a1f7fae469cba716f09358cfddea6343/sales_demo_with_pii_and_all_states.csv')
接下来,配置您的OpenAI API密钥。我通常在笔记本环境(如Jupyter和Google Colab)中使用以下代码片段:
import openai
openai.api_key = input('Enter API key from (https://platform.openai.com/account/api-keys): ')
# Clear the API key from the notebook's output panel
from IPython.display import clear_output
clear_output()
从这里开始,唯一的限制是你的想象力!
# Data transformation
df = df.ask('drop purchases from Laurenchester, NY')
df = df.ask('drop purchases from Laurenchester, NY')
df = df.ask('add a new Category column with values "cheap", "regular", or "expensive"')
# Queries
weekday = df.ask('which day of the week had the largest number of orders?')
top_10 = df.ask('what are the top 10 most popular products, as a table')
# Plotting
df.ask('plot monthly and hourly sales')
top_10.ask('horizontal bar plot with pastel colors')
# Allow changes to original dataset
df.ask('do something interesting', mutable=True)
# Show source code before running
df.ask('convert prices from USD to GBP', verbose=True)
那最后一个例子的结果让我感到震惊:
如您所见,pandas-gpt 能够向 API 发送请求,并导入最适合任务的 Python 包。
顺便提一句,如果你只想查看生成的源代码而不运行它,只需将df.ask()替换为df.ask.code()。同样,你可以使用df.ask.prompt()查看原始的GPT提示。
您还可以配置ask()函数的默认设置:
import pandas_gpt
pandas_gpt.verbose = True # Always display code before running
pandas_gpt.mutable = True # Enable modifying the original DataFrame
由于 ChatGPT 有时会产生令人惊讶或不正确的结果,我建议在沙盒环境中使用此库,而不是在您的本地计算机上使用。Google Colab 是一个很好的地方,可以尝试推动 pandas-gpt 的能力。我还发现这个库对于探索性数据分析和在 Kaggle 笔记本中设置自动机器学习流水线非常有用。
以下是几个能够获得 pandas-gpt 最佳结果的提示:
- 如果您的数据集具有大量列,请尝试在数据子集上运行提示,例如df[['时间','价格']].ask('xkcd线图')。
- 双重检查您的提示是否明确无误。通常可以通过略微调整您的请求措辞来修正错误的结果。
- 作为一个经验法则,Pandas-gpt 最擅长使用最受欢迎的 Python 库。以下是基于总下载量的排名,如果你希望利用这一点,请参考。
如果您发现任何有趣、意外或幽默的用例,一定要让我知道。欢迎在pandas-gpt GitHub存储库中报告错误或为其提供特性贡献。
感谢阅读,请安全地进入这些未知的水域。
保持HTML结构,将以下英文文本翻译为简体中文: ~ Ryan