一、引言
最近,一位名叫Gabriele Venturi的软件工程师在github上建立了pandasai的项目。据官方介绍,pandasai是一个 Python 第三方库,将人工智能的生成能力集成到pandas包中,使数据分析具有对话性。实际上,该第三方包通过调用openai的API,并根据交互指令来对数据框中的数据进行统计分析,可以筛选、计算、分析出用户想要的数据,甚至还可以绘制图表,功能可谓十分强大。目前,在github上有68000颗星,447个fork,已经更新了18个版本。
项目在github上的地址:
https://github.com/gventuri/pandas-aigithub.com/gventuri/pandas-ai
有了这个工具,在不熟悉Python命令的情况下,也通过发送详细的数据分析需求,借助pandasai和openai的API生成所需要的数据或者图表,减化了数据分析的流程,降低了利用Python进行计算、制图的门槛。
二、pandasai的初步使用
1. pandasai的安装
安装完Python3.8以上版本后,采用pip命令安装:
pip install pandasai
2.官方代码样例
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_API_TOKEN")
pandas_ai = PandasAI(llm, conversational=False)
pandas_ai(df, prompt='Which are the 5 happiest countries?')
3. 样例代码修改
在调试此样例过程中,一方面要获得openai的API(貌似免费的额度已经没有),如果想申请可以看这个:
另一方面就是要能够访问这个api。如果想顺利访问api,需要用到以下文章中第四种方法:
修改后的样例代码如下:
import pandas as pd
from pandasai import PandasAI
from pandasai.llm.openai import OpenAI
import openai
openai.api_base = "https://XXX.com/v1" #这里设置自己的网址
# 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,5.87,5.87,5.12]
})
# Instantiate a LLM 生成LLM实例
llm = OpenAI(api_token="Your Own Open_API_Key") # 这里放置自己的api
pandas_ai = PandasAI(llm, conversational=False)
print(pandas_ai.run(df, prompt='Which are the 5 happiest countries? '))
与官方的代码样例相比,我们增加了导入openai,同时也把我设置的base_url指定,最后需要通过print()把生成的结果打印出来,测试时发现也可以用中文提问。生成的结果展示
3. 可视化制图
如果相生成图表,可以在prompt中指定,例如把上面修改的样例代码最后一行改为:
print(pandas_ai(df,"Plot the histogram of countries showing for each the gdp, using different colors for each bar"))
意思就是生成每一个国家GDP的直方图。得到的结果如下图:
pandasai生成图表
4. 分析本地图表
把现有的DateFrame修改为读取本地的Excel表,可以用pd.read_excel("data.xlsx")命令,读取完直接赋值给变量df,注意如果数据量大的话,读取的速度可能会慢一点。
import pandas as pd
from pandasai import PandasAI
from pandasai.llm.openai import OpenAI
import openai
openai.api_base = "https://XXX.com/v1"
#Sample DataFrame
df = pd.read_excel("data.xlsx")
# Instantiate a LLM
llm = OpenAI(api_token="Your Own Open_API_Key")
pandas_ai = PandasAI(llm, conversational=False)
print(pandas_ai(df, prompt='Which are the 5 happiest countries? '))
三、学后反思
- pandasai整合了pandas和chatgpt的功能,降低了数据分析的学习成本,可以作为数据分析流中重要的一环。
- pandasai分析结果较为准确,由于api的访问速度较慢,整体上看程序代码虽然不多,运行起来速度较慢。
- 由于openai公司已经取消了免费api的额度,所以如果要使用api就要设置付费账户,这无疑为普通用户的使用设置了障碍。