The Use of Nonimmigrant Workers in the U.S. Computer Industry by State

The Executive Summary of a 2017 study from the Economic Policy Institute begins as follows:

Many Americans are aware of the often-cited estimate that approximately 11 million unauthorized immigrants reside in the United States. However, the U.S. government does not have an adequate, reliable estimate for the total number of temporary foreign workers who are authorized to be employed in the U.S. labor market in the main nonimmigrant visa classifications that authorize employment.

It turns out that Census data from the annual American Community Survey (ACS) can be used to come up with a reasonable estimate. That data does not contain visa status but one can estimate the number of nonimmigrant visa workers by looking at the number of workers who are not citizens. After all, it would seem that any authorized nonimmigrant worker should have a visa and that any person working with such a visa would be a non-citizen. This should be true whether the visa is an H-1B, L-1, F-1 (for a student engaged in Optional Practical Training) or some other visa.

The following Python code looks at data from the 2016 American Community Survey (ACS). The data can be created by going to the IPUMS USA website, logging in (creating an account, if necessary), and creating an extract with the variables STATEFIP, COUNTY, MET2013, PUMA, CITIZEN, EMPSTAT, and OCC. The variables YEAR, DATANUM, SERIAL, HHWT, GQ, PERNUM, and PERWT are automatically preselected. For samples, select ACS for 2016. For data format, select .csv. For structure, select rectangular. For more information, see IPUMS Documentation: User's Guide. You should receive an email when your extract is ready. You can then download, rename it to acs2016.csv, and place it in the same directory as the following Python code and run the code.

The following code reads the acs2016.csv and will list the percentage of workes with OCC code 1020 (Software developers, applications and systems software) who are US-born citizens, naturalized citizens, and non-citizens. It will do this for all states, displaying them in descending order of the percent who are non-citizens. Following is the code, followed by the output:

In [40]:
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
# ACS Occupation Codes at https://usa.ipums.org/usa/volii/occ_acs.shtml
# (described at https://www.census.gov/content/dam/Census/library/publications/2016/acs/acs-35.pdf)
#  110 = Computer and information systems managers
# 1010 = Computer programmers
# 1020 = Software developers, applications and systems software 
# print(pd.get_option('display.width'))
pd.set_option('display.width', 120)

def getCitizenStatusByState(min_count, occs, title):
    fipref = "https://www2.census.gov/geo/docs/reference/state.txt"
    #header=STATE|STUSAB|STATE_NAME|STATENS
    #mm = pd.read_csv(fipref, skiprows=1, sep='|', names=['STATE','STUSAB','STATE_NAME','STATENS'])
    mm = pd.read_csv(fipref, skiprows=1, sep='|', names=['Statefip','State','State_Name','Statens'])
    #print(mm)

    usa = pd.read_csv("acs2016.csv")
    if len(occs) > 1:
        occ_start = occs[0]
        for i in range(1,len(occs)):
            if occs[i] >= 0:
                occ_end = occs[i]
                usa.loc[usa['OCC'] == occ_end,'OCC'] = occs[0]
            else:
                occ_end = -occs[i]
                usa.loc[(usa['OCC'] >= occ_start) & (usa['OCC'] <= occ_end),'OCC'] = occs[0]
            occ_start = occ_end + 1
    #print("usa[{0}] = {1}".format(usa.shape[0], sum(usa['PERWT'])))
    print("usa[%d] = %d\n" % (usa.shape[0], sum(usa['PERWT'])))

    gg = usa.groupby(['STATEFIP','CITIZEN','EMPSTAT','OCC'])['PERWT'].sum()
    uu = gg.unstack('CITIZEN')
    uu.columns =['na','baa','nat','nac']
    uu = uu.fillna(0)
    uu['count'] = uu['na'] + uu['baa'] + uu['nat'] + uu['nac']
    uu['nac_p'] = 100 * uu['nac'] / uu['count']
    uu['nat_p'] = 100 * uu['nat'] / uu['count']
    uu['usa_p'] = 100 * (uu['na'] + uu['baa']) / uu['count']
    uu = uu.reset_index(level=['STATEFIP','EMPSTAT','OCC'])
    pp = uu[(uu['OCC'] == occs[0]) & (uu['EMPSTAT'] == 1) & (uu['count'] > min_count)]
    pp = pp.sort_values(by=['nac_p'], ascending=False)
    #pp = pp[pp['COUNTY'] > 0]
    pp = pp.merge(mm, left_on=['STATEFIP'],right_on=['Statefip'],how='left')
    qqState = pp['State']
    qq=pd.DataFrame(qqState, columns=['State'])
    qq['count']=pp['count'].astype('int')
    qq['non-cit%']=pp['nac_p'].round(1)
    qq['natural%']=pp['nat_p'].round(1)
    qq['us-born%']=pp['usa_p'].round(1)
    qq.index += 1
    print(title)
    print(qq)
    qq.to_csv("state_comp", sep=';')

