關(guān)于基于人工智能做數(shù)據(jù)分析的兩種方式——SQL和Pandas的區(qū)別
“ 人工智能做數(shù)據(jù)分析的原理是生成相對(duì)應(yīng)的分析語(yǔ)句或代碼,而不是直接讓大模型對(duì)數(shù)據(jù)進(jìn)行處理。”
最近在研究基于人工智能進(jìn)行數(shù)據(jù)分析,主要研究了基于langchain集成Pandas的數(shù)據(jù)分析智能體;以及數(shù)據(jù)分析開源項(xiàng)目Vanna,一個(gè)基于大模型做數(shù)據(jù)分析的框架。
而在對(duì)比兩者實(shí)現(xiàn)原理的過(guò)程中就發(fā)現(xiàn)了一個(gè)問(wèn)題,基于SQL做數(shù)據(jù)分析和基于Pandas做數(shù)據(jù)分析的區(qū)別以及優(yōu)劣勢(shì)是什么。
基于人工智能的數(shù)據(jù)分析
在傳統(tǒng)的數(shù)據(jù)分析過(guò)程中主要采用的也是SQL和Pandas兩種方式進(jìn)行數(shù)據(jù)處理;記憶SQL的優(yōu)點(diǎn)是結(jié)構(gòu)化處理功能強(qiáng)大,借助于SQL引擎能夠處理大批量數(shù)據(jù);而Pandas則主要基于內(nèi)存進(jìn)行處理,雖然可以進(jìn)行分批加載,但在某些場(chǎng)景下會(huì)存在一些問(wèn)題。
而現(xiàn)在基于大模型做數(shù)據(jù)分析,其本質(zhì)上還是利用SQL和Pandas的處理能力,并不是讓大模型直接對(duì)數(shù)據(jù)進(jìn)行分析;不管是Langchain的Pandas數(shù)據(jù)處理還是Vanna的數(shù)據(jù)分析,都是讓大模型理解人類的自然語(yǔ)言,然后生成相應(yīng)的SQL語(yǔ)句或Pandas代碼,然后調(diào)用執(zhí)行引擎獲取結(jié)果。
只不過(guò)在這里大模型取代了人類的工作,在之前進(jìn)行數(shù)據(jù)分析時(shí),DBA工程師需要根據(jù)需求編寫SQL或其它代碼,然后獲得結(jié)果;而有了大模型之后,就可以讓大模型自己理解需求,然后生成相對(duì)應(yīng)的代碼,這樣就大大提升了數(shù)據(jù)分析的效率。
所以大模型做數(shù)據(jù)分析的本質(zhì),其實(shí)是代碼生成;其核心是基于自然語(yǔ)言理解和代碼生成的結(jié)合。
那么使用SQL和Pandas各有什么優(yōu)劣勢(shì)呢?
Pandas由于是依靠?jī)?nèi)存進(jìn)行處理,因此Pandas在處理大批量數(shù)據(jù)有天生的缺陷;而SQL依靠SQL引擎,在處理大批量數(shù)據(jù)時(shí)有一定的優(yōu)勢(shì);但如果是基于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù),當(dāng)數(shù)據(jù)量達(dá)到一定程度時(shí),SQL依然會(huì)存在各種各樣的問(wèn)題。
因此,如果數(shù)據(jù)量非常大的情況下,需要使用一些數(shù)倉(cāng)中間件,比如說(shuō)flink,hive等。
但SQL相對(duì)于Pandas還有一個(gè)優(yōu)點(diǎn)就是,SQL是完全結(jié)構(gòu)化的數(shù)據(jù),沒(méi)有那么多亂七八糟的格式;而Pandas雖然也擅長(zhǎng)處理格式化數(shù)據(jù),但有些數(shù)據(jù)并不是完全格式化的,或者說(shuō)是完全標(biāo)準(zhǔn)的二維表關(guān)系。
比如說(shuō),在csv和excel表中,雖然也是格式化的數(shù)據(jù);但可以對(duì)其單元格進(jìn)行合并,特別是excel表,雖然看起來(lái)數(shù)據(jù)格式很簡(jiǎn)單,但實(shí)際場(chǎng)景中其數(shù)據(jù)結(jié)構(gòu)非常復(fù)雜;有合并行,也有合并列,而且可以在不同的地方進(jìn)行合并,這就對(duì)Pandas的數(shù)據(jù)處理產(chǎn)生很大的影響。
所以,在借助大模型做數(shù)據(jù)分析時(shí),我們需要根據(jù)自己的需求以及數(shù)據(jù)格式和數(shù)據(jù)量,選擇適合自己的處理方式;而且有些時(shí)候可以把兩種方式結(jié)合起來(lái)。
畢竟,在不同的數(shù)據(jù)庫(kù)引擎中,其SQL也有一定的差別;而Pandas卻可以統(tǒng)一成固定的df對(duì)象進(jìn)行處理,這一點(diǎn)屏蔽了不同數(shù)據(jù)源之間的區(qū)別,對(duì)后續(xù)處理來(lái)說(shuō)更加的方便。
本文轉(zhuǎn)載自???AI探索時(shí)代??? 作者:DFires
