Spaces:
Sleeping
Sleeping
Update models/pitcher_adjustment.py
Browse files- models/pitcher_adjustment.py +20 -0
models/pitcher_adjustment.py
CHANGED
|
@@ -20,6 +20,10 @@ def build_pitcher_feature_row(statcast_df: pd.DataFrame, pitcher_name: str) -> d
|
|
| 20 |
"hard_hit_rate_allowed": None,
|
| 21 |
"barrel_rate_allowed": None,
|
| 22 |
"avg_release_speed": None,
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
"sample_size": 0,
|
| 24 |
}
|
| 25 |
|
|
@@ -31,15 +35,27 @@ def build_pitcher_feature_row(statcast_df: pd.DataFrame, pitcher_name: str) -> d
|
|
| 31 |
"hard_hit_rate_allowed": None,
|
| 32 |
"barrel_rate_allowed": None,
|
| 33 |
"avg_release_speed": None,
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
"sample_size": 0,
|
| 35 |
}
|
| 36 |
|
| 37 |
launch_speed = pd.to_numeric(df.get("launch_speed"), errors="coerce")
|
| 38 |
launch_angle = pd.to_numeric(df.get("launch_angle"), errors="coerce")
|
| 39 |
release_speed = pd.to_numeric(df.get("release_speed"), errors="coerce")
|
|
|
|
|
|
|
|
|
|
|
|
|
| 40 |
|
| 41 |
ev_allowed = _safe_mean(launch_speed)
|
| 42 |
avg_release_speed = _safe_mean(release_speed)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
|
| 44 |
hard_hit_rate_allowed = None
|
| 45 |
if not launch_speed.dropna().empty:
|
|
@@ -66,6 +82,10 @@ def build_pitcher_feature_row(statcast_df: pd.DataFrame, pitcher_name: str) -> d
|
|
| 66 |
"hard_hit_rate_allowed": hard_hit_rate_allowed,
|
| 67 |
"barrel_rate_allowed": barrel_rate_allowed,
|
| 68 |
"avg_release_speed": avg_release_speed,
|
|
|
|
|
|
|
|
|
|
|
|
|
| 69 |
"sample_size": int(len(df)),
|
| 70 |
}
|
| 71 |
|
|
|
|
| 20 |
"hard_hit_rate_allowed": None,
|
| 21 |
"barrel_rate_allowed": None,
|
| 22 |
"avg_release_speed": None,
|
| 23 |
+
"avg_release_spin_rate": None,
|
| 24 |
+
"avg_release_extension": None,
|
| 25 |
+
"avg_pfx_x": None,
|
| 26 |
+
"avg_pfx_z": None,
|
| 27 |
"sample_size": 0,
|
| 28 |
}
|
| 29 |
|
|
|
|
| 35 |
"hard_hit_rate_allowed": None,
|
| 36 |
"barrel_rate_allowed": None,
|
| 37 |
"avg_release_speed": None,
|
| 38 |
+
"avg_release_spin_rate": None,
|
| 39 |
+
"avg_release_extension": None,
|
| 40 |
+
"avg_pfx_x": None,
|
| 41 |
+
"avg_pfx_z": None,
|
| 42 |
"sample_size": 0,
|
| 43 |
}
|
| 44 |
|
| 45 |
launch_speed = pd.to_numeric(df.get("launch_speed"), errors="coerce")
|
| 46 |
launch_angle = pd.to_numeric(df.get("launch_angle"), errors="coerce")
|
| 47 |
release_speed = pd.to_numeric(df.get("release_speed"), errors="coerce")
|
| 48 |
+
release_spin_rate = pd.to_numeric(df.get("release_spin_rate"), errors="coerce")
|
| 49 |
+
release_extension = pd.to_numeric(df.get("release_extension"), errors="coerce")
|
| 50 |
+
pfx_x = pd.to_numeric(df.get("pfx_x"), errors="coerce")
|
| 51 |
+
pfx_z = pd.to_numeric(df.get("pfx_z"), errors="coerce")
|
| 52 |
|
| 53 |
ev_allowed = _safe_mean(launch_speed)
|
| 54 |
avg_release_speed = _safe_mean(release_speed)
|
| 55 |
+
avg_release_spin_rate = _safe_mean(release_spin_rate)
|
| 56 |
+
avg_release_extension = _safe_mean(release_extension)
|
| 57 |
+
avg_pfx_x = _safe_mean(pfx_x)
|
| 58 |
+
avg_pfx_z = _safe_mean(pfx_z)
|
| 59 |
|
| 60 |
hard_hit_rate_allowed = None
|
| 61 |
if not launch_speed.dropna().empty:
|
|
|
|
| 82 |
"hard_hit_rate_allowed": hard_hit_rate_allowed,
|
| 83 |
"barrel_rate_allowed": barrel_rate_allowed,
|
| 84 |
"avg_release_speed": avg_release_speed,
|
| 85 |
+
"avg_release_spin_rate": avg_release_spin_rate,
|
| 86 |
+
"avg_release_extension": avg_release_extension,
|
| 87 |
+
"avg_pfx_x": avg_pfx_x,
|
| 88 |
+
"avg_pfx_z": avg_pfx_z,
|
| 89 |
"sample_size": int(len(df)),
|
| 90 |
}
|
| 91 |
|