How does COVID-19 impact the job market in the Netherlands?

Does COVID-19 impact the job market in the Netherlands and if so, how does it affect your chances at finding a job in your industry? In this article we'll be looking at job offers in different job industries in the Netherlands, and comparing the numbers to COVID-19 statistics obtained from a global dataset.

pip install -q -r requirements.txt
Note: you may need to restart the kernel to use updated packages.
import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import seaborn as sns
import ipywidgets as widgets

The global COVID-19 dataset

First off, for our analysis, we need statistical data on COVID-19 over time. Preferably, we want to be able to see daily amounts of new COVID cases. Our World In Data provides us with the perfect dataset for this purpose. We've downloaded their CSV dataset on March 1st 2021.

Importing & inspecting the dataset

First, we'll import the global COVID-19 dataset. This complete COVID-19 dataset is a collection of the COVID-19 data maintained by Our World in Data. It is updated daily and includes data on confirmed cases, deaths, hospitalizations, testing, and vaccinations as well as other variables of potential interest.

raw_cov_df = pd.read_csv('owid-covid-data.csv')
raw_cov_df.head()
iso_code continent location date total_cases new_cases new_cases_smoothed total_deaths new_deaths new_deaths_smoothed ... gdp_per_capita extreme_poverty cardiovasc_death_rate diabetes_prevalence female_smokers male_smokers handwashing_facilities hospital_beds_per_thousand life_expectancy human_development_index
0 AFG Asia Afghanistan 2020-02-24 1.0 1.0 NaN NaN NaN NaN ... 1803.987 NaN 597.029 9.59 NaN NaN 37.746 0.5 64.83 0.511
1 AFG Asia Afghanistan 2020-02-25 1.0 0.0 NaN NaN NaN NaN ... 1803.987 NaN 597.029 9.59 NaN NaN 37.746 0.5 64.83 0.511
2 AFG Asia Afghanistan 2020-02-26 1.0 0.0 NaN NaN NaN NaN ... 1803.987 NaN 597.029 9.59 NaN NaN 37.746 0.5 64.83 0.511
3 AFG Asia Afghanistan 2020-02-27 1.0 0.0 NaN NaN NaN NaN ... 1803.987 NaN 597.029 9.59 NaN NaN 37.746 0.5 64.83 0.511
4 AFG Asia Afghanistan 2020-02-28 1.0 0.0 NaN NaN NaN NaN ... 1803.987 NaN 597.029 9.59 NaN NaN 37.746 0.5 64.83 0.511

5 rows × 59 columns

Getting data for the Netherlands only

cov_df_nl = raw_cov_df[raw_cov_df['location'] == 'Netherlands']

Now that the dataset is imported, it's time to discover its contents. We'll take a look at the columns and values that are inside.

cov_df_nl.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 372 entries, 45573 to 45944
Data columns (total 59 columns):
 #   Column                                 Non-Null Count  Dtype  
