데이터과학 삼학년

Ipywidgets을 활용한 시각화 (feat. jupyter notebook) 본문

Data Visualization & DataBase

Ipywidgets을 활용한 시각화 (feat. jupyter notebook)

Dan-k 2020. 1. 14. 19:10
반응형

데이터 분석을 할 때 시각화는 필수이다.

시각화를 위한 툴은 많고...그 많은 툴들을 효과적으로 사용하기 위해 ipython을 활용하는 방법을 소개하려 한다.

 

만약 시각화하여 확인해 보아야할 feature가 200개, 10000개가 넘어간다면....

figure를 for문을 돌며 200개, 10000개를 다 그려 보는 것은 불필요하며 보기도 어려울 것이다.

 

이를 해결하기 위해 jupyter notebook 내에 ipytwidgets을 활용하면 라디오 버튼이나 필터링 버튼으로 깔끔하게 확인할 수 있다.

 

백마디말보다 코드로...

import pandas as pd
from ipywidgets import *
import seaborn as sns

df = pd.DataFrame({'kim':[1,2,3,4,5,6,7,16,26],
                  'lee':[11,12,31,14,51,16,71,100,180],
                  'park' : [121,142,311,124,531,156,761,170,180]})
                  
                  
def box_plot(feature):
    temp = df[str(feature)]
    sns.boxplot(temp.values)
interact(box_plot,feature= list(df))                  

box plot을 먼저 그려보면!!!

나는 column별로 boxplot을 확인할 수 있다!!!

 

 

 

만약 두개의 상관관계를 본다면 feature 두개를 받을 수 있다.

feature1에서 kim, lee, park 중 kim을 선택했다면

feature2에서는 lee, park 이 나오게 필터를 만들어주면 된다.

코드는 아래와 같다!!!

def show_joint_plot(data=None):
    try:
        feature_1 = Dropdown(options = list(data.columns.to_list()))
        feature_2 = Dropdown()
        def update(*args):
            temp_lst = data.columns.to_list()
            temp_lst.remove(feature_1.value)
            feature_2.options = temp_lst
        feature_2.observe(update)
                             
        def joint_plot(feature_1 = feature_1, feature_2 = feature_2):
            sns.set(style="white", color_codes = True)
            g = sns.jointplot(x = feature_1, y= feature_2, data= df, color ='b',size = 7)
        interact(joint_plot,feature_1 = feature_1, feature_2 = feature_2)
    except (IndexError,TraitError):
        pass

show_joint_plot(df)

이런 결과를 얻게 된다.

 

 

 

ipython widget을 활용하면 아무리 많은 data 라도 깔끔하게 figure를 만들어서 볼 수 있다!

 

유용한 기술...모두 참고하시고..더 자세한 사항은 ipywidget에 들어가서 확인 고고!

728x90
반응형
LIST

'Data Visualization & DataBase' 카테고리의 다른 글

Folium 지리 정보 시각화 tool  (0) 2020.06.17
시계열 데이터 시각화 using plotly  (0) 2020.06.05
Plotly 시각화 툴  (0) 2020.05.21
Bokeh interactive legend  (0) 2020.02.14
Bokeh - Web visualization  (0) 2020.01.17
Comments