import pandas as pd
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
unrate = pd.read_csv("un.csv") # open csv file with data from Stat Canada site
unrate
Province | May 2017 | June 2017 | Standard error{1} | May to June 2017 | June 2016 to June 2017 | May to June 2017.1 | June 2016 to June 2017.1 | |
---|---|---|---|---|---|---|---|---|
0 | NaN | thousands (except rates) | thousands (except rates) | thousands (except rates) | change in thousands (except rates) | change in thousands (except rates) | % change | % change |
1 | Newfoundland and Labrador | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
2 | Population | 445.8 | 445.8 | ... | 0.0 | 1.3 | 0.0 | 0.3 |
3 | Labour force | 264.9 | 263.5 | 2.1 | -1.4 | -5.0 | -0.5 | -1.9 |
4 | Employment | 225.7 | 224.3 | 2.2 | -1.4 | -11.9 | -0.6 | -5.0 |
5 | Full-time | 193.1 | 192.9 | 2.6 | -0.2 | -6.8 | -0.1 | -3.4 |
6 | Part-time | 32.6 | 31.4 | 2.2 | -1.2 | -5.1 | -3.7 | -14.0 |
7 | Unemployment | 39.2 | 39.2 | 2.1 | 0.0 | 6.9 | 0.0 | 21.4 |
8 | Participation rate | 59.4 | 59.1 | 0.5 | -0.3 | -1.3 | ... | ... |
9 | Unemployment rate | 14.8 | 14.9 | 0.7 | 0.1 | 2.9 | ... | ... |
10 | Employment rate | 50.6 | 50.3 | 0.5 | -0.3 | -2.8 | ... | ... |
11 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
12 | Prince Edward Island | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
13 | Population | 123.7 | 123.8 | ... | 0.1 | 2.0 | 0.1 | 1.6 |
14 | Labour force | 83.3 | 83.0 | 0.6 | -0.3 | 3.0 | -0.4 | 3.8 |
15 | Employment | 75.0 | 74.5 | 0.7 | -0.5 | 3.2 | -0.7 | 4.5 |
16 | Full-time | 62.8 | 62.7 | 0.8 | -0.1 | 3.5 | -0.2 | 5.9 |
17 | Part-time | 12.2 | 11.8 | 0.7 | -0.4 | -0.3 | -3.3 | -2.5 |
18 | Unemployment | 8.3 | 8.5 | 0.6 | 0.2 | -0.2 | 2.4 | -2.3 |
19 | Participation rate | 67.3 | 67.0 | 0.5 | -0.3 | 1.3 | ... | ... |
20 | Unemployment rate | 10.0 | 10.2 | 0.7 | 0.2 | -0.7 | ... | ... |
21 | Employment rate | 60.6 | 60.2 | 0.5 | -0.4 | 1.7 | ... | ... |
22 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
23 | Nova Scotia | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
24 | Population | 791.6 | 792.0 | ... | 0.4 | 3.6 | 0.1 | 0.5 |
25 | Labour force | 488.6 | 491.8 | 2.5 | 3.2 | 5.6 | 0.7 | 1.2 |
26 | Employment | 450.2 | 448.3 | 2.7 | -1.9 | 1.5 | -0.4 | 0.3 |
27 | Full-time | 366.2 | 365.4 | 3.5 | -0.8 | 0.0 | -0.2 | 0.0 |
28 | Part-time | 84.0 | 83.0 | 3.2 | -1.0 | 1.7 | -1.2 | 2.1 |
29 | Unemployment | 38.5 | 43.5 | 2.3 | 5.0 | 4.1 | 13.0 | 10.4 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
80 | Labour force | 608.6 | 607.8 | 2.6 | -0.8 | 0.2 | -0.1 | 0.0 |
81 | Employment | 570.3 | 568.4 | 2.6 | -1.9 | -1.7 | -0.3 | -0.3 |
82 | Full-time | 467.9 | 468.7 | 3.4 | 0.8 | 4.2 | 0.2 | 0.9 |
83 | Part-time | 102.4 | 99.7 | 3.1 | -2.7 | -5.9 | -2.6 | -5.6 |
84 | Unemployment | 38.3 | 39.4 | 2.2 | 1.1 | 1.9 | 2.9 | 5.1 |
85 | Participation rate | 69.4 | 69.3 | 0.3 | -0.1 | -0.7 | ... | ... |
86 | Unemployment rate | 6.3 | 6.5 | 0.3 | 0.2 | 0.3 | ... | ... |
87 | Employment rate | 65.1 | 64.8 | 0.3 | -0.3 | -0.9 | ... | ... |
88 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
89 | Alberta | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
90 | Population | 3425.5 | 3428.5 | ... | 3.0 | 29.4 | 0.1 | 0.9 |
91 | Labour force | 2484.2 | 2482.6 | 9.4 | -1.6 | 39.0 | -0.1 | 1.6 |
92 | Employment | 2291.1 | 2298.6 | 10.1 | 7.5 | 48.5 | 0.3 | 2.2 |
93 | Full-time | 1883.6 | 1872.2 | 13.7 | -11.4 | 47.5 | -0.6 | 2.6 |
94 | Part-time | 407.6 | 426.4 | 12.4 | 18.8 | 1.0 | 4.6 | 0.2 |
95 | Unemployment | 193.1 | 184.0 | 8.8 | -9.1 | -9.5 | -4.7 | -4.9 |
96 | Participation rate | 72.5 | 72.4 | 0.3 | -0.1 | 0.5 | ... | ... |
97 | Unemployment rate | 7.8 | 7.4 | 0.3 | -0.4 | -0.5 | ... | ... |
98 | Employment rate | 66.9 | 67.0 | 0.3 | 0.1 | 0.8 | ... | ... |
99 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
100 | British Columbia | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
101 | Population | 3973.9 | 3979.0 | ... | 5.1 | 50.1 | 0.1 | 1.3 |
102 | Labour force | 2612.9 | 2620.4 | 10.6 | 7.5 | 88.0 | 0.3 | 3.5 |
103 | Employment | 2466.6 | 2486.3 | 10.4 | 19.7 | 104.3 | 0.8 | 4.4 |
104 | Full-time | 1931.6 | 1951.6 | 14.6 | 20.0 | 72.7 | 1.0 | 3.9 |
105 | Part-time | 535.0 | 534.7 | 14.0 | -0.3 | 31.6 | -0.1 | 6.3 |
106 | Unemployment | 146.3 | 134.1 | 9.0 | -12.2 | -16.3 | -8.3 | -10.8 |
107 | Participation rate | 65.8 | 65.9 | 0.3 | 0.1 | 1.4 | ... | ... |
108 | Unemployment rate | 5.6 | 5.1 | 0.3 | -0.5 | -0.8 | ... | ... |
109 | Employment rate | 62.1 | 62.5 | 0.3 | 0.4 | 1.9 | ... | ... |
110 rows × 8 columns
list(unrate) # see the name of the collumns
['Province', '\xa0May 2017', '\xa0June 2017', '\xa0Standard error{1}', '\xa0May to June 2017', '\xa0June 2016 to June 2017', '\xa0May to June 2017.1', '\xa0June 2016 to June 2017.1']
df1=unrate[(unrate['\xa0May 2017'].isnull())|(unrate['Province'] == 'Unemployment rate')]
df1=df1.fillna(method='bfill')
df1
Province | May 2017 | June 2017 | Standard error{1} | May to June 2017 | June 2016 to June 2017 | May to June 2017.1 | June 2016 to June 2017.1 | |
---|---|---|---|---|---|---|---|---|
1 | Newfoundland and Labrador | 14.8 | 14.9 | 0.7 | 0.1 | 2.9 | ... | ... |
9 | Unemployment rate | 14.8 | 14.9 | 0.7 | 0.1 | 2.9 | ... | ... |
11 | Prince Edward Island | 10.0 | 10.2 | 0.7 | 0.2 | -0.7 | ... | ... |
12 | Prince Edward Island | 10.0 | 10.2 | 0.7 | 0.2 | -0.7 | ... | ... |
20 | Unemployment rate | 10.0 | 10.2 | 0.7 | 0.2 | -0.7 | ... | ... |
22 | Nova Scotia | 7.9 | 8.8 | 0.5 | 0.9 | 0.7 | ... | ... |
23 | Nova Scotia | 7.9 | 8.8 | 0.5 | 0.9 | 0.7 | ... | ... |
31 | Unemployment rate | 7.9 | 8.8 | 0.5 | 0.9 | 0.7 | ... | ... |
33 | New Brunswick | 8.4 | 8.1 | 0.5 | -0.3 | -2.0 | ... | ... |
34 | New Brunswick | 8.4 | 8.1 | 0.5 | -0.3 | -2.0 | ... | ... |
42 | Unemployment rate | 8.4 | 8.1 | 0.5 | -0.3 | -2.0 | ... | ... |
44 | Quebec | 6.0 | 6.0 | 0.3 | 0.0 | -0.9 | ... | ... |
45 | Quebec | 6.0 | 6.0 | 0.3 | 0.0 | -0.9 | ... | ... |
53 | Unemployment rate | 6.0 | 6.0 | 0.3 | 0.0 | -0.9 | ... | ... |
55 | Ontario | 6.5 | 6.4 | 0.2 | -0.1 | 0.1 | ... | ... |
56 | Ontario | 6.5 | 6.4 | 0.2 | -0.1 | 0.1 | ... | ... |
64 | Unemployment rate | 6.5 | 6.4 | 0.2 | -0.1 | 0.1 | ... | ... |
66 | Manitoba | 5.3 | 5.3 | 0.3 | 0.0 | -0.9 | ... | ... |
67 | Manitoba | 5.3 | 5.3 | 0.3 | 0.0 | -0.9 | ... | ... |
75 | Unemployment rate | 5.3 | 5.3 | 0.3 | 0.0 | -0.9 | ... | ... |
77 | Saskatchewan | 6.3 | 6.5 | 0.3 | 0.2 | 0.3 | ... | ... |
78 | Saskatchewan | 6.3 | 6.5 | 0.3 | 0.2 | 0.3 | ... | ... |
86 | Unemployment rate | 6.3 | 6.5 | 0.3 | 0.2 | 0.3 | ... | ... |
88 | Alberta | 7.8 | 7.4 | 0.3 | -0.4 | -0.5 | ... | ... |
89 | Alberta | 7.8 | 7.4 | 0.3 | -0.4 | -0.5 | ... | ... |
97 | Unemployment rate | 7.8 | 7.4 | 0.3 | -0.4 | -0.5 | ... | ... |
99 | British Columbia | 5.6 | 5.1 | 0.3 | -0.5 | -0.8 | ... | ... |
100 | British Columbia | 5.6 | 5.1 | 0.3 | -0.5 | -0.8 | ... | ... |
108 | Unemployment rate | 5.6 | 5.1 | 0.3 | -0.5 | -0.8 | ... | ... |
df1=df1[~(df1['Province'] == 'Unemployment rate')]
df1=df1.drop_duplicates()
df1['\xa0June 2017'] = df1['\xa0June 2017'].astype(float)
df1['\xa0June 2016 to June 2017'] = df1['\xa0June 2016 to June 2017'].astype(float)
#df1['June/16']=df1[['\xa0June 2017','\xa0June 2016 to June 2017']].sum(axis=1)
df1['June 2016']=df1['\xa0June 2017']-df1['\xa0June 2016 to June 2017']
df1 = df1.reset_index(drop=True)
df1.dtypes
Province object May 2017 object June 2017 float64 Standard error{1} object May to June 2017 object June 2016 to June 2017 float64 May to June 2017.1 object June 2016 to June 2017.1 object June 2016 float64 dtype: object
df1
Province | May 2017 | June 2017 | Standard error{1} | May to June 2017 | June 2016 to June 2017 | May to June 2017.1 | June 2016 to June 2017.1 | June 2016 | |
---|---|---|---|---|---|---|---|---|---|
0 | Newfoundland and Labrador | 14.8 | 14.9 | 0.7 | 0.1 | 2.9 | ... | ... | 12.0 |
1 | Prince Edward Island | 10.0 | 10.2 | 0.7 | 0.2 | -0.7 | ... | ... | 10.9 |
2 | Nova Scotia | 7.9 | 8.8 | 0.5 | 0.9 | 0.7 | ... | ... | 8.1 |
3 | New Brunswick | 8.4 | 8.1 | 0.5 | -0.3 | -2.0 | ... | ... | 10.1 |
4 | Quebec | 6.0 | 6.0 | 0.3 | 0.0 | -0.9 | ... | ... | 6.9 |
5 | Ontario | 6.5 | 6.4 | 0.2 | -0.1 | 0.1 | ... | ... | 6.3 |
6 | Manitoba | 5.3 | 5.3 | 0.3 | 0.0 | -0.9 | ... | ... | 6.2 |
7 | Saskatchewan | 6.3 | 6.5 | 0.3 | 0.2 | 0.3 | ... | ... | 6.2 |
8 | Alberta | 7.8 | 7.4 | 0.3 | -0.4 | -0.5 | ... | ... | 7.9 |
9 | British Columbia | 5.6 | 5.1 | 0.3 | -0.5 | -0.8 | ... | ... | 5.9 |
list(df1) # see the name of the collumns
['Province', '\xa0May 2017', '\xa0June 2017', '\xa0Standard error{1}', '\xa0May to June 2017', '\xa0June 2016 to June 2017', '\xa0May to June 2017.1', '\xa0June 2016 to June 2017.1', 'June 2016']
# Setting the positions and width for the bars
pos = list(range(len(df1['June 2016'])))
width = 0.3
# Plotting the bars
fig, ax = plt.subplots(figsize=(23,5))
# Create a bar with,
# in position pos,
plt.bar(pos,
df1['June 2016'],
width,
alpha=0.5,
color='blue',
label=df1['Province'][0])
# Create a bar,
# in position pos + some width buffer,
plt.bar([p + width for p in pos],
df1['\xa0June 2017'],
width,
alpha=0.5,
color='green',
label=df1['Province'][1])
ax.set_ylabel('Unemployment rate %') # Set the y axis label
ax.set_title('Canada Labour Force Survey, June 2017') # Set the title
ax.set_xticks([p + 0.5 * width for p in pos]) # Set the position of the x ticks
ax.set_xticklabels(df1['Province']) # Set the labels for the x ticks
plt.xlim(min(pos)-width, max(pos)+width*2) # Set the x-axis
plt.ylim([0, max(df1['June 2016'] +5 )]) # y-axis limits
plt.legend(['June 2016', '\xa0June 2017'], loc='upper right') # Add the legend
plt.grid()
plt.show() # Show the plot
df1
Province | May 2017 | June 2017 | Standard error{1} | May to June 2017 | June 2016 to June 2017 | May to June 2017.1 | June 2016 to June 2017.1 | June 2016 | |
---|---|---|---|---|---|---|---|---|---|
0 | Newfoundland and Labrador | 14.8 | 14.9 | 0.7 | 0.1 | 2.9 | ... | ... | 12.0 |
1 | Prince Edward Island | 10.0 | 10.2 | 0.7 | 0.2 | -0.7 | ... | ... | 10.9 |
2 | Nova Scotia | 7.9 | 8.8 | 0.5 | 0.9 | 0.7 | ... | ... | 8.1 |
3 | New Brunswick | 8.4 | 8.1 | 0.5 | -0.3 | -2.0 | ... | ... | 10.1 |
4 | Quebec | 6.0 | 6.0 | 0.3 | 0.0 | -0.9 | ... | ... | 6.9 |
5 | Ontario | 6.5 | 6.4 | 0.2 | -0.1 | 0.1 | ... | ... | 6.3 |
6 | Manitoba | 5.3 | 5.3 | 0.3 | 0.0 | -0.9 | ... | ... | 6.2 |
7 | Saskatchewan | 6.3 | 6.5 | 0.3 | 0.2 | 0.3 | ... | ... | 6.2 |
8 | Alberta | 7.8 | 7.4 | 0.3 | -0.4 | -0.5 | ... | ... | 7.9 |
9 | British Columbia | 5.6 | 5.1 | 0.3 | -0.5 | -0.8 | ... | ... | 5.9 |