---  ------                                 --------------  -----  
 0   iso_code                               372 non-null    object 
 1   continent                              372 non-null    object 
 2   location                               372 non-null    object 
 3   date                                   372 non-null    object 
 4   total_cases                            369 non-null    float64
 5   new_cases                              369 non-null    float64
 6   new_cases_smoothed                     364 non-null    float64
 7   total_deaths                           361 non-null    float64
 8   new_deaths                             361 non-null    float64
 9   new_deaths_smoothed                    364 non-null    float64
 10  total_cases_per_million                369 non-null    float64
 11  new_cases_per_million                  369 non-null    float64
 12  new_cases_smoothed_per_million         364 non-null    float64
 13  total_deaths_per_million               361 non-null    float64
 14  new_deaths_per_million                 361 non-null    float64
 15  new_deaths_smoothed_per_million        364 non-null    float64
 16  reproduction_rate                      359 non-null    float64
 17  icu_patients                           361 non-null    float64
 18  icu_patients_per_million               361 non-null    float64
 19  hosp_patients                          359 non-null    float64
 20  hosp_patients_per_million              359 non-null    float64
 21  weekly_icu_admissions                  52 non-null     float64
 22  weekly_icu_admissions_per_million      52 non-null     float64
 23  weekly_hosp_admissions                 52 non-null     float64
 24  weekly_hosp_admissions_per_million     52 non-null     float64
 25  new_tests                              0 non-null      float64
 26  total_tests                            50 non-null     float64
 27  total_tests_per_thousand               50 non-null     float64
 28  new_tests_per_thousand                 0 non-null      float64
 29  new_tests_smoothed                     337 non-null    float64
 30  new_tests_smoothed_per_thousand        337 non-null    float64
 31  positive_rate                          50 non-null     float64
 32  tests_per_case                         50 non-null     float64
 33  tests_units                            344 non-null    object 
 34  total_vaccinations                     48 non-null     float64
 35  people_vaccinated                      0 non-null      float64
 36  people_fully_vaccinated                0 non-null      float64
 37  new_vaccinations                       42 non-null     float64
 38  new_vaccinations_smoothed              53 non-null     float64
 39  total_vaccinations_per_hundred         48 non-null     float64
 40  people_vaccinated_per_hundred          0 non-null      float64
 41  people_fully_vaccinated_per_hundred    0 non-null      float64
 42  new_vaccinations_smoothed_per_million  53 non-null     float64
 43  stringency_index                       369 non-null    float64
 44  population                             372 non-null    float64
 45  population_density                     372 non-null    float64
 46  median_age                             372 non-null    float64
 47  aged_65_older                          372 non-null    float64
 48  aged_70_older                          372 non-null    float64
 49  gdp_per_capita                         372 non-null    float64
 50  extreme_poverty                        0 non-null      float64
 51  cardiovasc_death_rate                  372 non-null    float64
 52  diabetes_prevalence                    372 non-null    float64
 53  female_smokers                         372 non-null    float64
 54  male_smokers                           372 non-null    float64
 55  handwashing_facilities                 0 non-null      float64
 56  hospital_beds_per_thousand             372 non-null    float64
 57  life_expectancy                        372 non-null    float64
 58  human_development_index                372 non-null    float64
dtypes: float64(54), object(5)
memory usage: 174.4+ KB
cov_df_nl.describe()
total_cases new_cases new_cases_smoothed total_deaths new_deaths new_deaths_smoothed total_cases_per_million new_cases_per_million new_cases_smoothed_per_million total_deaths_per_million ... gdp_per_capita extreme_poverty cardiovasc_death_rate diabetes_prevalence female_smokers male_smokers handwashing_facilities hospital_beds_per_thousand life_expectancy human_development_index
count 3.690000e+02 369.000000 364.000000 361.000000 361.000000 364.000000 369.000000 369.000000 364.000000 361.000000 ... 3.720000e+02 0.0 3.720000e+02 3.720000e+02 3.720000e+02 3.720000e+02 0.0 3.720000e+02 3.720000e+02 3.720000e+02
mean 2.984033e+05 3000.940379 3004.449374 7356.800554 43.518006 42.875967 17414.969596 175.136428 175.341209 429.346670 ... 4.847254e+04 NaN 1.093610e+02 5.290000e+00 2.440000e+01 2.730000e+01 NaN 3.320000e+00 8.228000e+01 9.440000e-01
std 3.593521e+05 3318.132059 3278.962996 3801.167934 45.553818 40.619822 20971.971995 193.647909 191.361970 221.838141 ... 1.457151e-11 NaN 4.268998e-14 8.893746e-16 3.557498e-15 3.557498e-15 NaN 4.446873e-16 1.422999e-14 2.223437e-16
min 1.000000e+00 0.000000 3.429000 1.000000 -18.000000 -1.286000 0.058000 0.000000 0.200000 0.058000 ... 4.847254e+04 NaN 1.093610e+02 5.290000e+00 2.440000e+01 2.730000e+01 NaN 3.320000e+00 8.228000e+01 9.440000e-01
25% 4.632800e+04 223.000000 225.678500 6009.000000 4.000000 3.857000 2703.726000 13.014000 13.170250 350.688000 ... 4.847254e+04 NaN 1.093610e+02 5.290000e+00 2.440000e+01 2.730000e+01 NaN 3.320000e+00 8.228000e+01 9.440000e-01
50% 7.212800e+04 1092.000000 1028.000000 6267.000000 28.000000 36.357500 4209.427000 63.730000 59.994500 365.745000 ... 4.847254e+04 NaN 1.093610e+02 5.290000e+00 2.440000e+01 2.730000e+01 NaN 3.320000e+00 8.228000e+01 9.440000e-01
75% 5.273360e+05 5208.000000 5331.750250 9518.000000 73.000000 68.464500 30775.600000 303.942000 311.164000 555.475000 ... 4.847254e+04 NaN 1.093610e+02 5.290000e+00 2.440000e+01 2.730000e+01 NaN 3.320000e+00 8.228000e+01 9.440000e-01
max 1.107347e+06 13072.000000 11804.000000 15710.000000 234.000000 154.286000 64625.340000 762.889000 688.888000 916.844000 ... 4.847254e+04 NaN 1.093610e+02 5.290000e+00 2.440000e+01 2.730000e+01 NaN 3.320000e+00 8.228000e+01 9.440000e-01

