Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pandas as pd
- import numpy as np
- import ipywidgets as widgets
- from ipywidgets import Layout, AppLayout
- from IPython.display import display
- import functools
- data = {'year': ['2000', '2000','2000','2000','2001','2001','2001','2001', '2002', '2002', '2002', '2002',
- '2003','2003','2003','2003','2004', '2004','2004','2004', '2005', '2005', '2005', '2005',
- '2006', '2006', '2006', '2006', '2006', '2007', '2007', '2007', '2007', '2008', '2008', '2008', '2008',
- '2009', '2009', '2009', '2009'],
- 'purpose':['Holiday', 'Business', 'VFR', 'Study', 'Holiday', 'Business', 'VFR', 'Study', 'Holiday', 'Business',
- 'VFR', 'Study', 'Holiday', 'Business', 'VFR', 'Study', 'Holiday', 'Business', 'VFR', 'Study', 'Holiday',
- 'Business', 'VFR', 'Study', 'Holiday', 'Business', 'VFR', 'Study', 'Holiday', 'Business', 'VFR', 'Study',
- 'Holiday', 'Business', 'VFR', 'Study', 'Holiday', 'Business', 'VFR', 'Study', 'Holiday'
- ],
- 'market':['Belgium', 'Luxembourg', 'France', 'Spain', 'Norway', 'Sweden', 'Germany', 'Austria', 'Denmark',
- 'Portugal', 'Greece', 'Croatia', 'Belgium', 'Luxembourg', 'France', 'Spain', 'Norway', 'Sweden',
- 'Germany', 'Austria', 'Denmark', 'Portugal', 'Greece', 'Croatia', 'Belgium', 'Luxembourg', 'France',
- 'Spain', 'Norway', 'Sweden', 'Germany', 'Austria', 'Denmark', 'Portugal', 'Greece', 'Croatia', 'Belgium',
- 'Luxembourg', 'France', 'Spain', 'Norway'
- ]}
- df_london = pd.DataFrame (data, columns = ['year','purpose', 'market'])
- # Get our unique values
- ALL = 'ALL'
- def unique_sorted_values_plus_ALL(array):
- unique = array.unique().tolist()
- unique.sort()
- unique.insert(0, ALL)
- return unique
- output = widgets.Output()
- # Dropdown listbox
- dropdown_year = widgets.Dropdown(description='Year',
- options = unique_sorted_values_plus_ALL(df_london.year))
- # Function to filter our dropdown listboxe
- def common_filtering(year):
- df = df_london.copy()
- filters = []
- # Evaluate our dropdown listbox and return booleans for our selections
- if year is not ALL:
- filters.append(df['year'] == year)
- output.clear_output()
- with output:
- if filters:
- df_filter = functools.reduce(lambda x,y: x&y, filters)
- display(df.loc[df_filter])
- else:
- display(df)
- def dropdown_year_eventhandler(change):
- common_filtering(change.new)
- dropdown_year.observe(dropdown_year_eventhandler, names='value')
- ui = widgets.HBox([dropdown_year])
- display(ui, output)
RAW Paste Data