getCitizenStatusByState(1, [1020], "Software Developers - US-born, Naturalized, and Non-citizen (percent)\n")
usa[3156487] = 323127515

Software Developers - US-born, Naturalized, and Non-citizen (percent)

   State   count  non-cit%  natural%  us-born%
1     NJ   49210      40.2      23.7      36.1
2     DE    3211      38.3      20.3      41.4
3     WA   74135      34.9      11.4      53.7
4     CA  269117      34.1      23.0      42.9
5     WI   18925      31.0       2.8      66.2
6     CT   13065      28.1      19.6      52.3
7     NC   34435      27.1      11.7      61.2
8     RI    3723      26.5       3.4      70.1
9     IL   50267      25.7      14.9      59.4
10    KS   12186      24.4       8.9      66.8
11    GA   34985      24.2      14.2      61.6
12    MI   23829      24.1      10.0      66.0
13    ND    2054      23.4       0.0      76.6
14    MA   60387      22.9      16.6      60.5
15    TX   97008      22.4      14.9      62.7
16    PA   38971      22.4       9.5      68.1
17    TN   12993      21.2       4.7      74.0
18    AR    4333      18.9       4.1      77.0
19    IA   10734      18.4      15.6      66.0
20    FL   50880      18.1      14.8      67.1
21    VA   59335      17.6      16.0      66.4
22    AZ   22268      16.5       7.1      76.4
23    MO   13521      16.4       7.7      75.9
24    NE    6111      16.3       7.6      76.1
25    NV    4204      15.9       4.5      79.6
26    MN   30490      14.7      15.2      70.0
27    OK    5336      14.5      16.9      68.6
28    NY   50041      14.1      18.3      67.6
29    KY    5965      12.9       0.0      87.1
30    MD   38986      12.8      15.6      71.5
31    OH   27872      12.6       9.4      78.1
32    CO   43179      12.4       9.1      78.4
33    OR   18096      11.2      11.3      77.6
34    SD     959       9.2       0.0      90.8
35    UT   18010       8.5       3.9      87.6
36    HI    1026       8.0      14.2      77.8
37    NH    9246       7.0      12.7      80.3
38    IN   12822       6.7       9.6      83.7
39    NM    2858       6.3       7.5      86.1
40    DC    2860       6.3       8.4      85.3
41    AL    9443       6.2       7.0      86.8
42    LA    5964       6.1       4.0      89.9
43    SC    7988       5.4       3.7      90.9
44    VT    2013       3.3       1.4      95.3
45    MT    1741       0.0       0.0     100.0
46    AK    1468       0.0       0.0     100.0
47    MS    3025       0.0       0.0     100.0
48    ME    2248       0.0       0.0     100.0
49    WV    1662       0.0       0.0     100.0
50    ID    2554       0.0       5.7      94.3
51    WY    1138       0.0       0.0     100.0

As can be seen, many of the states containing major tech hubs appear to have higher percentages of non-citizen software developers. According to a recent Forbes article, the largest tech hubs by jobs are San Jose CA, San Francisco CA, Austin TX, Seattle WA, Boston MA, Washington DC, Raleigh NC, and Baltimore MD. The states containing all of the hubs except for Washington DC and Baltimore MD are between 3 and 15 on the list with non-citizen workers between 34.9 and 22.4 percent. Interestingly, Baltimore's state (MD) and Washington DC are 30 and 40 on the list with non-citizen workers between just 12.8 and 6.3 percent. Hence, those cities near our nation's capital appear to have far fewer non-citizen workers. Also interesting is that there are 7 states that all have over 1000 software developers each without having a single non-citizen worker! Those states are Montana, Alaska, Mississippi, Maine, West Virginia, Idaho, and Wyoming. Of those, all but Idaho do not even have a naturalized citizen! Of course, the Census is a sample so this really means that there were no non-citizen workers found in the sample.

