본문 바로가기
● 인공지능, 분석/20.12 생활 프로그래밍

[4. CSV] 부동산 실거래가 분석하기. 조건 필터링 / 별도로 저장하기

by 0ver-grow 2021. 1. 11.
반응형

1. rtdown.molit.go.kr/ 접속

 

http://rtdown.molit.go.kr/

 

rtdown.molit.go.kr

2. 파일 다운로드

 

아파트(매매)__실거래가_20210111224340.csv
7.52MB

3. 위 파일을 열어보면 15행까지 메타데이터 (자료에 대한 설명)이 있기에 15행까지 행을 삭제해준다.

4. 파일명을 apt_201910.csv로 변경

5. CSV형 리스트로 만들고 자료 가공하기

import os, re, usecsv # usecsv.py 파일과 같은 위치에 존재
apt = usecsv.switch(usecsv.opencsv('apt_201910.csv')) # apt는 리스트를 품을 리스트
print(apt[:3])
print(len(apt))
'''
64731
'''

# apt는 리스트를 품은 리스트
# 헤더 인덱스를 출력해보자
print(apt[0]) # 각 지표를 품은 헤더 인덱스
'''
['시군구', '번지', '본번', '부번', '단지명', '전용면적(㎡)', '계약년월', '계약일', '거래금액(만원)', '층', '건축년도', '도로명']
'''
# 이를 통해 뽑고자 하는 인덱스만 입력하여 출력가능

헤더를 포함하여 시군구 5개를 뽑아보자

# 6개행의 첫번째 열번뽑기

for i in apt[:6] : # 6개행 뽑기
	print(i[0]) # 가장 첫번째 열

	
시군구
강원도 강릉시 견소동
강원도 강릉시 견소동
강원도 강릉시 견소동
강원도 강릉시 견소동
강원도 강릉시 견소동

 

시군구, 아파트 단지명, 거래금액 출력하기

for i in apt[:6] :
	print(i[0],i[4],i[-4])

'''
시군구 단지명 거래금액(만원)
강원도 강릉시 견소동 송정한신 10900.0
강원도 강릉시 견소동 송정한신 18500.0
강원도 강릉시 견소동 송정한신 13800.0
강원도 강릉시 견소동 송정해변신도브래뉴아파트 25000.0
강원도 강릉시 견소동 송정해변신도브래뉴아파트 20600.0
'''

 

조건 필터링 : 강원도, 120m^2이상, 3억 이하 검색하기

for i in apt :
	try :
		if re.match('강원', i[0]) and i[5] > 120 and i[-4] >= 30000 :
			print(i[0], i[4], i[-4])
	except :
		pass

'''
강원도 강릉시 교동 강릉교동롯데캐슬1단지 34300.0
강원도 강릉시 교동 강릉교동롯데캐슬2단지 37300.0
강원도 강릉시 교동 교동이-편한세상 41000.0
강원도 강릉시 교동 교동이-편한세상 32500.0
강원도 강릉시 입암동 강릉입암동금호어울림 31500.0
강원도 속초시 금호동 보람레이크더하임 34500.0
강원도 원주시 무실동 무실e-편한세상 40500.0
강원도 원주시 무실동 무실e-편한세상 37000.0
강원도 원주시 무실동 무실e-편한세상 44600.0
강원도 원주시 반곡동 원주반곡아이파크 40700.0
강원도 원주시 판부면 서곡리 원주더샵아파트 34000.0
강원도 춘천시 석사동 현진에버빌2차 35500.0
강원도 춘천시 석사동 현진에버빌2차 31200.0
강원도 춘천시 우두동 롯데인벤스 36500.0
강원도 춘천시 퇴계동 휴먼시아남춘천1단지 34000.0
강원도 춘천시 후평동 춘천더샵 30900.0
'''

 

분석결과를 별도의 CSV 파일로 정리하기

import os, re, usecsv # usecsv.py 파일과 같은 위치에 존재
apt = usecsv.switch(usecsv.opencsv('apt_201910.csv')) # apt는 리스트를 품을 리스트

new_list = [] # 빈리스트가 있어야 CSV형 리스트 제작 가능

for i in apt :
	try :
		if re.match('강원', i[0]) and i[5] > 120 and i[-4] >= 30000 :
			new_list.append([i[0], i[4], i[-4]])
	except :
		pass

usecsv.writecsv('over120_lower3000.csv', new_list)

다음형태의 CSV 파일이 만들어짐

 

반응형