ChatGPT + Code Interpreter 세팅 & 시각화 잘하려면 알아야 할 5가지!
최근에 OpenAI에서 발표한 ChatGPT의 따끈한 기능 Code Interpreter가 발표되었다. 이를 통해서 데이터 분석가 못지 않은 데이터 정리와 분석, 가벼운 머신러닝, 데이터 시각화를 코드에 대한 지식 없이도 일반인이 쉽게 접근 할 수 있게 되었다.
물론 필자 생각에는 데이터 분석가들이 이 기능을 더욱 잘 활용할 수 있을것이라고 보는데, 그 이유 중 하나는 이 코드인터프리터가 동작하는데 사용하는 기술들이 그들에겐 익숙한 툴이기 때문이다.
OpenAI 공식 디벨로퍼 사이트에 가면 다음과 같이 코드 인터프리터가 어떤 패키지툴을 활용하는지가 설명되어있다.
제목 : Code Interpreter Python Packages: List of packages available in the environment
Data Analysis and Visualization
- Analyze and visualize your data offline using packages like pandas, numpy, scipy, xarray, matplotlib, seaborn, plotly, and bokeh.
Natural Language Processing and Machine Learning
- Dive into text data with nltk, spacy, textblob, and gensim, or build machine learning models with scikit-learn, xgboost, keras, and torch.
Image and Audio Processing
- Manipulate and analyze images and audio with pillow, imageio, opencv-python, scikit-image, librosa, pyaudio, and soundfile.
File Format Manipulation and Web Development
- Handle various file formats with openpyxl, xlrd, pyPDF2, python-docx, or build web applications with flask, django, tornado, and quart.
...
여기서 우리가 주요하게 봐야하는것은. 시각화 툴인 matplotlib, seaborn 이다. 이 두 패키지는 파이썬에서 numpy array나 pandas 데이터프레임을 쉽게 시각화 할 수 있도록 해준다. 여기서 pandas란 python에서 Excel파일 같은 (XLS, XLSX, CSV, TSV등..)데이터를 표(테이블) 형태로 처리할 수 있도록 하는 라이브러리다. 데이터 사이언스분야에서는 절대 없어서는 안될 존재이고, 이를 시각화 해주는데 도움을 주는것은 매우 중요하다고 할 수 있겠다.
서론이 길었다. 그럼 슬슬 어떻게 해야 분석을 잘 끝내고 시각화를 잘할수 있는지 알아볼까?
그전에 ChatGPT에 Code Interpreter가 활성화가 안되어 있는 사람들을 위해 어떻게 하는지는 설명하고 넘어가겠다.
먼저 Code Interpreter 기능 활성화하기
일단 해당기능은 현재 ChatGPT 유료유저에게만 열려있으니 무료유저라면 한번쯤은 과금해서 써보는것을 추천한다.
만일 유료유저인데도 chatgpt4에 탭에 Code Interpreter가 안보이는 경우 유저세팅에 가서 beta feature를 켜면 된다
세팅은 잘 했는데 처음써본다면?
먼저 옆의 채팅창 좌측의 + 버튼으로 당신이 분석하고자 하는 파일을 업로드한다.(100mb까지 가능) 다양한 형식의 파일을 지원하지만 일단 시트형식의 파일이 좋겠다. (Excel파일, CSV, TSV등)
그리고 챗지피티의 채팅창에다가 업로드한 데이터의 범위를 설정하고, 이를 분석할 수 있도록 명령을 쓰자. 그리고 대략 원하는 그래프의 모양에 필요한 데이터를 잘 정제할 수 있도록 상세히 적어주는것이 필요하다.
Chat GPT Code Interpreter 로 데이터 분석하자! (채팅 예시)
채팅창에는 아래 예시들과 같이 쓸 수 있다.
(참고 : 이미 잘 알겠지만 ChatGPT는 영어로된 지문에 잘 동작한다. 특히 Code Interpretet는 더욱 그러하다. 영어로 채팅을 한다는 가정하에 내용만 한글로 쓰도록 하겠다)
bar chart 예시 (매출 순이익 분석차트 만들기)
"2023-04-23부터 2023-06-23까지 날짜별 총 매출, 순이익에 대한 정보 계산해서 bar chart로 표시할거야. 순이익과 매출데이터가 없는 날짜는 0으로 계산해줘. x-axis는 날짜를 표시하되 데이터가 없는 날짜도 누락없이 표기하고, y-axis는 매출액,순이익에 대한 정보를 표현해줘. 매출액과 순이익정보가 겹쳐지지 않게 표시해주고, 매출액 color는 grey로, 순이익 color는 green으로 정할게. legend를 차트의 우측상단에 배치해줘. 이제 작업결과를 보여줘"
line plot + bar chart 예시 (서버 요청 및 에러 추이 시각화)
"4월20일 10시~12시동안의 데이터를 사용할거야. 10초당 데이터요청량, 에러발생량에 대한 정보 계산해서 line+bar chart로 표시하려고 해. 먼저 '데이터요청량' 데이터가 없는경우엔 해당 날짜데이터는 0으로 계산해줘. x-axis는 시간, y-axis는 횟수정보로 지정해주고, 데이터요청량은 line으로, 에러발생량은 bar로 표현해줘. line color는 blue로, bar color는 red로 부탁해. line과 bar에는 해당 데이터의 수치를 해당 포인트 우측상단에 표시해줘. legend는 차트 하단에 표시해줘. 그럼 부탁할게"
heat mat 예시 (병원 진료환자 연령대별 질환종류 추이)
"내가 너에게 업로드한 데이터에서 남성환자만 일단 필터링해줘. 그리고 남성환자의 연령대별, 질환의 종류별 환자 수를 계산해줘. 연령대는 0~9, 10~19, 20~29 이런 식으로 늘려가면서 100살까지 정의해줘. 이제 이걸 heat map형태의 시각자료로 표현하려고 해, x-axis는 연령대를, y-axis는 질환으로 정하고, 수치가 낮을수록 파란색, 수치가 높을수록 빨간색으로 그라디언트하게 표현해줘. 질환별로 최대값이 있는 연령대의 셀은 숫자를 굵게 표시해줘. 그럼 작업 부탁할게"
위의 형식으로 채팅을 적어주면 챗지피티가 파일의 데이터를 pandas를 통해 분석 후 시각화 라이브러리를 이용해 차트를 제공해 줄 것이다.
위의 채팅에는 공통점들이 있는데 이것이 내가 사용해본 Code Interpreter를 잘 쓰는 방법들이다. 하나씩 알아보자.
데이터 시각화(그래프 그리기) 잘하려면 알아야 할 5가지
1. 분석시 정확한 항목이름(column name), 레이블명을 써라.
시트데이터는 '행'과 '열'로 이루어져 있을텐데 여기선 '열'의 이름 (column name)은 매우 중요하다. ChatGPT는 업로드된 파일의 내용으로 무엇을 어떻게 할지를 정확하게 언급해줘야 실수가 적은데, 아마도 column이름을 대충 말하는 경우가 많을것이다. 기존 ChatGPT가 자동으로 알아서 잘하는게 많다보니 대충 알아먹겠거니 하고 부하직원에게 지시하듯이 항목이름을 정확하게 안쓰거나 뭘해야하는지를 대충 주었다가는 실행실패를 여러번 하고 포기할 수 있다.
(예를들어 시간정보에 대한 column이름이 'started_time'인데 그냥 "count된 user정보를 'time'순으로 정렬해줘" 이렇게만 명령한다면 잘 안될 가능성이 높다.)
2. 사용하려는 데이터 종류가 무엇인지 알아둬라. [수치데이터(숫자), 종류데이터(카테고리), 시간데이터(날짜,시간)]
당신이 사용하려는 데이터가 수치 데이터인지 카테고리 형태인지, OX인지, 시간인지 미리 알고 있어야 실수가 없다. 특히 수치값을 더할 것인지, 갯수를 세는 것인지 등에서 실수가 나올 수 있다. (예를들어 품목이 "세제" 인 항목의 가격이 30000원이 넘는 경우를 --> 모두 "합산해줘" vs "갯수를 세줘"는 결과가 완전 다르다.) 그리고 종류별 갯수를 세어줘와 종류별 가격을 더해줘도 마찬가지이다.
또한 시간데이터는 원래 연속형 데이터이기 때문에 범위에 대한 개념을 꼭 같이 작성해줘야 한다. (만일 5년치의 데이터 중 최근 1개월만 보려고 한다면 반드시 그 기간을 언급해줘야 한다. 안그러면 5년치를 모두 계산한 결과를 보여줄거다)
3. 가능하면 필터링 쓰고, 데이터 누락처리를 하도록 추가적으로 명령하자.
필터를 초기에 언급해주면 좀 더 명확한 분석, 빠른 처리를 진행할 수 있다. 필터란 데이터중 일부 조건에 부합하는 것들만 사용하는것을 말한다. (예를들어 전체 데이터 중 20대 여성 데이터만 사용, 전체기간중 특정 기간만 보려는 경우, 모든 산업 항목 중 "제조업"인 데이터만 분석)
그리고 데이터 누락은 생각보다 많다. ChatGPT는 누락된 데이터나 이상치를 그냥 넘어가지 못하고 에러를 발생시킬 수 있다. 그럼 해당 상황에 어떻게 해야할지를 다음 채팅에 써줘도 된다. (예를들어 "누락된 데이터는 0으로 처리하고 수치가 아닌 데이터는 계산에서 제외해줘" 같이 작성할 수 있다.)
4. 그래프종류에 대해 많이 알아두자 (matplotlib과 seaborn으로 구현할 수 있는 그래프 종류를 알아두자)
시각화할 수 있는 그래프나 차트는 종류는 다양하다. 그 중에 matplotlib과 seaborn에서 구현 가능한 그래프/차트가 무엇이 있는지 미리 확인해보는것이 좋다. 대략적으로 쉽고 많이 사용하는 그래프는 다음과 같다.
line plot - 선형그래프
scatter - 산점도
bar - 바차트
hist - 히스토그램
많이 알아둘수록 더욱 목적에 맞는 그래프를 적재적소에 활용할 수 있기 때문에 미리 공부해보는것도 좋겠다. 만약 어떻게 표현해야 가장 좋을지 잘 모르겠다면 반대로 ChatGPT에게 무슨용도로 차트를 쓸건지 이야기해주자. 어떤 종류의 시각화가 적합할지 묻는것도 좋은 전략이다. 이미 업계에서 주로 사용하는 형식이 있다면 알려줄것이다.
5. 그래프를 이루는 항목들에 무엇을 할것인지 상세하게 알려줘라. (중요)
x-axis(X축) y-axis(Y축) color(색상) legend(범례) 등은 모두 그래프를 이루는 속성들이다. 이 중 특히 X, Y축에 무엇을 할것인지 정의하는것은 매우 중요하다. 우리가 그래프종류를 지정해서 달라고 해도 Code Interpreter는 정확히 어떤 그래프를 그려야 하는건지 알지 못한다. 따라서 어떤 항목을 축에 설정할 것인지를 잘 설명하자. 또한 한 축에 2~3가지 항목을 표현할때도 그걸 겹치게 보일것인지, 나란히 옆으로 보이게 할 것인지도 상세히 설명해주면 가려져서 안보이는 상황을 예방할 수 있다.
그리고 시간데이터를 표현할때 간혹 중간시간이 누락되어 그래프가 이상하게 보이는 경우가 있다. (또는 주말을 빼야하는데 주말이 보이면 듬성듬성 비어있는 데이터도 있음) 이런 경우도 추가적인 명령을 통해 수정가능하다 (그래프에서 주말은 빼줘, 데이터가 없는 날짜도 표시는 해줘 등)
여기까지 어떻게 하면 ChatGPT를 활용해 데이터 시각화를 잘 할 수 있을지 이야기해보았다. 데이터를 시각적으로 보고 싶어 했던 많은 사람들에겐 이번 Code Interpreter는 좋은 해법을 제공해 줄 것으로 보이므로 적극 활용해보자. 어쩌면 이것이 당신의 경쟁력이 될 수도 있다.
알고리즘 트레이딩과 퀀트투자. 만능일까?
퀀트 투자와 알고리즘 트레이딩은 많은 투자자들로부터 선택받는 투자기법이다. 비슷한듯 조금의 차이가 있는 이 두 기법에 대해 알아보자. 알고리즘 트레이딩은 특정 세트의 명령에 따라 거래
stocktrees.com
현금흐름표 vs 재무상태표 차이점. 그리고 보는방법
현금 흐름표(Cash Flow Statement)와 재무상태표(Balance Sheet)는 회사의 재무 상태와 현금 흐름을 이해하는 데 도움을 준다. 현금 흐름표(Cash Flow Statement) 현금 흐름표는 회사의 현금 및 현금 동등물의 변
stocktrees.com