Pandas AI 사용법 - Pandas와 ChatGPT의 결합
- Python으로 데이터 분석을 할 때 빼먹을 수 없는 라이브러리인 Pandas. 아마 많은 분들이 사용하시고, 처음에 많이 학습하고 있을거에요
- 최근 Pandas-AI라는 라이브러리가 공개되었는데 대화형으로 Pandas를 사용할 수 있는 시대가 되었습니다. 아직 버전은 0.2지만, 추후에 더 많이 발전할 것 같네요
- 참고 : 이 글은 0.2.2 버전을 기준으로 작성했고, 글을 보시는 시기에 따라 다른 부분이 존재할 수 있습니다
Pandas-AI
- Github Repo
- Pandas AI는 Generative AI 기능을 Pandas와 결합해 사용할 수 있는 만든 라이브러리
설치
pip3 install pandasai==0.2.2
OpenAI API Key 발급
- OpenAI Platform 가입
- API Key 접근해서 발급
- Create new secret key 클릭
- name은 원하는 이름을 지정
- 이제 나오는 Key를 복사(우측 아이콘 클릭시 복사)
- 이 Key를 계속 사용하니 잘 저장해두기! 어딘가에 노출되면 안되니 Github에 업로드할 때도 주의 필요
- 만약 RateLimitError: You exceeded your current quota, please check your plan and billing details 오류가 발생하면 Open AI 문서에서 해결 방법을 찾을 수 있음
- Open AI에서 Plan이나 빌링 정보 확인. Billing Overview에 접근해서 설정
- 카드 등록 후 몇분 후 API를 다시 사용하면 오류가 발생하지 않음
사용법
- Jupyter Lab 실행
jupyter lab
라이브러리 Import & 데이터셋 정의
import pandas as pd
import numpy as np
from pandasai import PandasAI
from pandasai.llm.openai import OpenAI
df = pd.DataFrame({
"country": ["United States", "United Kingdom", "France", "Germany", "Italy", "Spain", "Canada", "Australia", "Japan", "China"],
"gdp": [21400000, 2940000, 2830000, 3870000, 2160000, 1350000, 1780000, 1320000, 516000, 14000000],
"happiness_index": [7.3, 7.2, 6.5, 7.0, 6.0, 6.3, 7.3, 7.3, 5.9, 5.0]
})
OpenAI API Key를 사용해 LLM 정의
OPENAI_API_KEY = "여러분들이 생성한 OpenAI API Key"
llm = OpenAI(api_token=OPENAI_API_KEY)
Pandas AI에게 프롬프트 제출
pandas_ai = PandasAI(llm, verbose=True)
pandas_ai.run(df, prompt='Which are the 5 happiest countries?')
- verbose=True 인자를 주면 생성한 코드를 볼 수 있음(Jupyter Lab을 실행한 CLI에서 확인했음. 처음엔 Cell의 Output에서 보이다가 몇번 진행하니 나오지 않았음)
- Code generated가 보이고, 그것을 실행하는 것이 보임
- 결과
그래프 그려달라는 프롬프트 제출
pandas_ai.run(df, prompt='Divide GDP into 3 grades in ascending order, and draw each grade as a bar graph.')
생성된 코드는 다음과 같음
import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame({ 'country': ['United States', 'United Kingdom', 'France', 'Germany', 'Italy'], 'gdp': [21400000, 2940000, 2830000, 3870000, 2160000], 'happiness_index': [7.3, 7.2, 6.5, 7.0, 6.0] }) # Divide GDP into 3 categories gdp_categories = pd.qcut(df['gdp'], q=3, labels=['Low', 'Medium', 'High']) df['gdp_category'] = gdp_categories # Plot bar graph for each GDP category grouped = df.groupby('gdp_category').mean() grouped.plot(kind='bar', y='happiness_index') plt.show()
한국어로 Pandas AI 실행
이 부분에서 wow 포인트를 느껴 한국어로도 질문. “GDP를 높은 순으로 3등급으로 나눠주고, 각 등급의 평균 GDP를 Bar 그래프로 그려줘”
pandas_ai.run(df, prompt='GDP를 높은 순으로 3등급으로 나눠주고, 각 등급의 평균 GDP를 Bar 그래프로 그려줘')
생성한 코드
# GDP를 높은 순으로 3등급으로 나누기 df['gdp_category'] = pd.qcut(df['gdp'], q=3, labels=['Low', 'Medium', 'High']) # 각 등급의 평균 GDP 구하기 gdp_mean = df.groupby('gdp_category')['gdp'].mean() # Bar 그래프로 그리기 gdp_mean.plot(kind='bar')
직접 코드로 구현한 값과 비교하면 동일
df.groupby('gdp_category')['gdp'].mean().astype(int)
총평
- 요즘 HTML 작업을 할 때 ChatGPT와 협업(?)했는데 앞으론 데이터 분석에서도 이렇게 될 것으로 예상
- 목적을 정의하고 알아서 분석해봐! 가 가능한 시대가 올 것
- 프롬프트를 잘 작성하면 결과를 잘 내주고, 프롬프트를 구체적으로 작성하지 않으면 오류가 생기는 코드를 만들기도 합니다. 이 부분은 점차 개선될 것
- 속도도 아직 엄청 빠르진 않지만, 코드를 직접 짜는 것보단 수월한 편
- Pandas AI Prompt, Pandas Data Analytics Prompt 등도 점점 생길 것 같음
- Pandas 교육도 변화가 필요한 시점이 아닐까 싶음
사용한 코드 전체
import pandas as pd
import numpy as np
from pandasai import PandasAI
from pandasai.llm.openai import OpenAI
df = pd.DataFrame({
"country": ["United States", "United Kingdom", "France", "Germany", "Italy", "Spain", "Canada", "Australia", "Japan", "China"],
"gdp": [21400000, 2940000, 2830000, 3870000, 2160000, 1350000, 1780000, 1320000, 516000, 14000000],
"happiness_index": [7.3, 7.2, 6.5, 7.0, 6.0, 6.3, 7.3, 7.3, 5.9, 5.0]
})
OPENAI_API_KEY = "여러분들이 생성한 OpenAI API Key"
llm = OpenAI(api_token=OPENAI_API_KEY)
pandas_ai = PandasAI(llm, verbose=True)
pandas_ai.run(df, prompt='Which are the 5 happiest countries?')
pandas_ai.run(df, prompt='Divide GDP into 3 grades in ascending order, and draw each grade as a bar graph.')
pandas_ai.run(df, prompt='GDP를 높은 순으로 3등급으로 나눠주고, 각 등급의 평균 GDP를 Bar 그래프로 그려줘')
카일스쿨 유튜브 채널을 만들었습니다. 데이터 사이언스, 성장, 리더십, BigQuery 등을 이야기할 예정이니, 관심 있으시면 구독 부탁드립니다 :)
PM을 위한 데이터 리터러시 강의를 만들었습니다. 문제 정의, 지표, 실험 설계, 문화 만들기, 로그 설계, 회고 등을 담은 강의입니다
이 글이 도움이 되셨거나 다양한 의견이 있다면 댓글 부탁드립니다 :)