요즘IT
위시켓
최근 검색어
전체 삭제
최근 검색어가 없습니다.

요즘 업무를 하다 보면 데이터 관련 단어들을 자주 듣습니다. 특히 데이터 리터러시란 말을 들어본 분들도 있을 것 같습니다. 자세한 정의는 상황마다 조금 다를 수 있지만, ‘현재의 상황을 파악하고, 객관적인 근거의 데이터를 기반으로 성장을 추구한다’는 맥락입니다. 이처럼 많은 관심을 받고 있는 데이터 리터러시의 목적은 크게 보면 조직의 이익 성장에 기여하는 것이지만, 줄여서 보면 데이터를 활용한 데이터 대시보드를 만드는 것으로 볼 수 있습니다.

회원가입을 하면 원하는 문장을
저장할 수 있어요!

다음

회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!

확인

개발

파이썬 스트림릿으로 데이터 대시보드 만들기

년차,
어떤 스킬
,
어떤 직무
독자들이 봤을까요?
어떤 독자들이 봤는지 궁금하다면?
로그인

 

요즘 업무를 하다 보면 데이터 관련 단어들을 자주 듣습니다. 특히 데이터 리터러시란 말을 들어본 분들도 있을 것 같습니다. 자세한 정의는 상황마다 조금 다를 수 있지만, ‘현재의 상황을 파악하고, 객관적인 근거의 데이터를 기반으로 성장을 추구한다’는 맥락입니다. 이처럼 많은 관심을 받고 있는 데이터 리터러시의 목적은 크게 보면 조직의 이익 성장에 기여하는 것이지만, 줄여서 보면 데이터를 활용한 데이터 대시보드를 만드는 것으로 볼 수 있습니다.

 

이번 글에선 데이터 직군이 아니더라도 데이터를 접하며, 비교적 쉽게 따라해 볼 수 있는 파이썬 스트림릿(streamlit)으로 데이터 대시보드 만드는 방법을 살펴보겠습니다.

 

대시보드란?

데이터 대시보드
<출처: 작가, 아이콘: flaticon.com>

 

대시보드는 자동차의 계기판을 통해 속도나 연료 등 자동차 주행에서 확인해야 하는 주요 지표들을 모니터링하는 시스템에서 기원했습니다. 이를 서비스와 비교하면 위 이미지와 같습니다.다시 말해 대시보드는 현재 대시보드 관련 업무를 하고 있다면, 데이터 분석가가 아니더라도 데이터를 활용해 만들어 볼 수 있는 데이터 대시보드의 예시 중 하나입니다.

 

물론 어떤 지표를 확인해야 할지, 어떻게 구성할지 같은 고민들은 어렵지만, 빠르게 만들어 보고 난 이후 세부 내용들은 피드백을 통해 고도화할 수 있습니다. 그 결과 고도화된 대시보드를 통해 현재 비즈니스에 어떤 문제가 있는지 점검하고, 업무의 우선 순위를 고려해볼 수 있습니다.

 

데이터 대시보드
<출처: 작가>

 

이러한 대시보드를 만들기 전, 걱정하는 점은 대시보드 제작 툴을 사용해본 적이 없거나, 혹은 대시보드를 만드는 방법이 다양해서 어떤 툴이 적합할지 잘 모른다는 것인데요. 이미 시중에는 다양한 대시보드 제작 툴이 있고, 제작 과정을 기준으로 각각의 장단점이 있으니 이에 맞게 선택해야 합니다.

 

이번 글에서는 대시보드 개발과 배포라는 관점이 더 중요하므로, 스트림릿(streamlit)과 다른 몇 가지 툴을 먼저 비교해보겠습니다.

 

 

스트림릿(streamlit)이란?

스트림릿(streamlit)
<출처: 작가>

 

스트림릿은 비개발 직군도 상대적으로 쉽게 활용할 수 있는 파이썬을 기반으로 개발할 수 있습니다. 또한 클라우드를 활용하여 결과물을 별다른 비용 없이 배포할 수 있는 서비스입니다. 다른 경쟁 서비스들에 비해 비교적 최신 서비스인데요. ‘A faster way to build and share data apps’라는 설명처럼 머신러닝, 데이터팀, 그 외에도 파이썬을 활용할 수 있다면, 빠르게 데이터 대시보드를 만들고 공유할 수 있습니다. 

 

