太實用了!4種方法教你輕鬆製作互動式儀表板!

數據分析那些事
10 min readJun 8, 2022

--

讓客戶深刻記住你的資料洞察和發現的最好方式,是建立互動式儀表板。

為什麼要互動呢?一方面是比較有趣,另一方面是客戶對動作的記憶比靜態的洞察力更深刻。

在本文中,我給大家分享 4 款 Python 工具包,使用它們為資料科學專案建立互動式儀表板非常的棒。喜歡本文記得收藏、關注、點贊。

1、Widgets

Ipywidgets(縮寫為 Widgets) 是一個程式碼簡單直觀的互動式包,它為 Jupyter Notebooks 中的 GUI 提供 HTML 架構。

該包允許我們直接在 Jupyter Notebook 單元中建立互動式儀表板。

只需幾行程式碼,你就可以將 Jupyter Notebook 改為儀表板。讓我用幾行程式碼展示如何做到這一點。

首先,我們需要安裝所需的包

pip install ipywidgets

然後,我們需要在 Jupyter Notebook 中啟用 Ipywidgets。要啟用它,請在命令提示符中傳遞以下程式碼。

jupyter nbextension enable --py widgetsnbextension

我們可以在 Jupyter Notebook 中建立互動式儀表板,並配備所有必要的軟體包。我將使用泰坦尼克號樣本資料進行舉例。

import seaborn as sns
titanic = sns.load_dataset('titanic')
titanic.head()

我想建立一個互動式儀表板,獲取按類別變數分組的泰坦尼克號票價平均值。在這種情況下,使用如下程式碼:

#Creating the interactive dashboard
from ipywidgets import interact
@interact
def create_fare_plot(col = titanic.drop(['fare', 'age'], axis =1).columns):
sns.barplot(data = titanic, x = col, y ='fare')
plt.title(f'Mean Bar Plot of the Fare grouped by the {col}')

透過新增@interact程式碼,我們啟動了互動過程。

2、Voila

Voila-dashboards 是一個簡單的 Python 包,它將一個簡單的 Jupyter Notebook 變成一個漂亮的 Web 儀表板。

只需一行安裝程式碼,我們就可以快速渲染 Jupyter Notebook。

讓我們安裝 Voila-dashboards

pip install voila

完成 Voila 包的安裝後,重新整理 Jupyter Notebook 並檢視 notebook 選項卡。在那裡你會發現一個新的 Voila 按鈕。

現在按下按鈕,即可自動生成 Voila 儀表板。

3、Dash by Plotly

Dash by Plotly 是一個開源 Python 包,它是基於 Plotly 視覺化的低程式碼框架包。

要試用 Dash,先安裝軟體包。

pip install dash

安裝完成後,我將使用以下程式碼建立一個簡單的 Titanic 儀表板。

import dash
from dash import dcc, html
import plotly.express as px
import pandas as pd
import seaborn as sns
app = dash.Dash()
df = sns.load_dataset('titanic')
fig = px.scatter(
df,
x="fare",
y="age",
size="pclass",
color="alive",
hover_name="embark_town",
log_x=True,
size_max=60
)
app.layout = html.Div(children = [
html.H1(children='Titanic Dashboard'),
dcc.Graph(id="fare_vs_age", figure=fig)])

if __name__ == "__main__":
app.run_server(debug=True)

執行上述程式碼後,將在預設(http://127.0.0.1:8050/)中啟動儀表板

我們可以新增一個回撥互動來讓使用者輸入具有特定的輸出。

import dash
from dash import dcc, html, Input, Output
import plotly.express as px
import pandas as pd
import seaborn as sns
app = dash.Dash()
df = sns.load_dataset('titanic')
fig = px.scatter(
df,
x="fare",
y="age",
size="pclass",
color="alive",
hover_name="embark_town",
log_x=True,
size_max=60
)
app.layout = html.Div(children = [
html.H1(children='Titanic Dashboard'),
dcc.Graph(id="fare_vs_age", figure=fig),
#Add interactive callback here
html.H4("Change the value in the text box to see callbacks in action"),
html.Div([
"Input: ",
dcc.Input(id='my-input', value='initial value', type='text')
]),
html.Br(),
html.Div(id='my-output'),
])
@app.callback(
Output(component_id='my-output', component_property='children'),
Input(component_id='my-input', component_property='value')
)
def update_output_div(input_value):
return f'Output: {input_value}'
if __name__ == "__main__":
app.run_server(debug=True)

Dash by Plotly 在建立儀表板時非常方便,它提供了許多有用的 API。

4、Streamlit

Streamlit 是一個開源 Python 包,旨在為資料科學家和機器學習專案建立一個 Web 應用程式。

Streamlit 提供的 API 易於任何初學者使用,非常適合希望以互動方式構建其資料組合的任何人。

讓我們先安裝 Streamlit 包。

pip install streamlit

安裝過程完成後,我們可以建立互動式儀表板。

讓我給你下面的程式碼示例。

import streamlit as st
import pandas as pd
import plotly.express as px
import seaborn as sns
df = sns.load_dataset('titanic')
st.title('Titanic Dashboard')
st.subheader('Dataset')
st.dataframe(df)
st.subheader('Data Numerical Statistic')
st.dataframe(df.describe())
st.subheader('Data Visualization with respect to Survived')
left_column, right_column = st.columns(2)
with left_column:
'Numerical Plot'
num_feat = st.selectbox(
'Select Numerical Feature', df.select_dtypes('number').columns)
fig = px.histogram(df, x = num_feat, color = 'survived')
st.plotly_chart(fig, use_container_width=True)
with right_column:
'Categorical column'
cat_feat = st.selectbox(
'Select Categorical Feature', df.select_dtypes(exclude = 'number').columns)
fig = px.histogram(df, x =cat_feat, color = 'survived' )
st.plotly_chart(fig, use_container_width=True)

使用 VScode 將檔案儲存為 titanic_st.py,然後在終端中執行該程式碼。

streamlit run titanic_st.py

Streamlit 在上述地址上執行,我們可以訪問我們的儀表板。

使用上面的簡單程式碼,我們建立了一個互動式儀表板,API 並不難理解,我們只使用最少數量的程式碼。

結論

當我們需要展示資料科學專案時建議用互動式儀表板,它將改善大大改善使用者體驗。

文章來源於Python學習與資料探勘

文章連結:https://mp.weixin.qq.com/s/8gZKd24A-rP2luRID0J4VQ

立即試用FineBI免費版:

https://intl.finebi.com/zh-tw/trial?utm_source=Medium_Banner

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

我是「數據分析那些事」。常年分享數據分析乾貨,不定期分享好用的職場技能工具。各位也可以關注我的Facebook,按讚我的臉書並私訊「10」,送你十週入門數據分析電子書唷!期待你與我互動起來~

文章推薦

《 Python 進階 》中文版(附下載)

Excel圖表配色原理

統計學上的四種錯誤

為何大公司高薪挖人,也很難挖走這家科技公司的員工?

--

--

數據分析那些事
數據分析那些事

Written by 數據分析那些事

這是一個專注於數據分析職場的內容部落格,聚焦一批數據分析愛好者,在這裡,我會分享數據分析相關知識點推送、(工具/書籍)等推薦、職場心得、熱點資訊剖析以及資源大盤點,希望同樣熱愛數據的我們一同進步! 臉書會有更多互動喔:https://www.facebook.com/shujvfenxi/

No responses yet