파이썬에서 파일을 저장할때 encoding을 설정해주지 않으면 윈도우 환경에서는 파일을 열었을때 괴상한 문자가 나온다.
물론 linux 계열인 mac에서도 encoding을 잘못 설정하면 괴상한 문자가 나오기는 당연!

Encoding

  • encoding은 os마다 다르다. 윈도우에서는 cp949
  • linux에서는 utf8을 사용
  • 아래 코드에서 encoding을 설정하는곳이 있는데
  • 위처럼 윈도우에서 파일을 열어볼 예정이라면 encoding=cp949를 넘겨줘야 한다.
  • linux 계열에서 파일을 열어볼 예정이라면 encoding을 설정할 필요가 없다.
  • 설정할 필요가 없는 이유는 ? pandas to_csv()를 보면 defulat: utf-8이기 때문이다.

부동산 데이터는 국토부에서 가져올수가 있는데,
국토부 데이터는 하나씩 특정 조회를 통해서 가져올 수 있다.
내가 원하는 모든 데이터를 가져오기에는 매우 큰 노가다가 필요하다.

국토부 데이터 파싱하기

  • 국토부에서 특정조건으로 데이터를 다운로드
  • 아래와 같이 parsing이 가능하다.

국토부 데이터 결과는 아래와 같다.

시군구    번지    본번    부번    단지명    전월세구분    전용면적(㎡)    계약년월    계약일    보증금(만원)    월세(만원)    층    건축년도    도로명
0    경기도 성남분당구 구미동    77    0077    0000    까치마을(1단지)(대우롯데선경)    전세    84.79    201905    2    53,000    0    10    1995    미금로 184
1    경기도 성남분당구 구미동    77    0077    0000    까치마을(1단지)(대우롯데선경)    전세    51.32    201905    3    29,000    0    1    1995    미금로 184
2    경기도 성남분당구 구미동    77    0077    0000    까치마을(1단지)(대우롯데선경)    월세    51.32    201905    6    12,000    60    4    1995    미금로 184

공공데이터에서 API를 통한 호출

  • opendata는 API를 제공하고 있어 serviceKey를 발급받고 아래와 같이 조회하면 된다.
  • 파라미터로 사용하는 값은 월데이터 ex: 201901법정동코드이다.
  • 이때 하나의 팁은 numOfRows의 값을 9999로 넘겨주면!? 한번의 요청으로 모든 결과를 가져올수 있다.
  • 이렇게 해야하는 이유는 요청 제한이 있기 때문이다.

공공데이터의 결과는 아래와 같다.

건축년도    년    법정동    보증금액    아파트    월    월세금액    일    전용면적    지번    지역코드    층
0    1992    2019    분당동    30,000    샛별마을(동성)    5    0    1    59.4    35    41135    5
1    1993    2019    분당동    35,000    장안타운(건영)    5    0    1    67.73    66    41135    9
2    1993    2019    분당동    26,500    장안타운(건영)    5    0    1    53.72    66    41135    1

부동산 실거래가를 공공데이터에서 제공하는 API로 다운로드를 받았는데 그럴 필요가 없다는 사실을 알아서 충격이였다. 

 



국토교통부에서 실거래가 공개시스템이 있는데 기간을 설정하면 특정날짜에 실거래가 데이터를 다운로드 받을 수 있다. 실제로 다운로드 받은 데이터와 API를 통해 다운로드 받은 데이터의 개수가 다른것을 확인하니 어디 쪽을 믿어야 하나... 일단 데이터를 다운로드 받고 나서 아래와 같이 파일을 읽으면 된다. 맥에서는 encoding을 `cp949`로 해줘야 한다는것! 처음 header를 찾는 곳을 똑똑하게 할 수 있겠지만 그닥 중요하지 않으니... 아래 코드를 

f = open("/Users/Direcision/Desktop/아파트(매매)__실거래가_20191211233713.csv","r", encoding='cp949')
lines = f.readlines()
cols = lines[15][:-1]
cols = cols.split("\"")
cols = list(filter(lambda x: (x != '') & (x != ',') ,cols))

data = lines[16:]
rows = []
for d in data:
    d = d[:-1].split("\"")
    d = list(filter(lambda x: (x != '') & (x != ',') ,d))
    rows.append(d)
    
 df = pd.DataFrame(rows, columns=cols)

https://doubly12f.tistory.com/85

 

분양가 상한제에 대한 영상을 보고 (+정부의 부동산 정책)

https://land.naver.com/news/magazineView.nhn?arti_seq=86788419 [네이버TV] 분양가 상한제 이후 전국 부동산 시장 전망 분양가 상한제 이후 전국 부동산 시장 전망 land.naver.com 네이버에 이런 영상이 있는지..

doubly12f.tistory.com

