파이썬/ai

[ai, Python] 인천시 집 값 예측 프로그램-1(데이터 수집 및 전처리1)

hojung 2022. 5. 17.
728x90
반응형

1. 인천시 집 값 예측 프로그램


1. 데이터 수집 

학교 인공지능 응용 시스템의 파이널 프로젝트로 인천시 집 값 예측 프로그램을 만드는 프로젝트를 실시하기로 했다. 

머신러닝을 시키려면 우선 학습을 시킬 데이터가 있어야한다. 따라서 나는 

인천광역시 주택 매매 실거래가 데이터를 엑셀 파일로 얻기 위해서 국토교통부 실거래가 공개시스템을 이용했다. 

또한 우리는 2022년 05월 13일 회의에서 집 값에 영향을 미치는 변수로 주변 스타벅스 개수, 학교 및 어린이집 개수, 대규모 점포 개수, 병원 개수, 주변 지하철 역 개수, 공원 개수로 특정하고 공공데이터 포탈 등을 이용해 데이터를 수집하기 시작했다. 


2. 데이터 수집의 어려움

국토 교통부 실거래가 공개시스템을 이용해 다운로드 받는 .xlsx 파일에는 다음과 같이 데이터가 들어 있었는데 여기서 문제가 하나 있었다. 바로 우리는 법적 행정구역 상 가장 작은 단위 (읍/면/동)으로 모든 데이터들을 분류하기로 했었는데 (읍/면/동)만 나타내주는 열이 없었던 것이다. 그 와중에 나는 openpyxl이라는 python 라이브러리를 알게 되어 이 라이브러리를 이용해서 데이터를 수집하기로 하였다. 


3. openPyXL

여기서 내가 이 라이브러리를 사용하는 목적은 1열에 존재하는 데이터에서 (읍/면/동)만을 추출해 새로운 열에 추가해주기 위해서였다. 따라서 데이터의 특성을 잘 이해할 필요가 있었는데 모든 데이터를 살펴본 결과 (읍/면/동)의 이름이 3글자를 넘지 않는다는 것을 알게 되었다. 따라서 1열의 데이터에서 파이썬 코드로 뒤에서 3개의 문자를 추출한 다음 B열에 새로 저장을 해주기로 하였다. 

다음은 내가 작성한 1열의 문자열을 뒤에서부터 3글자 추출해 2열에 저장하는 코드이다. 

import pandas as pd
import openpyxl
wb = openpyxl.load_workbook(
    "housePricePrediction.xlsx", read_only=False, data_only=False)
ws = wb['Sheet1']

# data

var = []

for x in range(18, ws.max_row+1):
    item = str(ws.cell(row=x, column=1).value)
    realitem = item[-3:]
    var.append(realitem)
    ws.cell(row=x, column=2).value = realitem
# print(var)

wb.save('housePricePrediction2.xlsx')

4. 결과 

위의 코드를 수행한 결과 내가 지정한 폴더( .py 파일과 같은 폴더에 존재해야한다. ) 에 housePricePrediction2.xlsx 라는 이름으로 새로운 엑셀 파일이 생성되었다. 

내용을 확인해보면 다음과 같다. 

동의 이름이 잘 추출되어 2열에 저장된 것을 확인할 수 있다. 

728x90
반응형

댓글