Imagine the economy as a living, breathing organism. Its beating heart? Economic data. Every tick, every pulse, reveals a story: the rise and fall of industries, the rhythm of jobs created and lost, the ebb and flow of opportunity. In this journey, we'll become economic detectives, using the powerful tools of data analysis to decode the whispers of these numbers and unravel the mysteries of the American economy.
But where do we start? Our first clue is the unemployment rate: the chilling shadow cast by those seeking work but finding none. It's a measure of struggle, a reminder that opportunity isn't always evenly distributed. But it's also a call to action, a siren urging us to understand the forces at play in different corners of the nation.
The second beat we'll listen to is the labor participation rate: the chorus of those actively engaged in the economic dance. It tells us who's showing up, who's stepping onto the floor, and who's choosing to sit it out. Is it driven by opportunity, necessity, or something else entirely? By digging deeper, we can uncover the stories behind the numbers, the motivations that guide the American workforce.
And now, armed with these vital clues, we embark on the thrilling quest of economic data analysis. It's like putting together a giant economic puzzle, each piece a statistic, a trend, a regional variation. We'll use Python, our trusty analytical scalpel, to slice through the data, compare trends across states, and uncover hidden patterns.
We will look at unemployment rates and participation rates of every state in the USA using the FRED API.
To get your own FRED API key:
My Account > API Keys
After doing those steps, you then have to paste your API key inside a .py
file within a variable name of your choice.
You can then proceed to import the libraries required for analysis, and the API key from FRED
# Data manipulation
import pandas as pd
import numpy as np
pd.set_option('display.max_columns', 500)
# Plotting
import matplotlib.pyplot as plt
import plotly.express as px
import seaborn as sns
# Plot aesthetics
plt.style.use('fivethirtyeight')
color_pal = plt.rcParams['axes.prop_cycle'].by_key()['color']
# Import `fredapi` and api key
from fredapi import Fred
import creds
# Ignore warnings
import warnings
warnings.filterwarnings('ignore')
We create a fred
object here and load the api key as well.
fred = Fred(api_key=creds.api_key)
fred
<fredapi.fred.Fred at 0x258944e2290>
We'll just test here how the FRED API's .search()
method works.
nasdaq_search = fred.search('NASDAQ', order_by='popularity')
nasdaq_search.head()
id | realtime_start | realtime_end | title | observation_start | observation_end | frequency | frequency_short | units | units_short | seasonal_adjustment | seasonal_adjustment_short | last_updated | popularity | notes | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
series id | |||||||||||||||
SP500 | SP500 | 2023-11-28 | 2023-11-28 | S&P 500 | 2013-11-29 | 2023-11-27 | Daily, Close | D | Index | Index | Not Seasonally Adjusted | NSA | 2023-11-27 19:11:03-06:00 | 83 | The observations for the S&P 500 represent the... |
NASDAQCOM | NASDAQCOM | 2023-11-28 | 2023-11-28 | NASDAQ Composite Index | 1971-02-05 | 2023-09-25 | Daily, Close | D | Index Feb 5, 1971=100 | Index Feb 5, 1971=100 | Not Seasonally Adjusted | NSA | 2023-09-26 07:07:02-05:00 | 69 | The observations for the NASDAQ Composite Inde... |
NASDAQ100 | NASDAQ100 | 2023-11-28 | 2023-11-28 | NASDAQ 100 Index | 1986-01-02 | 2023-09-25 | Daily, Close | D | Index | Index | Not Seasonally Adjusted | NSA | 2023-09-26 07:07:01-05:00 | 57 | The observations for the NASDAQ 100 Index repr... |
VXNCLS | VXNCLS | 2023-11-28 | 2023-11-28 | CBOE NASDAQ 100 Volatility Index | 2001-02-02 | 2023-11-24 | Daily, Close | D | Index | Index | Not Seasonally Adjusted | NSA | 2023-11-27 08:36:05-06:00 | 38 | Copyright, 2016, Chicago Board Options Exchang... |
nasdaq_search.shape
(4, 15)
Now we'll test pulling out data using the .get_series()
method and make a quick plot.
fred.get_series(series_id='NASDAQ100').plot(lw=2, figsize=(12, 7))
<Axes: >
Now let's pull some data for unemployment rates in the USA per state
unemployment_df = fred.search('unemployment rate state', filter=('frequency', 'Monthly'))
unemployment_df = unemployment_df.query('seasonal_adjustment == "Seasonally Adjusted" and' +
' units == "Percent"')
unemployment_df = unemployment_df.loc[unemployment_df['title'].str.contains('Unemployment Rate')]
unemployment_df
id | realtime_start | realtime_end | title | observation_start | observation_end | frequency | frequency_short | units | units_short | seasonal_adjustment | seasonal_adjustment_short | last_updated | popularity | notes | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
series id | |||||||||||||||
UNRATE | UNRATE | 2023-11-28 | 2023-11-28 | Unemployment Rate | 1948-01-01 | 2023-10-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2023-11-03 07:50:02-05:00 | 94 | The unemployment rate represents the number of... |
LNS14000006 | LNS14000006 | 2023-11-28 | 2023-11-28 | Unemployment Rate - Black or African American | 1972-01-01 | 2023-10-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2023-11-03 07:50:06-05:00 | 66 | The series comes from the 'Current Population ... |
CAUR | CAUR | 2023-11-28 | 2023-11-28 | Unemployment Rate in California | 1976-01-01 | 2023-10-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2023-11-20 11:19:01-06:00 | 64 | None |
M0892AUSM156SNBR | M0892AUSM156SNBR | 2023-11-28 | 2023-11-28 | Unemployment Rate for United States | 1929-04-01 | 1942-06-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2012-08-17 14:26:06-05:00 | 53 | Series Is Presented Here As Three Variables--(... |
M0892BUSM156SNBR | M0892BUSM156SNBR | 2023-11-28 | 2023-11-28 | Unemployment Rate for United States | 1940-01-01 | 1946-12-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2012-08-17 14:29:19-05:00 | 11 | Series Is Presented Here As Three Variables--(... |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
M08311USM156SNBR | M08311USM156SNBR | 2023-11-28 | 2023-11-28 | Unemployment Rate, Married Males, Spouse Prese... | 1954-11-01 | 1968-01-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2012-08-17 14:28:17-05:00 | 3 | Beginning In 1960 Data Include Alaska And Hawa... |
CWSTUR | CWSTUR | 2023-11-28 | 2023-11-28 | Unemployment Rate in West Census Region | 1976-01-01 | 2023-10-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2023-11-20 11:18:13-06:00 | 3 | None |
LNS14000015 | LNS14000015 | 2023-11-28 | 2023-11-28 | Unemployment Rate - 16-19 Yrs., White | 1954-01-01 | 2023-10-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2023-11-03 07:50:55-05:00 | 3 | The series comes from the 'Current Population ... |
LRUN25TTUSM156S | LRUN25TTUSM156S | 2023-11-28 | 2023-11-28 | Unemployment Rate: Aged 25-54: All Persons for... | 1960-01-01 | 2023-10-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2023-11-17 12:00:14-06:00 | 2 | OECD Descriptor ID: LRUN25TT OECD unit ID: PC ... |
LNS14100000 | LNS14100000 | 2023-11-28 | 2023-11-28 | Unemployment Rate Full-Time Workers | 1968-01-01 | 2023-10-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2023-11-03 07:50:55-05:00 | 2 | The series comes from the 'Current Population ... |
102 rows Ć 15 columns
all_results = []
for myid in unemployment_df.index:
results = fred.get_series(myid)
results = results.to_frame(name=myid)
all_results.append(results)
type(all_results)
list
all_results[0]
UNRATE | |
---|---|
1948-01-01 | 3.4 |
1948-02-01 | 3.8 |
1948-03-01 | 4.0 |
1948-04-01 | 3.9 |
1948-05-01 | 3.5 |
... | ... |
2023-06-01 | 3.6 |
2023-07-01 | 3.5 |
2023-08-01 | 3.8 |
2023-09-01 | 3.8 |
2023-10-01 | 3.9 |
910 rows Ć 1 columns
all_results[1]
LNS14000006 | |
---|---|
1972-01-01 | 11.2 |
1972-02-01 | 11.2 |
1972-03-01 | 10.7 |
1972-04-01 | 9.8 |
1972-05-01 | 10.2 |
... | ... |
2023-06-01 | 6.0 |
2023-07-01 | 5.8 |
2023-08-01 | 5.3 |
2023-09-01 | 5.7 |
2023-10-01 | 5.8 |
622 rows Ć 1 columns
We see here that all_results
is a list containing DataFrames indexed by datetime
. We then concatenate the list of DataFrames as columns to the unemployment_results
DataFrame.
unemployment_results = pd.concat(all_results, axis=1)
unemployment_results
UNRATE | LNS14000006 | CAUR | M0892AUSM156SNBR | M0892BUSM156SNBR | NYUR | LNS14000024 | TXUR | FLUR | U2RATE | LNS14000002 | LNS14000031 | LNS14000009 | LNS14027662 | LNS14027660 | LNS14000003 | LNS14000001 | ALUR | LNS14024887 | LRUN64TTUSM156S | ILUR | NCUR | PAUR | MIUR | OHUR | NJUR | KYUR | GAUR | MNUR | MAUR | LNS14000012 | NMUR | LNS14027659 | COUR | VAUR | WAUR | ORUR | MDUR | WIUR | AKUR | ARUR | SCUR | WVUR | UTUR | AZUR | TNUR | INUR | LAUR | IAUR | LNS14032183 | NDUR | LNS14000036 | NVUR | MOUR | LASMT261982000000003 | NHUR | HIUR | PRUR | OKUR | LNS14000060 | MSUR | MTUR | NEUR | KSUR | DCUR | LNS14000018 | MEUR | CTUR | WYUR | IDUR | LASMT391746000000003 | CMWRUR | DEUR | SDUR | LNS14000028 | VTUR | LNS14024230 | RIUR | LNS14000032 | LNS14000315 | CSOUUR | LRUN24TTUSM156S | LNS14027689 | LNS14000026 | LNS14000029 | LNS14000150 | CNERUR | LRUNTTTTUSM156S | LNS14200000 | LNS14000048 | CNEWUR | M08318USM156SNBR | LNS14000089 | LNS14000061 | LNS14000025 | LNS14000049 | LNS14000037 | M08311USM156SNBR | CWSTUR | LNS14000015 | LRUN25TTUSM156S | LNS14100000 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1929-04-01 | NaN | NaN | NaN | 0.69 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1929-05-01 | NaN | NaN | NaN | 1.65 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1929-06-01 | NaN | NaN | NaN | 2.06 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1929-07-01 | NaN | NaN | NaN | 0.79 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1929-08-01 | NaN | NaN | NaN | 0.04 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2023-06-01 | 3.6 | 6.0 | 4.6 | NaN | NaN | 3.9 | 3.3 | 4.1 | 2.6 | 1.7 | 3.4 | 5.9 | 4.3 | 2.0 | 3.9 | 3.1 | 3.7 | 2.2 | 7.5 | 3.635787 | 4.0 | 3.3 | 3.8 | 3.6 | 3.4 | 3.7 | 3.8 | 3.2 | 2.9 | 2.6 | 11.0 | 3.5 | 6.0 | 2.8 | 2.7 | 3.8 | 3.5 | 2.0 | 2.5 | 3.7 | 2.6 | 3.1 | 3.3 | 2.4 | 3.5 | 3.2 | 3.2 | 3.6 | 2.7 | 3.2 | 2.0 | 6.1 | 5.4 | 2.6 | 2.9 | 1.8 | 3.0 | 6.1 | 2.7 | 3.1 | 3.1 | 2.4 | 1.9 | 2.8 | 5.1 | 15.6 | 2.4 | 3.7 | 3.1 | 2.7 | 3.7 | 3.2 | 4.2 | 1.8 | 3.0 | 1.9 | 2.6 | 2.9 | 5.4 | 2.2 | 3.2 | 7.5 | 3.1 | 3.1 | 2.6 | 1.8 | 3.5 | 3.6 | 4.0 | 3.0 | 2.8 | NaN | 3.9 | 3.0 | 3.4 | 3.0 | 6.7 | NaN | 4.0 | 9.7 | 3.1 | 3.5 |
2023-07-01 | 3.5 | 5.8 | 4.6 | NaN | NaN | 3.9 | 3.2 | 4.1 | 2.7 | 1.6 | 3.4 | 5.3 | 4.4 | 2.0 | 3.4 | 3.1 | 3.6 | 2.1 | 8.0 | 3.637014 | 4.0 | 3.3 | 3.5 | 3.6 | 3.3 | 3.9 | 3.9 | 3.2 | 3.0 | 2.5 | 11.3 | 3.6 | 5.2 | 2.9 | 2.5 | 3.6 | 3.4 | 1.8 | 2.6 | 3.8 | 2.6 | 3.1 | 3.4 | 2.4 | 3.6 | 3.1 | 3.3 | 3.4 | 2.7 | 2.3 | 2.0 | 6.7 | 5.3 | 2.7 | 3.0 | 1.7 | 2.8 | 6.2 | 2.7 | 3.0 | 3.0 | 2.5 | 2.0 | 2.7 | 5.0 | 20.7 | 2.4 | 3.6 | 3.0 | 2.8 | 3.6 | 3.2 | 4.1 | 1.9 | 3.0 | 1.8 | 2.3 | 2.8 | 5.2 | 2.0 | 3.2 | 8.0 | 3.1 | 3.1 | 2.7 | 1.7 | 3.5 | 3.5 | 4.1 | 2.8 | 2.7 | NaN | 3.6 | 3.1 | 3.3 | 2.9 | 7.2 | NaN | 4.0 | 9.5 | 3.0 | 3.4 |
2023-08-01 | 3.8 | 5.3 | 4.6 | NaN | NaN | 3.9 | 3.5 | 4.1 | 2.7 | 1.7 | 3.5 | 5.0 | 4.9 | 2.2 | 3.8 | 3.4 | 4.0 | 2.1 | 8.6 | 3.803906 | 4.1 | 3.3 | 3.5 | 3.7 | 3.4 | 4.2 | 4.0 | 3.3 | 3.1 | 2.6 | 12.2 | 3.7 | 5.4 | 3.1 | 2.5 | 3.6 | 3.4 | 1.7 | 2.9 | 3.9 | 2.7 | 3.0 | 3.6 | 2.5 | 3.8 | 3.1 | 3.4 | 3.3 | 2.9 | 3.1 | 1.9 | 7.2 | 5.4 | 2.8 | 3.2 | 1.8 | 2.8 | 6.2 | 2.8 | 3.1 | 3.2 | 2.5 | 2.0 | 2.7 | 5.0 | 16.9 | 2.5 | 3.5 | 2.9 | 3.0 | 3.6 | 3.3 | 4.1 | 1.9 | 3.4 | 1.8 | 2.7 | 2.7 | 4.7 | 2.1 | 3.2 | 8.6 | 3.0 | 3.2 | 2.9 | 2.0 | 3.5 | 3.8 | 4.4 | 3.0 | 2.7 | NaN | 3.9 | 3.2 | 3.7 | 3.1 | 8.4 | NaN | 4.0 | 10.9 | 3.1 | 3.7 |
2023-09-01 | 3.8 | 5.7 | 4.7 | NaN | NaN | 4.0 | 3.5 | 4.1 | 2.8 | 1.7 | 3.4 | 5.6 | 4.6 | 2.1 | 4.1 | 3.4 | 4.1 | 2.2 | 8.4 | 3.851825 | 4.4 | 3.4 | 3.4 | 3.9 | 3.4 | 4.4 | 4.1 | 3.4 | 3.1 | 2.6 | 11.6 | 3.7 | 5.5 | 3.2 | 2.5 | 3.6 | 3.5 | 1.6 | 3.1 | 4.1 | 2.9 | 2.9 | 3.8 | 2.6 | 4.0 | 3.2 | 3.6 | 3.3 | 3.0 | 2.8 | 1.9 | 7.1 | 5.4 | 2.9 | 3.4 | 2.0 | 2.8 | 6.0 | 3.0 | 3.2 | 3.2 | 2.7 | 2.1 | 2.8 | 5.0 | 24.0 | 2.7 | 3.5 | 2.9 | 3.1 | 3.7 | 3.4 | 4.1 | 1.9 | 3.5 | 1.9 | 2.7 | 2.6 | 4.5 | 2.2 | 3.2 | 8.4 | 3.0 | 3.1 | 2.8 | 2.1 | 3.6 | 3.8 | 4.3 | 3.1 | 2.7 | NaN | 4.0 | 3.6 | 3.8 | 3.3 | 8.4 | NaN | 4.1 | 9.6 | 3.2 | 3.7 |
2023-10-01 | 3.9 | 5.8 | 4.8 | NaN | NaN | 4.2 | 3.5 | 4.1 | 2.8 | 1.8 | 3.6 | 5.3 | 4.8 | 2.1 | 4.0 | 3.5 | 4.1 | 2.3 | 8.9 | 3.913264 | 4.6 | 3.4 | 3.4 | 4.1 | 3.6 | 4.6 | 4.2 | 3.4 | 3.2 | 2.8 | 13.2 | 3.8 | 5.8 | 3.3 | 2.7 | 3.8 | 3.6 | 1.7 | 3.2 | 4.3 | 3.1 | 2.9 | 4.0 | 2.7 | 4.2 | 3.3 | 3.6 | 3.3 | 3.2 | 3.1 | 1.9 | 7.0 | 5.4 | 3.1 | NaN | 2.1 | 2.9 | 5.8 | 3.2 | 3.2 | 3.3 | 2.8 | 2.2 | 2.9 | 5.0 | 18.8 | 2.8 | 3.5 | 2.9 | 3.2 | NaN | 3.6 | 4.2 | 2.0 | 3.4 | 2.0 | 2.7 | 2.7 | 5.3 | 2.1 | 3.3 | 8.9 | 3.1 | 3.3 | 2.8 | 2.0 | 3.7 | 3.9 | 4.6 | 3.1 | 2.8 | NaN | 4.3 | 3.5 | 3.7 | 3.3 | 7.9 | NaN | 4.2 | 12.2 | 3.2 | 3.7 |
1123 rows Ć 102 columns
US states in the dataset are represented with 4 uppercase characters instead of 2 in the naming convention. Here are some examples:
unemployment_df.loc['NYUR'] # Unemployment rate in New York
id NYUR realtime_start 2023-11-28 00:00:00 realtime_end 2023-11-28 00:00:00 title Unemployment Rate in New York observation_start 1976-01-01 00:00:00 observation_end 2023-10-01 00:00:00 frequency Monthly frequency_short M units Percent units_short % seasonal_adjustment Seasonally Adjusted seasonal_adjustment_short SA last_updated 2023-11-20 11:19:02-06:00 popularity 52 notes None Name: NYUR, dtype: object
unemployment_df.loc['MAUR'] # Unemploynent rate in Massachusetts
id MAUR realtime_start 2023-11-28 00:00:00 realtime_end 2023-11-28 00:00:00 title Unemployment Rate in Massachusetts observation_start 1976-01-01 00:00:00 observation_end 2023-10-01 00:00:00 frequency Monthly frequency_short M units Percent units_short % seasonal_adjustment Seasonally Adjusted seasonal_adjustment_short SA last_updated 2023-11-20 11:19:05-06:00 popularity 30 notes None Name: MAUR, dtype: object
unemployment_df.loc['NHUR'] # Unemployment rate in Hampshire
id NHUR realtime_start 2023-11-28 00:00:00 realtime_end 2023-11-28 00:00:00 title Unemployment Rate in New Hampshire observation_start 1976-01-01 00:00:00 observation_end 2023-10-01 00:00:00 frequency Monthly frequency_short M units Percent units_short % seasonal_adjustment Seasonally Adjusted seasonal_adjustment_short SA last_updated 2023-11-20 11:19:13-06:00 popularity 19 notes None Name: NHUR, dtype: object
Let's loop through the columns and filter out columns to drop with characters greater than 4. We can save this into a list and drop fields that are not US States.
columns_to_drop = []
for cols in unemployment_results.columns:
if len(cols) > 4:
columns_to_drop.append(cols)
columns_to_drop
['UNRATE', 'LNS14000006', 'M0892AUSM156SNBR', 'M0892BUSM156SNBR', 'LNS14000024', 'U2RATE', 'LNS14000002', 'LNS14000031', 'LNS14000009', 'LNS14027662', 'LNS14027660', 'LNS14000003', 'LNS14000001', 'LNS14024887', 'LRUN64TTUSM156S', 'LNS14000012', 'LNS14027659', 'LNS14032183', 'LNS14000036', 'LASMT261982000000003', 'LNS14000060', 'LNS14000018', 'LASMT391746000000003', 'CMWRUR', 'LNS14000028', 'LNS14024230', 'LNS14000032', 'LNS14000315', 'CSOUUR', 'LRUN24TTUSM156S', 'LNS14027689', 'LNS14000026', 'LNS14000029', 'LNS14000150', 'CNERUR', 'LRUNTTTTUSM156S', 'LNS14200000', 'LNS14000048', 'CNEWUR', 'M08318USM156SNBR', 'LNS14000089', 'LNS14000061', 'LNS14000025', 'LNS14000049', 'LNS14000037', 'M08311USM156SNBR', 'CWSTUR', 'LNS14000015', 'LRUN25TTUSM156S', 'LNS14100000']
unemployment_states = unemployment_results \
.drop(columns=columns_to_drop, axis=1) \
.drop(columns='PRUR', axis=1)
unemployment_states
CAUR | NYUR | TXUR | FLUR | ALUR | ILUR | NCUR | PAUR | MIUR | OHUR | NJUR | KYUR | GAUR | MNUR | MAUR | NMUR | COUR | VAUR | WAUR | ORUR | MDUR | WIUR | AKUR | ARUR | SCUR | WVUR | UTUR | AZUR | TNUR | INUR | LAUR | IAUR | NDUR | NVUR | MOUR | NHUR | HIUR | OKUR | MSUR | MTUR | NEUR | KSUR | DCUR | MEUR | CTUR | WYUR | IDUR | DEUR | SDUR | VTUR | RIUR | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1929-04-01 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1929-05-01 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1929-06-01 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1929-07-01 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1929-08-01 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2023-06-01 | 4.6 | 3.9 | 4.1 | 2.6 | 2.2 | 4.0 | 3.3 | 3.8 | 3.6 | 3.4 | 3.7 | 3.8 | 3.2 | 2.9 | 2.6 | 3.5 | 2.8 | 2.7 | 3.8 | 3.5 | 2.0 | 2.5 | 3.7 | 2.6 | 3.1 | 3.3 | 2.4 | 3.5 | 3.2 | 3.2 | 3.6 | 2.7 | 2.0 | 5.4 | 2.6 | 1.8 | 3.0 | 2.7 | 3.1 | 2.4 | 1.9 | 2.8 | 5.1 | 2.4 | 3.7 | 3.1 | 2.7 | 4.2 | 1.8 | 1.9 | 2.9 |
2023-07-01 | 4.6 | 3.9 | 4.1 | 2.7 | 2.1 | 4.0 | 3.3 | 3.5 | 3.6 | 3.3 | 3.9 | 3.9 | 3.2 | 3.0 | 2.5 | 3.6 | 2.9 | 2.5 | 3.6 | 3.4 | 1.8 | 2.6 | 3.8 | 2.6 | 3.1 | 3.4 | 2.4 | 3.6 | 3.1 | 3.3 | 3.4 | 2.7 | 2.0 | 5.3 | 2.7 | 1.7 | 2.8 | 2.7 | 3.0 | 2.5 | 2.0 | 2.7 | 5.0 | 2.4 | 3.6 | 3.0 | 2.8 | 4.1 | 1.9 | 1.8 | 2.8 |
2023-08-01 | 4.6 | 3.9 | 4.1 | 2.7 | 2.1 | 4.1 | 3.3 | 3.5 | 3.7 | 3.4 | 4.2 | 4.0 | 3.3 | 3.1 | 2.6 | 3.7 | 3.1 | 2.5 | 3.6 | 3.4 | 1.7 | 2.9 | 3.9 | 2.7 | 3.0 | 3.6 | 2.5 | 3.8 | 3.1 | 3.4 | 3.3 | 2.9 | 1.9 | 5.4 | 2.8 | 1.8 | 2.8 | 2.8 | 3.2 | 2.5 | 2.0 | 2.7 | 5.0 | 2.5 | 3.5 | 2.9 | 3.0 | 4.1 | 1.9 | 1.8 | 2.7 |
2023-09-01 | 4.7 | 4.0 | 4.1 | 2.8 | 2.2 | 4.4 | 3.4 | 3.4 | 3.9 | 3.4 | 4.4 | 4.1 | 3.4 | 3.1 | 2.6 | 3.7 | 3.2 | 2.5 | 3.6 | 3.5 | 1.6 | 3.1 | 4.1 | 2.9 | 2.9 | 3.8 | 2.6 | 4.0 | 3.2 | 3.6 | 3.3 | 3.0 | 1.9 | 5.4 | 2.9 | 2.0 | 2.8 | 3.0 | 3.2 | 2.7 | 2.1 | 2.8 | 5.0 | 2.7 | 3.5 | 2.9 | 3.1 | 4.1 | 1.9 | 1.9 | 2.6 |
2023-10-01 | 4.8 | 4.2 | 4.1 | 2.8 | 2.3 | 4.6 | 3.4 | 3.4 | 4.1 | 3.6 | 4.6 | 4.2 | 3.4 | 3.2 | 2.8 | 3.8 | 3.3 | 2.7 | 3.8 | 3.6 | 1.7 | 3.2 | 4.3 | 3.1 | 2.9 | 4.0 | 2.7 | 4.2 | 3.3 | 3.6 | 3.3 | 3.2 | 1.9 | 5.4 | 3.1 | 2.1 | 2.9 | 3.2 | 3.3 | 2.8 | 2.2 | 2.9 | 5.0 | 2.8 | 3.5 | 2.9 | 3.2 | 4.2 | 2.0 | 2.0 | 2.7 |
1123 rows Ć 51 columns
for index, cols in enumerate(unemployment_states.columns):
print(index, cols)
0 CAUR 1 NYUR 2 TXUR 3 FLUR 4 ALUR 5 ILUR 6 NCUR 7 PAUR 8 MIUR 9 OHUR 10 NJUR 11 KYUR 12 GAUR 13 MNUR 14 MAUR 15 NMUR 16 COUR 17 VAUR 18 WAUR 19 ORUR 20 MDUR 21 WIUR 22 AKUR 23 ARUR 24 SCUR 25 WVUR 26 UTUR 27 AZUR 28 TNUR 29 INUR 30 LAUR 31 IAUR 32 NDUR 33 NVUR 34 MOUR 35 NHUR 36 HIUR 37 OKUR 38 MSUR 39 MTUR 40 NEUR 41 KSUR 42 DCUR 43 MEUR 44 CTUR 45 WYUR 46 IDUR 47 DEUR 48 SDUR 49 VTUR 50 RIUR
unemployment_states.isna().sum(axis=1).plot()
<Axes: >
We can just choose to drop the missing values as we have no way of collecting US unemployment rate data from the past that is gathered by the US Federal Reserve.
The state names are pretty hard to read. A workaround for this would be to:
'title'
column.to_dict()
to make a hash map of the column namesunemployment_states = unemployment_states.dropna()
id_to_state = unemployment_df['title'].str.replace('Unemployment Rate in', '').to_dict()
unemployment_states.columns = [id_to_state[col] for col in unemployment_states.columns]
unemployment_states
California | New York | Texas | Florida | Alabama | Illinois | North Carolina | Pennsylvania | Michigan | Ohio | New Jersey | Kentucky | Georgia | Minnesota | Massachusetts | New Mexico | Colorado | Virginia | Washington | Oregon | Maryland | Wisconsin | Alaska | Arkansas | South Carolina | West Virginia | Utah | Arizona | Tennessee | Indiana | Louisiana | Iowa | North Dakota | Nevada | Missouri | New Hampshire | Hawaii | Oklahoma | Mississippi | Montana | Nebraska | Kansas | the District of Columbia | Maine | Connecticut | Wyoming | Idaho | Delaware | South Dakota | Vermont | Rhode Island | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1976-01-01 | 9.2 | 10.3 | 5.8 | 9.7 | 6.6 | 6.6 | 6.4 | 8.0 | 9.9 | 8.1 | 10.3 | 5.6 | 8.4 | 6.0 | 10.5 | 8.6 | 5.8 | 6.1 | 8.5 | 9.5 | 6.4 | 5.8 | 7.1 | 7.3 | 7.4 | 7.5 | 5.8 | 10.2 | 6.0 | 6.6 | 6.3 | 4.3 | 3.4 | 9.2 | 5.9 | 6.5 | 9.8 | 5.8 | 6.7 | 5.8 | 3.3 | 4.2 | 8.7 | 8.7 | 9.8 | 4.1 | 5.6 | 8.0 | 3.3 | 8.6 | 7.8 |
1976-02-01 | 9.2 | 10.3 | 5.8 | 9.7 | 6.6 | 6.6 | 6.4 | 8.1 | 9.9 | 8.1 | 10.3 | 5.6 | 8.4 | 6.0 | 10.5 | 8.7 | 5.7 | 6.1 | 8.5 | 9.5 | 6.4 | 5.8 | 7.1 | 7.3 | 7.4 | 7.5 | 5.9 | 10.2 | 6.0 | 6.6 | 6.3 | 4.3 | 3.4 | 9.2 | 5.9 | 6.5 | 9.8 | 5.8 | 6.7 | 5.8 | 3.3 | 4.2 | 8.7 | 8.7 | 9.8 | 4.1 | 5.6 | 8.0 | 3.3 | 8.6 | 7.8 |
1976-03-01 | 9.1 | 10.2 | 5.9 | 9.6 | 6.6 | 6.6 | 6.4 | 8.1 | 9.9 | 8.1 | 10.3 | 5.6 | 8.4 | 5.9 | 10.5 | 8.7 | 5.7 | 6.1 | 8.4 | 9.4 | 6.4 | 5.7 | 7.0 | 7.3 | 7.3 | 7.5 | 5.8 | 10.1 | 6.0 | 6.5 | 6.3 | 4.3 | 3.4 | 9.2 | 5.9 | 6.5 | 9.8 | 5.8 | 6.6 | 5.8 | 3.3 | 4.2 | 8.6 | 8.6 | 9.8 | 4.1 | 5.6 | 8.0 | 3.2 | 8.6 | 7.7 |
1976-04-01 | 9.1 | 10.2 | 5.9 | 9.5 | 6.5 | 6.6 | 6.3 | 8.1 | 9.8 | 8.0 | 10.3 | 5.6 | 8.3 | 5.8 | 10.3 | 8.6 | 5.6 | 6.0 | 8.5 | 9.2 | 6.4 | 5.6 | 6.9 | 7.2 | 7.2 | 7.5 | 5.8 | 10.0 | 6.0 | 6.3 | 6.4 | 4.2 | 3.5 | 9.0 | 6.0 | 6.5 | 9.7 | 5.8 | 6.4 | 5.8 | 3.2 | 4.2 | 8.5 | 8.6 | 9.6 | 4.0 | 5.6 | 8.1 | 3.1 | 8.6 | 7.7 |
1976-05-01 | 9.0 | 10.1 | 5.9 | 9.3 | 6.4 | 6.6 | 6.1 | 8.1 | 9.6 | 7.8 | 10.3 | 5.5 | 8.1 | 5.7 | 10.1 | 8.6 | 5.6 | 5.9 | 8.5 | 9.1 | 6.5 | 5.5 | 6.9 | 7.1 | 7.0 | 7.4 | 5.7 | 9.8 | 5.9 | 6.0 | 6.5 | 4.1 | 3.6 | 8.9 | 6.0 | 6.5 | 9.4 | 5.7 | 6.3 | 5.8 | 3.1 | 4.2 | 8.4 | 8.5 | 9.4 | 3.9 | 5.6 | 8.3 | 3.1 | 8.5 | 7.7 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2023-06-01 | 4.6 | 3.9 | 4.1 | 2.6 | 2.2 | 4.0 | 3.3 | 3.8 | 3.6 | 3.4 | 3.7 | 3.8 | 3.2 | 2.9 | 2.6 | 3.5 | 2.8 | 2.7 | 3.8 | 3.5 | 2.0 | 2.5 | 3.7 | 2.6 | 3.1 | 3.3 | 2.4 | 3.5 | 3.2 | 3.2 | 3.6 | 2.7 | 2.0 | 5.4 | 2.6 | 1.8 | 3.0 | 2.7 | 3.1 | 2.4 | 1.9 | 2.8 | 5.1 | 2.4 | 3.7 | 3.1 | 2.7 | 4.2 | 1.8 | 1.9 | 2.9 |
2023-07-01 | 4.6 | 3.9 | 4.1 | 2.7 | 2.1 | 4.0 | 3.3 | 3.5 | 3.6 | 3.3 | 3.9 | 3.9 | 3.2 | 3.0 | 2.5 | 3.6 | 2.9 | 2.5 | 3.6 | 3.4 | 1.8 | 2.6 | 3.8 | 2.6 | 3.1 | 3.4 | 2.4 | 3.6 | 3.1 | 3.3 | 3.4 | 2.7 | 2.0 | 5.3 | 2.7 | 1.7 | 2.8 | 2.7 | 3.0 | 2.5 | 2.0 | 2.7 | 5.0 | 2.4 | 3.6 | 3.0 | 2.8 | 4.1 | 1.9 | 1.8 | 2.8 |
2023-08-01 | 4.6 | 3.9 | 4.1 | 2.7 | 2.1 | 4.1 | 3.3 | 3.5 | 3.7 | 3.4 | 4.2 | 4.0 | 3.3 | 3.1 | 2.6 | 3.7 | 3.1 | 2.5 | 3.6 | 3.4 | 1.7 | 2.9 | 3.9 | 2.7 | 3.0 | 3.6 | 2.5 | 3.8 | 3.1 | 3.4 | 3.3 | 2.9 | 1.9 | 5.4 | 2.8 | 1.8 | 2.8 | 2.8 | 3.2 | 2.5 | 2.0 | 2.7 | 5.0 | 2.5 | 3.5 | 2.9 | 3.0 | 4.1 | 1.9 | 1.8 | 2.7 |
2023-09-01 | 4.7 | 4.0 | 4.1 | 2.8 | 2.2 | 4.4 | 3.4 | 3.4 | 3.9 | 3.4 | 4.4 | 4.1 | 3.4 | 3.1 | 2.6 | 3.7 | 3.2 | 2.5 | 3.6 | 3.5 | 1.6 | 3.1 | 4.1 | 2.9 | 2.9 | 3.8 | 2.6 | 4.0 | 3.2 | 3.6 | 3.3 | 3.0 | 1.9 | 5.4 | 2.9 | 2.0 | 2.8 | 3.0 | 3.2 | 2.7 | 2.1 | 2.8 | 5.0 | 2.7 | 3.5 | 2.9 | 3.1 | 4.1 | 1.9 | 1.9 | 2.6 |
2023-10-01 | 4.8 | 4.2 | 4.1 | 2.8 | 2.3 | 4.6 | 3.4 | 3.4 | 4.1 | 3.6 | 4.6 | 4.2 | 3.4 | 3.2 | 2.8 | 3.8 | 3.3 | 2.7 | 3.8 | 3.6 | 1.7 | 3.2 | 4.3 | 3.1 | 2.9 | 4.0 | 2.7 | 4.2 | 3.3 | 3.6 | 3.3 | 3.2 | 1.9 | 5.4 | 3.1 | 2.1 | 2.9 | 3.2 | 3.3 | 2.8 | 2.2 | 2.9 | 5.0 | 2.8 | 3.5 | 2.9 | 3.2 | 4.2 | 2.0 | 2.0 | 2.7 |
574 rows Ć 51 columns
We now have more readable US State Columns
Let us visualize unemployment rates by US for every month over the years. To make it interactive we'll make use of plotly.express
which is an interactive graphing library for Python.
fig = px.line(data_frame=unemployment_states,
title='Unemployment Rate by USA State',
labels={
'index': 'Month & Year',
'value': 'Unemployment Rate',
'variable': 'State'
},
markers=True)
fig.show()
It can be seen that the most recent month and year where unemployment rate was at its peak occurred on May 2020 (2020-05-01). Let's try pulling out the data from that time.
unemployment_states.loc[unemployment_states.index == '2020-05-01']
California | New York | Texas | Florida | Alabama | Illinois | North Carolina | Pennsylvania | Michigan | Ohio | New Jersey | Kentucky | Georgia | Minnesota | Massachusetts | New Mexico | Colorado | Virginia | Washington | Oregon | Maryland | Wisconsin | Alaska | Arkansas | South Carolina | West Virginia | Utah | Arizona | Tennessee | Indiana | Louisiana | Iowa | North Dakota | Nevada | Missouri | New Hampshire | Hawaii | Oklahoma | Mississippi | Montana | Nebraska | Kansas | the District of Columbia | Maine | Connecticut | Wyoming | Idaho | Delaware | South Dakota | Vermont | Rhode Island | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2020-05-01 | 15.7 | 16.6 | 11.6 | 14.1 | 10.4 | 14.7 | 11.6 | 12.9 | 19.1 | 12.7 | 15.3 | 12.8 | 9.7 | 11.1 | 15.5 | 9.3 | 11.6 | 10.0 | 13.2 | 11.8 | 8.8 | 10.5 | 11.9 | 8.9 | 9.2 | 12.4 | 7.7 | 11.2 | 12.1 | 12.4 | 12.2 | 8.3 | 7.2 | 24.7 | 9.5 | 11.7 | 20.8 | 9.7 | 11.2 | 9.2 | 6.3 | 9.3 | 8.8 | 9.4 | 11.7 | 8.7 | 9.0 | 13.4 | 6.6 | 9.5 | 15.4 |
Using .T
allows us to flip the columns and the rows. This way:
ax = unemployment_states.loc[unemployment_states.index == '2020-05-01'].T \
.sort_values('2020-05-01') \
.plot(kind='barh', figsize=(8, 12),
xlabel='% Unemployed',
edgecolor='black', width=0.7,
title='Unemployment Rate by US State (May 2020)')
ax.legend().remove()
plt.show()
Now that we have unemployment rate data, let's begin pulling participation rate data.
participation_df = fred.search('participation rate state', filter=('frequency', 'Monthly'))
participation_df = participation_df.query('seasonal_adjustment == "Seasonally Adjusted" and ' +
'units == "Percent"')
participation_df
id | realtime_start | realtime_end | title | observation_start | observation_end | frequency | frequency_short | units | units_short | seasonal_adjustment | seasonal_adjustment_short | last_updated | popularity | notes | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
series id | |||||||||||||||
CIVPART | CIVPART | 2023-11-28 | 2023-11-28 | Labor Force Participation Rate | 1948-01-01 | 2023-10-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2023-11-03 07:50:02-05:00 | 82 | The series comes from the 'Current Population ... |
LNS11300060 | LNS11300060 | 2023-11-28 | 2023-11-28 | Labor Force Participation Rate - 25-54 Yrs. | 1948-01-01 | 2023-10-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2023-11-03 07:50:11-05:00 | 65 | The series comes from the 'Current Population ... |
LNS11300002 | LNS11300002 | 2023-11-28 | 2023-11-28 | Labor Force Participation Rate - Women | 1948-01-01 | 2023-10-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2023-11-03 07:50:09-05:00 | 65 | To obtain estimates of women worker employment... |
LNS11300001 | LNS11300001 | 2023-11-28 | 2023-11-28 | Labor Force Participation Rate - Men | 1948-01-01 | 2023-10-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2023-11-03 07:50:14-05:00 | 55 | The series comes from the 'Current Population ... |
LNS11324230 | LNS11324230 | 2023-11-28 | 2023-11-28 | Labor Force Participation Rate - 55 Yrs. & over | 1948-01-01 | 2023-10-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2023-11-03 07:50:20-05:00 | 49 | The series comes from the 'Current Population ... |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
LRINTTMAUSM156S | LRINTTMAUSM156S | 2023-11-28 | 2023-11-28 | Inactivity Rate: Aged 15 and over: Males for U... | 1975-01-01 | 2023-10-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2023-11-17 12:00:43-06:00 | 1 | OECD Descriptor ID: LRINTTMA OECD unit ID: PC ... |
LRINTTFEUSM156S | LRINTTFEUSM156S | 2023-11-28 | 2023-11-28 | Inactivity Rate: Aged 15 and over: Females for... | 1975-01-01 | 2023-10-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2023-11-17 12:00:43-06:00 | 1 | OECD Descriptor ID: LRINTTFE OECD unit ID: PC ... |
LRIN74TTUSM156S | LRIN74TTUSM156S | 2023-11-28 | 2023-11-28 | Inactivity Rate: Aged 15-74: All Persons for U... | 1981-01-01 | 2023-10-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2023-11-17 12:38:08-06:00 | 0 | OECD Descriptor ID: LRIN74TT OECD unit ID: PC ... |
LRINTTTTUSM156S | LRINTTTTUSM156S | 2023-11-28 | 2023-11-28 | Inactivity Rate: Aged 15 and over: All Persons... | 1975-01-01 | 2023-10-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2023-11-17 12:00:43-06:00 | 1 | OECD Descriptor ID: LRINTTTT OECD unit ID: PC ... |
LRACTTTTUSM156S | LRACTTTTUSM156S | 2023-11-28 | 2023-11-28 | Activity Rate: Aged 15 and over: All Persons f... | 1960-01-01 | 2023-10-01 | Monthly | M | Percent | % | Seasonally Adjusted | SA | 2023-11-17 12:02:11-06:00 | 1 | OECD Descriptor ID: LRACTTTT OECD unit ID: PC ... |
109 rows Ć 15 columns
participation_id_to_state = participation_df['title'].str \
.replace('Labor Force Participation Rate for', '') \
.to_dict()
participation_id_to_state
{'CIVPART': 'Labor Force Participation Rate', 'LNS11300060': 'Labor Force Participation Rate - 25-54 Yrs.', 'LNS11300002': 'Labor Force Participation Rate - Women', 'LNS11300001': 'Labor Force Participation Rate - Men', 'LNS11324230': 'Labor Force Participation Rate - 55 Yrs. & over', 'LNS11300012': 'Labor Force Participation Rate - 16-19 Yrs.', 'LNS11300006': 'Labor Force Participation Rate - Black or African American', 'LNS11300036': 'Labor Force Participation Rate - 20-24 Yrs.', 'LRAC25MAUSM156S': 'Activity Rate: Aged 25-54: Males for United States', 'LRAC25FEUSM156S': 'Activity Rate: Aged 25-54: Females for United States', 'LBSSA06': ' California', 'LBSSA01': ' Alabama', 'LNS11327662': "Labor Force Participation Rate - Bachelor's Degree and Higher, 25 Yrs. & over", 'LBSSA26': ' Michigan', 'LBSSA12': ' Florida', 'LBSSA55': ' Wisconsin', 'LNS11300028': 'Labor Force Participation Rate - 20 Yrs. & over, White Men', 'LNS11300031': 'Labor Force Participation Rate - 20 Yrs. & over, Black or African American Men', 'LNS11300003': 'Labor Force Participation Rate - White', 'LBSSA27': ' Minnesota', 'LBSSA36': ' New York', 'LBSSA21': ' Kentucky', 'LNS11327660': 'Labor Force Participation Rate - High School Graduates, No College, 25 Yrs. & over', 'LNS11300032': 'Labor Force Participation Rate - 20 Yrs. & over, Black or African American Women', 'LBSSA48': ' Texas', 'LBSSA39': ' Ohio', 'LBSSA28': ' Mississippi', 'LBSSA35': ' New Mexico', 'LNS11300026': 'Labor Force Participation Rate - 20 Yrs. & over, Women', 'LBSSA53': ' Washington', 'LBSSA23': ' Maine', 'LBSSA49': ' Utah', 'LBSSA17': ' Illinois', 'LNS11300009': 'Labor Force Participation Rate - Hispanic or Latino', 'LRIN64TTUSM156S': 'Inactivity Rate: Aged 15-64: All Persons for United States', 'LBSSA54': ' West Virginia', 'LBSSA47': ' Tennessee', 'LBSSA24': ' Maryland', 'LBSSA25': ' Massachusetts', 'LBSSA42': ' Pennsylvania', 'LBSSA37': ' North Carolina', 'LBSSA13': ' Georgia', 'LBSSA22': ' Louisiana', 'LBSSA51': ' Virginia', 'LBSSA45': ' South Carolina', 'LNS11300025': 'Labor Force Participation Rate - 20 Yrs. & over, Men', 'LBSSA15': ' Hawaii', 'LBSSA20': ' Kansas', 'LBSSA05': ' Arkansas', 'LBSSA08': ' Colorado', 'LBSSA33': ' New Hampshire', 'LBSSA09': ' Connecticut', 'LNS11300029': 'Labor Force Participation Rate - 20 Yrs. & over, White Women', 'LNS11327659': 'Labor Force Participation Rate - Less Than a High School Diploma, 25 Yrs. & over', 'LBSSA29': ' Missouri', 'LRAC64TTUSM156S': 'Activity Rate: Aged 15-64: All Persons for United States', 'LBSSA31': ' Nebraska', 'LBSSA32': ' Nevada', 'LBSSA04': ' Arizona', 'LBSSA19': ' Iowa', 'LBSSA18': ' Indiana', 'LBSSA16': ' Idaho', 'LBSSA34': ' New Jersey', 'LBSSA41': ' Oregon', 'LBSSA40': ' Oklahoma', 'LBSSA02': ' Alaska', 'LNS11300018': 'Labor Force Participation Rate - 16-19 Yrs., Black or African American', 'LBSSA50': ' Vermont', 'LBSSA44': ' Rhode Island', 'LRAC55TTUSM156S': 'Activity Rate: Aged 55-64: All Persons for United States', 'LNS11327689': 'Labor Force Participation Rate - Some College or Associate Degree, 25 Yrs. & over', 'LBSSA46': ' South Dakota', 'LBSSA30': ' Montana', 'LBSSA56': ' Wyoming', 'LBSSA38': ' North Dakota', 'LBSSA10': ' Delaware', 'LNS11300015': 'Labor Force Participation Rate - 16-19 Yrs., White', 'LRIN25MAUSM156S': 'Inactivity Rate: Aged 25-54: Males for United States', 'LRAC64FEUSM156S': 'Activity Rate: Aged 15-64: Females for United States', 'LRAC24TTUSM156S': 'Activity Rate: Aged 15-24: All Persons for United States', 'LRIN55TTUSM156S': 'Inactivity Rate: Aged 55-64: All Persons for United States', 'LBSSA11': ' District Of Columbia', 'LRAC55MAUSM156S': 'Activity Rate: Aged 55-64: Males for United States', 'LRAC24FEUSM156S': 'Activity Rate: Aged 15-24: Females for United States', 'LRAC24MAUSM156S': 'Activity Rate: Aged 15-24: Males for United States', 'LRAC55FEUSM156S': 'Activity Rate: Aged 55-64: Females for United States', 'LRIN55MAUSM156S': 'Inactivity Rate: Aged 55-64: Males for United States', 'LRIN24FEUSM156S': 'Inactivity Rate: Aged 15-24: Females for United States', 'LRIN24MAUSM156S': 'Inactivity Rate: Aged 15-24: Males for United States', 'LRIN55FEUSM156S': 'Inactivity Rate: Aged 55-64: Females for United States', 'LRAC74MAUSM156S': 'Activity Rate: Aged 15-74: Males for United States', 'LRAC74FEUSM156S': 'Activity Rate: Aged 15-74: Females for United States', 'LRIN74FEUSM156S': 'Inactivity Rate: Aged 15-74: Females for United States', 'LRIN74MAUSM156S': 'Inactivity Rate: Aged 15-74: Males for United States', 'LRIN64MAUSM156S': 'Inactivity Rate: Aged 15-64: Males for United States', 'LRIN64FEUSM156S': 'Inactivity Rate: Aged 15-64: Females for United States', 'LRAC64MAUSM156S': 'Activity Rate: Aged 15-64: Males for United States', 'LRIN25FEUSM156S': 'Inactivity Rate: Aged 25-54: Females for United States', 'LRAC25TTUSM156S': 'Activity Rate: Aged 25-54: All Persons for United States', 'LRIN24TTUSM156S': 'Inactivity Rate: Aged 15-24: All Persons for United States', 'LRAC74TTUSM156S': 'Activity Rate: Aged 15-74: All Persons for United States', 'LRIN25TTUSM156S': 'Inactivity Rate: Aged 25-54: All Persons for United States', 'LRACTTMAUSM156S': 'Activity Rate: Aged 15 and over: Males for United States', 'LRACTTFEUSM156S': 'Activity Rate: Aged 15 and over: Females for United States', 'LRINTTMAUSM156S': 'Inactivity Rate: Aged 15 and over: Males for United States', 'LRINTTFEUSM156S': 'Inactivity Rate: Aged 15 and over: Females for United States', 'LRIN74TTUSM156S': 'Inactivity Rate: Aged 15-74: All Persons for United States', 'LRINTTTTUSM156S': 'Inactivity Rate: Aged 15 and over: All Persons for United States', 'LRACTTTTUSM156S': 'Activity Rate: Aged 15 and over: All Persons for United States'}
participation_all_results = []
for part_id in participation_df.index:
participation_results = fred.get_series(part_id)
participation_results = participation_results.to_frame(name=part_id)
participation_all_results.append(participation_results)
participation_results = pd.concat(participation_all_results, axis=1)
participation_results
CIVPART | LNS11300060 | LNS11300002 | LNS11300001 | LNS11324230 | LNS11300012 | LNS11300006 | LNS11300036 | LRAC25MAUSM156S | LRAC25FEUSM156S | LBSSA06 | LBSSA01 | LNS11327662 | LBSSA26 | LBSSA12 | LBSSA55 | LNS11300028 | LNS11300031 | LNS11300003 | LBSSA27 | LBSSA36 | LBSSA21 | LNS11327660 | LNS11300032 | LBSSA48 | LBSSA39 | LBSSA28 | LBSSA35 | LNS11300026 | LBSSA53 | LBSSA23 | LBSSA49 | LBSSA17 | LNS11300009 | LRIN64TTUSM156S | LBSSA54 | LBSSA47 | LBSSA24 | LBSSA25 | LBSSA42 | LBSSA37 | LBSSA13 | LBSSA22 | LBSSA51 | LBSSA45 | LNS11300025 | LBSSA15 | LBSSA20 | LBSSA05 | LBSSA08 | LBSSA33 | LBSSA09 | LNS11300029 | LNS11327659 | LBSSA29 | LRAC64TTUSM156S | LBSSA31 | LBSSA32 | LBSSA04 | LBSSA19 | LBSSA18 | LBSSA16 | LBSSA34 | LBSSA41 | LBSSA40 | LBSSA02 | LNS11300018 | LBSSA50 | LBSSA44 | LRAC55TTUSM156S | LNS11327689 | LBSSA46 | LBSSA30 | LBSSA56 | LBSSA38 | LBSSA10 | LNS11300015 | LRIN25MAUSM156S | LRAC64FEUSM156S | LRAC24TTUSM156S | LRIN55TTUSM156S | LBSSA11 | LRAC55MAUSM156S | LRAC24FEUSM156S | LRAC24MAUSM156S | LRAC55FEUSM156S | LRIN55MAUSM156S | LRIN24FEUSM156S | LRIN24MAUSM156S | LRIN55FEUSM156S | LRAC74MAUSM156S | LRAC74FEUSM156S | LRIN74FEUSM156S | LRIN74MAUSM156S | LRIN64MAUSM156S | LRIN64FEUSM156S | LRAC64MAUSM156S | LRIN25FEUSM156S | LRAC25TTUSM156S | LRIN24TTUSM156S | LRAC74TTUSM156S | LRIN25TTUSM156S | LRACTTMAUSM156S | LRACTTFEUSM156S | LRINTTMAUSM156S | LRINTTFEUSM156S | LRIN74TTUSM156S | LRINTTTTUSM156S | LRACTTTTUSM156S | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1948-01-01 | 58.6 | 64.2 | 32.0 | 86.7 | 43.0 | 53.2 | NaN | 64.4 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 31.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 88.7 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1948-02-01 | 58.9 | 64.6 | 32.4 | 87.0 | 43.3 | 53.7 | NaN | 64.9 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 31.4 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 89.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1948-03-01 | 58.5 | 64.3 | 32.1 | 86.3 | 43.0 | 54.1 | NaN | 63.3 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 31.1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 88.2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1948-04-01 | 59.0 | 64.8 | 33.0 | 86.6 | 43.4 | 54.2 | NaN | 63.7 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 32.1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 88.3 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1948-05-01 | 58.3 | 64.3 | 32.0 | 86.1 | 43.2 | 50.9 | NaN | 63.7 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 31.3 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 88.1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2023-06-01 | 62.6 | 83.5 | 57.3 | 68.1 | 38.3 | 36.3 | 62.6 | 71.0 | 89.2 | 77.8 | 62.5 | 57.0 | 73.4 | 60.7 | 59.5 | 65.3 | 70.3 | 68.0 | 62.3 | 68.4 | 61.2 | 57.8 | 57.0 | 62.9 | 64.2 | 62.2 | 54.5 | 57.0 | 58.6 | 64.7 | 58.4 | 69.6 | 64.6 | 67.3 | 25.290479 | 54.6 | 59.3 | 65.3 | 64.6 | 62.0 | 60.7 | 61.3 | 59.5 | 66.6 | 56.7 | 70.5 | 60.4 | 66.8 | 57.6 | 68.7 | 65.2 | 64.1 | 57.6 | 46.6 | 63.6 | 74.709521 | 69.5 | 61.5 | 61.7 | 68.7 | 63.6 | 62.5 | 65.4 | 62.0 | 61.4 | 65.3 | 29.8 | 63.8 | 63.2 | 65.620207 | 62.5 | 67.9 | 62.8 | 64.6 | 69.7 | 60.0 | 38.1 | 10.865244 | 69.966280 | 55.8 | 34.379793 | 70.8 | 71.578012 | 55.4 | 56.2 | 59.876960 | 28.421988 | 44.519844 | 43.729189 | 40.123040 | 72.975870 | 63.026070 | 36.973930 | 27.024130 | 20.523423 | 30.033720 | 79.476577 | 22.354717 | 83.5 | 44.120953 | 67.947557 | 16.616358 | 68.1 | 57.3 | 31.878412 | 42.727579 | 32.052443 | 37.424897 | 62.6 |
2023-07-01 | 62.6 | 83.4 | 57.4 | 68.0 | 38.6 | 35.7 | 62.7 | 70.6 | 89.4 | 77.5 | 62.4 | 57.0 | 73.4 | 61.0 | 59.7 | 65.5 | 70.2 | 68.3 | 62.3 | 68.5 | 61.4 | 57.7 | 56.5 | 63.0 | 64.2 | 62.1 | 54.4 | 57.1 | 58.7 | 64.7 | 58.5 | 69.8 | 64.4 | 67.4 | 25.330745 | 54.7 | 59.4 | 65.3 | 64.5 | 61.9 | 60.7 | 61.4 | 59.3 | 66.7 | 56.9 | 70.4 | 60.3 | 66.8 | 57.7 | 68.7 | 64.9 | 64.1 | 57.7 | 47.7 | 63.6 | 74.669255 | 69.4 | 61.6 | 61.8 | 68.8 | 63.6 | 62.4 | 65.5 | 61.8 | 61.6 | 65.2 | 28.2 | 63.9 | 63.3 | 65.807835 | 62.7 | 67.8 | 62.7 | 64.6 | 69.7 | 60.1 | 37.8 | 10.680838 | 69.970753 | 55.3 | 34.192165 | 70.8 | 71.345321 | 55.4 | 55.3 | 60.484973 | 28.654679 | 44.479229 | 44.518211 | 39.515027 | 72.937163 | 63.087335 | 36.912665 | 27.062837 | 20.601977 | 30.029247 | 79.398023 | 22.587171 | 83.4 | 44.498874 | 67.959147 | 16.638125 | 68.0 | 57.4 | 32.037607 | 42.556558 | 32.040853 | 37.415076 | 62.6 |
2023-08-01 | 62.8 | 83.5 | 57.7 | 68.2 | 38.8 | 36.9 | 62.6 | 71.2 | 89.3 | 77.6 | 62.4 | 57.0 | 73.5 | 61.3 | 59.7 | 65.7 | 70.3 | 68.4 | 62.5 | 68.5 | 61.5 | 57.6 | 56.5 | 62.7 | 64.2 | 62.1 | 54.3 | 57.2 | 59.0 | 64.6 | 58.6 | 69.8 | 64.4 | 67.1 | 25.095222 | 54.9 | 59.4 | 65.3 | 64.5 | 61.9 | 60.8 | 61.4 | 59.0 | 66.7 | 57.0 | 70.5 | 60.2 | 66.7 | 57.7 | 68.7 | 64.6 | 64.1 | 58.0 | 47.6 | 63.7 | 74.904778 | 69.2 | 61.7 | 61.8 | 68.7 | 63.5 | 62.4 | 65.5 | 61.7 | 61.8 | 65.2 | 29.2 | 64.0 | 63.3 | 66.190423 | 63.3 | 67.8 | 62.7 | 64.5 | 69.5 | 60.3 | 39.6 | 10.734197 | 70.271535 | 56.1 | 33.809577 | 70.9 | 71.416092 | 55.9 | 56.4 | 61.160489 | 28.583908 | 43.994644 | 43.475863 | 38.839511 | 73.051571 | 63.327531 | 36.672469 | 26.948429 | 20.444590 | 29.728465 | 79.555410 | 22.413451 | 83.5 | 43.733010 | 68.137585 | 16.578415 | 68.2 | 57.7 | 31.794899 | 42.346491 | 31.862415 | 37.189059 | 62.8 |
2023-09-01 | 62.8 | 83.5 | 57.5 | 68.3 | 38.8 | 36.5 | 62.9 | 71.4 | 89.6 | 77.4 | 62.3 | 57.0 | 73.5 | 61.6 | 59.8 | 65.8 | 70.3 | 68.6 | 62.4 | 68.5 | 61.6 | 57.4 | 56.8 | 62.6 | 64.2 | 62.1 | 54.1 | 57.2 | 58.9 | 64.5 | 58.7 | 69.7 | 64.5 | 67.3 | 25.059339 | 55.1 | 59.4 | 65.2 | 64.4 | 61.9 | 60.9 | 61.5 | 58.9 | 66.8 | 57.0 | 70.6 | 60.2 | 66.7 | 57.8 | 68.6 | 64.6 | 64.1 | 57.9 | 46.9 | 63.7 | 74.940661 | 69.2 | 61.9 | 61.9 | 68.6 | 63.4 | 62.4 | 65.4 | 61.7 | 62.1 | 65.2 | 31.8 | 64.1 | 63.4 | 66.385277 | 62.8 | 67.8 | 62.6 | 64.4 | 69.3 | 60.5 | 38.2 | 10.387326 | 70.222253 | 56.1 | 33.614723 | 71.1 | 71.738546 | 55.9 | 56.3 | 61.246809 | 28.261454 | 44.154019 | 43.700934 | 38.753191 | 73.180673 | 63.291778 | 36.708222 | 26.819327 | 20.325154 | 29.777747 | 79.674846 | 22.512751 | 83.5 | 43.925562 | 68.182772 | 16.451492 | 68.3 | 57.5 | 31.658672 | 42.508869 | 31.817228 | 37.205667 | 62.8 |
2023-10-01 | 62.7 | 83.3 | 57.6 | 67.9 | 38.6 | 37.9 | 62.9 | 70.8 | 89.0 | 77.6 | 62.3 | 57.0 | 72.8 | 61.8 | 59.8 | 65.8 | 70.0 | 67.5 | 62.3 | 68.5 | 61.6 | 57.3 | 56.9 | 63.6 | 64.2 | 62.0 | 53.9 | 57.2 | 58.9 | 64.3 | 58.8 | 69.6 | 64.5 | 66.9 | 25.089387 | 55.2 | 59.4 | 65.2 | 64.5 | 61.9 | 60.9 | 61.6 | 58.8 | 66.8 | 57.0 | 70.1 | 60.1 | 66.7 | 57.8 | 68.4 | 64.7 | 64.1 | 57.7 | 47.9 | 63.6 | 74.910613 | 69.1 | 62.1 | 62.0 | 68.4 | 63.3 | 62.4 | 65.2 | 61.7 | 62.3 | 65.1 | 31.0 | 64.2 | 63.5 | 66.367709 | 62.3 | 67.7 | 62.6 | 64.2 | 69.2 | 60.6 | 40.2 | 10.987382 | 70.448286 | 56.4 | 33.632291 | 71.4 | 71.793348 | 56.6 | 56.1 | 61.149280 | 28.206652 | 43.511800 | 44.021392 | 38.850720 | 72.858719 | 63.405045 | 36.594955 | 27.141281 | 20.612161 | 29.551714 | 79.387839 | 22.301824 | 83.3 | 43.768829 | 68.081995 | 16.647871 | 67.9 | 57.6 | 32.064121 | 42.366948 | 31.918005 | 37.331211 | 62.7 |
910 rows Ć 109 columns
participation_df.loc['LBSSA06']
id LBSSA06 realtime_start 2023-11-28 00:00:00 realtime_end 2023-11-28 00:00:00 title Labor Force Participation Rate for California observation_start 1976-01-01 00:00:00 observation_end 2023-10-01 00:00:00 frequency Monthly frequency_short M units Percent units_short % seasonal_adjustment Seasonally Adjusted seasonal_adjustment_short SA last_updated 2023-11-17 09:01:03-06:00 popularity 15 notes A state's labor-force participation rate is th... Name: LBSSA06, dtype: object
part_columns_to_drop = []
for col in participation_results.columns:
if len(col) > 7:
part_columns_to_drop.append(col)
part_columns_to_drop
['LNS11300060', 'LNS11300002', 'LNS11300001', 'LNS11324230', 'LNS11300012', 'LNS11300006', 'LNS11300036', 'LRAC25MAUSM156S', 'LRAC25FEUSM156S', 'LNS11327662', 'LNS11300028', 'LNS11300031', 'LNS11300003', 'LNS11327660', 'LNS11300032', 'LNS11300026', 'LNS11300009', 'LRIN64TTUSM156S', 'LNS11300025', 'LNS11300029', 'LNS11327659', 'LRAC64TTUSM156S', 'LNS11300018', 'LRAC55TTUSM156S', 'LNS11327689', 'LNS11300015', 'LRIN25MAUSM156S', 'LRAC64FEUSM156S', 'LRAC24TTUSM156S', 'LRIN55TTUSM156S', 'LRAC55MAUSM156S', 'LRAC24FEUSM156S', 'LRAC24MAUSM156S', 'LRAC55FEUSM156S', 'LRIN55MAUSM156S', 'LRIN24FEUSM156S', 'LRIN24MAUSM156S', 'LRIN55FEUSM156S', 'LRAC74MAUSM156S', 'LRAC74FEUSM156S', 'LRIN74FEUSM156S', 'LRIN74MAUSM156S', 'LRIN64MAUSM156S', 'LRIN64FEUSM156S', 'LRAC64MAUSM156S', 'LRIN25FEUSM156S', 'LRAC25TTUSM156S', 'LRIN24TTUSM156S', 'LRAC74TTUSM156S', 'LRIN25TTUSM156S', 'LRACTTMAUSM156S', 'LRACTTFEUSM156S', 'LRINTTMAUSM156S', 'LRINTTFEUSM156S', 'LRIN74TTUSM156S', 'LRINTTTTUSM156S', 'LRACTTTTUSM156S']
participation_states = participation_results \
.drop(columns=part_columns_to_drop, axis=1) \
.drop(columns='CIVPART', axis=1)
participation_states
LBSSA06 | LBSSA01 | LBSSA26 | LBSSA12 | LBSSA55 | LBSSA27 | LBSSA36 | LBSSA21 | LBSSA48 | LBSSA39 | LBSSA28 | LBSSA35 | LBSSA53 | LBSSA23 | LBSSA49 | LBSSA17 | LBSSA54 | LBSSA47 | LBSSA24 | LBSSA25 | LBSSA42 | LBSSA37 | LBSSA13 | LBSSA22 | LBSSA51 | LBSSA45 | LBSSA15 | LBSSA20 | LBSSA05 | LBSSA08 | LBSSA33 | LBSSA09 | LBSSA29 | LBSSA31 | LBSSA32 | LBSSA04 | LBSSA19 | LBSSA18 | LBSSA16 | LBSSA34 | LBSSA41 | LBSSA40 | LBSSA02 | LBSSA50 | LBSSA44 | LBSSA46 | LBSSA30 | LBSSA56 | LBSSA38 | LBSSA10 | LBSSA11 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1948-01-01 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1948-02-01 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1948-03-01 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1948-04-01 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1948-05-01 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2023-06-01 | 62.5 | 57.0 | 60.7 | 59.5 | 65.3 | 68.4 | 61.2 | 57.8 | 64.2 | 62.2 | 54.5 | 57.0 | 64.7 | 58.4 | 69.6 | 64.6 | 54.6 | 59.3 | 65.3 | 64.6 | 62.0 | 60.7 | 61.3 | 59.5 | 66.6 | 56.7 | 60.4 | 66.8 | 57.6 | 68.7 | 65.2 | 64.1 | 63.6 | 69.5 | 61.5 | 61.7 | 68.7 | 63.6 | 62.5 | 65.4 | 62.0 | 61.4 | 65.3 | 63.8 | 63.2 | 67.9 | 62.8 | 64.6 | 69.7 | 60.0 | 70.8 |
2023-07-01 | 62.4 | 57.0 | 61.0 | 59.7 | 65.5 | 68.5 | 61.4 | 57.7 | 64.2 | 62.1 | 54.4 | 57.1 | 64.7 | 58.5 | 69.8 | 64.4 | 54.7 | 59.4 | 65.3 | 64.5 | 61.9 | 60.7 | 61.4 | 59.3 | 66.7 | 56.9 | 60.3 | 66.8 | 57.7 | 68.7 | 64.9 | 64.1 | 63.6 | 69.4 | 61.6 | 61.8 | 68.8 | 63.6 | 62.4 | 65.5 | 61.8 | 61.6 | 65.2 | 63.9 | 63.3 | 67.8 | 62.7 | 64.6 | 69.7 | 60.1 | 70.8 |
2023-08-01 | 62.4 | 57.0 | 61.3 | 59.7 | 65.7 | 68.5 | 61.5 | 57.6 | 64.2 | 62.1 | 54.3 | 57.2 | 64.6 | 58.6 | 69.8 | 64.4 | 54.9 | 59.4 | 65.3 | 64.5 | 61.9 | 60.8 | 61.4 | 59.0 | 66.7 | 57.0 | 60.2 | 66.7 | 57.7 | 68.7 | 64.6 | 64.1 | 63.7 | 69.2 | 61.7 | 61.8 | 68.7 | 63.5 | 62.4 | 65.5 | 61.7 | 61.8 | 65.2 | 64.0 | 63.3 | 67.8 | 62.7 | 64.5 | 69.5 | 60.3 | 70.9 |
2023-09-01 | 62.3 | 57.0 | 61.6 | 59.8 | 65.8 | 68.5 | 61.6 | 57.4 | 64.2 | 62.1 | 54.1 | 57.2 | 64.5 | 58.7 | 69.7 | 64.5 | 55.1 | 59.4 | 65.2 | 64.4 | 61.9 | 60.9 | 61.5 | 58.9 | 66.8 | 57.0 | 60.2 | 66.7 | 57.8 | 68.6 | 64.6 | 64.1 | 63.7 | 69.2 | 61.9 | 61.9 | 68.6 | 63.4 | 62.4 | 65.4 | 61.7 | 62.1 | 65.2 | 64.1 | 63.4 | 67.8 | 62.6 | 64.4 | 69.3 | 60.5 | 71.1 |
2023-10-01 | 62.3 | 57.0 | 61.8 | 59.8 | 65.8 | 68.5 | 61.6 | 57.3 | 64.2 | 62.0 | 53.9 | 57.2 | 64.3 | 58.8 | 69.6 | 64.5 | 55.2 | 59.4 | 65.2 | 64.5 | 61.9 | 60.9 | 61.6 | 58.8 | 66.8 | 57.0 | 60.1 | 66.7 | 57.8 | 68.4 | 64.7 | 64.1 | 63.6 | 69.1 | 62.1 | 62.0 | 68.4 | 63.3 | 62.4 | 65.2 | 61.7 | 62.3 | 65.1 | 64.2 | 63.5 | 67.7 | 62.6 | 64.2 | 69.2 | 60.6 | 71.4 |
910 rows Ć 51 columns
for index, col in enumerate(participation_states.columns):
print(index, col)
0 LBSSA06 1 LBSSA01 2 LBSSA26 3 LBSSA12 4 LBSSA55 5 LBSSA27 6 LBSSA36 7 LBSSA21 8 LBSSA48 9 LBSSA39 10 LBSSA28 11 LBSSA35 12 LBSSA53 13 LBSSA23 14 LBSSA49 15 LBSSA17 16 LBSSA54 17 LBSSA47 18 LBSSA24 19 LBSSA25 20 LBSSA42 21 LBSSA37 22 LBSSA13 23 LBSSA22 24 LBSSA51 25 LBSSA45 26 LBSSA15 27 LBSSA20 28 LBSSA05 29 LBSSA08 30 LBSSA33 31 LBSSA09 32 LBSSA29 33 LBSSA31 34 LBSSA32 35 LBSSA04 36 LBSSA19 37 LBSSA18 38 LBSSA16 39 LBSSA34 40 LBSSA41 41 LBSSA40 42 LBSSA02 43 LBSSA50 44 LBSSA44 45 LBSSA46 46 LBSSA30 47 LBSSA56 48 LBSSA38 49 LBSSA10 50 LBSSA11
participation_states.isna().sum(axis=1).plot()
<Axes: >
participation_states = participation_states.dropna()
participation_states.columns = [participation_id_to_state[col] for col in participation_states.columns]
participation_states
California | Alabama | Michigan | Florida | Wisconsin | Minnesota | New York | Kentucky | Texas | Ohio | Mississippi | New Mexico | Washington | Maine | Utah | Illinois | West Virginia | Tennessee | Maryland | Massachusetts | Pennsylvania | North Carolina | Georgia | Louisiana | Virginia | South Carolina | Hawaii | Kansas | Arkansas | Colorado | New Hampshire | Connecticut | Missouri | Nebraska | Nevada | Arizona | Iowa | Indiana | Idaho | New Jersey | Oregon | Oklahoma | Alaska | Vermont | Rhode Island | South Dakota | Montana | Wyoming | North Dakota | Delaware | District Of Columbia | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1976-01-01 | 62.6 | 57.0 | 61.6 | 55.8 | 65.6 | 65.6 | 58.0 | 60.5 | 63.8 | 61.7 | 58.8 | 60.8 | 60.9 | 62.1 | 62.8 | 63.0 | 52.5 | 59.6 | 64.3 | 64.8 | 58.4 | 66.5 | 63.7 | 56.8 | 65.9 | 65.3 | 69.9 | 65.1 | 57.9 | 67.2 | 65.9 | 64.2 | 60.5 | 64.9 | 71.3 | 59.5 | 64.4 | 64.0 | 63.0 | 61.5 | 62.9 | 59.3 | 69.0 | 63.6 | 63.8 | 64.6 | 62.7 | 65.3 | 62.6 | 62.7 | 64.4 |
1976-02-01 | 62.4 | 56.9 | 61.5 | 55.7 | 65.5 | 65.5 | 58.0 | 60.3 | 63.5 | 61.7 | 58.6 | 60.5 | 60.7 | 61.9 | 62.6 | 63.0 | 52.4 | 59.4 | 64.2 | 64.7 | 58.3 | 66.3 | 63.6 | 56.6 | 65.8 | 65.2 | 69.6 | 65.0 | 57.8 | 67.0 | 65.6 | 64.1 | 60.3 | 64.9 | 70.8 | 59.2 | 64.3 | 63.9 | 62.8 | 61.4 | 62.7 | 59.2 | 68.4 | 63.4 | 63.7 | 64.4 | 62.5 | 64.9 | 62.4 | 62.5 | 64.5 |
1976-03-01 | 62.2 | 56.8 | 61.5 | 55.5 | 65.4 | 65.4 | 58.0 | 60.2 | 63.4 | 61.7 | 58.5 | 60.3 | 60.6 | 61.9 | 62.5 | 62.9 | 52.3 | 59.3 | 64.1 | 64.6 | 58.3 | 66.2 | 63.5 | 56.5 | 65.6 | 65.0 | 69.6 | 64.9 | 57.7 | 66.8 | 65.6 | 64.0 | 60.3 | 64.8 | 70.5 | 59.1 | 64.2 | 63.8 | 62.7 | 61.4 | 62.5 | 59.1 | 67.8 | 63.2 | 63.6 | 64.4 | 62.4 | 64.7 | 62.3 | 62.5 | 64.5 |
1976-04-01 | 62.2 | 56.8 | 61.6 | 55.5 | 65.4 | 65.4 | 58.0 | 60.1 | 63.5 | 61.6 | 58.5 | 60.3 | 60.6 | 61.8 | 62.5 | 62.9 | 52.3 | 59.3 | 64.1 | 64.6 | 58.3 | 66.2 | 63.5 | 56.4 | 65.5 | 64.9 | 69.4 | 65.0 | 57.7 | 66.6 | 65.7 | 64.1 | 60.4 | 64.8 | 70.4 | 59.1 | 64.1 | 63.8 | 62.7 | 61.5 | 62.4 | 59.0 | 67.9 | 63.5 | 63.7 | 64.3 | 62.3 | 64.9 | 62.5 | 62.4 | 64.5 |
1976-05-01 | 62.3 | 56.8 | 61.7 | 55.4 | 65.5 | 65.5 | 58.1 | 60.1 | 63.6 | 61.6 | 58.5 | 60.3 | 60.7 | 61.7 | 62.6 | 63.0 | 52.2 | 59.4 | 64.1 | 64.6 | 58.3 | 66.3 | 63.6 | 56.4 | 65.4 | 64.7 | 69.3 | 65.1 | 57.7 | 66.5 | 66.0 | 64.3 | 60.6 | 64.8 | 70.5 | 59.1 | 64.1 | 63.9 | 62.8 | 61.6 | 62.5 | 59.0 | 67.9 | 63.6 | 63.6 | 64.3 | 62.2 | 65.2 | 62.6 | 62.4 | 64.4 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2023-06-01 | 62.5 | 57.0 | 60.7 | 59.5 | 65.3 | 68.4 | 61.2 | 57.8 | 64.2 | 62.2 | 54.5 | 57.0 | 64.7 | 58.4 | 69.6 | 64.6 | 54.6 | 59.3 | 65.3 | 64.6 | 62.0 | 60.7 | 61.3 | 59.5 | 66.6 | 56.7 | 60.4 | 66.8 | 57.6 | 68.7 | 65.2 | 64.1 | 63.6 | 69.5 | 61.5 | 61.7 | 68.7 | 63.6 | 62.5 | 65.4 | 62.0 | 61.4 | 65.3 | 63.8 | 63.2 | 67.9 | 62.8 | 64.6 | 69.7 | 60.0 | 70.8 |
2023-07-01 | 62.4 | 57.0 | 61.0 | 59.7 | 65.5 | 68.5 | 61.4 | 57.7 | 64.2 | 62.1 | 54.4 | 57.1 | 64.7 | 58.5 | 69.8 | 64.4 | 54.7 | 59.4 | 65.3 | 64.5 | 61.9 | 60.7 | 61.4 | 59.3 | 66.7 | 56.9 | 60.3 | 66.8 | 57.7 | 68.7 | 64.9 | 64.1 | 63.6 | 69.4 | 61.6 | 61.8 | 68.8 | 63.6 | 62.4 | 65.5 | 61.8 | 61.6 | 65.2 | 63.9 | 63.3 | 67.8 | 62.7 | 64.6 | 69.7 | 60.1 | 70.8 |
2023-08-01 | 62.4 | 57.0 | 61.3 | 59.7 | 65.7 | 68.5 | 61.5 | 57.6 | 64.2 | 62.1 | 54.3 | 57.2 | 64.6 | 58.6 | 69.8 | 64.4 | 54.9 | 59.4 | 65.3 | 64.5 | 61.9 | 60.8 | 61.4 | 59.0 | 66.7 | 57.0 | 60.2 | 66.7 | 57.7 | 68.7 | 64.6 | 64.1 | 63.7 | 69.2 | 61.7 | 61.8 | 68.7 | 63.5 | 62.4 | 65.5 | 61.7 | 61.8 | 65.2 | 64.0 | 63.3 | 67.8 | 62.7 | 64.5 | 69.5 | 60.3 | 70.9 |
2023-09-01 | 62.3 | 57.0 | 61.6 | 59.8 | 65.8 | 68.5 | 61.6 | 57.4 | 64.2 | 62.1 | 54.1 | 57.2 | 64.5 | 58.7 | 69.7 | 64.5 | 55.1 | 59.4 | 65.2 | 64.4 | 61.9 | 60.9 | 61.5 | 58.9 | 66.8 | 57.0 | 60.2 | 66.7 | 57.8 | 68.6 | 64.6 | 64.1 | 63.7 | 69.2 | 61.9 | 61.9 | 68.6 | 63.4 | 62.4 | 65.4 | 61.7 | 62.1 | 65.2 | 64.1 | 63.4 | 67.8 | 62.6 | 64.4 | 69.3 | 60.5 | 71.1 |
2023-10-01 | 62.3 | 57.0 | 61.8 | 59.8 | 65.8 | 68.5 | 61.6 | 57.3 | 64.2 | 62.0 | 53.9 | 57.2 | 64.3 | 58.8 | 69.6 | 64.5 | 55.2 | 59.4 | 65.2 | 64.5 | 61.9 | 60.9 | 61.6 | 58.8 | 66.8 | 57.0 | 60.1 | 66.7 | 57.8 | 68.4 | 64.7 | 64.1 | 63.6 | 69.1 | 62.1 | 62.0 | 68.4 | 63.3 | 62.4 | 65.2 | 61.7 | 62.3 | 65.1 | 64.2 | 63.5 | 67.7 | 62.6 | 64.2 | 69.2 | 60.6 | 71.4 |
574 rows Ć 51 columns
This time, we visualize participation rates by US for every month over the years.
fig = px.line(data_frame=participation_states,
title='Participation Rate by USA State',
labels={
'index': 'Month & Year',
'value': 'Participation Rate',
'variable': 'State'
},
markers=True)
fig.show()
Unlike the unemployment rate, we now see drops in labor participation rate in May 2020. Let's try to pull the labor participation rate during this time.
participation_states.loc[participation_states.index == '2020-05-01']
California | Alabama | Michigan | Florida | Wisconsin | Minnesota | New York | Kentucky | Texas | Ohio | Mississippi | New Mexico | Washington | Maine | Utah | Illinois | West Virginia | Tennessee | Maryland | Massachusetts | Pennsylvania | North Carolina | Georgia | Louisiana | Virginia | South Carolina | Hawaii | Kansas | Arkansas | Colorado | New Hampshire | Connecticut | Missouri | Nebraska | Nevada | Arizona | Iowa | Indiana | Idaho | New Jersey | Oregon | Oklahoma | Alaska | Vermont | Rhode Island | South Dakota | Montana | Wyoming | North Dakota | Delaware | District Of Columbia | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2020-05-01 | 59.5 | 57.4 | 60.6 | 58.0 | 65.8 | 69.2 | 58.0 | 58.5 | 62.7 | 60.8 | 53.5 | 54.9 | 65.1 | 59.6 | 67.8 | 62.3 | 53.6 | 59.8 | 65.9 | 64.9 | 61.9 | 58.1 | 61.1 | 56.5 | 63.5 | 57.4 | 59.0 | 66.6 | 57.6 | 67.7 | 66.8 | 65.7 | 59.6 | 69.7 | 56.6 | 61.0 | 66.4 | 62.4 | 63.3 | 62.0 | 61.1 | 60.4 | 63.5 | 63.5 | 63.7 | 68.7 | 62.9 | 66.5 | 68.6 | 62.4 | 67.9 |
ax = participation_states.loc[participation_states.index == '2020-05-01'].T \
.sort_values('2020-05-01') \
.plot(kind='barh', figsize=(8, 12),
xlabel='% Participation',
edgecolor='black', width=0.7,
title='Participation Rate by US State (May 2020)')
ax.legend().remove()
plt.show()
unemployment_states.columns = unemployment_states.columns.str.strip()
unemployment_states = unemployment_states.rename(columns={'the District of Columbia': 'District of Columbia'})
unemployment_states.columns
Index(['California', 'New York', 'Texas', 'Florida', 'Alabama', 'Illinois', 'North Carolina', 'Pennsylvania', 'Michigan', 'Ohio', 'New Jersey', 'Kentucky', 'Georgia', 'Minnesota', 'Massachusetts', 'New Mexico', 'Colorado', 'Virginia', 'Washington', 'Oregon', 'Maryland', 'Wisconsin', 'Alaska', 'Arkansas', 'South Carolina', 'West Virginia', 'Utah', 'Arizona', 'Tennessee', 'Indiana', 'Louisiana', 'Iowa', 'North Dakota', 'Nevada', 'Missouri', 'New Hampshire', 'Hawaii', 'Oklahoma', 'Mississippi', 'Montana', 'Nebraska', 'Kansas', 'District of Columbia', 'Maine', 'Connecticut', 'Wyoming', 'Idaho', 'Delaware', 'South Dakota', 'Vermont', 'Rhode Island'], dtype='object')
participation_states.columns = participation_states.columns.str.strip()
participation_states.columns
Index(['California', 'Alabama', 'Michigan', 'Florida', 'Wisconsin', 'Minnesota', 'New York', 'Kentucky', 'Texas', 'Ohio', 'Mississippi', 'New Mexico', 'Washington', 'Maine', 'Utah', 'Illinois', 'West Virginia', 'Tennessee', 'Maryland', 'Massachusetts', 'Pennsylvania', 'North Carolina', 'Georgia', 'Louisiana', 'Virginia', 'South Carolina', 'Hawaii', 'Kansas', 'Arkansas', 'Colorado', 'New Hampshire', 'Connecticut', 'Missouri', 'Nebraska', 'Nevada', 'Arizona', 'Iowa', 'Indiana', 'Idaho', 'New Jersey', 'Oregon', 'Oklahoma', 'Alaska', 'Vermont', 'Rhode Island', 'South Dakota', 'Montana', 'Wyoming', 'North Dakota', 'Delaware', 'District Of Columbia'], dtype='object')
print(color_pal[0], color_pal[1])
#008fd5 #fc4f30
The hex codes that will be used for the plot between Unemployment Rate and Participation Rate are:
#008fd5
: Unemployment Rate (Blue)#fc4f30
: Participation Rate (Red)fig, axs = plt.subplots(10, 5, figsize=(30, 30), sharex=True)
axs = axs.flatten()
i = 0
for state in unemployment_states.columns:
if state == 'District of Columbia':
continue
ax2 = axs[i].twinx()
unemployment_states.query('index >= 2020 and index < 2023')[state] \
.plot(ax=axs[i], label='Unemployment Rate')
participation_states.query('index >= 2020 and index < 2023')[state] \
.plot(ax=ax2, label='Participation Rate', color=color_pal[1])
ax2.grid(False)
axs[i].set_title(state)
i += 1
plt.tight_layout()
plt.show()
Based on the final visualization, we can conclude a number of things:
There might be some other economic factors affecting the labor and participation rates of these states during May 2020. Should the analysis of this economic data continues, this is something worth investigating.