How do other countries value the time of their workers?¶
The below text has been paraphrased from the source page of the original wiki.
https://en.wikipedia.org/wiki/List_of_minimum_annual_leave_by_country#
In most countries, with the exception of the United States, advancements in employee relations have led to the implementation of statutory agreements that determine the minimum amount of paid vacation and public holidays entitled to employees. Some companies may offer additional time off beyond the legally required minimum. However, there may be variations between companies and the law regarding whether public holidays are included in the minimum leave calculation.
Debates surrounding work-life balance and perceived disparities between nations continue to exist due to differences in national minimums. These minimums generally apply to full-time employment, and part-time workers often receive a reduced number of days off. Public holidays are typically paid in most countries and are not usually counted as part of the annual leave entitlement. Furthermore, it is important to note that there are additional paid leave benefits such as parental leave and sick leave available in most countries, which are not mentioned in this discussion.
Methodology¶
To facilitate comparison, the paid vacation column has been standardized based on a five-day workweek. This means that for a month, the total days are divided by seven and multiplied by five, while for a six-day workweek, the total days are divided by six and multiplied by five. The paid vacation column indicates the minimum mandatory vacation days for an employee with one year of service at the same employer.
In certain countries, public holidays are strictly tied to specific calendar dates. Consequently, if these holidays fall on a Saturday or Sunday, they are effectively “lost” for that year. As a result, the actual average number of paid extra days off may be lower than what is indicated in the table. For instance, in the Czech Republic, where the official number of paid public holidays is 13, the average number of public holidays occurring on working days from 2000 to 2016 was only 8.9 days. In contrast, in countries like the United Kingdom and the United States, public holidays that would fall on a Saturday or Sunday are typically shifted to the nearest Monday or Friday.
# Import the beautifulsoup and request libraries of python.
import requests
import bs4
import pandas as pd
# Decalre url source for data
url = 'https://en.wikipedia.org/wiki/List_of_minimum_annual_leave_by_country#'
# Fetch the URL data using requests.get(url),
# store it in a variable, request_result.
request_result = requests.get(url)
# Creating soup from the fetched request
soup = bs4.BeautifulSoup(request_result.text, 'html.parser')
# Find table in soup
table = soup.find('table', class_='wikitable sortable')
# Declare rowset
rows = table.tbody.contents
# Create empty list
data = []
# Loop over rows and apped contents of every other row (mod 0),
# Enumerate cols and append every other col (mod 1)
for i, row in enumerate(rows) :
if i % 2 == 0:
cols = row.contents
data.append([col.text.strip() for x, col in enumerate(cols) if x % 2 == 1])
# Create dataframe from list
df = pd.DataFrame(data, columns=['Country', 'Minimum Annual Leave (days)', 'Paid vacation days by year (5-d work week)','Paid public holidays', 'Total paid leave'])
# Drop index
df.drop(index=df.index[0], axis=0, inplace=True)
# Spot Correction
df['Paid vacation days by year (5-d work week)'].loc[102] = '26'
# Display df info
df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 194 entries, 1 to 194 Data columns (total 8 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Country 194 non-null object 1 Minimum Annual Leave (days) 194 non-null object 2 Paid vacation days by year (5-d work week) 194 non-null object 3 Paid public holidays 194 non-null object 4 Total paid leave 194 non-null object 5 Paid vacation days by year (5-d work week)2 194 non-null int64 6 Paid public holidays2 194 non-null int64 7 Total2 194 non-null int64 dtypes: int64(3), object(5) memory usage: 12.3+ KB
# Create new df from string-split of Paid Vacation Days by Year column.
df2 = df['Paid vacation days by year (5-d work week)'].str.split('–',expand=True)
df2.drop(1,axis=1,inplace=True)
df2.rename(columns = {0:'x'}, inplace=True)
df2 = df2['x'].str.split('/',expand=True)
df2.drop(1,axis=1,inplace=True)
df2.drop(2,axis=1,inplace=True)
df2.drop(3,axis=1,inplace=True)
df2.rename(columns = {0:'x'}, inplace=True)
df2 = df2['x'].str.split('[',expand=True)
df2.drop(1,axis=1,inplace=True)
df2.rename(columns = {0:'x'}, inplace=True)
df2 = df2['x'].str.split('-',expand=True)
df2.drop(1,axis=1,inplace=True)
df['Paid vacation days by year (5-d work week)2'] = df2
# Create new df from string-split of Paid Vacation Days by Year column.
df3 = df['Paid public holidays'].str.split('-',expand=True)
df3.drop(1,axis=1,inplace=True)
df3.rename(columns = {0:'x'}, inplace=True)
df3 = df3['x'].str.split('[',expand=True)
df3.drop(1,axis=1,inplace=True)
df3.drop(2,axis=1,inplace=True)
df3.rename(columns = {0:'x'}, inplace=True)
df3 = df3['x'].str.split('.',expand=True)
df3.drop(1,axis=1,inplace=True)
df['Paid public holidays2'] = df3
import matplotlib.pyplot as plt
# Convert to dtype int
df['Paid vacation days by year (5-d work week)2'] = df['Paid vacation days by year (5-d work week)2'].astype(int)
# Replace blanks with '0'
df['Paid public holidays2'] = df['Paid public holidays2'].replace([''], '0')
# Convert to dtype int
df['Paid public holidays2'] = df['Paid public holidays2'].astype(int)
# Create new Total col
df['Total2'] = df['Paid public holidays2']+df['Paid vacation days by year (5-d work week)2']
# Assign cols to variables
x = df.sort_values(by='Paid vacation days by year (5-d work week)2')['Country']
y1 = df.sort_values(by='Paid vacation days by year (5-d work week)2')['Paid vacation days by year (5-d work week)2']
# Set figure size parameters
plt.rcParams["figure.figsize"]=40,15
# Clear figure
plt.clf()
# Set color
plt.bar(x, y1, color='b')
# Rotate ticks
plt.xticks(rotation=90)
# Show figure
plt.show()

# Assign cols to variables
x = df.sort_values(by='Paid public holidays2')['Country']
y2 = df.sort_values(by='Paid public holidays2')['Paid public holidays2']
# Format plot
plt.rcParams["figure.figsize"]=40,15
plt.clf()
plt.bar(x, y2, color='g')
plt.xticks(rotation=90)
# Show plot
plt.show()

# Assign variables
x = df.sort_values(by='Total2')['Country']
y1 = df.sort_values(by='Total2')['Paid vacation days by year (5-d work week)2']
y2 = df.sort_values(by='Total2')['Paid public holidays2']
# Set figure size parameters
plt.rcParams["figure.figsize"]=40,15
# Clear figure
plt.clf()
# Set variable colors
plt.bar(x, y1, color='b')
plt.bar(x, y2, bottom=y1, color='g')
# Rotate ticks
plt.xticks(rotation=90)
# Show plot
plt.title('Country vs. Min. Gauranteed Paid Leave')
plt.show()

# Assign label varable as New Total,
# and sort values descending by New Total
y3 = df.sort_values(by='Total2')['Total2']
# Format plot
plt.rcParams["figure.figsize"]=10,50
plt.clf()
plt.barh(x, y1, height=0.5, align='center', color='b')
plt.barh(x, y2, height=0.5, align='center', left=y1, color='g')
# Apply labels to plot bars
for i, v in enumerate(y3):
plt.text(v + 1, i, str(v), color='black', fontsize=9, ha='left', va='center')
# Create color dictionary for Legend
colors = {'Paid vacation days':'blue', 'Paid public holidays':'green'}
# Create Legend Lables
labels = list(colors.keys())
# Create Legend Color Coded Handles
handles = [plt.Rectangle((0,0),1,1, color=colors[label]) for label in labels]
# Show plot
plt.legend(handles, labels)
plt.title('Min. Gauranteed Paid Leave vs. Country')
plt.show()

# Describe Totals of Countries
df['Total2'].describe()
count 194.000000 mean 26.438144 std 9.730503 min 0.000000 25% 20.000000 50% 27.000000 75% 33.000000 max 53.000000 Name: Total2, dtype: float64
Conclusion¶
Out of 194 countries, the average number of annual gauranteed paid days off for private sector employees is 26 days. Seventy-five percent of countries have at least 20 gauranteed paid days off for private sector employees. Twenty-five percent of countries have at least 33 paid days off for private sector employees, or 12% of their work year (52 weeks * 5 work days = 260 work days in a year). The United States of America is one of only 6 countries in that have ZERO days of gauranteed paid leave for private sector employees, while Iran has 53 gauranteed paid days off for private sector employees. In conclusion, the United States, Marshall Islands, Micronesia, Kiribati, Palau, and Nauru are lagging far behind in worker’s rights in comparison to the rest of the modern world.
The information was pulled and aggregated on December 21, 2022.