8 rows × 54 columns

Cleaning up the dataset

In order to speed up our process, we'll get rid of columns we don't need. The columns we're interested in are:

  • Date
  • New cases
  • Total amount of cases
  • New deaths
  • Total amount of deaths
  • Amount of hospitalized patients

We'll create our new dataframe by making a subset:

cov_df = cov_df_nl[['date', 'total_cases', 'new_cases', 'total_deaths',
                    'new_deaths', 'total_cases_per_million', 'new_cases_per_million',
                    'total_deaths_per_million', 'new_deaths_per_million',
                    'hosp_patients', 'hosp_patients_per_million']]

cov_df.columns
Index(['date', 'total_cases', 'new_cases', 'total_deaths', 'new_deaths',
       'total_cases_per_million', 'new_cases_per_million',
       'total_deaths_per_million', 'new_deaths_per_million', 'hosp_patients',
       'hosp_patients_per_million'],
      dtype='object')

Visualizing the data

We want to see the amount of new COVID cases per month, as well as the new deaths per month and the average amount of hospitalized patients per day for every month.

In order to achieve this, we must first group the dataset into months. We'll add a column containing the month to which the day in the 'date' column belongs, so that we can group the observations by month.

# Adding 'datetime' column that contains the YYYY-MM for each day
cov_df['datetime'] = pd.to_datetime(cov_df['date'])
cov_df['datetime'] = cov_df['datetime'].dt.date.apply(lambda x: x.strftime('%Y-%m'))
# new dataset with monthly data contains: sum of new_cases, sum of new_deaths, average of hosp_patients per day
cov_df_month = cov_df.groupby('datetime').agg({'new_cases' : 'sum',
                                               'new_deaths' : 'sum',
                                               'hosp_patients' : 'mean'}).reset_index()
cov_df_month
datetime new_cases new_deaths hosp_patients
0 2020-02 6.0 0.0 6.666667
1 2020-03 12661.0 1040.0 1222.064516
2 2020-04 26845.0 3771.0 2258.000000
3 2020-05 7133.0 1164.0 996.193548
4 2020-06 3838.0 157.0 301.866667
5 2020-07 4107.0 34.0 83.161290
6 2020-08 18642.0 86.0 105.870968
7 2020-09 52756.0 205.0 246.433333
8 2020-10 231652.0 1002.0 1233.419355
9 2020-11 174290.0 1994.0 1565.733333
10 2020-12 276452.0 2072.0 1474.451613
11 2021-01 183693.0 2583.0 1808.903226
12 2021-02 111489.0 1580.0 1441.714286
13 2021-03 3783.0 22.0 NaN
sns.barplot(x='datetime', y='new_cases', data=cov_df_month, color='b', ci=False)
plt.xticks(rotation=90)
plt.title('New COVID cases per month in the Netherlands')
plt.xlabel('Date')
plt.ylabel('New COVID cases')
plt.show()

The CBS job-offer dataset

For information on the amount of job offers in the Netherlands, we'll use the 'Vacature-indicator' dataset from Dataportal of CBS, retrieved at 01 March 2021. CBS stands for Centraal Bureau voor de Statistiek -'Central Statistics Office' - a Dutch governmental institution that gathers all kinds of statistical information about the Netherlands, mostly on social and economic topics. We've selected the years 2010-2021 and all four of the job industries provided in the dataset.

Importing & inspecting the dataset

Now it's time to import the vacature dateset by CBS. First, we'll import the whole dataset and inspect it.

As we can see, the dataset contains information on several job industries. It shows the job-offer indicator per industry per month, starting in January 2010.

raw_vac_df = pd.read_csv('84287NED_2021-03-02T12_52_35.csv', sep=";")

