File size: 2,286 Bytes
58bb4c7 5dcecd4 58bb4c7 fe4f734 58bb4c7 fe4f734 58bb4c7 5dcecd4 58bb4c7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
from datetime import date
from pathlib import Path
from pandas import DataFrame
from modules import (
METADATA,
get_date_range,
get_rules_in_window,
groupby_agency,
groupby_date,
)
def save_csv(path: Path, df_all: DataFrame, df_agency: DataFrame, df_ym: DataFrame, transition_year: int):
"""Save output as CSV files.
Args:
path (Path): Save data here.
df_all (DataFrame): Data at the rule level.
df_agency (DataFrame): Data grouped by agency.
df_ym (DataFrame): Data grouped by publication year and month.
transition_year (int): Presidential transition year.
"""
files = (
f"rules_{transition_year - 1}_{transition_year}.csv",
f"rules_by_agency_{transition_year - 1}_{transition_year}.csv",
f"rules_by_month_{transition_year - 1}_{transition_year}.csv"
)
dataframes = (df_all, df_agency, df_ym)
for data, file in zip(dataframes, files):
data.to_csv(path / file, index=False)
def main(start_date: str, save_data: bool = True, path: Path | None = None, metadata: dict | None = None, significant: bool = True):
"""Retrieve rules in CRA window and save resulting data.
"""
if date.fromisoformat(start_date) < date(2023, 4, 6):
significant = False
date_range = get_date_range(start_date)
transition_year = date_range.get("transition_year")
df, _ = get_rules_in_window(start_date, get_significant=significant)
df_agency = groupby_agency(df, metadata=metadata, significant=significant)
df_ym = groupby_date(df, significant=significant)
if save_data:
if path is None:
path = Path(__file__).parent
save_csv(path, df, df_agency, df_ym, transition_year)
return df, df_agency, df_ym
if __name__ == "__main__":
main_path = Path(__file__).parent
data_path = main_path.joinpath("data")
if not data_path.exists():
data_path.mkdir(parents=True, exist_ok=True)
start = input("Enter beginning of CRA window [yyyy-mm-dd]: ")
df, agency, ym = main(start, path=data_path, metadata=METADATA, significant=True)
print(f"Rules in CRA window: {len(df)}")
print("\nRules by agency\n", agency.head(10))
print("\nRules by month\n", ym)
|