[데이터분석] 부트캠프 TIL

20260126 TIL

myun0506 2026. 1. 26. 21:26

[Today I Learn]

- 기초프로젝트 회의 및 전처리작업


[기초 프로젝트 전처리]

- 컬럼명 수정, 컬럼 삭제

import pandas as pd

# 1. 파일 불러오기 (인코딩은 상황에 맞게 'euc-kr' 또는 'utf-8' 선택)
# 구글 시트에서 저장한 파일이라면 보통 'utf-8'입니다.
df = pd.read_csv('data/real_estate_total.csv', encoding='cp949', parse_dates=["계약일"])

# 2. 변경할 컬럼 매핑 딕셔너리 생성
# { "기존 한글명": "변경할 영어명" }
rename_dict = {
    "접수연도": "RCPT_YR",
    "자치구코드": "CGG_CD", "자치구명": "CGG_NM",
    "법정동코드": "STDG_CD", "법정동명": "STDG_NM",
    "지번구분": "LOTNO_SE", "지번구분명": "LOTNO_SE_NM",
    "본번": "MNO", "부번": "SNO",
    "건물명": "BLDG_NM",
    "계약일": "CTRT_DAY",
    "물건금액(만원)": "THING_AMT",
    "건물면적(㎡)": "ARCH_AREA", "토지면적(㎡)": "LAND_AREA",
    "층": "FLR",
    "권리구분": "RGHT_SE",
    "취소일": "RTRCN_DAY",
    "건축년도": "ARCH_YR","건물용도": "BLDG_USG",
    "신고구분": "DCLR_SE", "신고한_개업공인중개사_시군구명": "OPBIZ_RESTAGNT_SGG_NM"
}

# 3. 컬럼명 변경 적용
df = df.rename(columns=rename_dict)

# 4. 제거할 열 리스트 (여기 적힌 열들이 삭제됩니다)
excluded_columns = [
    "RCPT_YR", "LOTNO_SE", "LOTNO_SE_NM", "MNO", "SNO", "OPBIZ_RESTAGNT_SGG_NM"
]
# 열 삭제 실행 (axis=1은 열을 의미합니다)
df_final = df.drop(columns=excluded_columns)

# 5. 결과 저장 (DBeaver 업로드용 UTF-8)
df_final.to_csv('data/real_estate_total_edit.csv', index=False, encoding='cp949')

 

- 토지면적 컬럼 null 값과 0인 값 확인

  • '토지면적'이 null 이거나 0인 행은 모두 '건물용도'가 '아파트'임
  • '건물용도'가 '아파트'인 행은 모두 '토지면적'이 null이거나 0

 

- 권리구분을 drop 할 수 없는 경우 

  • 거의 대부분이 null 값임
  • but '건축년도'가 0인 행에서 분양권/입주권을 기준으로 꽤 많은 데이터 행이 추출되었음
  • 이와 관련해서 유의미한 결과를 도출할 수 있으므로 일단 keep

 

- 계약일 컬럼 전처리

import pandas as pd

# 날짜 컬럼을 datetime 형식으로 변환 (필수!)
df['CTRT_DAY'] = pd.to_datetime(df['CTRT_DAY'])

# 계약일 연도값별로 개수 count 하고 연도 순서대로 정렬
df['CTRT_DAY'].dt.year.value_counts().sort_index()
'''
CTRT_DAY
2008         2
2009         1
2010         1
2011         2
2012         2
2013         3
2014         3
2015         7
2016        64
2017     13360
2018    157931
2019    141204
2020    175320
2021    134779
2022     64804
2023     70406
2024     75725
Name: count, dtype: int64
'''
# 물건금액(만원) 기준 IQR 이상치 제거 예시
Q1_price = df['CTRT_DAY'].quantile(0.25)
Q3_price = df['CTRT_DAY'].quantile(0.75)
IQR_price = Q3_price - Q1_price

# 하위 25%와 상위 75% 밖의 극단적 가격 기준 설정 
lower_p = Q1_price - 1.5 * IQR_price # Timestamp('2015-07-12 12:00:00')
upper_p = Q3_price + 1.5 * IQR_price # Timestamp('2025-12-10 12:00:00')
  • 2008~2016년까지의 거래 건수는 수십 건 미만으로 전체 시장을 대변하기에 유의미하지 않다
  • 2017년은 2018년과 비교하여 10배 이상 차이가 나므로 2018년을 기점으로 설정하여 분석을 진행하는 것이 가장 알맞다고 판단
  • IQR 상으로는 2015년 데이터도 정상 범위에 속하지만 데이터 수가 너무 적기 떄문에 계약일의 연도 별 count 개수에 따라서 2018~ 2024년의 데이터만 사용하는 것이 좋을 것 같다

 

 

 

 

 

'[데이터분석] 부트캠프 TIL' 카테고리의 다른 글

20260128 TIL  (0) 2026.01.28
20260127 TIL  (1) 2026.01.27
20260122 TIL  (0) 2026.01.22
20260120 TIL  (0) 2026.01.20
20260119 TIL  (0) 2026.01.19