Following is the same data for workes with OCC code 110 and from 1000 to 1299. As can be seen from the ACS Occupation Codes, these include Computer and information systems managers and all workers in Computer and Mathematical Occupations.

In [41]:
getCitizenStatusByState(1, [110,1000,-1299], "Computer and Mathematical Occupations - US-born, Naturalized, and Non-citizen (percent)\n")
usa[3156487] = 323127515

Computer and Mathematical Occupations - US-born, Naturalized, and Non-citizen (percent)

   State   count  non-cit%  natural%  us-born%
1     NJ  208422      24.9      22.3      52.9
2     WA  175878      21.3      10.7      67.9
3     CA  724997      20.7      20.7      58.6
4     DE   16000      19.9      11.3      68.8
5     CT   70449      16.9      10.3      72.8
6     RI   17629      15.9       5.3      78.8
7     MA  167006      15.5      12.5      72.0
8     IL  221425      13.9      14.0      72.1
9     TX  407614      13.3      12.7      74.0
10    GA  165287      12.6      11.0      76.4
11    NC  161050      11.6       9.5      78.9
12    AR   22253      11.2       4.9      83.9
13    FL  237195      10.5      14.8      74.7
14    AZ   97859      10.4       7.5      82.1
15    MN  121767      10.1      11.1      78.8
16    WI   94069       9.6       4.4      86.0
17    VA  243303       9.4      15.1      75.5
18    NY  273539       9.3      17.8      72.9
19    PA  199039       9.1       7.8      83.1
20    MI  128426       9.0      10.0      81.0
21    KS   45301       8.8       5.5      85.6
22    ND    9270       8.3       0.0      91.7
23    OH  163479       7.8       6.3      85.9
24    MD  180992       7.6      14.0      78.5
25    NV   30357       7.5       9.9      82.6
26    OR   68515       7.4       8.1      84.5
27    IA   37974       7.3       5.9      86.8
28    CO  135676       7.0       5.7      87.3
29    TN   74381       6.9       4.4      88.7
30    UT   59885       6.7       3.8      89.5
31    MO   78470       6.5       6.1      87.4
32    IN   70411       6.3       3.9      89.8
33    KY   42807       6.2       2.7      91.1
34    NH   31031       5.9       6.6      87.5
35    DC   22478       5.7       8.8      85.4
36    NE   31546       5.6       2.8      91.6
37    OK   34641       4.9       5.9      89.2
38    VT    9815       4.8       0.3      94.9
39    ID   19484       4.5       1.5      94.0
40    LA   31372       4.4       3.2      92.3
41    HI   14308       3.3      10.9      85.8
42    AL   53577       3.1       2.7      94.2
43    SC   48630       3.0       2.7      94.3
44    NM   19539       3.0       5.1      91.9
45    AK    7918       1.6       9.7      88.7
46    ME   17511       1.6       4.7      93.7
47    MT    9733       1.4       0.0      98.6
48    SD    7283       1.2       0.0      98.8
49    WV   14698       0.9       1.2      97.9
50    MS   15628       0.2       0.7      99.2
51    WY    4342       0.0       0.0     100.0

Once again, most of the aforementioned tech hubs have higher percentages of non-citizen workers (in Computer or Mathematical Occupations). The states containing all of the hubs except for Washington DC and Baltimore MD are between 2 and 11 on the list with non-citizen workers between 21.3 and 11.6 percent. As before, Baltimore's state (MD) and Washington DC are much lower, at 24 and 35 on the list with non-citizen workers between just 7.6 and 5.7 percent. Now, there is just one state, Wyoming, that has no not-citzen or naturalized citizens in the sample. Still, the large difference in the distribution of non-citizen workers between the states can be seen in these occupations.

Splitting U.S.-born, Naturalized, and Non-citizens into Those Without (0) and With (1) an Advanced Degree

In [42]:
import pandas as pd
# ACS Occupation Codes at https://usa.ipums.org/usa/volii/occ_acs.shtml
# (described at https://www.census.gov/content/dam/Census/library/publications/2016/acs/acs-35.pdf)
#  110 = Computer and information systems managers
# 1010 = Computer programmers
# 1020 = Software developers, applications and systems software 
# print(pd.get_option('display.width'))
pd.set_option('display.width', 120)

