30  AI 데이터 분석

30.1 RTutor

남 다코다 대학 스티븐 지(Steven Ge) 교수가 개인 프로젝트로 개발한 RTutor는 CSV와 같은 정형 데이터셋을 전달하고 자연어로 데이터 과학 작업을 수행할 수 있도록 개발된 Shiny와 OpenAI API가 결합된 웹 응용 프로그램이다. 데이터셋을 업로드하고 영어나 한국어로 질문하거나 분석 요청을 하면 RTutor가 R 코드를 생성하여 실행한다. R 프로그래밍 언어에 대한 기본기가 없어도 자연어로 데이터 과학 업무를 수행할 수 있다.

RTutor는 CSV, 엑셀과 같은 형식의 데이터셋을 전달받아 df 데이터프레임으로 자동 변환한다. 사용자가 자연스러운 언어로 분석 요청을 하면, OpenAI gpt-3.5-turbo, gpt-4-turbo를 통해 자연어를 R 코드로 변환시키고 이를 실행한다. 사용자는 통계량, 그래프, 표 등의 결과를 받게 되며 나중에 모아서 R 마크다운 파일로 다운로드할 수 있다.

RTutor는 처음 R 언어에 초점을 두고 개발되었으나 현재는 파이썬도 지원하며 초기 비용 문제로 GPT-3.5-turbo에서 gpt-4-turbo로 업그레이드하여 코드 품질이 높아졌다. 소스 코드는 GitHub에서 개발자들이 사용자 지정 통합 및 솔루션을 구축할 수 있도록 공개되어 있다.

그림 30.1: RTutor 실행화면

30.2 판다스AI

PandasAI는 자연어를 사용하여 다양한 데이터(CSV, XLSX, PostgreSQL, MySQL, BigQuery, Databrick, Snowflake 등)를 분석하는 파이썬 라이브러리다. 백엔드에 생성형 AI를 활용하여 데이터 탐색, 정제, 분석을 지원한다.

PandasAI는 데이터 질의 기능 외에도 그래프를 통한 데이터 시각화, 결측값 처리를 통한 데이터셋 정제, 특성 생성을 통한 데이터 품질 향상 기능을 제공하여 데이터 과학자와 분석가를 위한 만능 도구로 자리매김하고자 한다.

PandasAI는 자연어 질의를 이해하고 해석하여 파이썬 코드와 SQL 쿼리로 변환하는 생성형 AI 모델을 사용한다. 그런 다음 코드를 사용하여 데이터와 상호 작용하고 결과를 사용자에게 반환한다.

graph LR
   classDef default fill:#fff, stroke:#333, stroke-width:1px;

   subgraph SmartDataframe
       A["판다스<br>데이터프레임"] --> C["SmartDataframe<br>객체"]
       B["OpenAI LLM (gpt-4)"] --> C
   end

   subgraph prompt["프롬프트 입력"]
       D[자연어 질의] --> E[프롬프트]
   end

   subgraph exec[코드 생성 및 실행]
       direction LR
       E --> F["파이썬 <br>코드 생성"]
       F --> G[코드 실행]
       G --> 결과
   end

   C --> E
그림 30.2: PandasAI 작업흐름도

PandasAI 예제 코드에 들어 있는 판다스 데이터프레임을 생성하고, OpenAI를 통해 자연어 질의를 수행하는 예제를 살펴보자.

pandaspandasai를 사용해 데이터를 처리하고 OpenAI gpt-4 LLM으로 자연어를 파이썬 코드로 변경한 후 파이썬 코드를 실행하여 자연어 질의에 응답하는 방식으로 작성되었다. 먼저 필요한 라이브러리를 가져오고 .env 파일에서 OpenAI API 키를 로드한다. 이후 국가별 매출 데이터를 담은 데이터프레임을 만들고, OpenAI gpt-4 모델을 활용해 SmartDataframe 객체로 변환한다. 객체 chat 메서드를 사용해 “가장 매출이 많은 나라는? 한글로 번역해줘.”라는 질문에 대한 답변을 얻는다.

import pandas as pd
from pandasai import SmartDataframe
from pandasai.llm.openai import OpenAI

from dotenv import load_dotenv, find_dotenv
import os

load_dotenv()

OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')

sales_by_country = pd.DataFrame({
    "country": ["United States", "United Kingdom", "France", "Germany", "Italy", "Spain", "Canada", "Australia", "Japan", "China"],
    "sales": [5000, 3200, 2900, 4100, 2300, 2100, 2500, 2600, 4500, 7000]
})

llm = OpenAI(api_token=OPENAI_API_KEY, model="gpt-4")

sdf = SmartDataframe(sales_by_country, config={"llm": llm, "verbose": False})

sdf.chat('가장 매출이 많은 나라는? 한글로 번역해줘.')
#> '가장 매출이 많은 나라는 China입니다.'

“x축 국가로 두고 매출 막대형 차트 그리기”라는 자연어 질의를 이해하고 matplotlib 라이브러리를 사용해 막대형 차트를 생성하고 결과를 이미지 파일로 저장한다.

sdf.chat('x 축 국가로 두고 매출 막대형 차트 그리기')
#> 'D:/tcs/gpt-ds/exports/charts/temp_chart.png'

PandasAI 막대그래프 실행결과

PandasAI 막대그래프 실행결과

30.3 요약

AI 기술의 발전으로 인해 데이터 분석 분야에서도 자연어를 통한 분석이 가능해졌다. RTutorPandasAI는 이러한 트렌드를 반영한 도구로, 사용자가 자연어로 분석 요청을 하면 AI가 이를 이해하고 해석하여 코드를 생성하고 실행까지하고 결과도 해석한다.

RTutor는 R과 파이썬을 지원하며, Shiny와 OpenAI API GPT-4를 활용하여 웹 기반 데이터 분석 환경을 제공한다. 사용자는 CSV, 엑셀 등의 직사각형 형태 정형 데이터를 업로드하고 자연어로 분석 요청을 하면 코드와 함께 통계량, 그래프, 표 등을 받을 수 있다.

PandasAI는 파이썬 기반의 라이브러리로, 다양한 데이터 소스에 대해 자연어 질의를 통한 분석을 지원한다. 데이터 질의뿐만 아니라 시각화, 정제, 특성 생성 등의 기능도 제공하여 데이터 과학자와 분석가의 업무를 효율화할 수 있다.

이러한 도구들은 AI 기술을 활용하여 데이터 분석의 진입 장벽을 낮추고, 전문적인 프로그래밍 지식이 없어도 데이터 인사이트를 얻을 수 있게 새로운 장을 열고 있다. 앞으로도 AI와 데이터 분석의 융합은 가속화될 것으로 보이며, 데이터 기반 의사결정과 문제 해결에 큰 도움이 될 것이다.