-
[python] python 으로 대시보드 만들기 - ChatGPT 도 안 알려준 대시보드 라이브러리 [1탄] Datapane공부를 하다 2023. 11. 5. 14:30
데이터 분석업무를 하다보면 효율적으로 데이터를 제공하고자 할 때 대시보드를 만들곤 한다.
대시보드를 만들어 주는 너무나 좋은 BI 툴들이 많이 있지만, 어떤 경우에는 분석가가 직접적 구현해야 하는 상황도 생기기 마련이다.
나는 Python 을 주로 사용하기 때문에 Python 중 아래의 조건을 만족하는 라이브러리를 찾아 대시보드를 만들고자 했다.
먼저 내가 찾고자 한 형태의 라이브러리는- HTML 형태로 배포가 가능하고
- 여러 페이지/메뉴를 만들 수 있으며
- Plotly 그래프 또한 지원해주면 고맙고
- Open source 로 사용 가능한
특징을 가지고 있기를 바랬다. (사실 나는 R의 Flex Dashboard 같은 형태를 Python 으로 구현하고 싶었다.)
위의 조건을 토대로 Chat GPT 에게 적합한 라이브러리를 물어보았더니, Dash by Plotly 를 추천해주었다.
다만, Dash by Plotly 를 사용하고자 할 때는 서버의 형태로 구현을 해야 해서 간단히 html 로 배포시키기에는 뭔가 간단해 보이지 않았다.
(나는 .to_csv 와 같은 함수로 html 로 띡! 나오기를 바랐던 것이다. 서버가 나오고 하는 순간 동공 지진 👀..)
그래서 다시 한번 Python 으로 대시보드를 만들 수 있는 라이브러리를 문의하였더니 아래와 같은 라이브러리들을 알려주었다.
“Python 으로 대시보드를 만들 수 있는 라이브러리를 알려줘 ”
- Dash by Plotly : Dash는 Python을 사용하여 대화형 대시보드와 웹 애플리케이션을 빌드하는 강력한 웹 애플리케이션 프레임워크입니다. Plotly와 통합되어 있어 다양한 대화형 차트와 그래프를 만들기에 용이합니다.
- Streamlit: Streamlit은 Python 라이브러리로, 최소한의 코드로 웹 애플리케이션을 만들 수 있도록 도와줍니다. 데이터 스크립트를 신속하게 웹 애플리케이션 및 대시보드로 변환하는 데 적합합니다.
- Bokeh: Bokeh는 Python에서 대화형 시각화를 만들기 위한 다목적 라이브러리입니다. 대화형 대시보드를 만드는 데 많은 시각화 유형을 지원합니다.
- Panel: Panel은 Matplotlib, Bokeh 및 Plotly와 같은 다른 Python 시각화 라이브러리와 잘 작동합니다. 다양한 플롯과 위젯을 결합하여 대화형 대시보드를 만들 수 있습니다.
- Plotly Dashboards: Plotly는 Python 라이브러리와 통합되는 클라우드 기반 대시보드 서비스를 제공합니다. Plotly 플랫폼에서 직접 대화형 대시보드를 만들고 공유할 수 있습니다.
그러나 Chat GPT 가 알려준 위의 라이브러리는 어딘가에서 하나씩 만족하지 않았고… 결국 구글을 뒤져보았다.
그렇게 뒤지고 뒤져 찾아낸 것이 “Datapane” 이었다.
일단 구현이 직관적이고 간단해서 바로 채택하였다.
그리고 Layout 의 구성이 심플하지만 있을건 다있다. (Tab, Select..)
또 Data Table 을 사용하면 테이블 내에서 SQL 문을 사용하거나 Export 기능이 지원된다는 점도 매우 만족스러웠다.사용해보기
아래 코드는 내가 간단하게 만들어본 페이지이다.
Blocks 에 Page 를 2개 넣었고, Page 에는 그래프와 테이블을 각각 넣었다.
또한 Markdown 도 함께 넣을 수 있어 제목이나 설명등을 함께 넣기에도 아주 만족스러웠다.
대시보드뿐만 아니라 분석 리포트를 만들때에도 유용하게 사용할 수 있을것 같다.
import datapane as dp from vega_datasets import data import plotly.express as px df = data.iris() columns = list(df.columns) g_fig1 = px.scatter(df,x='sepalLength',y='sepalWidth',color='species') g_fig2 = px.scatter(df,x='petalLength',y='petalWidth',color='species') # g_fig view = dp.Blocks( dp.Page( title = 'Sepal' , blocks = [ '# Markdown available' , dp.Plot(g_fig1, label="Plot") , dp.DataTable(df[['sepalLength','sepalWidth','species']], label="Data") ] ) ,dp.Page( title = 'Petal' , blocks = [ '## TEST' , dp.Plot(g_fig2, label="Plot") , dp.DataTable(df[['petalLength','petalWidth','species']], label="Data") ] ) ) dp.save_report(view,path='test.html')
결과물
해당 코드의 결과물은 여기에서도 확인할 수 있다.
(다다음 편(3편) 에서 만든 html 을 git page 를 이용해 report 하는 내용을 다뤄보려고 한다. )
아래의 Docs 와 Github 을 참고하면 멋진 html 을 만들어 볼 수 있을것이다!
다음 편은 또 다른 라이브러리를 하나 더 소개할 예정이다.
Datapane Docs : https://docs.datapane.com/Datapane
Introduction Note Datapane is no longer actively maintained. We've made the difficult decision to stop driving this project and therefore we will no longer actively respond to issues or pull requests. If you would like to take over maintaining this project
docs.datapane.com
Datapane github : https://github.com/datapaneDatapane
Create and share reports from Python. Datapane has 19 repositories available. Follow their code on GitHub.
github.com
'공부를 하다' 카테고리의 다른 글
[python] python 으로 대시보드 만들기 - ChatGPT 도 안 알려준 대시보드 라이브러리 [2탄] Jupyter-flex (1) 2023.11.12 [책] 그로스 해킹 - 양승화 (0) 2023.11.06 [Plotly] Y axis 단위 변경하기 (0) 2021.11.05 [Python] 데이터 시각화 라이브러리 (Plotly) (0) 2021.10.17 [Scikit-learn]시계열 데이터의 클러스터링(Feat. Dynamic Time Warping) (0) 2020.12.06