def getCitizenEducByState(min_count, educ_hi, occs, title):
    fipref = "https://www2.census.gov/geo/docs/reference/state.txt"
    #header=STATE|STUSAB|STATE_NAME|STATENS
    #mm = pd.read_csv(fipref, skiprows=1, sep='|', names=['STATE','STUSAB','STATE_NAME','STATENS'])
    mm = pd.read_csv(fipref, skiprows=1, sep='|', names=['Statefip','State','State_Name','Statens'])
    #print(mm)

    usa = pd.read_csv("acs2016.csv")
    if len(occs) > 1:
        occ_start = occs[0]
        for i in range(1,len(occs)):
            if occs[i] >= 0:
                occ_end = occs[i]
                usa.loc[usa['OCC'] == occ_end,'OCC'] = occs[0]
            else:
                occ_end = -occs[i]
                usa.loc[(usa['OCC'] >= occ_start) & (usa['OCC'] <= occ_end),'OCC'] = occs[0]
            occ_start = occ_end + 1
    usa.loc[usa['EDUCD'] <  educ_hi,'EDUCD'] = 0
    usa.loc[usa['EDUCD'] >= educ_hi,'EDUCD'] = 1
    usa['CIT_EDUC'] = usa['CITIZEN'] * 2 + usa['EDUCD']
    #print("usa[{0}] = {1}".format(usa.shape[0], sum(usa['PERWT'])))
    print("usa[%d] = %d\n" % (usa.shape[0], sum(usa['PERWT'])))

    gg = usa.groupby(['STATEFIP','CIT_EDUC','EMPSTAT','OCC'])['PERWT'].sum()
    uu = gg.unstack('CIT_EDUC')
    uu.columns =['na0','na1','baa0','baa1','nat0','nat1','nac0','nac1']
    uu = uu.fillna(0)
    uu['count'] = uu['na0'] + uu['baa0'] + uu['nat0'] + uu['nac0'] + uu['na1'] + uu['baa1'] + uu['nat1'] + uu['nac1']
    uu['nac_p0'] = 100 * uu['nac0'] / uu['count']
    uu['nac_p1'] = 100 * uu['nac1'] / uu['count']
    uu['nat_p0'] = 100 * uu['nat0'] / uu['count']
    uu['nat_p1'] = 100 * uu['nat1'] / uu['count']
    uu['usa_p0'] = 100 * (uu['na0'] + uu['baa0']) / uu['count']
    uu['usa_p1'] = 100 * (uu['na1'] + uu['baa1']) / uu['count']
    uu = uu.reset_index(level=['STATEFIP','EMPSTAT','OCC'])
    pp = uu[(uu['OCC'] == occs[0]) & (uu['EMPSTAT'] == 1) & (uu['count'] > min_count)]
    pp = pp.sort_values(by=['nac_p0'], ascending=False)
    #pp = pp[pp['COUNTY'] > 0]
    pp = pp.merge(mm, left_on=['STATEFIP'],right_on=['Statefip'],how='left')
    qqState = pp['State']
    qq=pd.DataFrame(qqState, columns=['State'])
    qq['count']=pp['count'].astype('int')
    qq['non-cit0%']=pp['nac_p0'].round(1)
    qq['non-cit1%']=pp['nac_p1'].round(1)
    qq['natural0%']=pp['nat_p0'].round(1)
    qq['natural1%']=pp['nat_p1'].round(1)
    qq['us-born0%']=pp['usa_p0'].round(1)
    qq['us-born1%']=pp['usa_p1'].round(1)
    qq.index += 1
    print(title)
    print(qq)
    qq.to_csv("state_comp", sep=';')

getCitizenEducByState(1, 114, [1020], "Software Developers - US-born, Naturalized, and Non-citizen (percent)\n")
usa[3156487] = 323127515

Software Developers - US-born, Naturalized, and Non-citizen (percent)

   State   count  non-cit0%  non-cit1%  natural0%  natural1%  us-born0%  us-born1%