데이터팀의 경우 데이터로 인사이트를 만드는 것, 대시보드 혹은 모델을 만들어 내는 것엔 익숙하지만 이 결과물을 서버(인프라)에 올리고 관리하는 엔지니어링에는 상대적으로 어려움이 있는데요. 스트림릿은 이를 손쉽게 해결할 수 있어 편리합니다. 

 

 

스트림릿으로 대시보드 만들기

스트림릿으로 대시보드를 만들기 위해 몇 가지 전제해야 할 조건들이 있습니다.

  • 스트림릿은 파이썬 기반으로 돌아가기 때문에 이를 위해 파이썬을 쓸 수 있어야 합니다. (개발 환경 설정이나 패키지 설치 포함)
  • Streamlit.ioGithub의 계정이 있어야 합니다.
  • 깃허브에 푸시(push)를 할 수 있어야 합니다. (2와 3은 배포를 위한 것으로 개인 PC에서 스트림릿을 활용하는 것엔 지장이 없습니다.)

 

스트림릿 데이터 대시보드
<출처: Streamlit>

 

파이썬과 스트림릿을 정상적으로 잘 설치했다면 터미널에 streamlit hello 를 입력하여 위 이미지와 같이 기본으로 제공되는 데이터 프로덕트를 실행시킬 수 있습니다.

 

기대 수명 데이터
기대 수명 데이터 <출처: Gapminder>

 

다음으로 비영리기관 Gapminder에서 무료로 얻을 수 있는 기대 수명(Life expectancy) 데이터를 활용하여 대시보드를 만들어 보겠습니다. 기대 수명 데이터는 나라와 연도별 예상 기대 수명으로 구성되어 있습니다. 

 

오늘은 토이 프로젝트로써 간단하게 1) 우리나라의 연도별 예상 수명을 그리는 그래프 2) 특정 연도를 선택했을 때, 전체 평균 예상 수명 대비 차이를 보여주는 내용으로 만들어보겠습니다. 

 

# 라이브러리import streamlit as stimport pandas as pdimport numpy as np# 데이터 전처리df = pd.read_csv('life_expectancy_years.csv', index_col = 0)df_korea = df.loc['South Korea']meanlife = np.round(np.mean(df_korea))years = pd.to_numeric(df_korea.index)# Streamlit component, layout 구성st.title('???????? Life expectancy of Korea') st.line_chart(df_korea)# slider input을 통한 숫자 입력number = st.slider(   label = 'Pick a number',   min_value = int(np.min(years)),   max_value = int(np.max(years)),   step = 1)number2 = int(df_korea.loc[[str(number)]])# Metriccol1, col2 = st.columns(2)with col1:   st.metric(label = 'Mean Life expectancy: All time', value = meanlife)with col2:   st.metric(label = 'Life expectancy of selected year', value = number2, delta = number2 - meanlife)

 

대시보드를 만들기 위해, 제일 먼저 vscode와 같은 IDE(Integrated Development Environment)를 사용하여 위의 코드를 작성합니다. 이후 결과를 app.py라는 이름으로 만들고, 터미널에서 streamlit run app.py를 실행하면 아래와 같은 결과를 얻을 수 있습니다. 또한 실행 결과 화면을 통해 http://localhost:8501이라는 웹 브라우저에 입력할 주소를 확인할 수 있으며, 아직 배포 전이기 때문에 개인 PC에서만 확인할 수 있습니다.

 

스트림릿 데이터 대시보드
<출처: 작가>

 

코드는 파이썬을 사용해본 적이 있다면, 크게 어려운 내용은 아니므로 스트림릿에 대해서만 설명하겠습니다.

 

스트림릿 데이터 대시보드
<출처: 작가>

 

위 설명을 보고 스트림릿에는 어떤 요소가 있고, 각각 어떤 값들을 입력해야 하는지 궁금할 수 있습니다. 이는 공식 API 레퍼런스 문서를 통해 확인할 수 있는데요. 레퍼런스를 활용한 방법은 마지막 번외 문단에서 다시 설명하겠습니다.

 

데이터 대시보드 배포

이렇게 만든 기대 수명 대시보드는 아직 개인 PC에서 본인만 확인할 수 있습니다. 그래서 다른 사람들도 웹 브라우저를 통해 확인할 수 있도록, 인터넷에 배포 작업을 해야 합니다.

 

데이터 대시보드 배포
깃허브 리포지토리 구성(프라이빗) <출처: 작가>

 

