用pandasai轻松上手Python数据分析

news2024/11/15 23:01:26

一、引言

最近,一位名叫Gabriele Venturi的软件工程师在github上建立了pandasai的项目。据官方介绍,pandasai是一个 Python 第三方库,将人工智能的生成能力集成到pandas包中,使数据分析具有对话性。实际上,该第三方包通过调用openai的API,并根据交互指令来对数据框中的数据进行统计分析,可以筛选、计算、分析出用户想要的数据,甚至还可以绘制图表,功能可谓十分强大。目前,在github上有68000颗星,447个fork,已经更新了18个版本。

项目在github上的地址:

https://github.com/gventuri/pandas-ai​github.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? '))

三、学后反思

  1. pandasai整合了pandas和chatgpt的功能,降低了数据分析的学习成本,可以作为数据分析流中重要的一环。
  2. pandasai分析结果较为准确,由于api的访问速度较慢,整体上看程序代码虽然不多,运行起来速度较慢。
  3. 由于openai公司已经取消了免费api的额度,所以如果要使用api就要设置付费账户,这无疑为普通用户的使用设置了障碍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/605521.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue表格Table精美模板分享

文章目录 🐒个人主页🏅Vue项目常用组件模板仓库📖前言:🎀源码如下: 🐒个人主页 🏅Vue项目常用组件模板仓库 📖前言: 本篇博客主要提供vue组件之表格组件模板…

16、MongonDB数据库的基本使用

1、MongonDB简介 问答什么是MongoDB一个以JSON为数据模型的文档非关系型数据库什么是非关系型数据库NoSQL,—种区分关系型数据库的数据存储方案,具有易扩展,大数据量,高性能,灵活数据模型,高可用等特点为什…

Vue面试题合集(原理深入,持续更新)

2023Vue面试题剖析原理 18.生命周期有哪些19.Vue中的diff算法原理diff概念diff比较流程 20.Vue中key的作用和原理key的概念key的作用 21.Vue.use作用和原理use概念插件的功能实现原理 22.Vue.extend方法的作用Vue.extend概念原理分析 23.Vue组件中data为什么必须是函数24.函数式…

SqlServer的基本使用

本文章主要是交给大家SqlServer的基本用法,因为SqlServer本身的运行机制问题,会让很多人觉得sql语句是不是写错了?这个代码有问题? 文章目录 选中数据库语法报错?执行部分代码存储过程、触发器只能创建一次sql书写建议…

如何在Linux c/c++ 进行多播(组播)编程

第一章: 前言 多播技术,也被称为“组播”,是一种网络通信机制,它允许一个节点(发送者)向一组特定的节点(接收者)发送信息。这种方式在网络编程中非常有用,因为它可以大大提高效率和…

Git、GitFlow协作 、Git commit规范、语义化版本

目录 一、概述 二、Git 2.1 安装与配置 2.2 基本指令操作 2.3 创建一个新的存储库 2.4 推送一个已有的文件夹 2.5 忽略临时文件 2.6 添加commit模板 2.7 冲突解决 二、GitFlow协作 三、Git Commit规范 四、语义化版本 为什么需要语义化版本号? 什么是…

线段树为什么可以开三倍空间

参考链接 四倍空间的原因如上图所示,但是实际操作时,我们可以直接开三倍空间也是可以的。 原因分析: 由于在分割区间时,我们计算mid使用下取整,所以左边区间大小大于等于右边区间大小,如果要实现上图中的树…

智能路由器开发之创建一个procd init脚本示例

智能路由器开发之创建一个procd init脚本示例 Procd init脚本默认提供了许多好用的功能,例如重启策略和能够从UCI系统中存储和读取配置。 设置 举个例子,假设我们想创建一个作为服务的Shell脚本,并且这个服务可以通过消息和超时时间进行配…

C语言---初识指针

1、指针是什么 指针是什么? 指针理解的2个要点: ​ 1、指针是内存中一个最小单元的编号,也就是地址。 ​ 2、平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量 总结:指针就是地址&#xff…

