“강남 아파트값, 정말 정책 때문에 변했을까?” GPT-4.0와 Python으로 데이터 분석도전기(실패1탄)

소개

시작은 아주 단순한 의문이었어요.

"정책이 실제로 부동산 가격에 어떻게 영향을 미칠까?"

그게 궁금했어요. 뉴스에서는 매일같이 강남 아파트, 용산 개발, 토지거래허가제 얘기가 쏟아지지만, 정작 그게 실제 가격이나 거래량에 얼마나 영향을 미치는지 궁금했지요^^.

현장에서는 강남에서 재채기를 하면 다른 지역은 몸살을 앓거든요...도대체 어디까지 얼마나 어떻게 파급효과가 있는지가 궁금했어요. 그래서 직접 해보기로 했어요.

🌱토지거래허가제도 변천사

2020.6.17 잠삼대청(잠실,삼성,대치,청담) 시행->2023.11.16일 잠삼대청 비아파트 해제->2025년 2월 13일부터 전면 폐지->2025.3.19 강남3구.용산 확대 지정

과정

🛠️ 한국부동산원의 데이터를 CSV 파일가지고오기->GPT 4.0에서 분석->예측모델 제시

한국부동산원의 데이터는 2024년까지의 자료만 있었습니다. 토지거래허가제 시행 전후를 비교하자면 2025년이후 자료가 있어야 한다는 맹점이 있었습니다. 그래서 GPT4.0은 나에게 예측 모델을 만들어보라고 권해 줬습니다.^^

여러 숫자를 보여주는 컴퓨터 화면의 스크린 샷

->제가 준 데이터를 잘 읽어왔지요.

다음으로 전처리를 하라고 시킵니다.

GPT-4.0가 이런 식으로 물어봤어요

->추가적인 분석이나 예측 모델링을 진행하고 싶으시면 알려주세요!

그래서 아~ 데이터가 없다면 예측을 하면 되겠구나라는 생각을 하게 되었습니다.

그리고 예측모델을 학습시키기 위한 데이터셋과 코드도 다 생성해줍니다.

📊 결과는 기대와 달랐어요

GPT-4.0은 현재 데이터 규모와 목적을 고려했을 때 아래 두 가지 방법을 추천해주었어요.

  • 빠른 예측 및 해석 가능성을 중시할 경우: Prophet 모델(시계열)

  • 정확도 중심, 중장기적 활용이 목적일 경우: XGBoost 또는 LightGBM

그래서, LSTM (Long Short-Term Memory, 딥러닝)로 해보고 서울의 강남3구와 용산을 중심으로 진행해줘라고 시켰어요.

그랬더니 이렇게 좌~라락 코드를 짜줍니다.

한국어 프로그램의 스크린 샷

한번에 잘되면 좋겠지만 잘 되지 않았어요....ㅠ

그렇지만 자체적으로 오류를 수정해나가는 GPT

우열곡절 끝에 아래와 같은 시계열 그래프를 만들어줍니다.

아파트 수와 거래 수의 관계를 보여주는 그래프

그런데 이 그래프가 아주 요상하지요...

기대했던 값도 안나오고, X축의 값이 년도인데...말이죠...엉뚱하게 표현해줍니다.

그래서 다시 X축값을 년도로 표시 해서 다시 시계열 그래프를 그리라고 시켜봅니다.

GPT 4.0: "년도를 명시적으로 표시하려면 그래프를 그릴 때 x축의 값을 날짜로 설정해 주면 됩니다."라고 해결책을 제시합니다.

데이터값이 작아서 제대로 된 시계열 그래프를 도출할 수 없다는 결론을 내리고 다시 데이터셋을 추출해서 새로운 데이터로 도전!!!

여러 줄을 보여주는 그래프

2006~2024년도 강남3구와 용산의 데이터셋을 재구성하여 다시 시계열그래프에 도전해봅니다.

그래 이런 흐름이 나와야 정상이지...

그렇지만 이것도 한글이 깨지는 문제에 봉착함...ㅠ

GPT가 한글깨짐 방지를 위한 코드를 짜줬어요->그런데도 자꾸만 깨져서 일단 여기까지...

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import platform
import matplotlib.font_manager as fm

# ✅ [1] OS별 한글 폰트 설정
def set_korean_font():
    system = platform.system()
    if system == 'Windows':
        plt.rcParams['font.family'] = 'Malgun Gothic'
    elif system == 'Darwin':  # macOS
        plt.rcParams['font.family'] = 'AppleGothic'
    else:  # Linux (Ubuntu 등)
        font_path = '/usr/share/fonts/truetype/nanum/NanumGothic.ttf'
        fm.fontManager.addfont(font_path)
        plt.rcParams['font.family'] = 'NanumGothic'
    plt.rcParams['axes.unicode_minus'] = False  # 마이너스 깨짐 방지

set_korean_font()

# ✅ [2] 예제 데이터 (df_timeseries는 아래와 같은 구조라고 가정)
# index = '월', columns = 지역 (강남구, 서초구 등), 값 = 거래량
# 여기선 예시용으로 랜덤 데이터 생성
dates = pd.date_range(start='2022-01', periods=12, freq='M').strftime('%Y년 %m월')
df_timeseries = pd.DataFrame({
    '강남구': np.random.randint(200, 500, 12),
    '서초구': np.random.randint(150, 400, 12),
    '송파구': np.random.randint(180, 450, 12),
    '용산구': np.random.randint(100, 300, 12),
}, index=dates)

# ✅ [3] 시각화 + 추세선
plt.figure(figsize=(14, 6))
x = np.arange(len(df_timeseries))
for gu in df_timeseries.columns:
    y = df_timeseries[gu].values
    plt.plot(df_timeseries.index, y, label=f'{gu} 거래량', marker='o')
    # 추세선 (1차 회귀)
    z = np.polyfit(x, y, 1)
    p = np.poly1d(z)
    plt.plot(df_timeseries.index, p(x), linestyle='--', label=f'{gu} 추세선')

plt.title('월별 아파트 매매 거래량 및 추세선 (강남 3구 + 용산구)')
plt.xlabel('월')
plt.ylabel('거래량 (건수)')
plt.xticks(rotation=45)
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()

다음에 계속~~~

🎁 결과와 배운 점

  • 사실 처음 해보는 논문이라 이해도 잘안되고 분석도 너무 어려웠지만, 우리에게는 함께 공부는 하는 스터디원, 버디, 스터디장님이 있어 오늘의 실패에도 도움을 주실 것 같아요.

  • ChatGPT는 진짜 코딩 친구예요. 함수 설명도, 코드 수정, 예측모델 샘플도 다 해줘요.

  • 어떤 분야든 작은 궁금증이 분석의 시작점이 될 수 있어요.

  • 다음에는 만들어 논 지도교수봇과 논문찾기봇과 함께 연구계획서를 제대로 잘 작성해보고 통계공부도 조금 더 해서 깊이 있는 연구를 해보고 싶어요.

1

👉 이 게시글도 읽어보세요