paper-dynasty-card-creation/generate_arm_ratings_csv.py
2025-11-23 01:28:33 -06:00

50 lines
1.9 KiB
Python

"""
Generate Arm Ratings CSV File
This script calculates outfield arm ratings from Retrosheet play-by-play data
and saves them to a CSV file for future reference.
Usage:
python generate_arm_ratings_csv.py --year 2005 --events data-input/retrosheet/retrosheets_events_2005.csv
# Or for partial season:
python generate_arm_ratings_csv.py --year 2025 --events data-input/retrosheet/events.csv --season-pct 0.5
"""
import argparse
import pandas as pd
from defenders.retrosheet_arm_calculator import save_arm_ratings_to_csv
def main():
parser = argparse.ArgumentParser(description='Generate arm ratings CSV from Retrosheet data')
parser.add_argument('--year', type=int, required=True, help='Season year (e.g., 2005)')
parser.add_argument('--events', type=str, required=True, help='Path to Retrosheet events CSV file')
parser.add_argument('--output-dir', type=str, default='data-output',
help='Output directory (default: data-output)')
parser.add_argument('--season-pct', type=float, default=1.0,
help='Percentage of season completed (default: 1.0)')
args = parser.parse_args()
print(f"Loading Retrosheet events from {args.events}...")
df_events = pd.read_csv(args.events, low_memory=False)
print(f"Loaded {len(df_events):,} events")
print(f"\nCalculating arm ratings for {args.year} season...")
output_file = save_arm_ratings_to_csv(
df_events=df_events,
season_year=args.year,
output_dir=args.output_dir,
season_pct=args.season_pct
)
print(f"\n✓ Success! Arm ratings saved to: {output_file}")
print(f"\nYou can now use this file in your card creation scripts:")
print(f" from defenders.retrosheet_arm_calculator import load_arm_ratings_from_csv")
print(f" arm_ratings = load_arm_ratings_from_csv({args.year})")
if __name__ == '__main__':
main()