의 영상을 보니 주택거래량이 줄어들고 있다고 얘기를 하고 있다. 정말 집값은 오르는데 실제로 거래가 안되고 있을까? 유투브에서도 많은 유투버들이 집가격은 오르고 있는데 거래가 되고 있지 않다고 말한다. 어느정도 거래가 이루어졌고 올해 2019년에는 정말 거래가 많이 이루어지지 않았는지 확인을 해보자! 생각해보니 아파트 실거래 데이터가 분양받은것도 포함이 되어있나?.. 연도별 아파트 공급 물량도 확인해보면 좋을것 같다.

서울특별시 연도별 거래량을 살펴보면 아래와 같다.

년도 거래량
2016 110,222
2017 105,091
2018 81,392,
2019 52,125

약간의 누락이 있어보이긴하지만 편차가 그렇게 크지 않다... 지금 http://rtdown.molit.go.kr/ 의 사이트에서 다운받아서 살펴보니 약간의 누락이 있었다! 역시 데이터는 수집도 중요하지만 유효성 체크가 중요하다!!! 어쨋든

2016년에 비해서 2019년은 절반의 거래량이 발생했고, 2018년인 작년과 비교해도 약 36%가 줄어들었다. 집값만 오르고 정말 부동산 시장은 얼었다는 말이다. 이 빙판에서 누가 넘어지지 않느냐의 싸움이 아닌가 싶다. 

2016년에 중계사 분들은 돈을 참 많이 벌었겠다!!!!!!!!!! 하지만 올해는... 

 

 

파이썬에서 데이터 시각화를 자주 사용한다. 그래도 좀더... 폼나는 그래프를 그리는게 좋겠지? 우리가 그래프를 그리는 이유는 보통 정보를 공유할때 사용하니까! 나만 본다면 사실 그렇게 크지 않지만 그래도 예쁘게 잘 보는게 중요하니까 시각화인만큼!

https://seaborn.pydata.org/

 

seaborn: statistical data visualization — seaborn 0.9.0 documentation

Seaborn is a Python data visualization library based on matplotlib. It provides a high-level interface for drawing attractive and informative statistical graphics. For a brief introduction to the ideas behind the library, you can read the introductory note

seaborn.pydata.org

seaborn은 matplotlib를 기반으로 작성한 라이브러리이고, pandas와 함께 사용할때 훌륭하다. 일단 시각화를 할때는 여러가지의 변수들의 관계를 어떻게 표현을 쉽게 하느냐가 중요한데 그런 dataset-oriented API를 제공하기 때문에 쉽게 작성이 가능하다. 

https://seaborn.pydata.org/introduction.html

 

An introduction to seaborn — seaborn 0.9.0 documentation

Seaborn is a library for making statistical graphics in Python. It is built on top of matplotlib and closely integrated with pandas data structures. Seaborn aims to make visualization a central part of exploring and understanding data. Its dataset-oriented

seaborn.pydata.org

에서 여러가지 어떤 상황에 어떤 방식으로 차트를 나타내는지 나오니... 살펴보면 좋을듯! 데이터를 표현하는것도 중요하지만 어떻게 잘 표현하는지도 연구가 있는거 보면 이렇게 이미 그려진 차트를 보면서 어떻게 표현을 해야할지 인사이트를 얻는것도 중요할듯

서울에서 2017년, 2018년, 2019년 3년동안 가장 많은 거래수가 있었던 동은 어디일까? 거래수가 많은 동별로 매매건수 TOP 20을 뽑아보았다. 데이터는 공공데이터포털에서 아파트 실거래 매매이다. 과연 어디서 가장 많은 거래가 이루어졌을까? 3년간 서울에서는 총 238,608건의 아파트 실거래가 이루어졌다. 

2017년에는 10,5091, 2018년에는 81,392, 그리고 2019년에는 52,125의 거래가 이루어졌다. 2017년 부터 거래수가 약 20%, 30%정도 감소를 하고 있는것을 볼 수 있다.

그렇다면 가장 많은 거래가 있었던 동은 어디였을까? 아래는 전체 서울특별시의 법정동에 속해있는 동의 거래건수를 그래프로 나타낸 결과입니다. 1위에 잇는 동은 약 9000건의 거래가 있었고, 제일 낮은 거래수는 1로 나타나고 있다.

바로 상계동이다. 상계동은 노원구에 속하고 있으며 강북에 위치하고 있다. 상계동 역시 거래건수는 2017년부터 서서히 감소하고 있는 추세이다. 년도별로 거래건수가 거의 모든 동보다 높게 나타나고 있다.

그 외에 Top 20에 속한 법정동은 아래와 같다. 상계동은 2위인 중계동보다 약 1.6배 더 많은 거래를 나타내고 있다.

법정동 거래수
상계동 9018
중계동 5598
신정동 5151
구로동 4498
봉천동 4410
창동 4286
목동 3758
월계동 3637
잠실동 3379
서초동 3230
화곡동 3156
공릉동 3155
신림동 3119
미아동 2920
신내동 2639
시흥동 2584
신월동 2580
길음동 2579
정릉동 2467
방화동 2448

