认识PandasAI:用AI为你的数据分析“超级充电”

认识PandasAI:用AI为你的数据分析“超级充电”

包括ChatGPT在内的大型语言模型的快速发展,不断展示了这项技术的非凡能力。我们每天都能看到对其的创新使用。在这篇文章中,我们将主要介绍PandasAI——一个会话库,让你的数据能“说话”。如果你想了解更多关于数据分析的相关内容,可以阅读以下这些文章:
高级SQL技巧与窍门:数据分析师必备!
Pandas的秘密:5个鲜为人知的功能,将彻底改变你的数据分析技能
如何从数据分析师过渡到数据科学家的角色?
什么是ChatGPT?作为一名数据分析师,你如何才能更好地利用它?

导论

编写计算机代码的领域发生了戏剧性的变化。程序员花费无数个小时在谷歌上搜索答案、筛选Stack Overflow 论坛条目的日子已经一去不复返了。我们现在已经进入了AI辅助编码的时代——这大大加快了开发进程。比如,有像GitHub Copilot这样的工具,只要你键入docstrings,它会给出非常好的代码建议;使用ChatGPT,你只需键入你想要做的事情,它就会产出代码。而且,现在的聊天功能还简化了故障排除过程,能够快速识别错误消息。

编程的未来将发生重大转变:用户将能够很快使用会话语言与计算机和数据进行交流,而不是掌握抽象的编程语言概念。目前库的进步表明,这种变化已经是大势所趋。例如,LangChain是一个非常受欢迎的实用程序库,是构建大型语言模型的工具,拥有Pandas DataFrame Agent。用户可以加载他们的Pandas DataFrame,提出问题,而Agent将引用相关代码并提供全方位响应。就算是对于那些不熟悉Pandas的人来说,它也可以是一个用于处理表格数据的Python库。请看以下示例:

from langchain.agents import create_pandas_dataframe_agent
from langchain.llms import OpenAI
import pandas as pd

df = pd.read_csv('titanic.csv')

agent = create_pandas_dataframe_agent(OpenAI(temperature=0), df, verbose=True)
agent.run("how many rows are there?")

将产出:

> Entering new AgentExecutor chain...
Thought: I need to count the number of rows
Action: python_repl_ast
Action Input: len(df)
Observation: 891
Thought: I now know the final answer
Final Answer: There are 891 rows in the dataframe.
> Finished chain.

(其构建软件包为yolopandas)

什么是PandasAI?

PandasAI是另一个旨在为Pandas DataFrames提供会话接口的软件包。短短几天内,它就累积了3.6万颗星星——考虑到最初的Pandas软件包有大约3.8万颗星星,这显然是一个历史性的成就。PandasAI的与众不同之处在于其具有pip安装的便利性,用户只需几行代码就能上手。请看以下关于我如何在我的conda环境中与Jupyter一起在M1 Mac上设置它的示例:

conda create --name pandasai python=3.10
conda activate pandasai
pip install pandasai
conda install jupyter

如果在启动Jupyter时出现了“500”错误,那很可能是因为这个。解决方案是修复依赖项:pip install–force-reinstall charset-normalizer = 3.1.0。

现在,让我们按照文档中的quickstart示例:

(我们使用了OpenAI API访问,但原则上,你也可以使用OpenAssistant)

import pandas as pd
from pandasai import PandasAI

# Sample DataFrame
df = pd.DataFrame({
    "country": ["United States", "United Kingdom", "France", "Germany", "Italy", "Spain", "Canada", "Australia", "Japan", "China"],
    "gdp": [19294482071552, 2891615567872, 2411255037952, 3435817336832, 1745433788416, 1181205135360, 1607402389504, 1490967855104, 4380756541440, 14631844184064],
    "happiness_index": [6.94, 7.16, 6.66, 7.07, 6.38, 6.4, 7.23, 7.22, 5.87, 5.12]
})

# Instantiate a LLM
from pandasai.llm.openai import OpenAI
llm = OpenAI(api_token="YOUR_OPENAI_API_KEY")

pandas_ai = PandasAI(llm)
pandas_ai.run(df, prompt='Which are the 5 happiest countries?')

你瞧,结果就这么出来了:

“数据显示,最幸福的5个国家是加拿大、澳大利亚、英国、德国和美国。”

如果我们改写提示:

Which are the countries with the largest gdp?

结果是这样的:

“GDP最高的国家是美国、中国、日本、德国和英国。美国的GDP最高,其次是中国和日本。这些国家经济强盛,对全球市场贡献巨大。

甚至还有一个更“冗长”的解释。Quickstart还显示,你可以绘图,并再次使用修改过的提示:

Plot the histogram of countries showing for each the gdp, using different shades of blue for each bar

效果真好。现在,我假设它知道pandas的功能,把难度提高一个档次:

Make a scatterplot with gdp vs happines for each country. Add horizontal and vertical lines for the average happines and gdp.

请注意,我故意写了happines——一个错别字,在数据框架中,列的名称是happiness _ index。尽管如此,它依然能运行得“完美无瑕”:

请注意,PandasAI会根据提示更改数据框架,例如,如果你的提示是add a column with gdp divided by happines,那它会照做。然而,对于上面的groupby示例,它却没有继续。

它确确实实有着限制。我们可以这样改变提示:

Plot the histogram of countries showing for each the gdp. Make countries in Europe red and the rest blue.

也就是说,其将需要来自外部的额外信息。对我来说,这可能会导致FileNotFoundError,也凸显了其局限性。

此外,当远离示例数据集时,一切就更糟了。示例数据集采用长格式,即每行一个数据点。当使用宽格式(每行中有多个数据点)进行测试时,它是不起作用的。实际上,你可能需要事先执行一些格式化操作,以确保你的数据结构正确,并保证其与PandasAI软件包兼容。

PandasAI与Streamlit完美交融

如果你有兴趣在不深入编程的情况下试用PandasAI,我已经创建了一个简单方便的Streamlit应用程序,可以与软件包连接。你可以在GitHub上找到源代码,同时在线版本随时可用,其托管在Streamlit Share上。不过,你需要输入OpenAI-API-key。试一试吧,通过对话界面,体验与Pandas DataFrames的无缝交互。

结语

PandasAI体现了大型语言模型与既定工作流程的无缝集成,以及数据分析的持续转型。如果你是一名精通使用库的数据分析师,同时你的主要职责是根据用户的要求生成绘图,那么这个过程很有可能被高效地自动化。AI和对话界面的进步正在彻底改变我们与数据交互的方式,其能简化任务,并使数据分析比以往任何时候都更容易获得。

显然,重点将从如何实施某种分析转移到要做什么的分析上。使用自然语言的挑战之一是其可能产生歧义。例如,我们观察到“幸福”一词增加了“幸福指数”的使用——但这总是正确的假设吗?可以想象,数据分析师这个职位代表的不再只是指导大型语言模型绘制内容。相反,他们可能会更依赖于高级提示或“超级提示”,即首先请求最合适的指标来对特定主题做出决策,然后要求AI生成相应的视觉效果。这一转变将为数据分析提供一种更全面、更细致的方法——利用AI的力量做出更明智的决策。

感谢阅读!你还可以订阅我们的YouTube频道,观看大量大数据行业相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/

原文作者:Maximilian Strauss
翻译作者:高佑兮
美工编辑:过儿
校对审稿:Chuang
原文链接:https://betterprogramming.pub/meet-pandasai-supercharge-your-data-analysis-with-ai-b1935ba5a57e