1     NJ   49210       19.5       20.7       10.3       13.4       27.0        9.1
2     CT   13065       16.7       11.3        8.5       11.1       40.2       12.2
3     NC   34435       16.5       10.6        5.0        6.7       52.3        8.9
4     DE    3211       16.0       22.3       10.7        9.6       26.6       14.8
5     AR    4333       15.3        3.6        4.1        0.0       68.1        8.9
6     WA   74135       14.7       20.2        5.1        6.3       45.3        8.3
7     CA  269117       14.4       19.7       12.1       10.9       33.5        9.4
8     NE    6111       13.3        2.9        4.5        3.1       60.0       16.1
9     MI   23829       12.6       11.4        4.2        5.8       52.2       13.8
10    IL   50267       12.6       13.1        5.7        9.2       44.9       14.5
11    AZ   22268       11.3        5.2        3.2        3.9       62.1       14.3
12    GA   34985       11.3       12.9        6.9        7.4       50.9       10.7
13    WI   18925       10.7       20.2        1.9        1.0       58.3        7.9
14    KS   12186       10.7       13.7        2.8        6.1       52.8       14.0
15    TX   97008       10.4       12.0        7.3        7.5       53.4        9.3
16    FL   50880       10.2        7.8        8.4        6.4       56.6       10.5
17    PA   38971       10.1       12.3        4.1        5.4       51.2       17.0
18    TN   12993        9.7       11.5        3.6        1.2       65.5        8.6
19    RI    3723        9.3       17.2        3.4        0.0       59.3       10.8
20    CO   43179        8.7        3.8        4.5        4.6       58.0       20.5
21    MA   60387        8.3       14.6        7.1        9.5       45.5       14.9
22    VA   59335        7.3       10.2        9.5        6.6       44.4       22.0
23    MD   38986        6.7        6.2        6.0        9.7       47.0       24.5
24    MN   30490        6.6        8.2        6.9        8.4       58.3       11.7
25    DC    2860        6.3        0.0        6.9        1.5       49.1       36.3
26    NY   50041        6.1        8.0       11.8        6.5       49.6       18.0
27    KY    5965        6.0        6.9        0.0        0.0       73.6       13.5
28    OH   27872        5.9        6.7        4.8        4.5       66.9       11.1
29    NV    4204        5.5       10.4        4.5        0.0       78.0        1.5
30    MO   13521        5.4       11.1        3.1        4.6       68.8        7.2
31    IA   10734        4.4       14.0        7.4        8.3       49.5       16.5
32    IN   12822        4.1        2.6        9.6        0.0       79.0        4.8
33    NM    2858        4.0        2.4        7.5        0.0       55.6       30.5
34    OK    5336        3.4       11.1        4.1       12.8       66.0        2.5
35    VT    2013        3.3        0.0        1.4        0.0       83.2       12.1
36    ND    2054        3.2       20.3        0.0        0.0       76.6        0.0
37    UT   18010        2.8        5.7        1.7        2.1       82.0        5.6
38    LA    5964        2.5        3.6        3.3        0.7       72.2       17.7
39    OR   18096        2.4        8.8        6.1        5.2       65.4       12.2
40    NH    9246        1.9        5.1        2.4       10.3       65.3       15.1
41    SC    7988        1.6        3.8        2.8        0.9       75.6       15.3
42    AL    9443        1.3        4.9        3.9        3.1       67.2       19.6
43    SD     959        0.0        9.2        0.0        0.0       79.1       11.7
44    MT    1741        0.0        0.0        0.0        0.0       97.4        2.6
45    AK    1468        0.0        0.0        0.0        0.0      100.0        0.0
46    MS    3025        0.0        0.0        0.0        0.0      100.0        0.0
47    ME    2248        0.0        0.0        0.0        0.0       97.5        2.5
48    ID    2554        0.0        0.0        5.7        0.0       84.5        9.8
49    WV    1662        0.0        0.0        0.0        0.0       79.2       20.8
50    HI    1026        0.0        8.0       14.2        0.0       39.0       38.8
51    WY    1138        0.0        0.0        0.0        0.0       91.6        8.4
In [43]:
getCitizenEducByState(1, 114, [110,1000,-1299], "Computer and Mathematical Occupations - US-born, Naturalized, and Non-citizen (percent)\n")
usa[3156487] = 323127515

Computer and Mathematical Occupations - US-born, Naturalized, and Non-citizen (percent)

   State   count  non-cit0%  non-cit1%  natural0%  natural1%  us-born0%  us-born1%
