[부동산 | Phase3] 아파트 현황조사(고양시) - matplotlib 기본 (2부)



 지난 시간 포스팅에 연이어 (2)번 질문으로 이번에는 '행정동별 공급된 세대수'를 수평막대그래프로 시각화해 보겠습니다.

matplotlib의 기초를 어느 정도 익혔으니, 곧바로 코딩을 살펴 보겠습니다.


b1 = pd.read_excel('C:\\Users\\USER\\Desktop\\example\\a8_APTstat_Goyang.xlsx')

x1 = b1['세대수']
y1 = b1['행정동']

plt.barh(y1, width=x1, height=0.5, align='center', color='blue', alpha=1.0, edgecolor='grey', linewidth=0.3)
plt.tick_params(axis="y", labelsize=7)
plt.grid(axis='x', linestyle='-.', linewidth=0.5, color='black', alpha=0.3)
plt.tick_params(axis="x", labelsize=8 )
plt.show()



plt.barh()   수평막대그래프 그리기



 1) x1 = b1['세대수'] 그리고 y1 = b1['행정동']


 수평 막대 그래프이므로, x축에 세대수를 표시하고 y축에 행정동을 표현하여야 겠습니다.



 2) plt.barh(y1, x1, height=0.5, align='center', color='blue', alpha=1.0, edgecolor='grey', linewidth=0.3)


 barh() 함수로 수평막대그래프를 그리게 됩니다. 아래 표기된 공식 문서상으로 두번째로 언급된 인자를 width로 인식합니다.  


matplotlib.pyplot.barh(ywidthheight=0.8left=None\*align='center'\*\*kwargs)


 그런데, 필자의 코드로는 width에 x1 array를 대입했습니다. 무슨 의미 일까요? 

 x1은 세대수를 의미합니다. width는 '가로의 폭'입니다. 즉, 막대가 가로로 그려지기에 가로폭은 곧, 세대수 값을 의미합니다. y축의 각 값별로 가로의 폭 값은 x1 변수의 세대수 값을 넣겠다는 의미가 됩니다. 마찬가지로, 지난 시간 그린 bar()함수의 공식 문서 상으로는 두번째 인자는 height으로 표기하고 있습니다. height은 막대의 높이인데, 높이값을 단지수로 배정한 것입니다. 이러한 차이를 알고 적절한 series를 그리려는 그래프의 형태에 따라, 잘 배분해 주어야 하겠습니다.


 나머지 인자는 bar()함수와 다를 바가 없어서, 지난 포스팅을 참조하시는 것으로 대체하도록 하겠습니다.

  

링크 : [부동산 | Phase3] 지역단위 아파트 현황조사 - Data Visualization / matplotlib (1부)



  3) plt.tick_params(axis="y", labelsize=7)


 tick_params() 함수로 y축의 라벨 사이즈를 조금 줄였습니다.



 4) plt.grid(axis='x', linestyle='--', linewidth=0.5, color='black', alpha=0.3)


 grid()함수로 눈금선을 표현하였습니다. 지난 시간과 달리, 눈금선 표시를 '-.'로 바꾸어 보았는데요. 눈금선의 모양이 바뀐 것을 확인하실 수 있습니다. 그리고 axis='x'로 두어야 눈금선이 수직으로 표시됩니다.



이제 실행 결과를 살펴 보겠습니다.


내림차순의 형태로 데이터가 표현된 것이 확인 됩니다. '행신동'과 '일산동'에 압도적으로 많은 수의 세대가 공급되었음이 확인 됩니다. 고양시에서 '행신동'과 '일산동'은 제 1기 일산신도시를 만들 당시 아파트가 굉장히 많이 건축된 곳들 입니다. 세대수가 많고 상권도 그만큼 발달해 있을 수 밖에 없습니다. 그런데, 최근 들어, 원흥동과 신원동, 식사동 일대를 위주로 추가적인 주택지구가 많이 공급되었습니다. 우리가 만약 각 동별 시계열 데이터를 통합하여 데이터를 구성하여 본다면, 데이터만 가지고도 고양시에 대해 잘 모르시는 분이 보았을 때, 어느 지구가 새롭게 구성된 신도시인지를 가늠할 수 있을 것입니다.

 시계열 데이터상 최근 5년 이내 세대수 공급이 가파르게 증가한 지역이 새롭게 개발된 지역임을 뜻할 것이기 때문입니다. 상가에 관심 있는 분들도 그러한 데이터를 살펴 보신다면, 상권 입지 분석에 도움이 될 것입니다.





 이번에는 행정동별 건령을 똑같은 수평막대그래프로 살펴 보겠습니다.


x1 = b1['건령']
y1 = b1['행정동']

plt.barh(y1, width=x1, height=0.5, align='center', color='blue', alpha=1.0, edgecolor='grey', linewidth=0.3)
plt.tick_params(axis="y", labelsize=7)
plt.grid(axis='x', linestyle='-.', linewidth=0.5, color='black', alpha=0.3)
plt.tick_params(axis="x", labelsize=8 )
plt.show()


 x1 변수에 배정한 series만 '건령'으로 바꾸어 주었으며, 실행결과는 아래와 같습니다.


 행신동은 세대수가 가장 많이 공급되었지만, 평균건령은 다른 지역 대비로 매우 높다고 할 수는 없는 수준입니다. 즉, 많은 세대수가 있어 상권 및 인프라가 잘 발달 되었으면서도, 건령이 오래되지 않은 아파트가 행신동에 포진해 있을 가능성이 높습니다. 한편, 덕은동은 공급된 세대수도 적은데 평균건령도 30년이 넘어 갑니다. 즉, 오래도록 아파트 공급이 부진한 지역임을 의미합니다. 법원 경매 입찰 전략상 오래된 아파트를 목표로 하시는 분들에겐 좋아 보일 수 있지만 주변 인프라가 행신동에 비해 매우 빈약할 수 있음을 데이터가 말해 주고 있습니다. 


 그런데, 행정동별 세대수 그래프와 행정동별 건령 그래프를 별도로 보기엔 불편함이 따릅니다. 


 이에 다음 포스팅에서는 행정동별 세대수 그래프는 막대로, 행정동별 건령 그래프는 선형 그래프로 한 개의 chart에 그리는 방법을 살펴 보도록 하겠습니다.




# 이번 포스팅 학습 내용

a. matplotlib.pyplot.barh() 수평막대그래프 그리기




 (3부에서 계속..)


 


반응형

+ Recent posts