Docker+Jenkins+Gitee自动化部署maven项目,加入Nexus镜像仓库(补充篇)

1.前言 Hello,各位小伙伴,大家好!!! 在【DockerJenkinsGitee自动化部署maven项目】一文中,我们介绍了如何使用Jenkins来实现自动化部署maven项目,没读过的小伙伴可以去回顾一下,这…

【求 一个人去给多个人拜年 的最短路径】【枚举所有 拜访顺序】新年好

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

ChatGPT 70个插件小测全纪录

以下插件排序按照 ChatGPT all plugins 列表,评分基于国人使用场景。 1)Polarr:用于处理和编辑图片的工具 Polarr插件可以帮助用户进行各种图片编辑任务,包括调整亮度、对比度、饱和度,应用滤镜,裁剪图片,以及其他一些高级的图片处理功能。这个插件可以让ChatGPT更好地…

章节1:XXE漏洞-上

章节1:XXE漏洞-上 01 XML基础知识 XML eXtensible Markup Language 可扩展标记语言 XML用途 配置文件 交换数据 XML内容 XML格式要求 XML文档必须有根元素XML文档必须有关闭标签XML标签对大小写敏感XML元素必须被正确的嵌套XML属性必须加引号 XML格式校验 …

耗时 48小时整理了网络安全学习路线,非常详细!

前言 上次发的文章【都2023年了,还在问网络安全怎么入门】很多小伙伴在评论区回复不知道怎么学习,我也反思了一下,确实没写到学习方法和路线,所以这一期就出一一个怎么学习网络安全的学习路线和方法,觉得有用的话三连…

mvn 打包jar包。 Docker 部署 jar 包程序

默认你已经安装了jdk和maven 并且配置了环境变量. 这里贴出自己的环境配置(mac) # Maven3.6.3 export M2_HOME/Users/cc/maven3.6.3/apache-maven-3.6.3 export M2$M2_HOME/bin export PATH$M2:$PATH# java8 export JAVA_HOME/Library/Java/JavaVirtualMachines/jdk1.8.0_36…

表白墙的实现【前后端交互】

目录 一、Servlet API 详解 1. HttpServletRequest 1.1 HttpServletRequest 方法 1.2 getParameter 2.HttpServletResponse 2.1 HttpServletResponse 方法 2.2 代码示例: 设置状态码 2.3 代码示例: 重定向 二、表白墙 1.准备工作 2.约定前后端交互接口 2.1 接口一…

项目引入Spring Security的参考步骤token

后端&#xff1a; 1、在数据库中创建t_user用户表&#xff0c;参照建表SQL。 2、pom文件中引入Spring Security依赖、JWT依赖&#xff08;复制粘贴即可&#xff09; <!--security--> <dependency> <groupId>org.springfr…

全志V3S嵌入式驱动开发(pwm驱动)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 pwm驱动也是常见的一种驱动方式。常见的pwm&#xff0c;其实就是一组方波&#xff0c;方波中的高低电平之比称之为空占比。通过调节这个空占比&…

前端学习--ES6模块化与异步编程高级用法

一、ES6模块化 1.1 概念与规则 ES6 模块化规范是浏览器端与服务器端通用的模块化开发规范 ES6 模块化规范中定义&#xff1a; 每个 js 文件都是一个独立的模块导入其它模块成员使用 import 关键字向外共享模块成员使用 export 关键字 1.2 在node.js体验es6模块化 配置如下&…

【问题】常见问题解决方法

记录在项目运行中遇到的问题&#xff0c;和常用的软件安装包 文章目录 安装包下载第一章&#xff1a;运行C/C小白运行须知1.DevC运行&#xff08;最简单&#xff0c;推荐&#xff09;2.Visual Studio 运行3.VC运行 第二章&#xff1a;运行C#项目1.VS环境2.打开C#项目启动失败&a…