1     NJ  208422       12.2       12.7       12.0       10.2       43.1        9.7
2     CA  724997        9.7       11.1       13.1        7.6       48.2       10.4
3     WA  175878        9.6       11.7        6.4        4.3       57.4       10.5
4     CT   70449        9.6        7.3        5.2        5.1       60.6       12.2
5     DE   16000        8.4       11.5        8.8        2.5       56.5       12.3
6     AR   22253        7.8        3.4        4.6        0.3       75.9        7.9
7     IL  221425        7.2        6.7        7.7        6.3       58.6       13.6
8     TX  407614        6.9        6.4        7.2        5.4       64.4        9.7
9     FL  237195        6.7        3.9       10.3        4.5       64.6       10.2
10    NC  161050        6.4        5.2        5.0        4.5       66.2       12.6
11    RI   17629        6.4        9.5        4.2        1.1       71.1        7.7
12    AZ   97859        6.3        4.1        5.4        2.1       70.8       11.3
13    GA  165287        6.3        6.3        6.4        4.6       62.0       14.4
14    MA  167006        6.1        9.4        7.0        5.5       56.9       15.2
15    MN  121767        5.7        4.4        6.5        4.6       68.3       10.5
16    NY  273539        4.9        4.3       11.8        6.0       58.2       14.7
17    IN   70411        4.9        1.4        2.5        1.4       78.6       11.3
18    NV   30357        4.8        2.6        8.3        1.6       74.5        8.1
19    WI   94069        4.8        4.8        2.8        1.5       75.1       11.0
20    CO  135676        4.8        2.2        3.3        2.4       72.3       15.0
21    VA  243303        4.7        4.7        8.8        6.3       54.6       20.9
22    NE   31546        4.6        1.0        1.3        1.5       77.3       14.3
23    PA  199039        4.5        4.6        4.6        3.3       69.0       14.1
24    MI  128426        4.5        4.5        5.4        4.6       68.2       12.9
25    KS   45301        4.3        4.5        3.3        2.3       70.3       15.3
26    KY   42807        3.9        2.2        2.3        0.4       82.5        8.6
27    MD  180992        3.9        3.7        7.0        7.0       56.2       22.3
28    ND    9270        3.8        4.5        0.0        0.0       89.3        2.3
29    TN   74381        3.8        3.1        3.6        0.9       76.0       12.7
30    UT   59885        3.5        3.2        3.1        0.7       77.7       11.8
31    OH  163479        3.3        4.5        4.1        2.3       73.2       12.7
32    MO   78470        3.2        3.3        3.1        3.0       75.0       12.4
33    IA   37974        3.1        4.2        3.3        2.6       76.4       10.4
34    NH   31031        2.9        3.0        2.6        3.9       69.0       18.5
35    OR   68515        2.9        4.5        5.0        3.1       72.8       11.7
36    HI   14308        2.7        0.6        8.9        2.0       72.3       13.5
37    ID   19484        2.5        2.0        1.5        0.0       85.6        8.4
38    OK   34641        2.3        2.6        3.6        2.3       78.7       10.5
39    NM   19539        2.1        0.8        3.8        1.3       77.6       14.3
40    DC   22478        2.0        3.7        5.4        3.4       49.0       36.4
41    SC   48630        1.9        1.1        2.0        0.7       79.3       15.0
42    AL   53577        1.8        1.3        1.6        1.2       80.9       13.3
43    LA   31372        1.7        2.7        1.6        1.6       81.5       10.8
44    AK    7918        1.6        0.0        9.7        0.0       75.4       13.3
45    ME   17511        1.6        0.0        3.9        0.8       80.5       13.2
46    MT    9733        1.4        0.0        0.0        0.0       92.1        6.5
47    VT    9815        1.4        3.4        0.3        0.0       83.8       11.2
48    WV   14698        0.9        0.0        1.2        0.0       86.5       11.4
49    SD    7283        0.0        1.2        0.0        0.0       91.7        7.1
50    MS   15628        0.0        0.2        0.7        0.0       90.4        8.7
51    WY    4342        0.0        0.0        0.0        0.0       95.1        4.9

Splitting U.S.-born, Naturalized, and Non-citizens into Those Without (0) and With (1) a Post-Masters Degree

In [44]:
getCitizenEducByState(1, 115, [1020], "Software Developers - US-born, Naturalized, and Non-citizen (percent)\n")
usa[3156487] = 323127515

Software Developers - US-born, Naturalized, and Non-citizen (percent)

   State   count  non-cit0%  non-cit1%  natural0%  natural1%  us-born0%  us-born1%
