add back gcc data and top5 by cost
This commit is contained in:
parent
a37e4558fa
commit
1970790c33
19 changed files with 356331 additions and 0 deletions
67
count_asst_prof_ucwages.py
Normal file
67
count_asst_prof_ucwages.py
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
"""
|
||||
count_asst_prof_ucwages.py
|
||||
============================
|
||||
Cross-check against the GCC-based analysis: count non-medical Assistant
|
||||
Professors UC-wide in 2024 using the UC-wages JSON data (uc_wages_data/),
|
||||
the same source uc_salary_pipeline.py normally uses. This can't give
|
||||
salary+benefits (no benefits field in this source) but it's a useful
|
||||
sanity check on headcount, since it's a different upstream source than GCC.
|
||||
|
||||
Reuses classifier.py's classify_title/is_medical_center, plus the
|
||||
assistant-rank filter from analyze_asst_prof_comp.py.
|
||||
"""
|
||||
|
||||
import json
|
||||
import glob
|
||||
import re
|
||||
|
||||
from classifier import classify_title, is_medical_center
|
||||
from analyze_asst_prof_comp import is_assistant_rank, is_recognised_non_assistant_senate
|
||||
from uc_wages_downloader import LOCATIONS
|
||||
|
||||
FOLDER_TO_CAMPUS = {folder: campus for campus, folder in LOCATIONS.items()}
|
||||
|
||||
YEAR = 2024
|
||||
|
||||
|
||||
def main():
|
||||
counts = {}
|
||||
unrecognised_senate_titles = set()
|
||||
total = 0
|
||||
|
||||
for path in sorted(glob.glob(f"uc_wages_data/*/wages_{YEAR}.json")):
|
||||
folder = path.split("/")[1]
|
||||
campus = FOLDER_TO_CAMPUS[folder]
|
||||
with open(path) as f:
|
||||
data = json.load(f)
|
||||
|
||||
n = 0
|
||||
for rec in data["records"]:
|
||||
title = rec["title"]
|
||||
if classify_title(title) != "SENATE_FACULTY":
|
||||
continue
|
||||
if is_medical_center(title, campus):
|
||||
continue
|
||||
if not is_assistant_rank(title):
|
||||
if not is_recognised_non_assistant_senate(title):
|
||||
unrecognised_senate_titles.add(title)
|
||||
continue
|
||||
n += 1
|
||||
|
||||
counts[campus] = n
|
||||
total += n
|
||||
|
||||
if unrecognised_senate_titles:
|
||||
print("NOTE: Senate-faculty titles not matched by any rank pattern:")
|
||||
for t in sorted(unrecognised_senate_titles):
|
||||
print(f" - {t}")
|
||||
print()
|
||||
|
||||
print(f"{'Campus':<10}{'N':>6}")
|
||||
for campus in sorted(counts):
|
||||
print(f"{campus:<10}{counts[campus]:>6}")
|
||||
print(f"\nTotal non-medical Assistant Professors, UC system-wide, {YEAR}: {total}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue