단위 면적당 평균 실거래가 구하기
단위 면적당 평균 실거래가를 구하는 방법은 매우 싶습니다. 거래 금액은 전용 면적으로 나누면 끝입니다. 다만 앞서 소스 코드 'step_2_3.py'에서 정제한 데이터의 거래금액 열에 저장된 값은 문자열입니다. 나눗셈 연산을 적용하기 위해 거래금액 문자열에서 콤마(,)를 제거하고 부동소수점으로 형변환한 뒤, 데이터프레임에 면적당금액 열을 추가합니다.
면적당 금액을 구했다면 지역 코드와 지역 주소명, 단위 면적당 평균 실거래가를 포함한 데이터프레임을 출력하기 위해 소스 코드 'step_2_1.py'의 df_sido_sgg를 불러옵니다. 단위 면적당 평균 실거래가를 구한 뒤 데이터프레임 df_sido_sgg에서 지역 코드와 지역 주소명을 병합할 것입니다.
비주얼 스튜디오 코드에서 새로운 파일을 생성하고 파일명을 'step_2_4.py'로 수정합니다. 다음과 같이 코드를 입력하고 대화형 창에서 실행하면 'output' 폴더에 지역별 평균 전용 면적(avg_area)과 단위 면적당 평균 실거래거(avg_price)가 포함된 'step_2_4.csv' 파일이 생성됩니다.
ch_11/step_2_4.py
from pathlib import Path
import pandas as pd
from step_1_1 import OUT_DIR # 이전에 작성한 모듈을 불러옵니다.
from step_2_1 import OUT_2_1
from step_2_3 import OUT_2_3
OUT_2_4 = OUT_DIR / f"{Path(__file__).stem}.csv"
def avg_price_to_csv(): # 09
df_apt = pd.read_csv(OUT_2_3, dtype="string")
df_apt["거래금액"] = df_apt["거래금액"].str.replace(",", "") # 콤마 제거 # 11
df_apt = df_apt.astype({"전용면적" : float, "거래금액" : int}) # 숫자로 변환 # 12
df_apt["면적당금액"] = df_apt["거래금액"] / df_apt["전용면적"] # 13
df_pivot = df_apt.pivot_table(index="지역코드", # 14
values=["전용면적", "면적당금액"], aggfunc="mean") # 15
df_reindex = df_pivot.reset_index(drop=False) # 16
df_sido_sgg = pd.read_csv(OUT_2_1, dtype="string")
df_merge = pd.merge(df_reindex, df_sido_sgg, # 18
left_on="지역코드", right_on="sido_sgg", how="inner") # 19
df_filter = df_merge.filter(["sido_sgg", "locatadd_nm", "전용면적", "면적당금액"])
df_filter.columns = ["sido_sgg", "locatadd_nm", "avg_area", "avg_price"]
df_sort = df_filter.sort_values("locatadd_nm")
df_sort.to_csv(OUT_2_4, index=False)
if __name__ == "__main__":
avg_price_to_csv()
실행 결과
sido_sgg,locatadd_nm,avg_area,avg_price
11680,서울특별시 강남구,84.58431638750565,2528.8394663552126
11740,서울특별시 강동구,73.12175428163653,1385.5099963719513
11305,서울특별시 강북구,60.269648313253015,874.4385503390695
...생략...
09 평균 실거래거를 계산하고 CSV로 지정하는 함수 avg_price_to_csv()를 정의합니다.
11 함수 str.replace()를 사용하여 '거래금액' 열에 저장된 콤마를 제거합니다.
12 함수 astype()를 사용하여 전용면적 열을 부동소수점수 타입으로, 거래금액 열을 정수 타입으로 변환합니다.
13 거래금액을 전용면적으로 나눠서 면적당 거래금액을 계산합니다.
14~15 함수 pivot_table()를 사용하여 지역코드 열별로 전용면적 열과 면적당금액 결의 평균을 계산하고, 데이터 프레임을 반환합니다.
16 함수 reset_index()를 사용하여 데이터프레임의 인덱스를 0부터 재새성합니다.
18~19 pandas 패키지의 함수 merge()를 사용하여 실거래가 데이터의 지역코드 열과 주소 데이터의 sido_sgg 열의 정확히 일치하는 행에 한해 데이터를 결합합니다.
이제 지역별 아파트의 면적당 매매 실거래가의 평균을 구했습니다.
'프로그래밍 언어 > Python' 카테고리의 다른 글
| 행정구역 경계 시각화 (0) | 2026.06.13 |
|---|---|
| 행정구역 경계 표시하기 (0) | 2026.06.10 |
| 거래가 취소된 데이터 삭제 (0) | 2026.06.04 |
| 아파트 매매 실거래가 데이터 수집 (0) | 2026.06.01 |
| 법정동 데이터 수집하기 (0) | 2026.05.29 |