1     NJ   49210       39.0        1.2       23.0        0.7       34.5        1.6
2     DE    3211       38.3        0.0       18.9        1.4       35.9        5.5
3     WA   74135       32.9        2.1        9.5        1.9       52.6        1.0
4     CA  269117       31.3        2.8       21.2        1.8       41.2        1.7
5     WI   18925       29.8        1.1        2.8        0.0       64.9        1.3
6     CT   13065       28.1        0.0       19.1        0.5       51.9        0.4
7     NC   34435       26.7        0.4       10.9        0.9       60.8        0.4
8     RI    3723       26.5        0.0        3.4        0.0       70.1        0.0
9     IL   50267       25.2        0.5       14.3        0.6       57.4        2.1
10    KS   12186       23.9        0.5        8.9        0.0       64.7        2.1
11    GA   34985       23.7        0.5       13.6        0.6       61.0        0.6
12    ND    2054       23.4        0.0        0.0        0.0       76.6        0.0
13    MI   23829       23.0        1.1        9.4        0.6       65.3        0.7
14    PA   38971       22.0        0.4        8.2        1.3       66.1        2.0
15    TX   97008       21.2        1.2       14.4        0.5       62.1        0.6
16    MA   60387       21.2        1.8       14.6        2.0       58.5        2.0
17    TN   12993       18.9        2.3        4.3        0.4       73.0        1.0
18    AR    4333       18.9        0.0        4.1        0.0       75.8        1.2
19    IA   10734       18.4        0.0       15.6        0.0       66.0        0.0
20    FL   50880       17.9        0.2       14.6        0.3       65.8        1.3
21    VA   59335       17.3        0.3       15.6        0.4       64.7        1.6
22    MO   13521       16.4        0.0        6.7        0.9       75.1        0.8
23    AZ   22268       16.3        0.2        4.9        2.2       75.8        0.6
24    NE    6111       16.3        0.0        7.6        0.0       74.4        1.7
25    NV    4204       15.9        0.0        4.5        0.0       79.6        0.0
26    OK    5336       14.5        0.0       16.9        0.0       68.6        0.0
27    MN   30490       14.0        0.8       15.2        0.0       68.8        1.3
28    KY    5965       12.9        0.0        0.0        0.0       80.6        6.5
29    MD   38986       12.6        0.2       12.9        2.7       69.3        2.3
30    CO   43179       12.1        0.3        7.9        1.2       75.9        2.5
31    OH   27872       11.9        0.7        9.2        0.2       76.9        1.1
32    NY   50041       11.6        2.5       17.9        0.4       65.0        2.6
33    OR   18096        9.6        1.5       10.7        0.5       76.3        1.2
34    SD     959        9.2        0.0        0.0        0.0       79.1       11.7
35    UT   18010        8.5        0.0        3.9        0.0       87.4        0.2
36    HI    1026        8.0        0.0       14.2        0.0       65.1       12.7
37    IN   12822        6.7        0.0        9.6        0.0       83.7        0.0
38    NM    2858        6.3        0.0        7.5        0.0       86.1        0.0
39    DC    2860        6.3        0.0        8.4        0.0       79.9        5.5
40    AL    9443        6.2        0.0        4.9        2.1       82.7        4.1
41    LA    5964        6.1        0.0        3.3        0.7       89.9        0.0
42    NH    9246        5.6        1.4       10.3        2.3       80.3        0.0
43    SC    7988        5.4        0.0        3.7        0.0       87.7        3.2
44    VT    2013        3.3        0.0        1.4        0.0       90.2        5.1
45    MT    1741        0.0        0.0        0.0        0.0      100.0        0.0
46    AK    1468        0.0        0.0        0.0        0.0      100.0        0.0
47    MS    3025        0.0        0.0        0.0        0.0      100.0        0.0
48    ME    2248        0.0        0.0        0.0        0.0       98.5        1.5
49    WV    1662        0.0        0.0        0.0        0.0       99.3        0.7
50    ID    2554        0.0        0.0        5.7        0.0       94.3        0.0
51    WY    1138        0.0        0.0        0.0        0.0      100.0        0.0
In [45]:
getCitizenEducByState(1, 115, [110,1000,-1299], "Computer and Mathematical Occupations - US-born, Naturalized, and Non-citizen (percent)\n")
usa[3156487] = 323127515

