“ 人工智能做数据分析的原理是生成相对应的分析语句或代码,而不是直接让大模型对数据进行处理。”
最近在研究基于人工智能进行数据分析,主要研究了基于langchain集成Pandas的数据分析智能体;以及数据分析开源项目Vanna,一个基于大模型做数据分析的框架。
而在对比两者实现原理的过程中就发现了一个问题,基于SQL做数据分析和基于Pandas做数据分析的区别以及优劣势是什么。
基于人工智能的数据分析
在传统的数据分析过程中主要采用的也是SQL和Pandas两种方式进行数据处理;记忆SQL的优点是结构化处理功能强大,借助于SQL引擎能够处理大批量数据;而Pandas则主要基于内存进行处理,虽然可以进行分批加载,但在某些场景下会存在一些问题。

而现在基于大模型做数据分析,其本质上还是利用SQL和Pandas的处理能力,并不是让大模型直接对数据进行分析;不管是Langchain的Pandas数据处理还是Vanna的数据分析,都是让大模型理解人类的自然语言,然后生成相应的SQL语句或Pandas代码,然后调用执行引擎获取结果。
只不过在这里大模型取代了人类的工作,在之前进行数据分析时,DBA工程师需要根据需求编写SQL或其它代码,然后获得结果;而有了大模型之后,就可以让大模型自己理解需求,然后生成相对应的代码,这样就大大提升了数据分析的效率。
所以大模型做数据分析的本质,其实是代码生成;其核心是基于自然语言理解和代码生成的结合。

那么使用SQL和Pandas各有什么优劣势呢?
Pandas由于是依靠内存进行处理,因此Pandas在处理大批量数据有天生的缺陷;而SQL依靠SQL引擎,在处理大批量数据时有一定的优势;但如果是基于传统的关系型数据库,当数据量达到一定程度时,SQL依然会存在各种各样的问题。
因此,如果数据量非常大的情况下,需要使用一些数仓中间件,比如说flink,hive等。
但SQL相对于Pandas还有一个优点就是,SQL是完全结构化的数据,没有那么多乱七八糟的格式;而Pandas虽然也擅长处理格式化数据,但有些数据并不是完全格式化的,或者说是完全标准的二维表关系。

比如说,在csv和excel表中,虽然也是格式化的数据;但可以对其单元格进行合并,特别是excel表,虽然看起来数据格式很简单,但实际场景中其数据结构非常复杂;有合并行,也有合并列,而且可以在不同的地方进行合并,这就对Pandas的数据处理产生很大的影响。
所以,在借助大模型做数据分析时,我们需要根据自己的需求以及数据格式和数据量,选择适合自己的处理方式;而且有些时候可以把两种方式结合起来。
毕竟,在不同的数据库引擎中,其SQL也有一定的差别;而Pandas却可以统一成固定的df对象进行处理,这一点屏蔽了不同数据源之间的区别,对后续处理来说更加的方便。
(文:AI探索时代)