Source code for nycschools.shsat

# NYC School Data
# Copyright (C) 2022-23. Matthew X. Curinga
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU AFFERO GENERAL PUBLIC LICENSE (the "License") as
# published by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the License for more details.
#
# You should have received a copy of the License along with this program.
# If not, see <http://www.gnu.org/licenses/>.
# ==============================================================================

import os.path

import pandas as pd


from . import config

[docs]def load_admission_offers(): filename = os.path.join(config.data_dir, config.urls["shsat_apps"].filename) if not os.path.exists(filename): return save_administration_offers() return pd.read_csv(filename)
[docs]def save_administration_offers(): data_urls = config.urls["shsat_apps"].data_urls def shsat(ay, url): data = pd.read_csv(url) data.columns = ["dbn", "feeder_name", "hs_applicants_n", "testers_n", "offers_n"] data["ay"] = ay data["hs_applicants_n"] = data.hs_applicants_n.apply(lambda x: 2 if x == "0-5" else x) data["offers_n"] = data.offers_n.apply(lambda x: 2 if x == "0-5" else x) data["testers_n"] = data.testers_n.apply(lambda x: 2 if x == "0-5" else x) return data df = pd.concat([shsat(url, ay) for url, ay in data_urls.items()]) df.hs_applicants_n = pd.to_numeric(df.hs_applicants_n, errors='coerce').astype('Int64') df.testers_n = pd.to_numeric(df.testers_n, errors='coerce').astype('Int64') df.offers_n = pd.to_numeric(df.offers_n, errors='coerce').astype('Int64') df["offers_pct"] = df.offers_n / df.testers_n f = os.path.join(config.data_dir, config.urls["shsat_apps"].filename) df.to_csv(f, index=False) return df