讓客戶深刻記住你的資料洞察和發現的最好方式,是建立互動式儀表板。
為什麼要互動呢?一方面是比較有趣,另一方面是客戶對動作的記憶比靜態的洞察力更深刻。
在本文中,我給大家分享 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」,送你十週入門數據分析電子書唷!期待你與我互動起來~