반면 거래량이 1개인 동은 총 10개의 동이 있으며 아래와 같다.

법정동 거래수
예장동 1
신교동 1
오장동 1
능동 1
수송동 1
부암동 1
필동1가 1
구수동 1
필동3가 1
정동 1
구기동 2
혜화동 2
청파동1가 2
미근동 2
동교동 2
갈월동 2
옥인동 3
동선동3가 3
동선동5가 3
삼선동5가 3

3년동안 거래수가 1인 동이 있다는게 정말 신기할다름... 갈수록 점점 거래의 건이 준다는것은 어떻게 해석할수 있을까? 지금 지식에서는 서울의 집주인들이 집가격이 더 오를것이라고 생각하기 때문에 아직은 내놓지 못하고 갖고 있는걸까? 수요는 많을텐데 공급이 없어서 그런걸까? 볼수록 궁금한 부동산의 세계 차근차근 살펴보자

오늘 기사에서 마포구 집 가격이 껑충 상승했다는 기사를 보았다. 정말 마포구에 집값이 깡충 올랐을까?

https://www.ytn.co.kr/_ln/0102_201912031903066596

 

또 서울 집값 '껑충'...전셋값 덩달아 상승

[앵커]정부가 분양가 상한제 확대 시행을 발표한 지 거의 ...

www.ytn.co.kr

서울 마포에 있는 한 아파트입니다.

지난 7월 전용면적 84㎡ 기준 매매가는 13억 5천만 원이었지만, 지난달 실거래가 15억 3천만 원을 기록했습니다.

4개월 사이 매매가가 2억 원 가까이 뛴 겁니다.

다른 신축 아파트도 상황이 비슷한데, 84㎡ 기준 매매가가 17억 원을 넘은 곳도 있습니다

라는 기사가 나왔다. 7월, 11월 실제 매매 가격이 13억 5천에서 15억 3천으로 오른 아파트가 있을까?

e편한세상마포리버파크

e편한세상마포리버파크의 아파트 시세를 보면 월별로 가격이 상승하는것을 볼수 있다. 특히 평당 거래액은 평균으로는 1881.613456 으로 나타난다. 

월별 평당거래액

물론 월별로 평균 평당거래액을 확인해봐도 가격이 상승하는 것을 볼 수 있다. 6월에는 한건의 거래액이 있었는데 이때는 평당거래액이 평소보다 저렴하게 거래되었다. 

e편한세상마포리버파크의 경우에는 매매되는 평수가 2가지 타입이다. 두가 타입에 대해서 평당거래액의 차트를 그려보면 아래와 같다.

월, 평수별 평당 거래액

위 데이터에서 평수별 데이터만 보아도 확실히 눈에 더 잘들어온다. 위에서 6월의 거래의 경우 25평수에 대한 거래 이고, 18평에 대한 거래는 없다. 결과적으로 보면 평수별 평당거래액의 차이가 존재하기 때문에 아파트 전체의 평당거래액의 평균으로 살펴보는것은 오류가 있다는 것을 확인할 수 있었다. 위 차트를 보면 평당 거래액의 평균은 평수가 작을수록 크고, 시간이 지남에따라 점점 상승하는 것을 확실하게 확인이 가능해졌다.

월별, 평수 별 평균 거래금액

거래금액을 보면 평수가 클수록 좀더 가파르게 상승한것이 확인이 된다. 25평의 경우 6월에 14억에 매매가, 4개월이 지난 10월에는 17억에 매매가 되었다. 분명 인테리어, 층수, 향 여러가지의 변수가 있겠지만 4개월동안 3억이라는 아파트 가격이 상승한게 말이 되는가... 위 기사에서는 4개월간 2억이 올랐다는 기사인데, 살펴보면 실제로는 3억이 오른 아파트가 있다. 더 큰 가격이 상승한 아파트가 있겠지만 오늘은 랜덤하게 고른 e편한 세상 마포리버파크에 대해서 알아보았다.

dataframe에서 데이터 읽을때는 iterator를 이용해서 불필요한 데이터는 메모리에 올리지 않는게 좋다.
데이터를 다 메모리에 읽은 이후에 filter를 통해서 걸러내도 좋지만,
데이터가 크면 이 역시도 무리가 있을수 있으니
다음과 같이 iterator=Truechunksize=10000을 지정해서 메모리에 올리는 방법을 선택하는게 좋다.

import pandas as pd
iter_csv = pd.read_csv('data_in/data.txt', iterator=True, chunksize=1000, delimiter='\t', names=cols)
df = pd.concat([chunk[~np.isnan(chunk['cols'])] for chunk in iter_csv])
df = df.fillna('')  

+ Recent posts