Computer and Mathematical Occupations - US-born, Naturalized, and Non-citizen (percent)

   State   count  non-cit0%  non-cit1%  natural0%  natural1%  us-born0%  us-born1%
1     NJ  208422       24.2        0.7       21.0        1.3       51.6        1.3
2     WA  175878       20.1        1.2        9.4        1.4       66.1        1.8
3     CA  724997       19.1        1.6       19.5        1.2       56.9        1.7
4     DE   16000       19.1        0.8       11.0        0.3       67.4        1.3
5     CT   70449       16.7        0.1        9.6        0.7       71.7        1.1
6     RI   17629       15.4        0.5        4.7        0.6       77.8        1.0
7     MA  167006       14.0        1.4       11.3        1.2       69.5        2.5
8     IL  221425       13.4        0.5       13.3        0.7       70.7        1.5
9     TX  407614       12.9        0.4       11.9        0.8       72.9        1.1
10    GA  165287       12.2        0.4       10.7        0.3       74.8        1.6
11    NC  161050       11.4        0.2        8.9        0.6       77.4        1.5
12    AR   22253       10.6        0.6        4.9        0.0       83.4        0.5
13    FL  237195       10.2        0.3       14.5        0.3       73.8        0.9
14    AZ   97859       10.1        0.3        6.8        0.7       80.3        1.7
15    MN  121767        9.7        0.4       11.1        0.0       77.5        1.3
16    WI   94069        9.4        0.2        4.4        0.0       84.4        1.7
17    VA  243303        9.2        0.1       14.6        0.5       73.5        2.0
18    KS   45301        8.7        0.1        5.5        0.0       84.1        1.6
19    MI  128426        8.6        0.4        9.3        0.8       79.6        1.4
20    PA  199039        8.5        0.6        7.1        0.7       81.2        1.9
21    NY  273539        8.3        0.9       17.1        0.8       71.1        1.8
22    ND    9270        8.3        0.0        0.0        0.0       91.7        0.0
23    OH  163479        7.6        0.2        6.2        0.1       84.4        1.5
24    NV   30357        7.5        0.0        9.9        0.0       81.4        1.2
25    IA   37974        7.3        0.0        5.6        0.3       86.8        0.0
26    MD  180992        7.2        0.4       12.6        1.3       75.6        2.9
27    CO  135676        6.8        0.2        5.3        0.4       85.9        1.4
28    UT   59885        6.7        0.0        3.8        0.0       88.5        1.0
29    MO   78470        6.5        0.0        5.6        0.5       86.0        1.4
30    TN   74381        6.3        0.6        4.2        0.2       87.7        0.9
31    IN   70411        6.2        0.1        3.8        0.1       89.3        0.6
32    KY   42807        6.2        0.0        2.6        0.1       89.8        1.4
33    OR   68515        6.1        1.2        8.0        0.1       83.1        1.4
34    NE   31546        5.6        0.0        2.8        0.0       90.9        0.7
35    NH   31031        5.5        0.4        5.9        0.7       86.2        1.3
36    OK   34641        4.9        0.0        5.9        0.0       88.8        0.3
37    VT    9815        4.8        0.0        0.3        0.0       92.2        2.7
38    ID   19484        4.5        0.0        1.5        0.0       92.9        1.1
39    LA   31372        4.4        0.0        3.1        0.1       91.2        1.2
40    DC   22478        4.3        1.4        8.2        0.6       79.0        6.5
41    HI   14308        3.3        0.0       10.0        0.9       83.1        2.7
42    AL   53577        3.1        0.0        2.1        0.6       92.5        1.7
43    NM   19539        3.0        0.0        4.8        0.3       89.7        2.2
44    SC   48630        2.9        0.1        2.5        0.2       92.0        2.2
45    AK    7918        1.6        0.0        9.7        0.0       82.3        6.4
46    ME   17511        1.6        0.0        4.7        0.0       92.2        1.5
47    MT    9733        1.4        0.0        0.0        0.0       96.1        2.5
48    SD    7283        1.2        0.0        0.0        0.0       97.3        1.5
49    WV   14698        0.9        0.0        1.2        0.0       95.3        2.6
50    MS   15628        0.2        0.0        0.7        0.0       97.7        1.4
51    WY    4342        0.0        0.0        0.0        0.0      100.0        0.0

Note: The Jupyter Notebook from which this post is generated can be found at http://econdataus.com/nonimmigrant_workers.ipynb.