Table 1-1, Graduate students, postdoctoral appointees, and doctorate-holding nonfaculty researchers in science, engineering, and health: 1975–2020. From the NSF, “Survey of Graduate Students and Postdoctorates in Science and Engineering: Fall 2020”. https://ncses.nsf.gov/pubs/nsf22319
Table 2: Percentage of Science, Engineering & Health researchers in US who are on temporary visas, over time
Code
# Import modules.from IPython.display import Markdownfrom tabulate import tabulateimport numpy as npimport pandas as pd# Load datatable from csv file.df_visanums = pd.read_csv("./data/Researcher_temporary-visa-holder_percentage_over_time.csv")# Create the table.Markdown(tabulate( df_visanums, headers=[ "Year", "Graduate Student", "Postdoc",], showindex=False,))
Table 2: Percentage of Science, Engineering & Health researchers in US who are on temporary visas, over time
Table 1-3a, Citizenship of graduate students and postdoctoral appointees in science, engineering, and health: 1980–2020. From the NSF, “Survey of Graduate Students and Postdoctorates in Science and Engineering: Fall 2020”. https://ncses.nsf.gov/pubs/nsf22319
Table 3: Annual mean wages for professional scientists in academic & non-academic roles in May 2021 (US$)
Code
# Import modules.from IPython.display import Markdownfrom tabulate import tabulateimport numpy as npimport pandas as pd# Load datatable from csv file.df_visanums = pd.read_csv("./data/salaries_acadVSnonacad2021.csv")# Create the table.Markdown(tabulate( df_visanums, headers=[ "Discipline", "Academic (US$)", "Non-Academic (US$)",], showindex=False,))
Table 3: Annual mean wages for professional scientists in academic & non-academic roles in May 2021 (US$)
U.S. Bureau of Labor Statistics, “Occupational Employment and Wages, May 2021: 19-1021 Biochemists and Biophysicists” Accessed Dec 9, 2022 at https://www.bls.gov/oes/current/oes191021.htm
U.S. Bureau of Labor Statistics, “Occupational Employment and Wages, May 2021: 19-2099 Physical Scientists, All Other” Accessed Dec 9, 2022 at https://www.bls.gov/oes/current/oes192099.htm
U.S. Bureau of Labor Statistics, “Occupational Employment and Wages, May 2021: 19-1099 Life Scientists, All Other” Accessed Dec 9, 2022 at https://www.bls.gov/oes/current/oes191099.htm
For NIH Minimum Salary for fiscal year 2022: “Correction to Stipend Levels for Ruth L. Kirschstein National Research Service Award (NRSA) Stipends, Tuition/Fees and Other Budgetary Levels Effective for Fiscal Year 2022” https://grants.nih.gov/grants/guide/notice-files/NOT-OD-22-132.html
Table 5: Minimum Postdoc Salary Over Time
Code
# Import modules.from IPython.display import Markdownfrom tabulate import tabulateimport numpy as npimport pandas as pd# Load datatable from csv file.df_nihsals = pd.read_csv("./data/min_postdoc_salary_overtime.csv")# Create the table.Markdown(tabulate( df_nihsals, headers=["Year", "Date", "Stanford (US$)", "NIH (US$)", "Difference (US$)", "Stanford min as Percentage of NIH min (%)",], showindex=False,))
For fiscal year 2017: “Ruth L. Kirschstein National Research Service Awards (NRSA) Postdoctoral Stipends, Training Related Expenses, Institutional Allowance, and Tuition/Fees Effective for Fiscal Year 2017” https://grants.nih.gov/grants/guide/notice-files/not-od-17-003.html
Table 6a: Average postdoc incomes by location, absolute & adjusted for local cost of living, 2016, all US states
Code
# Import modules.from IPython.display import Markdownfrom tabulate import tabulateimport numpy as npimport pandas as pd# Load datatable from csv file.df_nihsals = pd.read_csv("./data/Salaries_byLocation_USstates.csv")# Create the table.Markdown(tabulate( df_nihsals, headers=[ "State", "Absolute Income ($)", "Income Adjusted for Local Cost of Living ($)",], showindex=False,))
Table 6: Average postdoc incomes by location, absolute & adjusted for local cost of living, 2016, all US states
Table S6 in McConnell, Westerman, Pierre, Heckler, Schwartz, (Dec 18, 2018) “Research: United States National Postdoc Survey results and the interaction of gender, career choice and mentor impact” eLife. https://doi.org/10.7554/eLife.40189
Table 6b: Average postdoc incomes by location, absolute & adjusted for local cost of living, 2016, US counties with more than 50 respondents
Code
# Import modules.from IPython.display import Markdownfrom tabulate import tabulateimport numpy as npimport pandas as pd# Load datatable from csv file.df_nihsals = pd.read_csv("./data/Salaries_byLocation_Counties.csv")# Create the table.Markdown(tabulate( df_nihsals, headers=[ "County", "Absolute Income ($)", "Income Adjusted for Local Cost of Living ($)",], showindex=False,))
Table 7: Average postdoc incomes by location, absolute & adjusted for local cost of living, 2016, US counties with more than 50 respondents
Table S6 in McConnell, Westerman, Pierre, Heckler, Schwartz, (Dec 18, 2018) “Research: United States National Postdoc Survey results and the interaction of gender, career choice and mentor impact” eLife. https://doi.org/10.7554/eLife.40189
Table 7: Postdoc Salary by Years Experience, Over Time
Table 8a: Area Median Income (AMI) Levels for Santa Clara County over time, 1-person household (US$)
Code
# Import modules.from IPython.display import Markdownfrom tabulate import tabulateimport numpy as npimport pandas as pd# Load datatable from csv file.df_AMI_HH1 = pd.read_csv("./data/AMI_over_time,_Santa_Clara,_HH1.csv")# Remove years before 2012 (they are empty).df_AMI_HH1_after2012 = df_AMI_HH1[df_AMI_HH1['Year'] >=2012]# Create the table.Markdown(tabulate( df_AMI_HH1_after2012, headers=[ "Year", "Moderate Income (120% AMI)", "Median Income (AMI)", "Low Income (80% AMI)", "Very Low Income (50% AMI)", "Extremely Low Income (30% AMI)", "Acutely Low Income (15% AMI)"], showindex=False,))
Table 9: Area Median Income (AMI) Levels for Santa Clara County over time, 1-person household (US$)
Table 8b: Area Median Income (AMI) Levels for Santa Clara County over time, 2-person household (US$)
Code
# Import modules.from IPython.display import Markdownfrom tabulate import tabulateimport numpy as npimport pandas as pd# Load datatable from csv file.df_AMI_HH2 = pd.read_csv("./data/AMI_over_time,_Santa_Clara,_HH2.csv")# Remove years before 2012 (they are empty).df_AMI_HH2_after2012 = df_AMI_HH2[df_AMI_HH2['Year'] >=2012]# Create the table.Markdown(tabulate( df_AMI_HH2_after2012, headers=[ "Year", "Moderate Income (120% AMI)", "Median Income (AMI)", "Low Income (80% AMI)", "Very Low Income (50% AMI)", "Extremely Low Income (30% AMI)", "Acutely Low Income (15% AMI)"], showindex=False,))
Table 10: Area Median Income (AMI) Levels for Santa Clara County over time, 2-person household (US$)
Table 8c: Area Median Income (AMI) Levels for Santa Clara County over time, 3-person household (US$)
Code
# Import modules.from IPython.display import Markdownfrom tabulate import tabulateimport numpy as npimport pandas as pd# Load datatable from csv file.df_AMI_HH3 = pd.read_csv("./data/AMI_over_time,_Santa_Clara,_HH3.csv")# Remove years before 2012 (they are empty).df_AMI_HH3_after2012 = df_AMI_HH3[df_AMI_HH3['Year'] >=2012]# Create the table.Markdown(tabulate( df_AMI_HH3_after2012, headers=[ "Year", "Moderate Income (120% AMI)", "Median Income (AMI)", "Low Income (80% AMI)", "Very Low Income (50% AMI)", "Extremely Low Income (30% AMI)", "Acutely Low Income (15% AMI)"], showindex=False,))
Table 11: Area Median Income (AMI) Levels for Santa Clara County over time, 3-person household (US$)
Table 8d: Area Median Income (AMI) Levels for Santa Clara County over time, 4-person household (US$)
Code
# Import modules.from IPython.display import Markdownfrom tabulate import tabulateimport numpy as npimport pandas as pd# Load datatable from csv file.df_AMI_HH4 = pd.read_csv("./data/AMI_over_time,_Santa_Clara,_HH4.csv")# Remove years before 2012 (they are empty).df_AMI_HH4_after2012 = df_AMI_HH4[df_AMI_HH4['Year'] >=2012]# Create the table.Markdown(tabulate( df_AMI_HH4_after2012, headers=[ "Year", "Moderate Income (120% AMI)", "Median Income (AMI)", "Low Income (80% AMI)", "Very Low Income (50% AMI)", "Extremely Low Income (30% AMI)", "Acutely Low Income (15% AMI)"], showindex=False,))
Table 12: Area Median Income (AMI) Levels for Santa Clara County over time, 4-person household (US$)