查看原文
其他

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

数据应用学院 大数据应用 2023-08-17

今日份知识你摄入了么?

照片来自Unsplash,作者Luke Chesser


包括ChatGPT在内的大型语言模型的快速发展,不断展示了这项技术的非凡能力。我们每天都能看到对其的创新使用。在这篇文章中,我们将主要介绍PandasAI——一个会话库,让你的数据能“说话”。

导论

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


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


from langchain.agents import create_pandas_dataframe_agentfrom langchain.llms import OpenAIimport 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 rowsAction: python_repl_astAction Input: len(df)Observation: 891Thought: I now know the final answerFinal 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.10conda activate pandasaipip install pandasaiconda install jupyter


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


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


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


import pandas as pdfrom pandasai import PandasAI
# Sample DataFramedf = 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 LLMfrom pandasai.llm.openai import OpenAIllm = 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的力量做出更明智的决策。

原文作者:Maximilian Strauss

翻译作者:高佑兮

美工编辑:过儿

校对审稿:Chuang

原文链接:https://betterprogramming.pub/meet-pandasai-supercharge-your-data-analysis-with-ai-b1935ba5a57e

本周公开课预告


往期精彩回顾


Binance宣布退出加拿大市场
如何轻松安装Auto-GPT?
“AI教父”离开谷歌:谈科技的潜在危险
Adobe与谷歌合作,激励数百万人进行创作!
数据科学家的ChatGPT指南:40个最重要的提示语!




点「在看」的人都变好看了哦

点击“阅读原文”查看数据应用学院核心课程

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存