交互式儀表板!Python輕鬆完成!⛵

語言: CN / TW / HK

💡 引言

在本篇內容中,ShowMeAI將給大家講解使用 📘ipywidget 模塊創建交互式儀表板。

我們本次用到的數據集是 🏆Kaggle 的 CardioGoodFitness,大家可以通過 ShowMeAI 的百度網盤地址下載。

🏆 實戰數據集下載(百度網盤):公眾號『ShowMeAI研究中心』回覆『實戰』,或者點擊 這裏 獲取本文 [41]ipywidgets:使用Python創建交互式儀表板CardioGoodFitness 數據集

ShowMeAI官方GitHubhttp://github.com/ShowMeAI-Hub

首先,我們需要導入所需的模塊。

python import pandas as pd import ipywidgets import seaborn as sns import matplotlib.pyplot as plt

我們先看一下數據變量。數據中包含 2 個連續變量,收入 Income 和英里數 Miles。

💡 看板Demo實現:瞭解Miles的分佈

💦 準備工作

📘ipywidget 模塊包含了很多可用的小部件。在這個演示中,我們將使用下拉框選擇類別數據,以便更好地瞭解里程分佈。我們將選擇箱線圖來繪製每個類別的里程數據。

```python %matplotlib widget

Drop down for boxplot variable to be select

drop_down_name = ipywidgets.Dropdown(options=list(df.drop(['Miles','Income'],axis=1).columns), value=list(df.drop(['Miles','Income'],axis=1).columns)[0], description='Columns:', disabled=False) ```

接下來,我們可以創建一個函數,允許輸入用於繪製英里箱線圖的列名稱。

```python

selected_vals = column used to plot

def boxplot(selected_vals): plt.close('all') fig = plt.figure(figsize=(9,5)) plt.style.use('seaborn') sns.boxplot(df[selected_vals],df['Miles']) plt.title('Boxplot of miles for' + selected_vals) plt.show() ```

之後,我們需要創建一個 📘layout/佈局,Jupyter 交互式小部件具有一個 layout 屬性,包含了許多影響小部件佈局的 CSS 屬性。

最簡單的自定義是 HBox,它是一個水平佈局的選擇器,而 VBox 代表一個垂直佈局的選擇器。下面是 HBox 或 VBox 佈局的示例。

下面我們準備輸入和輸出佈局的顯示。

```python

layout for filtering

ui2 = ipywidgets.HBox([drop_down_name])

link your function to your input

out2 = ipywidgets.interactive_output(boxplot, {'selected_vals' : drop_down_name})

display your box plot

display(ui2,out2) ```

上面散點圖的輸入是 x、y 和色調。因為每個變量都是一個選擇,我們使用了下拉框。

💦 輸入設計、選項、值和要定義的描述

```python

dropbox select x axis

drop_down_x = ipywidgets.Dropdown(options=list(df.columns), value=list(df.columns)[0], description='X variable:', disabled=False)

dropbox select y axis

drop_down_y = ipywidgets.Dropdown(options=list(['Miles','Income']), value=list(['Miles','Income'])[0], description='Y variable:', disabled=False)

dropbox select category

drop_down_category= ipywidgets.Dropdown(options=list(df.drop(['Miles','Income'],axis=1).columns), value=list(df.drop(['Miles','Income'],axis=1).columns)[0], description='Category:', disabled=False) ```

💦 散點圖繪製

```python

scatter plot function

def scatter(x,y,category): plt.close('all') fig = plt.figure(figsize=(9,5)) plt.style.use('seaborn') sns.scatterplot(data=df,x=x,y=y,hue=category) plt.title('Scatterplot of ' +x+' versus '+ y) #plt.xlabel('Date') plt.show() ```

💦 顯示HBox或VBox的選擇器佈局

```python

display the layout of filtering

ui3 = ipywidgets.HBox([drop_down_x,drop_down_y,drop_down_category]) ```

💦 將繪圖與選擇器相關聯

```python

related the plot link to filtering

out3 = ipywidgets.interactive_output(scatter, {'x' : drop_down_x, 'y': drop_down_y, 'category':drop_down_category}) ```

💦 顯示選擇後的輸入和輸出

```python

display the input and output

display(ui3,out3) ```

參考資料

推薦閲讀

「其他文章」