raw_vac_df
BedrijfstakkenBranchesSBI2008_code BedrijfstakkenBranchesSBI2008_title Perioden_code Perioden_title Measure Unit Value
0 300007 G-N Commerciële dienstverlening 2010MM01 2010 januari Vacature-indicator % -0.84
1 350000 F Bouwnijverheid 2010MM01 2010 januari Vacature-indicator % -1.00
2 307500 C Industrie 2010MM01 2010 januari Vacature-indicator % -0.69
3 T001081 A-U Alle economische activiteiten 2010MM01 2010 januari Vacature-indicator % -0.82
4 300007 G-N Commerciële dienstverlening 2010MM02 2010 februari Vacature-indicator % -0.65
... ... ... ... ... ... ... ...
527 T001081 A-U Alle economische activiteiten 2020MM12 2020 december** Vacature-indicator % -0.28
528 300007 G-N Commerciële dienstverlening 2021MM01 2021 januari* Vacature-indicator % -0.19
529 350000 F Bouwnijverheid 2021MM01 2021 januari* Vacature-indicator % -0.21
530 307500 C Industrie 2021MM01 2021 januari* Vacature-indicator % 0.08
531 T001081 A-U Alle economische activiteiten 2021MM01 2021 januari* Vacature-indicator % -0.16

532 rows × 7 columns

raw_vac_df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 532 entries, 0 to 531
Data columns (total 7 columns):
 #   Column                               Non-Null Count  Dtype  
---  ------                               --------------  -----  
 0   BedrijfstakkenBranchesSBI2008_code   532 non-null    object 
 1   BedrijfstakkenBranchesSBI2008_title  532 non-null    object 
 2   Perioden_code                        532 non-null    object 
 3   Perioden_title                       532 non-null    object 
 4   Measure                              532 non-null    object 
 5   Unit                                 532 non-null    object 
 6   Value                                532 non-null    float64
dtypes: float64(1), object(6)
memory usage: 29.2+ KB

Cleaning up the dataset.

We don't need all the columns provided in the dataset. Some columns contain the exact same information as others, just in a different shape. For example, the 'Perioden_title' column contains the year and month specified in 'Perioden_code', just written in words.

We'll drop the columns we don't need:

vac_df = raw_vac_df.drop(columns=['BedrijfstakkenBranchesSBI2008_code', 'Perioden_title', 'Unit', 'Measure'])

vac_df.head()
BedrijfstakkenBranchesSBI2008_title Perioden_code Value
0 G-N Commerciële dienstverlening 2010MM01 -0.84
1 F Bouwnijverheid 2010MM01 -1.00
2 C Industrie 2010MM01 -0.69
3 A-U Alle economische activiteiten 2010MM01 -0.82
4 G-N Commerciële dienstverlening 2010MM02 -0.65

We'll also have to reformat the dates in this dataset, they need to have the same format as the dates in the COVID-19 dataframe.

vac_df['datetime'] = vac_df['Perioden_code'].replace('MM', '-', regex=True)
vac_df = vac_df.drop(columns=['Perioden_code'])

Merging the two dataframes

Now it's time to put all our cleaned up data together. We'll merge the dataset with job-offer indicators on the dataset with the dataset that contains the new COVID cases/million per month. We'll use a right join, as the dates for the job-offer indicators reach much further back than the COVID dataset, but we still want to maintain these rows.

cov_vac = cov_df_month.merge(vac_df, on='datetime', how='right')

# Renaming the columns so they're easier to use
cov_vac = cov_vac.rename(columns={'BedrijfstakkenBranchesSBI2008_title' : 'job_industry',
                                  'Value' : 'joboffer_indicator'})

cov_vac.head()
datetime new_cases new_deaths hosp_patients job_industry joboffer_indicator
0 2010-01 NaN NaN NaN G-N Commerciële dienstverlening -0.84
1 2010-01 NaN NaN NaN F Bouwnijverheid -1.00
2 2010-01 NaN NaN NaN C Industrie -0.69
3 2010-01 NaN NaN NaN A-U Alle economische activiteiten -0.82
4 2010-02 NaN NaN NaN G-N Commerciële dienstverlening -0.65

The NaN values in the columns originating from the cov_df are due to the fact that there were no COVID cases registered before February 2020. We'll fill these values with with zero.

cov_vac = cov_vac.fillna(0)

# Checking if there's any null-values

cov_vac.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 532 entries, 0 to 531
Data columns (total 6 columns):
 #   Column              Non-Null Count  Dtype  
