In [1]:
# Import libraries
import pandas as pd
In [2]:
# Load csv file
df = pd.read_csv(
    "./아파트(매매)_실거래가_20250709002717.csv",
    encoding="cp949",
)

df
Out[2]:
NO 시군구 번지 본번 부번 단지명 전용면적(㎡) 계약년월 계약일 거래금액(만원) 동 층 매수자 매도자 건축년도 도로명 해제사유발생일 거래유형 중개사소재지 등기일자
0 1 서울특별시 성동구 상왕십리동 811 811 0 텐즈힐(2단지) 55.200 202506 30 127,000 - 4 개인 개인 2014 마장로 137 - 중개거래 서울 성동구, 서울 송파구 -
1 2 서울특별시 노원구 상계동 451 451 0 한신2차 45.920 202506 30 30,000 - 4 개인 개인 1988 한글비석로48길 6 - 직거래 - -
2 3 서울특별시 중랑구 묵동 396 396 0 이편한세상화랑대 84.956 202506 30 101,200 - 2 개인 개인 2017 숙선옹주로 45 - 중개거래 서울 중랑구 -
3 4 서울특별시 성북구 돈암동 609-1 609 1 한신 68.130 202506 30 65,500 - 11 개인 개인 1998 성북로4길 52 - 중개거래 서울 성북구 -
4 5 서울특별시 양천구 목동 925 925 0 목동신시가지7 66.600 202506 30 235,000 - 4 개인 개인 1986 목동로 212 - 중개거래 서울 양천구 -
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
48794 48795 경상북도 상주시 신봉동 179-4 179 4 동아 84.830 202506 1 17,000 - 12 개인 개인 1991 상산로 147 - 중개거래 경북 상주시 -
48795 48796 경상북도 김천시 부곡동 1530 1530 0 부곡우방 84.990 202506 1 17,600 - 12 개인 개인 1999 부곡길 206 - 중개거래 경북 김천시 -
48796 48797 경상북도 영천시 망정동 116 116 0 영천망정4주공 49.790 202506 1 7,800 402 16 개인 개인 1998 동부로 14 - 중개거래 경북 영천시 25.06.16
48797 48798 경상북도 상주시 신봉동 603-1 603 1 명지3차 49.424 202506 1 10,550 - 8 개인 개인 2001 경상대로 2749-10 - 중개거래 경북 상주시 -
48798 48799 경상북도 상주시 신봉동 603-1 603 1 명지3차 59.804 202506 1 11,300 102 10 개인 개인 2001 경상대로 2749-10 - 중개거래 경북 상주시 25.06.27

48799 rows × 20 columns

In [3]:
# Drop unnecessary columns
df = df.drop(
    columns=[
        "NO",
        "번지",
        "본번",
        "부번",
        "단지명",
        "동",
        "층",
        "도로명",
        "중개사소재지",
        "등기일자",
    ]
)
In [4]:
df.describe()
Out[4]:
전용면적(㎡) 계약년월 계약일 건축년도
count 48799.000000 48799.0 48799.000000 48799.000000
mean 76.164064 202506.0 15.002275 2006.256173
std 22.983061 0.0 8.064604 10.965883
min 9.260000 202506.0 1.000000 1962.000000
25% 59.895950 202506.0 8.000000 1997.000000
50% 83.250000 202506.0 14.000000 2006.000000
75% 84.960000 202506.0 21.000000 2017.000000
max 273.940000 202506.0 30.000000 2025.000000
In [5]:
# Remove commas from '거래금액(만원)' and convert to float
df["거래금액(만원)"] = df["거래금액(만원)"].str.replace(",", "")
df["거래금액(만원)"] = df["거래금액(만원)"].astype(float)

# Create new column '면적당거래금액(㎡/만원)'
df["면적당거래금액(㎡/만원)"] = df["거래금액(만원)"] / df["전용면적(㎡)"]
In [6]:
# Split the address into words and store the first two in separate columns for geojson matching
df[["주소_1", "주소_2"]] = df["시군구"].str.split().str[:2].apply(pd.Series)
df["주소_1"] = df["주소_1"].replace("전북특별자치도", "전라북도")
In [7]:
df
Out[7]:
시군구 전용면적(㎡) 계약년월 계약일 거래금액(만원) 매수자 매도자 건축년도 해제사유발생일 거래유형 면적당거래금액(㎡/만원) 주소_1 주소_2
0 서울특별시 성동구 상왕십리동 55.200 202506 30 127000.0 개인 개인 2014 - 중개거래 2300.724638 서울특별시 성동구
1 서울특별시 노원구 상계동 45.920 202506 30 30000.0 개인 개인 1988 - 직거래 653.310105 서울특별시 노원구
2 서울특별시 중랑구 묵동 84.956 202506 30 101200.0 개인 개인 2017 - 중개거래 1191.204859 서울특별시 중랑구
3 서울특별시 성북구 돈암동 68.130 202506 30 65500.0 개인 개인 1998 - 중개거래 961.397329 서울특별시 성북구
4 서울특별시 양천구 목동 66.600 202506 30 235000.0 개인 개인 1986 - 중개거래 3528.528529 서울특별시 양천구
... ... ... ... ... ... ... ... ... ... ... ... ... ...
48794 경상북도 상주시 신봉동 84.830 202506 1 17000.0 개인 개인 1991 - 중개거래 200.400802 경상북도 상주시
48795 경상북도 김천시 부곡동 84.990 202506 1 17600.0 개인 개인 1999 - 중개거래 207.083186 경상북도 김천시
48796 경상북도 영천시 망정동 49.790 202506 1 7800.0 개인 개인 1998 - 중개거래 156.657963 경상북도 영천시
48797 경상북도 상주시 신봉동 49.424 202506 1 10550.0 개인 개인 2001 - 중개거래 213.459048 경상북도 상주시
48798 경상북도 상주시 신봉동 59.804 202506 1 11300.0 개인 개인 2001 - 중개거래 188.950572 경상북도 상주시

48799 rows × 13 columns

In [8]:
df.to_csv(
    "./realestate_processed.csv",
    index=False,
    encoding="cp949",
)