파이썬(Python)/부산시 미분양 아파트 현황

[부동산|3|Plotly] 부산시 미분양 아파트 현황 - Plotly 시각화

JJ Goh[Certified customs broker] 2020. 8. 20. 08:53

[부동산|3|Plotly] 부산시 미분양 아파트 현황 - Plotly 시각화

 
 
앞선 포스팅에서는 공공데이터포털에서 Data Mining을 위한 open API 활용신청과 XML parsing 및 데이터 가공과정을 빠르게 정리하였습니다.
 
 모두 기존 경기도 미분양 아파트 현황 및 니트릴 장갑 수출입현황 주제를 다룰 때, 상세하게 다루었던 부분들이기 때문에 Plotly 시각화 과정도 그와 동일하다고 보시면 되겠는데요. 
 
 다만, 이번 포스팅을 통해서는 format을 조금 바꾸어 보았습니다. 기존 3D scatter plot이 들어간 자리에 Pie chart를 넣고, '위도'와 '경도'정보를 사용하여 Mapbox를 활용해 아파트의 위치 등에 관한 정보를 표시해 보고자 합니다.
 
 그럼 plolty 시각화 코드를 살펴 보시겠습니다.
 
 
 

Plotly 시각화

 
 
 마찬가지로 지난번 코딩 때 재활용을 염두에 두고 함수 선언을 통해 작성한 코드를 조금만 변경하도록 하겠습니다.
 
fig = make_subplots(
    rows=3, cols=2,
    shared_xaxes=True,
    vertical_spacing=0.03,
    specs=[[{"type": "table", "colspan":2},None],
           [{"type": "bar"}, {"type": "domain"}],
           [{"type": "bar"}, {"type": "domain"}]
            ])

fig.add_trace(
    go.Table(
        header=dict(
            values=["구", "동", "상세주소", "전용면적(M2)", "시공사", "시행사", "준공여부",
                 "민간/공공","임대/분양", "총분양가구수", "미분양가구수", "입주예정월",],
            font=dict(size=10),
            align="center"
        ),
        cells=dict(
            values=[df[k].tolist() for k in df.columns[0:12]],
            align = "right")
    ),
    row=1, col=1)
 

 조금 달라진 부분은 specs 부분인데요. 3D scatter plot을 (2,2) 및 (2,3)의 위치에 배치하고자 type을 scene으로 배정하였던 것을 이번에는 domain으로 변경하였습니다. Plotly에서 pie chart는 domain의 type으로 분류토록 하고 있습니다.

 

 

 type과 관련하여 그 내용을 참조하실 수 있도록 plotly에서 제공하는 아래의 공식참조 정보를 참고하시면 되겠습니다.

 

- Each item in 'specs' is a dictionary.
    The available keys are:
    * type (string, default 'xy'): Subplot type. One of
        - 'xy': 2D Cartesian subplot type for scatter, bar, etc.
        - 'scene': 3D Cartesian subplot for scatter3d, cone, etc.
        - 'polar': Polar subplot for scatterpolar, barpolar, etc.
        - 'ternary': Ternary subplot for scatterternary
        - 'mapbox': Mapbox subplot for scattermapbox
        - 'domain': Subplot type for traces that are individually
                    positioned. pie, parcoords, parcats, etc.
        - trace type: A trace type which will be used to determine
                      the appropriate subplot type for that trace

 

 

 

 

 

 

 

 이제 이번에 추가하기로 한 pie chart에 관한 코드를 보시겠습니다.

fig.add_trace(go.Pie(labels = ['분양완료가구수','미분양가구수'],
                     values =[df['총분양가구수'].sum(), df['미분양가구수'].sum()], title="전체미분양가구수비율",
                     titleposition='bottom center', pull=[0,0.1], showlegend=False), row=2, col=2)


fig.add_trace(go.Pie(labels=['준공완료후분양완료가구수','준공완료후미분양가구수'],
                     values=[df5['총분양가구수'].sum(), df5['미분양가구수'].sum()],
                     title="준공완료후전체미분양가구수비율",
                     titleposition='bottom center', pull=[0,0.1], showlegend=False), row=3, col=2)

 

 Pie chart의 다양한 설정에 관해서는 아래의 포스팅에서 자세하게 다루었었는데요. 이번 표시에서도 그 범위를 크게 벗어나지 않기 때문에 자세한 사용방법은 참조하실 수 있도록 링크를 아래 걸어 놓도록 하겠습니다.

 

 

[무역|8|Plotly] 향수 수출입 - Pie Chart 라벨표시, Donut chart로 변환, 특정섹터 띄우기


 다만, parameter 몇가지만 간단히 언급하고 넘어 가겠습니다.

 

 (1) pull 

 

 특정한 섹터를 띄울 때 사용됩니다. Pie chart에서 특정 섹터만 원래의 구형에서 분리하여 띄우기 때문에 강조하여 보여지는 효과가 있습니다.

 

 (2) labels

 

 이 인자에서 설정한 라벨값은 hovering data에서 표시되며, 범주에서도 그 값이 활용됩니다. 

 

 (3) values

 

 Plotly pie chart에서는 그 값을 정수로 제공하더라도 표시값을 % 로 환산하여 chart를 그려 줍니다. 

 제시된 코드에서는 pandas DataFrame의 sum()메소드를 활용하여 raw data상 전체 분양가구수의 합계와 미분양가구수 합계값을 제공토록 한 것이며, 정수로 제공됩니다.

 

 하지만, plotly는 이를 다시 값 간의 상대적인 비율을 계산하여 % 로 표시하게 됩니다.

 

 (4) showlegend

 

 범례를 표시할 지 여부를 설정합니다. 

 make_subplots()에 의해 한 화면에 구성되는 차트가 다양하여 범례가 많으면 헷갈리기 쉽습니다. 구분이 용이하거나, hovering data를 통해 그 값이 쉽게 확인될 수 있는 차트에 대해서는 범례가 생략될 수 있도록 하는 것이 좋습니다.

 

 (5) titleposition

 

 pie chart의 제목을 어느 위치에 둘지 설정합니다. 'bottom center'는 pie chart 의 중앙 하단부에 제목을 위치하게 합니다.

 

 

 그럼 이제 시각화 결과물을 확인해 보겠습니다.

 

 

 

 pie chart의 hovering data까지 모두 정상적으로 잘 표출되는 것이 확인됩니다.

 

 다음 포스팅에서는 위도, 경도 정보를 활용하여 mapbox로 지도시각화를 진행해 보도록 하겠습니다.

 

 

 

NPU(엔피유) 관세사무소

대표관세사 고장주

Tel) 031-986-7190

E-mail) sales@npucus.com

[NPU관세사무소 프로모션 페이지] https://www.tradenpu.com/npu_cus/

[무역비지니스 인텔리전스 서비스 | TradeNPU] https://www.tradenpu.com

[파이썬 실용 예제. 무역과 공공데이터] https://pdatinmylife.tistory.com

Certified Customs Broker JangJu Goh

Executive Customs Broker @ NPU Customs Consulting

CEO @ JG TradePlus

sales@npucus.com

Trade Compliance / Customs clearance management at foreign company

Working experience of Air export freight forwarding

Data Visualization / Independent development of business automation application – copyright of JGPO_Manager, JG Data Center, AutoCC and etc.

B2B consignment & direct export/import, B2C Overseas Buying Office consulting

Alibaba.com B2B trade / taobao B2C trade / Amazon.com global selling etc. Online trade regulation consulting.

Import license / Quarantine

English communication available

[TradeNPU for partnership proposal - JGTP] https://www.tradenpu.com/jgtp/

반응형