---  ------              --------------  -----  
 0   datetime            532 non-null    object 
 1   new_cases           532 non-null    float64
 2   new_deaths          532 non-null    float64
 3   hosp_patients       532 non-null    float64
 4   job_industry        532 non-null    object 
 5   joboffer_indicator  532 non-null    float64
dtypes: float64(4), object(2)
memory usage: 29.1+ KB
# Let's see what the df looks like before we start analyzing it
def show_df_rows(Rows):
    return cov_vac.iloc[Rows[0]:Rows[1]]
widgets.interact(show_df_rows, Rows=widgets.IntRangeSlider(value = [0,100],
                                                           min = 0,
                                                           max = len(cov_vac)));

Exploring correlation between the COVID and job-offer data

Now that we've merged the two dataframes containing the columns we're interested in, it's time to see if there's any correlation between them. Specifically, we want to see if any of the selected COVID-columns have a particularly high correlation with the job-offer indicator.

In order to get a more accurate result, we'll filter the dataset to only look at dates starting in March 2020: this is when COVID really became present in the Netherlands. Let's see if the monthly COVID statistics correlate with the amount of job offers.

cov_vac_2020 = cov_vac[cov_vac['datetime'].astype('datetime64[ns]') >= pd.to_datetime('2020-03-01')]
cov_vac_2020.corr()
new_cases new_deaths hosp_patients joboffer_indicator
new_cases 1.000000 0.389291 0.487171 0.669956
new_deaths 0.389291 1.000000 0.959812 0.314106
hosp_patients 0.487171 0.959812 1.000000 0.395987
joboffer_indicator 0.669956 0.314106 0.395987 1.000000

It seems that the biggest amount of correlation is between the amount of new COVID cases in a month and the job-offer indicator: 0.67. We'll explore this further by visualizing the relationship between these two values.

Visualizing the relationship: monthly new cases vs. job-offer indicator

First, let's see the progression of the job-offer indicator over time for each of the 4 job industries over time.

jobplot = sns.lineplot(x='datetime', 
             y='joboffer_indicator',
             hue='job_industry',
             data=cov_vac)

# Adding title and labels
plt.xlabel("Date", size=12)
plt.ylabel("Job-offer indicator", size=12)
plt.title("Job-offer indicator per job industry (2010-2021)", size=20)
plt.xticks(rotation=90)

for ind, label in enumerate(jobplot.get_xticklabels()):
    if ind % 10 == 0:  # every 10th label is kept
        label.set_visible(True)
    else:
        label.set_visible(False)

# Making the graph bigger
fig = plt.gcf()
fig.set_size_inches(15, 8)

plt.show()

Interesting. In the graph, we find that job offers in all industries went down by a lot, starting around december 2019. We know that in the Netherlands, the first news of COVID started around november 2019.

Now, let's take a further look at the exact numbers of COVID cases in the Netherlands. We'll visualize the progression of new corona cases per month, starting at november 2019.

# Turn the dates (currently strings) into datetime objects, so we can filter them
cov_vac['datetime'] = pd.to_datetime(cov_vac['datetime'], format='%Y-%m')

cov_vac.head()
datetime new_cases new_deaths hosp_patients job_industry joboffer_indicator
0 2010-01-01 0.0 0.0 0.0 G-N Commerciële dienstverlening -0.84
1 2010-01-01 0.0 0.0 0.0 F Bouwnijverheid -1.00
2 2010-01-01 0.0 0.0 0.0 C Industrie -0.69
3 2010-01-01 0.0 0.0 0.0 A-U Alle economische activiteiten -0.82
4 2010-02-01 0.0 0.0 0.0 G-N Commerciële dienstverlening -0.65
# Checkboxes for zooming in/out
checkbox1 = widgets.Checkbox(value = False,
                             description = 'Zoom in',
                             disabled = False)


checkbox2 = widgets.Checkbox(value = False,
                             description = 'Zoom out',
                             disabled = False)


def change_data(val):
    if val == True:
        data = cov_vac[cov_vac['datetime'] > pd.to_datetime('2019-11-01')]
    else:
        data = cov_vac
    
    covplot = sns.lineplot(x='datetime', 
                 y='new_cases',
                 data=data)

    # Adding title and labels
    plt.xlabel("Date", size=12)
    plt.ylabel("New corona cases", size=12)
    plt.title("New corona cases per month", size=20)
    plt.xticks(rotation=90)

    # Making the graph bigger
    fig = plt.gcf()
    fig.set_size_inches(15, 8)
    plt.show()


