A weekly series of quick random charts made in Python 🐍
The chart of this week is a bubble chart of the fastest growing occupations for the next decade.
Employment in healthcare and social assistance is projected to add the most jobs of all industry sectors, about 3.3 million jobs over 2020–30. Factors that are expected to contribute to the large increase include rising demand for the care of an aging baby-boom population, longer life expectancies, and continued growth in the number of patients with chronic conditions.
U.S. Bureau of Labour Statistics, Sept 8, 2021

Computer and mathematical occupations are expected to see fast employment growth as strong demand is expected for IT security and software development, in part due to increased prevalence of telework spurred by the COVID-19 pandemic. Demand for new products associated with the Internet of Things (IoT), and for analyzing and interpreting large datasets are also expected to contribute to fast employment growth for these occupations, which include statisticians, information security analysts, and data scientists.
U.S. Bureau of Labour Statistics, Sept 8, 2021
Fastest Growing Occupations
Total employment in the US is projected to grow from 153.5 million to 165.4 million over the 2020–30 decade, an increase of 11.9 million jobs, according to the U.S. Bureau of Labor Statistics projections.
Top 3 in projected growth (%)
Occupation | Employment change | Percent employment change | Median annual wage, 2020 | Sector |
Wind turbine service technicians | 4,700.0 | 68.2 | $56,230 | Other |
Nurse practitioners | 114,900.0 | 52.2 | $111,680 | Health |
Solar photovoltaic installers | 6,100.0 | 52.1 | $46,470 | Other |
Top 3 in projected new jobs
Occupation | Employment change | Percent employment change | Median annual wage, 2020 | Sector |
Home health and personal care aides | 1,129,900.0 | 32.6 | $27,080 | Health |
Software developers | 409,500.0 | 22.2 | $110,140 | Computer and Mathematics |
Medical and health services managers | 139,600.0 | 32.5 | $104,280 | Health |
Top 3 in median annual wage (2020)
Occupation | Employment change | Percent employment change | Median annual wage, 2020 | Sector |
Physician assistants | 40,100.0 | 31.0 | $115,390 | Health |
Nurse practitioners | 114,900.0 | 52.2 | $111,680 | Health |
Actuaries | 6,800.0 | 24.5 | $111,030 | Computer and Mathematics |
Python Code
# Author: @QuantGirl
# Title: Fastest Growing Occupations for the Next 10 Years
# Source: U.S. Bureau of Labor Statistics
# Data: https://www.bls.gov/news.release/ecopro.nr0.htm
# Type: Bubble Chart
import pandas as pd
import plotly.express as px
import chart_studio.plotly as py
my_palette = [
'#FBE5C8', # Peach
'#FFC2C7', # Rosewater
'#3CACAE', # Blue Green
'#C8F4F9', # Turquoise
'#05445E', # Navy Blue
'#603F8B', # Purple
'#CFEED1', # Seafoam Green
'#75E6DA', # BlueGreen
]
occupations = pd.read_excel('Data/occupation_plotly.xlsx', sheet_name='Table 1.3A', header=1,
dtype={'Median annual wage, 2020': float},).dropna()
occupations = occupations[occupations['2020 National Employment Matrix title'] != 'All occupations']
occupations.sort_values(by=['Percent employment change, 2020-30'])
fig = px.scatter(data_frame=occupations,
x='Median annual wage, 2020',
y='Percent employment change, 2020-30',
color='Sector',
color_discrete_map={
'Other': my_palette[0],
'Health': my_palette[1],
'Computer and Mathematics': my_palette[2],
'Services': my_palette[3]
},
size='Employment change, 2020-30',
hover_name='2020 National Employment Matrix title',
hover_data={'2020 National Employment Matrix title': True,
'Sector': True,
'Median annual wage, 2020': True,
'Employment change, 2020-30': True,
'Percent employment change, 2020-30': True
},
size_max=100)
fig.update_traces(hovertemplate="<b>%{customdata[0]}</b><br><br>" +
"Median annual wage: %{x:$,.0f}<br>" +
"Percent Employment change: %{y:.0%}<br>" +
"Employment change: %{marker.size:.0f}K <br>" +
"<extra></extra>",
)
fig.add_vline(x=41950,
line_width=1,
line_dash='dash', line_color=my_palette[4],
annotation_text=f'Overall median wage <br> $41.9K',
annotation_position="right",
annotation_font_size=14,
annotation_font_color=my_palette[4])
fig.update_traces(marker=dict(
line=dict(width=2, color='DarkSlateGrey')),
selector=dict(mode='markers'))
fig.update_layout(
margin=dict(l=50, r=50, t=100, b=200, pad=50),
title="Fastest Growing Occupations for the Next 10 Years <br><sup>Projections from 2020 to 2030</sup>",
title_font_size=20,
title_font_family='PT Serif Caption',
xaxis=dict(
title='Median annual wage 2020 (dollars)',
gridcolor='white',
# type='log',
gridwidth=0.5,
),
yaxis=dict(
title='Projected employment change 2020-30',
gridcolor='grey',
range=[0, .75],
gridwidth=0.5,
tickformat=',.0%'
),
paper_bgcolor='white',
plot_bgcolor='white',
hoverlabel= dict(bgcolor='white'),
hovermode="closest"
)
fig.add_annotation(
xref='paper',
x=0,
yref='paper',
y=-0.25,
text="Source: U.S. Bureau of Labor Statistics",
showarrow=False,
font_size=14
)
fig.add_annotation(
xref='paper',
x=1,
yref='paper',
y=-0.25,
text="@QuantGirl",
showarrow=False,
font=dict(size=18,
color='#a70684',
family='PT Serif Caption')
)
py.plot(fig, filename='2021_w39_Scatter_Occupations_Plotly', auto_open=True)
fig.show()
interesting data and analysis!!
Saludos desde Mexico!
Muchas gracias Ruben. Saludos 🙂