데이터 분석가
article thumbnail
  • 이번 글에서는 머신러닝에 필요한 데이터들을 하나의 df으로 병합하기 위한 전처리를 진행해 보겠습니다.
  • 데이터는 전세수급동향 / 전세가 / 매매가 / 지하철 / 학군 / 범죄율 / 기준금리 / 실업률 / 구별 gdp / 재개발 / 인구 / 공원 데이터들이 있으며 양이 꽤 많으므로 데이터를 나눠 전처리를 진행하기로 하였습니다.

1. 데이터 불러오기

  • 기준금리와 실업률 데이터에 대한 전처리를 맡기로 하였으므로 두 가지 데이터를 불러옵니다.
  • 환경은 로컬에서 jupyter notebook으로 진행했습니다.
import numpy as np
import pandas as pd

path = './data/'
df_lr = pd.read_excel(path + '한국은행_기준금리(월별).xlsx')
df_uer = pd.read_csv(path + '성_연령별_실업률_20230903130554.csv', encoding='EUC-KR')
df = pd.read_excel(path + '데이터 전처리 양식예제(년, 월, 자치구별).xlsx')

2. 데이터 양식 확인

  • 각 데이터를 병합해야 하므로 조원들끼리 상의해 정해둔 데이텉 양식을 불러와 확인합니다.
  • 아래의 양식에 맞춰 데이터를 전처리해줍니다.
df

3. 금리데이터 처리

  • 금리 데이터를 확인해줍니다.
df_lr
df_lr.info()

  • 행과 열을 수정하여 데이터를 전처리합니다.
# 행 제거
df_lr = df_lr.drop(df_lr.index[0:3])

#열 수정
df_lr['년'] = df_lr['통계표'].apply(lambda x : x.split('/')[0])
df_lr['년'] = df_lr['년'].astype(float)
df_lr['월'] = df_lr['통계표'].apply(lambda x : x.split('/')[1])
df_lr['월'] = df_lr['월'].astype(float)
df_lr.rename(columns={'1.3.1. 한국은행 기준금리 및 여수신금리' : '금리'}, inplace=True)
df_lr.drop(columns = '통계표', inplace=True)
df_lr = df_lr[['년', '월', '금리']]

# 인덱스 초기화
df_lr = df_lr.reset_index(drop=True)
  • 결과는 아래와 같습니다.
df_lr

4. 실업률 데이터 처리

  • 실업률 데이터를 확인해줍니다.
  • 양식과 달리 열과 행이 바뀌어 있으므로 전치행렬을 이용해줍니다.
df_uer

df_uer = df_uer.T.reset_index()
df_uer
df_uer.info()

  • 행과 열을 수정하여 데이터를 전처리합니다.
# 행 제거
df_uer = df_uer.drop(df_uer.index[0:2])

#열 수정
df_uer['년'] = df_uer['index'].apply(lambda x : x.split('.')[0])
df_uer['년'] = df_uer['년'].astype('float')
df_uer['월'] = df_uer['index'].apply(lambda x : x.split('.')[1])
df_uer['월'] = df_uer['월'].astype('float')
df_uer.drop(columns = 'index', inplace=True)

# rename으로 0컬럼만 실업률로 이름변경하고 싶었지만 이유를 모르겠으나 컬럼이름을 인식하지 못해 다음처럼 컬럼 전체이름 변경 후 순서 변경
df_uer.columns = ['실업률', '년', '월']
df_uer = df_uer[['년', '월', '실업률']]

# 인덱스 초기화
df_uer = df_uer.reset_index(drop=True)
  • 결과는 아래와 같습니다.
df_uer

5. 데이터 병합

  • 전처리한 기준금리와 실업률을 병합해줍니다.
# 두 데이터프레임을 합칠 기준 열 선택 (예: '년'과 '월' 열을 기준으로 합침)
merged_df = pd.merge(df_lr, df_uer, on=['년', '월'], how='inner')
merged_df

profile

데이터 분석가

@이꾹꾹

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!