# Bind checkboxes to change_data function and disable one when the other is checked
out = widgets.interactive_output(change_data, {'val':checkbox1})

widgets.jslink((checkbox2, 'disabled'), (checkbox1, 'value'));
widgets.jslink((checkbox1, 'disabled'), (checkbox2, 'value'));
widgets.VBox([widgets.HBox([checkbox1, checkbox2]), out])

Now let's see if there's overlap in the graphs. We'll put both of them in the same figure, using the overlapping dates.

Specifically, we want to see if the amount of COVID cases impacts certain job fields more than others. We'll plot the job-offer indicators of each job field separately, together with the new COVID cases of the month.

def draw_plot(selection_y, selection_hue):
    # Setting the selected variables
    y = cov_vac[cov_vac["job_industry"] == selection_y]['joboffer_indicator']
    hue = selection_hue;

    # Plotting the joboffer indicator per job field
    ax = sns.lineplot(x = 'datetime', 
                      y = y,                      # <--- Selected y
                      hue = hue,                  # <--- Selected hue
                      data = cov_vac)
    
    if selection_hue:                             # <--- Only show legend if there's multiple lines
        ax.legend(loc='upper left')
    
    ax.set_ylabel('Job-offer indicator')
    ax.set_xlabel('Year')

    # Plotting the new_cases line
    ax2 = ax.twinx()
    cov_vac.plot(x = "datetime",
                 y = "new_cases",
                 ax = ax2,
                 color = "0")
    ax2.legend(loc = 'lower left')
    ax2.set_ylabel('New COVID cases per month')

    # Resizing the plot
    fig = plt.gcf()
    fig.set_size_inches(14, 6)
    
    # Add titles and show plot
    plt.title("COVID cases vs. job-offer indicator in the Netherlands, per month", size = 14)
    plt.show()
# Dropdown1: if "View all industries is selected, disable the "Industry" dropdown
def toggle_dropdown2(val):
    dropdown2.disabled = val
    dropdown2.value = None

dropdown1 = widgets.Dropdown(
                options = [('All industries', True),
                           ('Specific industry', False)],
                description = 'View: ')



# Dropdown 2: chooses a specific industry to plot (y)
def select_y(Industry):
    if not dropdown2.disabled and not dropdown2.value == None:    # Plots selected industry
        draw_plot(Industry, None)
    else:                                                         # Plots all industries if disabled/empty
        draw_plot(cov_vac["job_industry"], 'job_industry')

dropdown2 = widgets.Dropdown(
                value = None,
                options = [('F Construction industry', 'F Bouwnijverheid'),
                           ('C Manifacturing industry', 'C Industrie'),
                           ('G-N Commercial services', 'G-N Commerciële dienstverlening'),
                           ('A-U All economic activities', 'A-U Alle economische activiteiten')],
                description = 'Industry: ',
                disabled=True)



# Link the dropdowns to their corresponding functions
widgets.interact(toggle_dropdown2, val=dropdown1);
widgets.interact(select_y, Industry=dropdown2);

Concusion

What conclusions can we draw from this research? A couple of things caught our attention:

  • The job-offer indicator quickly dropped in november 2019, about two months before the first cases of COVID-19 were discovered in the Netherlands. We suspect that the reason for this is that the first news about corona started spreading in the Netherlands around this time. Companies probably realized that a tough time would be a head and started preparing themselves. ‎
  • It seems like the amount of job offers in the manifacturing industry (C) went down the hardest during the COVID-19 crisis. We suspect that this is the industry where employees physically work in a factory, while the government strictly encouraged people to work from home as much as possible - or at least keep a distance of 6 feet. ‎
  • The lowest point of the job-offer indicator for all job industries is just after the first wave of COVID-19 cases. After that, the amount job-offers started increasing again. We suspect that after the first wave of COVID-cases, people got more accustomed to the government's measures and working from home. Companies might've slowly found their way in the new way of working, and started hiring people again. ‎

That's it! In the future, we'd definitely like to dive deeper into the ways that COVID-19 affected the Dutch job market and find out what other factors played a role. An interesting project would be to predict our chances at finding a job in a certain industry, based on the predicted amount COVID-19 cases for the coming months.

We hope you enjoyed this article and would really appreciate your feedback. For now, stay safe and hopefully until next time!