NEH funding histories for AAU Institutions
Posted: September 26, 2022 in Python
Introduction
The first pillar in the strategic plan of my home institution, the University of Oklahoma is "Become a Top-Tier Public Research University." Strategy #1 in that pillar is "Meet Association of American Universities-quality benchmarks to position OU among the top public universities in the U.S." OU's Dodge Family College of Arts and Sciences supports this strategy in its (draft) strategic plan: "The DFCAS must build, maintain, and continually advance a culture of excellence to ensure we are at the leading edge of OU’s research ambitions and AAU aspirations."
Accordingly, to do my part to support these efforts, I aim to use my background in the humanities and my data skills (such as they are) to shed some light on research metrics in humanities departments at AAU institutions. What follows is my first effort: analyzing the history of research funding from the National Endowment for the Humanities (NEH) to public AAU institutions.
Sources
I searched the NEH's database, entering the names of AAU institutions into the "Organization Name" field. I downloaded the results in CSV form, then I used the Python Pandas library to analyze the data.
The data and the Jupyter notebook are available on my GitHub page at https://github.com/sjhuskey/aau.
Exploring the Data
After creating a big dataframe out of the 35 CSV files that I downloaded from the NEH's database, I explored the data.
First, I used the info()
method to see what was available in the dataframe.
big_frame.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 9590 entries, 0 to 154
Data columns (total 45 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 ApplicationID 9590 non-null int64
1 ApplicationNumber 9590 non-null object
2 ApplicantType 9590 non-null int64
3 SuppCount 9590 non-null int64
4 ProductCount 9590 non-null int64
5 CoverageCount 9590 non-null int64
6 PrizeCount 9590 non-null int64
7 ParticipatingInstitutionCount 9590 non-null int64
8 WhitePaper 9590 non-null int64
9 WhitePaperPath 167 non-null object
10 PDFirstname 9590 non-null object
11 PDMiddlename 6406 non-null object
12 PDLastname 9590 non-null object
13 PDNameSuffix 210 non-null object
14 CoPDFirstname 162 non-null object
15 CoPDMiddlename 76 non-null object
16 CoPDLastname 162 non-null object
17 CoPDNameSuffix 3 non-null object
18 Participants 9590 non-null object
19 GranteeDisplay 9590 non-null object
20 Institution 9590 non-null object
21 InstCity 9590 non-null object
22 InstState 9590 non-null object
23 InstPostalCode 9589 non-null object
24 InstCountry 9590 non-null object
25 CouncilDate 9483 non-null object
26 YearAwarded 9590 non-null int64
27 ProjectTitle 9590 non-null object
28 PrimaryDiscipline 9569 non-null object
29 AllDisciplines 9144 non-null object
30 ProgramID 9590 non-null int64
31 ProgramName 9590 non-null object
32 DivisionID 9590 non-null int64
33 DivisionName 9590 non-null object
34 OfferedOutright 9590 non-null float64
35 OfferedMatching 9590 non-null float64
36 ApprovedOutright 9590 non-null float64
37 ApprovedMatching 9590 non-null float64
38 AwardOutright 9590 non-null float64
39 AwardMatching 9590 non-null float64
40 OriginalAmount 9590 non-null float64
41 SupplementAmount 9590 non-null float64
42 GrantPeriod 9590 non-null object
43 ProjectDesc 9590 non-null object
44 ToSupport 0 non-null float64
dtypes: float64(9), int64(11), object(25)
memory usage: 3.4+ MB
I used unique()
to zoom in on the 'Institution' column to see what was there:
big_frame['Institution'].unique()
array(['University of Wisconsin System',
'University of Wisconsin Extension',
'University of Wisconsin Colleges',
'University of Wisconsin Foundation', 'University of Minnesota',
'University of Minnesota Press',
'University of Minnesota, University Gallery',
'University of Maryland, College Park',
'President and Fellows of Harvard College', 'MLA',
'Regents of the University of California, Santa Barbara',
'Regents of the University of California, San Diego',
…
'Indiana University of Pennsylvania',
'Indiana University Southeast', 'Indiana University at South Bend',
'Indiana University, Kokomo',
'Indiana University Alumni Association', 'Indiana University East',
'Indiana University Press', 'University Of Houston',
'University of Kansas, Lawrence',
'University of Kansas Center for Research, Inc.',
'Kansas Humanities Council', 'University of Washington',
'University of Washington, Bothell',
'Regents of the University of California, Irvine'], dtype=object)
It's clear that many of the institutions in the data are not AAU institutions, so I took steps to filter the data.
I made a list of just the AAU institutions:
aau_list = ['University of Kansas, Lawrence',
'Georgia Tech',
'University of Maryland, College Park',
'Mizzou',
'Board of Trustees of the University of Illinois',
'UCLA; Regents of the University of California, Los Angeles',
'Penn State',
'University of Florida',
'Purdue University',
'Rutgers, The State University of New Jersey',
'Michigan State University',
'University of Wisconsin System',
'Trustees of Indiana University',
'Texas A & M University, College Station',
'Regents of the University of California, Irvine',
'University of North Carolina at Chapel Hill',
'University of Virginia',
'University of Minnesota',
'University of California, Berkeley',
'Regents of the University of Colorado, Boulder',
'University of Texas, Austin',
'Regents of the University of California, San Diego',
'University of Washington',
'Regents of the University of California, Davis',
'University of Utah',
'Regents of the University of California, Santa Barbara',
'SUNY Research Foundation, Stony Brook',
'Regents of the University of Michigan',
'Regents of the University of California, Santa Cruz',
'University of Iowa',
'SUNY Research Foundation, Buffalo State College',
'Arizona Board of Regents',
'Ohio State University',
'University of Pittsburgh',
'University of Oregon',
]
# How many institutions are in the aau_list? There should be 35.
len(aau_list)
35
Then I used isin()
to filter the dataframe to include only the institutions in my list of public AAU institutions.
aau_frame = big_frame[big_frame['Institution'].isin(aau_list)]
I surveyed the columns in the dataframe to see how I might further filter it.
aau_frame.columns
Index(['ApplicationID', 'ApplicationNumber', 'ApplicantType', 'SuppCount',
'ProductCount', 'CoverageCount', 'PrizeCount',
'ParticipatingInstitutionCount', 'WhitePaper', 'WhitePaperPath',
'PDFirstname', 'PDMiddlename', 'PDLastname', 'PDNameSuffix',
'CoPDFirstname', 'CoPDMiddlename', 'CoPDLastname', 'CoPDNameSuffix',
'Participants', 'GranteeDisplay', 'Institution', 'InstCity',
'InstState', 'InstPostalCode', 'InstCountry', 'CouncilDate',
'YearAwarded', 'ProjectTitle', 'PrimaryDiscipline', 'AllDisciplines',
'ProgramID', 'ProgramName', 'DivisionID', 'DivisionName',
'OfferedOutright', 'OfferedMatching', 'ApprovedOutright',
'ApprovedMatching', 'AwardOutright', 'AwardMatching', 'OriginalAmount',
'SupplementAmount', 'GrantPeriod', 'ProjectDesc', 'ToSupport'],
dtype='object')
We'll probably want at least Institution, YearAwarded, ProjectTitle, PrimaryDiscipline, ProgramName, DivisionName, and AwardOutright, so I made a frame with those columns.
data = aau_frame[['Institution','ProjectTitle','PrimaryDiscipline','ProgramName','DivisionName','AwardOutright','YearAwarded']]
Institution | ProjectTitle | PrimaryDiscipline | ProgramName | DivisionName | AwardOutright | YearAwarded | |
---|---|---|---|---|---|---|---|
0 | University of Wisconsin System | Accessing the History of Health, Pharmacy, and... | History, General | Humanities Collections and Reference Resources | Preservation and Access | 326326.0 | 2022 |
1 | University of Wisconsin System | "Alternative Modernities" and the Modernizatio... | Theater History and Criticism | Fellowships | Research Programs | 60000.0 | 2020 |
2 | University of Wisconsin System | The Ford Foundation, Social Science, and the P... | Latin American History | Fellowships | Research Programs | 60000.0 | 2020 |
3 | University of Wisconsin System | The History of Cartography Project | Interdisciplinary Studies, General | Humanities Collections and Reference Resources | Preservation and Access | 185000.0 | 2021 |
4 | University of Wisconsin System | Open Access Edition of "Citizen Countess: Sofi... | Russian History | Fellowships Open Book Program | Digital Humanities | 5500.0 | 2020 |
... | ... | ... | ... | ... | ... | ... | ... |
150 | Mizzou | Utopian Societies Founded in the Soviet Union ... | History, General | Summer Stipends | Research Programs | 1500.0 | 1970 |
151 | Mizzou | The Process of Government During the Presidenc... | History, General | Fellowships for University Teachers | Research Programs | 15500.0 | 1970 |
152 | Mizzou | Dr. Johnson and the New Philosophy | Philosophy, General | Summer Stipends | Research Programs | 1500.0 | 1970 |
153 | Mizzou | Title not available | History, General | Fellowships for Younger Scholars | Fellowships and Seminars | 8387.0 | 1967 |
154 | Mizzou | Title not available | Philosophy, General | Summer Stipends | Research Programs | 1500.0 | 1967 |
8929 rows × 7 columns
Since the NEH has numerous funding programs, it's important to include only those having to do with research. I took a closer look at the ProgramName column:
data['ProgramName'].unique().tolist()
['Humanities Collections and Reference Resources',
'Fellowships',
'Fellowships Open Book Program',
'Summer Stipends',
'Scholarly Editions and Translations',
'Preservation Assistance Grants',
'Humanities Connections',
'Digital Humanities Advancement Grants',
'Fellowships for University Teachers',
'Challenge Grants',
'Fellowships for Advanced Social Science Research on Japan',
'Research and Development',
'Documenting Endangered Languages - Preservation',
'Reference Materials',
'Preservation/Access Projects',
'Humanities Projects in Media',
'Collaborative Research',
'Education Development and Demonstration',
'Institutes for Higher Education Faculty',
'Regional Center Implementation Grants',
'Institutes for K-12 Educators',
'Humanities Projects in Libraries and Archives',
'Regional Center Planning Grants',
'Basic Research',
'Seminars for K-12 Educators',
'Seminars for Higher Education Faculty',
'Humanities Projects in Museums and Historical Organizations',
'Editions',
'Reference Materials - Tools',
'Study Grants for College Teachers',
'Translations',
'Scholarly Publications',
'Reference Materials - Guides',
'Humanities, Science, and Technology',
'Archaeology Projects',
'Travel to Collections, 11/85 - 2/95',
'Preservation and Access Projects Pre-1996',
'Conferences',
'Younger Scholars, 2/86 - 2/95',
'Education Development & Demonstration (OLD)',
'Travel to Collections, 11/83 - 5/85',
'Humanities Projects for Youth',
'Reference Materials - Access',
'State and Local and Regional Studies',
'Fellowships for College Teachers and Independent Scholars',
'Fellowships and Stipends for Professionals',
'Residential College Teacher Fellowships, 1976-1981',
'Younger Scholars, 2/76 - 2/85',
'Institutional Development',
'Special Projects',
'State Humanities Councils General Operating Support Grants',
'Program Development/Planning Grants',
'Special Fellowships Programs',
'Bicentennial Histories',
'Institutional Planning and Development',
'Institutes for Advanced Topics in the Digital Humanities',
'Public Scholars',
'Sustaining Cultural Heritage Collections',
'Enduring Questions: Pilot Course Grants',
'Humanities in the Public Square',
'Digital Humanities Implementation Grants',
'Digging into Data',
'Small Grants to Libraries: King James Bible',
'Bridging Cultures Forums and Workshops',
"Interpreting America's Historic Places: Planning Grants",
'Dynamic Language Infrastructure-Documenting Endangered Languages - Fellowships',
'Special Opportunity in Foreign Language Education',
'Dissertation Grants',
'Humanities Programs for Nontraditional Learners',
'Pilot Grants - Education',
'Research Challenge Grants',
'Education Consultant Grants',
'Cooperative Agreements and Special Projects (Public Programs)',
'Common Heritage',
'Dialogues on the Experience of War',
'NEH/DFG Bilateral Digital Humanities Program',
'Digital Humanities Start-Up Grants',
'National Digital Newspaper Program',
'Cooperative Agreements and Special Projects (Digital Humanities)',
'Stabilization Grants',
'Teaching and Learning Resources and Curriculum Development',
'Faculty Humanities Workshops',
'Residential College Teacher Fellowships, 1980',
'Education Challenge Grants',
'Fellowships for Younger Scholars',
'Humanities Initiatives at Colleges and Universities',
'Next Generation Humanities PhD (Planning)',
'Digital Projects for the Public: Discovery Grants',
"Small Grants to Libraries: America's Music",
'Digital Humanities Fellowships',
'Challenge Grants for Universities',
'Humanities Institutes Program',
'NEH on the Road',
'International Research',
'Planning and Assessment Studies',
'Public Programs Special Projects (GD)',
'Humanities Connections Planning Grants',
'ARP-Organizations (Preservation-related)',
'Exhibitions: Implementation',
"America's Historical and Cultural Organizations: Planning Grants",
"Save America's Treasures",
'Preservation and Access Education and Training',
'Digital Humanities Workshops',
'Preservation - Assistance Grants (ER Title Ib)',
'Consultation Grants (ER Title Ib)',
'National Heritage Preservation Projects',
'ARP-Organizations (Research-related)',
'Small Grants to Libraries: Lincoln, Constitution and Civil War',
'Grants to Preserve and Create Access to Humanities Collections',
'Challenge Grants for Museums',
'NEH/AHRC New Directions for Digital Scholarship in Cultural Institutions',
'Humanities Open Book Program',
'Humanities Access Grants',
"Interpreting America's Historic Places Consultation",
'Landmarks of American History and Culture',
'Small Grants to Libraries: Pride and Passion',
'Special Initiatives',
'Libraries Implementation',
'Humanities Connections Implementation Grants',
'Bridging Cultures at Community Colleges',
'Iraqi Cultural Heritage Initiative',
'Small Grants to Libraries: Louisa May Alcott',
'Media Challenge Grants',
'Short Documentaries',
'Awards for Faculty',
'Small Grants to Libraries: John Adams Unbound',
'Conferences and Congresses',
'Archaeological and Ethnographic Field Research',
'Exhibitions: Planning',
'Advancing Knowledge: The IMLS/NEH Digital Partnership',
'Infrastructure and Capacity Building Challenge Grants',
'Enterprise Awards Pre-2001',
'ARP-Organizations (Public-related)',
"America's Historical and Cultural Organizations: Implementation Grants",
'Bicentennial Projects',
'Media Projects Production',
'Digital Projects for the Public: Production Grants',
"America's Media Makers: Production Grants",
'NEH/DOE Humanities High Performance Computing Program',
'Fellowships at Digital Humanities Centers',
'NEH/DFG Symposia and Workshops Program',
'Distinguished Teaching Professorships (Challenge)',
'Museums Implementation',
'History Project',
'NEH Teacher-Scholar Program',
'ARP-Organizations (Digital humanities-related)',
'Cooperative Agreements and Special Projects (P&A)',
'Cooperative Agreements and Special Projects (Research)',
'Humanities Initiatives at Hispanic-Serving Institutions',
'Cooperative Agreements and Special Projects (Education)',
'ARP-Organizations (Education-related)',
'Faculty Research Awards',
'Fostering Coherence Through Instruction',
'Picturing America',
'Special Project Challenge Grants',
'Improving Introductory Courses',
'Picturing America School Collaboration Projects',
'Museums Planning',
'Public Challenge Grants']
Many of those awards don't look relevant to AAU considerations. It's possible that the DivisionName column will give us a better picture:
data['DivisionName'].unique().tolist()
['Preservation and Access',
'Research Programs',
'Digital Humanities',
'Education Programs',
'Challenge Programs',
'Public Programs',
'Agency-wide Projects',
'Fellowships and Seminars',
'Federal/State Partnership']
Using `value_counts() will show us how many awards have been given by those divisions.
# Let's get counts of the grants from those programs.
data['DivisionName'].value_counts()
Research Programs 5287
Education Programs 1360
Preservation and Access 852
Fellowships and Seminars 701
Public Programs 427
Digital Humanities 173
Challenge Programs 84
Agency-wide Projects 33
Federal/State Partnership 12
Name: DivisionName, dtype: int64
Let's see that as a bar graph:
data['DivisionName'].value_counts().plot.barh()
It would be helpful to have a dataframe with grants from Research Programs, Digital Humanities and Fellowship and Seminars.
programs = ['Research Programs', 'Digital Humanities','Fellowships and Seminars']
aau_research = data[data['DivisionName'].isin(programs)]
Let's see how many awards each institution has received over the history of NEH's funding:
# Use value_counts() to get the number of awards per institution.
total_number = aau_research['Institution'].value_counts()
total_number
Regents of the University of Michigan 422
University of California, Berkeley 413
Trustees of Indiana University 361
University of Virginia 336
UCLA; Regents of the University of California, Los Angeles 315
University of Texas, Austin 279
Board of Trustees of the University of Illinois 255
University of Wisconsin System 252
University of Maryland, College Park 230
University of North Carolina at Chapel Hill 214
Rutgers, The State University of New Jersey 199
University of Minnesota 194
University of Washington 178
Regents of the University of California, Santa Barbara 176
University of Iowa 163
Ohio State University 146
University of Kansas, Lawrence 144
Penn State 142
Regents of the University of California, Santa Cruz 135
Arizona Board of Regents 132
University of Oregon 132
Regents of the University of California, Davis 130
Regents of the University of Colorado, Boulder 126
Regents of the University of California, San Diego 119
University of Florida 118
Mizzou 115
University of Pittsburgh 111
Michigan State University 106
SUNY Research Foundation, Stony Brook 102
Regents of the University of California, Irvine 102
SUNY Research Foundation, Buffalo State College 82
Texas A & M University, College Station 76
Purdue University 72
University of Utah 54
Georgia Tech 30
Name: Institution, dtype: int64
Here's the same information as a bar graph.
How about the total amount the institutions have received?
# How about total amount?
total_amount = aau_research.groupby('Institution')['AwardOutright'].sum().sort_values().plot.barh(figsize=(10,10))
I used value_counts()
and nlargest()
to get the top ten institution by number of grants received.
# Use nlargest() to get the top ten institutions by number of grants received.
top_ten = aau_research['Institution'].value_counts().nlargest(10).to_frame()
I wanted to make sure that the institutions had equivalent funding histories, so I checked on the earliest and most recent dates of awards for each one.
# Make dataframes of the earliest and most recent years per institution.
maximum = aau_research.groupby(['Institution'])['YearAwarded'].max().reset_index()
minimum = aau_research.groupby(['Institution'])['YearAwarded'].min().reset_index()
# Merge the minimum and maximum frames.
merged = pd.merge(minimum,maximum, on='Institution').rename(columns={'YearAwarded_x':'Earliest','YearAwarded_y':'Latest'})
merged
Institution | Earliest | Latest | |
---|---|---|---|
0 | Arizona Board of Regents | 1967 | 2021 |
1 | Board of Trustees of the University of Illinois | 1967 | 2022 |
2 | Georgia Tech | 1970 | 2017 |
3 | Michigan State University | 1967 | 2021 |
4 | Mizzou | 1967 | 2021 |
5 | Ohio State University | 1967 | 2021 |
6 | Penn State | 1967 | 2021 |
7 | Purdue University | 1967 | 2021 |
8 | Regents of the University of California, Davis | 1967 | 2021 |
9 | Regents of the University of California, Irvine | 1967 | 2021 |
10 | Regents of the University of California, San D... | 1967 | 2020 |
11 | Regents of the University of California, Santa... | 1967 | 2021 |
12 | Regents of the University of California, Santa... | 1967 | 2020 |
13 | Regents of the University of Colorado, Boulder | 1967 | 2022 |
14 | Regents of the University of Michigan | 1967 | 2022 |
15 | Rutgers, The State University of New Jersey | 1967 | 2021 |
16 | SUNY Research Foundation, Buffalo State College | 1966 | 2015 |
17 | SUNY Research Foundation, Stony Brook | 1967 | 2016 |
18 | Texas A & M University, College Station | 1971 | 2021 |
19 | Trustees of Indiana University | 1967 | 2021 |
20 | UCLA; Regents of the University of California,... | 1967 | 2021 |
21 | University of California, Berkeley | 1967 | 2022 |
22 | University of Florida | 1967 | 2021 |
23 | University of Iowa | 1967 | 2022 |
24 | University of Kansas, Lawrence | 1967 | 2022 |
25 | University of Maryland, College Park | 1967 | 2021 |
26 | University of Minnesota | 1967 | 2022 |
27 | University of North Carolina at Chapel Hill | 1967 | 2021 |
28 | University of Oregon | 1970 | 2022 |
29 | University of Pittsburgh | 1967 | 2022 |
30 | University of Texas, Austin | 1967 | 2022 |
31 | University of Utah | 1967 | 2022 |
32 | University of Virginia | 1967 | 2021 |
33 | University of Washington | 1967 | 2022 |
34 | University of Wisconsin System | 1967 | 2021 |
There's some variation in there, but not much.
Next, I wanted to know more about the disciplines represented in the dataset.
# How many disciplines are represented in this dataset?
aau_research['PrimaryDiscipline'].nunique()
150
# What are the top twenty disciplines in number of grants?
aau_research['PrimaryDiscipline'].value_counts().nlargest(20).to_frame().reset_index()
index | PrimaryDiscipline | |
---|---|---|
0 | U.S. History | 481 |
1 | Interdisciplinary Studies, General | 370 |
2 | History, General | 274 |
3 | British Literature | 255 |
4 | European History | 235 |
5 | Art History and Criticism | 217 |
6 | Music History and Criticism | 215 |
7 | American Literature | 210 |
8 | Archaeology | 210 |
9 | Literature, General | 205 |
10 | Anthropology | 157 |
11 | Philosophy, General | 156 |
12 | Linguistics | 138 |
13 | History and Philosophy of Science, Technology,... | 114 |
14 | East Asian History | 111 |
15 | Latin American History | 100 |
16 | Comparative Literature | 98 |
17 | Medieval Studies | 96 |
18 | British History | 87 |
19 | French Literature | 83 |
Here's that information as a pie chart:
Looking at OU
Now that I had some data on the NEH funding history of AAU institutions, it was time to start looking at OU. First, I repeated the steps that I took above: downloading the data, narrowing it down to just OU ('Board of Regents of the University of Oklahoma'), and further narrowing it down to just the NEH awards having to do with research.
Here, I used groupby()
and sum()
to get a picture of OU's funding history over time:
# Show the history of NEH funding at OU
ou_years = ou_research.groupby('YearAwarded')['AwardOutright'].sum().to_frame()
ou_years
AwardOutright | |
---|---|
YearAwarded | |
1967 | 25407.0 |
1970 | 9000.0 |
1972 | 34750.0 |
1973 | 68795.0 |
1974 | 4000.0 |
1975 | 2000.0 |
1977 | 30000.0 |
1978 | 101770.0 |
1979 | 102065.0 |
1980 | 2500.0 |
1981 | 4500.0 |
1983 | 15900.0 |
1984 | 88652.0 |
1985 | 58990.0 |
1986 | 29750.0 |
1987 | 7000.0 |
1988 | 10750.0 |
1989 | 30500.0 |
1990 | 2950.0 |
1996 | 30000.0 |
1997 | 34000.0 |
1998 | 34000.0 |
1999 | 34000.0 |
2000 | 50000.0 |
2001 | 4500.0 |
2002 | 85000.0 |
2003 | 24000.0 |
2004 | 24000.0 |
2005 | 40000.0 |
2008 | 6000.0 |
2009 | 50400.0 |
2013 | 50400.0 |
2014 | 12000.0 |
2015 | 100800.0 |
2016 | 6000.0 |
2017 | 50400.0 |
2019 | 6000.0 |
2022 | 6000.0 |
Here's a dataframe with the most relevant information:
# Here's a dataframe with just the pertinent information about OU.
ou_neh = ou[['Institution','YearAwarded','PDLastname','PDFirstname','ProjectTitle','AwardOutright','PrimaryDiscipline']]
ou_neh
Institution | YearAwarded | PDLastname | PDFirstname | ProjectTitle | AwardOutright | PrimaryDiscipline | |
---|---|---|---|---|---|---|---|
3 | Board of Regents of the University of Oklahoma | 2021 | Marshall | Kimberly | New Stories of the West, for the West | 500000.0 | U.S. History |
7 | Board of Regents of the University of Oklahoma | 2022 | Heaton | Raina | Creating Online Access for the Native American... | 345494.0 | Linguistic Anthropology |
8 | Board of Regents of the University of Oklahoma | 2022 | Mansky | Joseph | Plays, Libels, and the Public Sphere in Shakes... | 6000.0 | British Literature |
15 | Board of Regents of the University of Oklahoma | 2020 | Heaton | Raina | Collaboration and development for digital acce... | 49495.0 | Native American Studies |
27 | Board of Regents of the University of Oklahoma | 2019 | Marshall | Kimberly | Re-Membering the Boise Valley People: Rethinki... | 6000.0 | Cultural Anthropology |
... | ... | ... | ... | ... | ... | ... | ... |
460 | Board of Regents of the University of Oklahoma | 1970 | Davis | Robert | Title not available | 1500.0 | English |
463 | Board of Regents of the University of Oklahoma | 1970 | Calhoun | Dougald | Correspondence of French Revolutionary Deputie... | 7500.0 | History, General |
468 | Board of Regents of the University of Oklahoma | 1967 | Opler | Morris | Title not available | 15520.0 | Anthropology |
471 | Board of Regents of the University of Oklahoma | 1967 | Davis | Gwenn | Title not available | 1500.0 | English |
472 | Board of Regents of the University of Oklahoma | 1967 | Miller | David | Title not available | 8387.0 | Hispanic American Studies |
114 rows × 7 columns
Which disciplines at OU have been the most successful at getting NEH grants?
ou_neh['PrimaryDiscipline'].value_counts().nlargest(10).plot.pie(label='',figsize=(10,20),fontsize=14)
Comparing OU to AAU institutions
For a very basic overview, I compared OU's NEH funding per year to each AAU institution's NEH funding per year.
'''
Make a frame of OU's NEH funding history to compare to AAU institutions.
'''
OU = ou_neh.groupby('YearAwarded')['AwardOutright'].sum().to_frame()
Getting individual AAU institutions was tricky for me. I'm sure there are much better ways of doing this, but I settled on this method.
First, I made a Python dictionary of AAU institutions, with the AAU name as key and the name as it appears in the NEH data as the value. I used that to make individual dataframes to compare with OU.
aau_dict = {'University of Kansas':'University of Kansas, Lawrence',
'Georgia Tech':'Georgia Tech',
'University of Maryland':'University of Maryland, College Park',
'University of Missouri':'Mizzou',
'University of Illinois':'Board of Trustees of the University of Illinois',
'UCLA':'UCLA; Regents of the University of California, Los Angeles',
'Penn State':'Penn State',
'University of Florida':'University of Florida',
'Purdue':'Purdue University',
'Rutgers':'Rutgers, The State University of New Jersey',
'Michigan State University':'Michigan State University',
'University of Wisconsin':'University of Wisconsin System',
'Indiana University':'Trustees of Indiana University',
'Texas A & M':'Texas A & M University, College Station',
'UC Irvine':'Regents of the University of California, Irvine',
'UNC':'University of North Carolina at Chapel Hill',
'UVa':'University of Virginia',
'University of Minnesota':'University of Minnesota',
'Berkeley':'University of California, Berkeley',
'University of Colorado':'Regents of the University of Colorado, Boulder',
'University of Texas':'University of Texas, Austin',
'UCSD':'Regents of the University of California, San Diego',
'University of Washington':'University of Washington',
'UC Davis':'Regents of the University of California, Davis',
'University of Utah':'University of Utah',
'UC Santa Barbara':'Regents of the University of California, Santa Barbara',
'SUNY Stony Brook':'SUNY Research Foundation, Stony Brook',
'University of Michigan':'Regents of the University of Michigan',
'UC Santa Cruz':'Regents of the University of California, Santa Cruz',
'University of Iowa':'University of Iowa',
'SUNY Buffalo':'SUNY Research Foundation, Buffalo State College',
'University of Arizona':'Arizona Board of Regents',
'The Ohio State University':'Ohio State University',
'University of Pittsburgh':'University of Pittsburgh',
'University of Oregon':'University of Oregon',}
'''
Loop through the AAU dictionary to get individual histories.
'''
aau_frames = {}
for key,value in aau_dict.items():
institution = key
df = aau_research[aau_research['Institution'] == value]
history = df.groupby('YearAwarded')['AwardOutright'].sum().to_frame()
aau_frames.update({institution:history})
'''
Loop through the aau_frames and make lines graphs
comparing OU to individual AAU institutions.
'''
for key,value in aau_frames.items():
merged = pd.merge(OU,value,on='YearAwarded')
plot = merged.rename(columns={'AwardOutright_x':'OU','AwardOutright_y':key}).plot.line(color={'OU':'#841617',key:'#168483'},figsize=(10,5),title=('OU vs. ' + str(key)),xlabel='Year Awarded',ylabel='Amount ($)')
fig = plot.get_figure()
fig.savefig('../plots/OU-' + str(key) + '.png')
print(plot)
Here are the line graphs showing the NEH funding history of OU as compared to that of each public AAU institution.
More to Come
I have also done some Natural Language Processing work on the ProjectTitle field, just to see if I could identify any trends in projects that receive funding. I plan to write up that work in a future post.
Do you have questions you want to ask of this data? Please feel free to contact me at huskey@ou.edu.