關于基于人工智能做數據分析的兩種方式——SQL和Pandas的區別
“ 人工智能做數據分析的原理是生成相對應的分析語句或代碼,而不是直接讓大模型對數據進行處理。”
最近在研究基于人工智能進行數據分析,主要研究了基于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探索時代??? 作者:DFires
