Spark
🏅 AI 마스터
🏡 내집마련 찐친

맛있는? 비빔밥 만들기 (feat. 랭체인, 연구R, 노코드 ...)

캠프 동안 배운 잔기술을 잘 비벼서 맛있는 비빔밥을 만들어 보기로 했습니다.


비빔밥의 이름은 “차트 그리고 분석하기” 입니다~!


[Lion님의 AI로 양적연구하기(R 프로그램)로 시작]

  1. 국토부 실거래가 공개시스템에서 1기 신도시(분당, 일산, 평촌 대상으로) 1년치 실거래 내역을 csv로 다운 받습니다.

  2. LLM방 파이썬 과제에서 했던 엑셀파일 통합과정을 진행합니다.


  1. 코딩은 여행가J 님의 "코드고 뭐고 스트림릿도 코드펜도 다 필요없는 클로드 개발"을 참고하여 무시무시한 Claude3.5 Sonnet ‘Artifact’를 활용합니다.

  1. Google Colab 환경에서 1번 실습 내용을 참고하여 아래 차트를 만들어 갑니다.

  1. 계약년월별 거래금액에 대한 시계열 그래프를 그리고, 가로 세로 레이블을 추가하였습니다.


  1. 아래는 유니님의 2주차 노코드 특강 때 진행했던 Graphy에서 차트 그리기 중 "AI Insights"에 차트 요약/분석하기 입니다. 이 부분을 참고하여 7번을 진행합니다.

  1. 표를 읽고 분석/요약해주는 기능을 ChatGPT4o 모델의 멀티모달 기능을 활용하여 API로 연결 후 아래와 같이 구현해 보았습니다.

# 데이터 로드 (파일 경로를 실제 경로로 변경해주세요)
df = pd.read_csv("1기신도시 아파트 실거래가_통합.csv", encoding='cp949')

# 데이터 전처리
df['계약년월'] = pd.to_datetime(df['계약년월'].astype(str), format='%Y%m')
df['거래금액(만원)'] = df['거래금액(만원)'].astype(str).str.replace(',', '').astype(float)

# "평형구분" 열 추가
df['평형구분'] = pd.cut(df['전용면적(㎡)'],
                      bins=[-float('inf'), 55, 66, 79, 99, float('inf')],
                      labels=['소형평수', '24평형', '30평형', '34평형', '대형평수'])

# 데이터프레임 그룹화
df_group = df.groupby(['계약년월', '평형구분'])['거래금액(만원)'].mean().reset_index()

# 시계열 그래프 그리기
plt.figure(figsize=(12, 8))
sns.lineplot(data=df_group, x='계약년월', y='거래금액(만원)', hue='평형구분', marker='o')

# 그래프 제목 및 레이블 설정
plt.title('계약년월별 거래금액(만원) 평균 추이')
plt.xlabel('계약년월')
plt.ylabel('거래금액(만원)')
plt.grid(True)
plt.legend(title='평형구분')
plt.xticks(rotation=45)

# GPT-4를 이용한 차트 분석 함수
def analyze_chart(chart_description):
    response = client.chat.completions.create(
        model="gpt-4",
        messages=[
            {"role": "system", "content": "You are a helpful assistant that analyzes charts."},
            {"role": "user", "content": f"Analyze this chart and provide insights in Korean: {chart_description}"}
        ]
    )
    return response.choices[0].message.content

# 차트 설명 생성
chart_description = """
이 차트는 계약년월별 거래금액(만원)의 평균 추이를 보여줍니다. 
x축은 계약년월을, y축은 거래금액(만원)을 나타냅니다. 
그래프는 소형평수, 24평형, 30평형, 34평형, 대형평수의 5가지 평형구분에 따라 다른 색상의 선으로 표시되어 있습니다. 
전반적으로 모든 평형에서 시간이 지남에 따라 거래금액이 상승하는 추세를 보이고 있으며, 
평형이 클수록 거래금액이 높은 경향을 보입니다.
"""

# GPT-4를 이용한 차트 분석
analysis = analyze_chart(chart_description)

# 분석 결과를 그래프 아래에 표시
plt.figtext(0.5, -0.2, f"GPT-4 분석:\n\n{analysis}", ha="center", fontsize=15, wrap=True)

# 그래프 표시 (이미지 저장 시에는 주석 처리)
plt.subplots_adjust(bottom=0.3)  # 그래프 하단 여백을 늘림
plt.show()

# 이미지로 저장 (필요시 주석 해제)
# plt.savefig('apartment_price_trend.png', bbox_inches='tight', dpi=300)

(나중에 분석결과를 읽어 봤더니.. 아무 쓰잘데기 없는 분석이긴 하네요 ㅜ. 결과를 자동으로 뽑아준다는데 의의를… )


이런 흐름을 바탕으로, 부동산방과 관련된 의미있는 사례를 추가해보려 합니다.

(2부는 여기에.. https://www.gpters.org/wealth/post/charts-analysis-based-actual-eam5bZcxeB2gE66 )


#11기랭체인 #11기내집마련

5
2개의 답글

👉 이 게시글도 읽어보세요