뱁새유니버스

파이썬 예제 부동산 실거래가 CSV 읽고 쓰기

by 뱁새유니버스

1. 개요

안녕하세요! 뱁새유니버스입니다. 지난 시간에 부동산 실거래가를 공공데이터포털(data.go.kr)로부터 가져오는 것까지 해봤는데요. 이번 시간엔 dataframe으로 표현한 부동산 실거래가를 csv로 저장하고 csv를 읽고 쓰는 것까지 진행해보겠습니다. 외부에서 csv 파일형식으로 데이터를 받거나 저장할 때 많이 쓰입니다.

부동산실거래가를 가져오는 것은 아래 페이지에서 확인해보시기 바랍니다.

https://idealist.tistory.com/58

 

국토교통부에서 부동산 실거래목록을 실시간으로 표시해보자! 파이썬 공공데이터포털 API 부동

1. 개요 파이썬으로 프로그램을 개발하는건 마치 레고 조립하는 것과 같습니다. 자동차를 만들고 싶으면 프레스 모듈, 차체BIW 모듈, 도장 모듈, 의장 모듈, 엔진 모듈 등을 import해서 개인용 자동

idealist.tistory.com

 

2. 내용

(1) CSV란 뭘까?

CSV(영어: comma-separated values)는 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일입니다.

메모장이나 엑셀에서 읽을 수 있고 프로그램 개발을 실무에서 하시다 보면 많은 곳에서 csv 파일 형식을 많이 접할 수 있습니다.

 

(2) 부동산 실거래가를 csv로 저장하기

아래 코드 마지막 줄에서 df 변수에 담고 df.to_csv('propDataMap.csv')로 저장하면 csv가 저장되는 것을 확인할 수 있습니다.

import requests
import xmltodict
import pandas as pd
import json
from datetime import datetime

def get_lawd_cd(address):
    url = "http://apis.data.go.kr/1741000/StanReginCd/getStanReginCdList"
    key = "인증받은 decoding api키값"
    params = {"serviceKey": key, "pageNo": "1", "numOfRows": "3", "type": "json", "locatadd_nm": address}
    r = requests.get(url, params=params)
    _json = r.json()
    results = _json.get("StanReginCd")
    if len(results) > 0:
        return results[1].get("row", [])[0].get("region_cd")[0:5]
    return None

LAWD_CD = get_lawd_cd("경기도 과천시")
DEAL_YMD = "202210"
key = "인증받은 decoding api키값"
url = "http://openapi.molit.go.kr:8081/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptTrade"
params = {"serviceKey": key, "LAWD_CD": LAWD_CD, "DEAL_YMD": DEAL_YMD}


req = requests.get(url, params=params)
result = xmltodict.parse(req.text)
items = result.get("response").get("body").get("items").get("item")

jsonString = json.dumps(items) #list를 json방식으로 업데이트

df = pd.DataFrame(items)
display(df)

df.to_csv('propDataMap.csv')

그러면 jupyter notebook에서 아래와 같은 csv가 만들어지는 것을 확인할 수 있습니다.

 

(3) csv를 파이썬에서 읽기

아래 코드를 실행하면 csv를 파이썬에서 읽습니다.

#csv를 import한다.
import csv

#utf-8 인코딩 설정 및 해당 파일(propDataMap.csv) 읽기 
file = open('propDataMap.csv', 'r', encoding='utf-8')

csvReader = csv.reader(file)
for line in csvReader:
    print(line)
file.close()

결과값은 아래와 같습니다.

 

(4) csv를 파이썬에서 쓰기

file에 csv를 열기 위한 함수를 저장합니다. open함수에 첫번째 파라미터는 csv이고, 두번째 w는 write입니다. utf 8로 인코딩을 맞춰주고 실행합니다.

import csv 

file = open('propDataMap.csv', 'w', encoding='utf-8')
writer = csv.writer(file)
writer.writerow(['6', '140,000', '중개거래', '2020', '2022', '부림동', '센트럴파크푸르지오써밋', '10', '22', '84.99', '경기 과천시', '96', '41290', '12', '', ''])
writer.writerow(['7', '130,000', '중개거래', '2020', '2022', '부림동', '센트럴파크푸르지오써밋', '10', '22', '84.99', '경기 과천시', '96', '41290', '12', '', ''])
file.close()

그러면 결과 값이 아래와 같이 나옵니다. wirte인 w값을 입력하면 기존 propDataMap.csv에 있던 5개 행이 사라지고 2개의 새로운 행이 추가됩니다.

그런데 csv를 다시 불러오니 기존에 있는 행이 다 날라가고 2개의 행만 있습니다.

밑에 계속해서 데이터를 추가하려면 append의 a로 두번째 파라미터 값을 변경해주면 됩니다.

이렇게요.

import csv

file = open('propDataMap.csv', 'a', encoding='utf-8', newline='')
writer = csv.writer(file)
writer.writerow(['6', '140,000', '중개거래', '2020', '2022', '부림동', '센트럴파크푸르지오써밋', '10', '22', '84.99', '경기 과천시', '96', '41290', '12', '', ''])
writer.writerow(['7', '130,000', '중개거래', '2020', '2022', '부림동', '센트럴파크푸르지오써밋', '10', '22', '84.99', '경기 과천시', '96', '41290', '12', '', ''])
file.close()

아래처럼 이어서 데이터가 적재되는 것을 확인하실 수 있습니다.

 

3. 마치며

이번 시간엔 부동산 실거래가를 csv 파일 형식으로 저장하고, 파이썬에서 csv 읽고 쓰는 것까지 해봤습니다.

질문이 있으시면 댓글 남겨주세요! 함께 공부합시다.

이 글을 보는 모든 분들 오늘 하루가 행복하시길 바랍니다.
감사합니다.

반응형

블로그의 정보

가슴이 웅장해지는 모든것

뱁새유니버스

활동하기