-
Notifications
You must be signed in to change notification settings - Fork 0
/
oecd_unemployment.py
87 lines (65 loc) · 2.44 KB
/
oecd_unemployment.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
from collections import OrderedDict
from bokeh.plotting import figure, show, output_file
from bokeh.models import HoverTool, ColumnDataSource, Range1d
from bokeh.embed import components
import pandas as pd
df = pd.read_csv('~/Google Drive/Datasets/OECD_Labour_Stats.csv')
years = Range1d(1994, 2015)
countries = OrderedDict()
for c in df['Country'].values:
countries[c] = True
countries = [key for key, value in countries.items()]
countries = countries[::-1] # reverse the list so the x axis goes in the right direction
colours = [
"#75968f", "#a5bab7", "#c9d9d3", "#e2e2e2", "#dfccce",
"#ddb7b1", "#cc7878", "#933b41", "#550b1d"
]
df['colours'] = [colours[min(int(rate) - 2, 8)] for rate in df['Value'].values]
df = df[['Time', 'Country', 'colours', 'Value']]
#709
#limit to years after 1995
df = df.ix[df['Time'] >= 1995,]
#Adding NA values
for country in countries:
country_df = df.ix[df['Country'] == country,]
if len(country_df) < 20:
for year in range(1995, 2015):
if year not in country_df.Time.values:
new_df = pd.DataFrame({'Time': year,
'Country': country_df['Country'].iloc[0],
'colours': '#fffff4',
'Value': 'NaN'},
index= [(df.index[-1] + 1)]
)
print(new_df)
df = pd.concat([df, new_df])
print('Added values for ', country_df['Country'].iloc[0])
else:
print('Not missing values', country_df['Country'].iloc[0])
source = ColumnDataSource(df)
output_file('oecd_unemployment.html')
p = figure(title='OECD Unemployment (1990 - 2015)',
tools='resize,hover,save', x_range=years, y_range=countries)
p.rect(x='Time', y='Country', width=1, height=1, source=source,
color='colours', line_color=None)
hover = p.select(dict(type=HoverTool))
hover.tooltips = OrderedDict([
('Year', '@Time'),
('Country', '@Country'),
('Unemployment Rate (%)', '@Value')
])
p.toolbar_location = 'right'
p.plot_height = 800
p.plot_width = 1000
#Getting rid of chart junk
p.outline_line_color = None
p.grid.grid_line_color = None
p.axis.axis_line_color = None
p.axis.major_tick_line_color = None
p.axis.minor_tick_line_color = None
script_file = open('oecd_unemployment_script.html', 'w+')
div_file = open('oecd_unemployment_div.html', 'w+')
script, div = components(p)
print(script, file=script_file)
print(div, file=div_file)
show(p)