1) 깃허브 리포지토리를 생성합니다. 이때 프라이빗이면 개수의 제한이 생기겠지만, 배포에는 지장이 없습니다.

2) 파이썬 코드를 리포지토리에 업로드 합니다. 이번처럼 필요하다면 데이터 파일도 같이 올려야 합니다.

 

데이터 대시보드 배포
데이터 대시보드 배포
<출처: 작가>

 

3) 이후 https://share.streamlit.io/에 생성해둔 계정으로 로그인한 후, 위와 같이 New app을 누르고 필요한 정보를 적습니다.

 

데이터 대시보드 배포

 

4) 그다음 Share 설정을 통해 앱을 Public으로 전환하고(Make this app public), 웹 브라우저 주소창에 url을 입력하면 누구나 대시보드를 확인할 수 있습니다.

 

 

요약 및 정리

스트림릿을 활용하면 빠르게 데이터 대시보드를 만들어 공유할 수 있습니다. 특히 깃허브와 파이썬을 이용해본 경험만 있다면, 다른 대시보드 제작 툴에 비해 쉽고 가볍게 대시보드를 만들고 배포할 수 있다는 장점이 있습니다.

 

물론 스트림릿을 통해 해결하기 어려운 부분들도 있으니, 조직의 상황에 따라 더 좋은 선택지가 있을 수도 있습니다. 그러나 초보자도 쉽고 빠르게 만들어 볼 수 있다는 점에서 스트림릿은 분명 꽤 만족스러운 선택지가 될 것입니다.

 

 

(번외) API 레퍼런스를 통해 스트림릿을 활용한 방법

데이터 활용을 목적으로 스트림릿을 사용해보고 싶은 분들에게 간단한 팁을 공유합니다.

 

스트림릿 활용
<출처: docs.streamlit.io>

 

API 레퍼런스 주소를 통해 접속하면 위와 같은 화면을 확인할 수 있는데요. 위아래로 스크롤을 이동해 스트림릿에서 어떤 기능들을 제공하는지 확인할 수 있습니다.

 

만약 사용자가 입력값을 선택하면 그 결과를 보여주는 대시보드를 만들겠다고 가정해보겠습니다. 

 

스트림릿 활용
<출처: docs.streamlit.io>

 

이를 위해서는 ‘Radio’ 혹은 ‘Selectbox’를 활용할 수 있습니다. (이 둘의 기능은 동일하지만, UX의 관점에서 약간의 차이가 있습니다.)

 

스트림릿 활용
<출처: docs.streamlit.io>

 

스트림릿에서는 제공 중인 ‘Radio’를 클릭해서 나오는 페이지의 결과 중 우선 1) Example 2) Parameters 두 가지를 확인합니다.

 

‘Example’은 보통 이를 어떻게 사용할 수 있는지 실제 작동하는 코드들을 보여주고, 실행되는 예시 애플리케이션으로 연결해줍니다. 데이터를 간단히 살펴보기 위해 활용한다면 위 코드들을 일부 수정하는 것으로도 목적을 달성할 수 있습니다. 

 

스트림릿 활용
<출처: docs.streamlit.io>

 

만약 ‘Example’보다 다양한 옵션을 활용해 대시보드를 만들고 싶다면, 다시 맨 위로 가서 파라미터의 각 기능들을 살펴봐야 합니다. 예를 들어 연도를 선택하지 않은 상태에서는 다음 선택을 못 하게 하고 싶다면, 이 경우 ‘disabled’라는 파라미터를 ‘True’로 설정하면 된다는 것을 문서를 통해 알 수 있습니다. 이처럼 API 레퍼런스를 참고하면 여러 옵션을 적용해볼 수 있으니 참고해보시면 좋겠습니다.

 

요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.

좋아요

댓글

공유

공유

댓글 0
데이터 프로덕트 개발자
36
명 알림 받는 중

작가 홈

데이터 프로덕트 개발자
36
명 알림 받는 중
돌고 돌아 메디컬 도메인의 R / Shiny 개발자.

좋아요

댓글

스크랩

공유

공유

요즘IT가 PICK한 뉴스레터를 매주 목요일에 만나보세요

요즘IT가 PICK한 뉴스레터를
매주 목요일에 만나보세요

뉴스레터를 구독하려면 동의가 필요합니다.
https://auth.wishket.com/login