【Python | NOTE】ipywidgetsの使い方

スポンサーリンク
スポンサーリンク

ipywidgetsの使い方

環境

  • Windows10
  • anaconda
  • python3
  • jupyter notebook

ドロップダウンリストの作成

Dropdown

# ipywidgetsライブラリからDropdownをインポート
from ipywidgets import Dropdown

# データ抽出処理の関数
def order_by_dropdown(val):
    clear_output()
    display(dropdown)
    pick_data = order_data.loc[df['name']==val['new']] # ピックアップ条件
    display(pick_data.head())

list = df['name'].tolist() #ドロップダウン用のリスト作成
dropdown = Dropdown(options=list)
dropdown.observe(order_by_dropdown, names='value')
display(dropdown)

8行目val['new']は、ドロップダウンで新しく選ばれた項目が入ります。

マルチセレクトの作成

SelectMultiple

# ipywidgetsライブラリからSelectMultipleをインポート
from ipywidgets import SelectMultiple

def order_by_multi(val):
    clear_output()
    display(select)
    pick_data = order_data.loc[(df['name'].isin(val['new'])) & (df['status'].isin([1,2]))]
    display(pick_data.head())

list = df['name'].tolist() #ドロップダウン用のリスト作成
select = SelectMultiple(options=list)
select.observe(order_by_multi, names='value')
display(select)

スライドバーの作成

IntSlider

# ipywidgetsライブラリからIntSliderをインポート
from ipywidgets import IntSlider

def lower(val):
    clear_output()
    display(slider)
    temp = order_data.groupby('name')
    print(temp.size()[temp.size() < val['new']])
    
slider = IntSlider(value=1100, min=1000, max=2000, step=100, description='件数:',)
slider.observe(store_lower, names='value')
display(slider)

10行目のスライドバーの設定は、初期値1100、最大値2000、最小値1000、100刻みとなっています。

トグルボタンの作成

ToggleButtons

# ipywidgetsライブラリからToggleButtonsをインポート
from ipywidgets import ToggleButtons

list = df['name'].unique()

def name_toggle(val):
    clear_output()
    display(toggle)
    pick_data = order_data.loc[df['name'] == val['new']]
    display(pick_data.head())
    
toggle = ToggleButtons(options=list)
toggle.observe(name_toggle, names='value')
display(toggle)

日付の絞り込みの作成

DatePicker

・単独の日付

# ipywidgetsライブラリからToggleButtonsをインポート
from ipywidgets import DatePicker
import datetime

order_data.loc[:,'order_date'] = pd.to_datetime(order_data['order_accept_date']).dt.date

def date_pick(val):
    clear_output()
    display(date_picker)
    pick_data = order_data.loc[order_data['order_date'] == val['new']]
    print(len(pick_data))
    display(pick_data.head())
    
date_picker = DatePicker(value=datetime.datetime(2021,4,1))
date_picker.observe(date_pick, names='value')
display(date_picker)

・期間の指定

from ipywidgets import DatePicker
import datetime

min_date = datetime.date(2021, 4, 1)
max_date = datetime.date(2021, 4, 30)
df.loc[:,'order_date'] = pd.to_datetime(df['order_accept_date']).dt.date

# 期間が指定されたら呼ばれる関数
def between_date():
    clear_output()
    display(date_picker_min)
    display(date_picker_max)
    pick_data = df.loc[(df['order_date'] >= min_date) & (df['order_date'] <= max_date) & (df['status'].isin([1,2]))]
    print(len(pick_data))
    display(pick_data.head())
    
# 最小日(期間自)の日付を変数にセットする関数
def set_min_date(val):
    global min_date
    min_date = val['new']
    between_date()

# 最大日(期間至)の日付を変数にセットする関数
def set_max_date(val):
    global max_date
    max_date = val['new']
    between_date()

date_picker_min = DatePicker(value=min_date)
date_picker_min.observe(set_min_date, names='value')
print('最小日付')
display(date_picker_min)

date_picker_max = DatePicker(value=max_date)
date_picker_max.observe(set_max_date, names='value')
print('最大日付')
display(date_picker_max)