50 lines
1.9 KiB
Python
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()
|