Spaces:
Running
Running
Upload 3 files
Browse files- stuff_model/calculate_arm_angles.py +67 -0
- stuff_model/feature_engineering.py +139 -139
- stuff_model/pitcher_arm_angles_2024.csv +285 -0
stuff_model/calculate_arm_angles.py
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import polars as pl
|
| 2 |
+
import numpy as np
|
| 3 |
+
import requests
|
| 4 |
+
|
| 5 |
+
def calculate_arm_angles(df: pl.DataFrame,pitcher_id:int) -> pl.DataFrame:
|
| 6 |
+
df_arm_angle = pl.read_csv('stuff_model/pitcher_arm_angles_2024.csv')
|
| 7 |
+
#pitcher_id = 489446
|
| 8 |
+
df_filter = df.filter(pl.col("pitcher_id") == pitcher_id)
|
| 9 |
+
# data = requests.get(f'https://statsapi.mlb.com/api/v1/people?personIds={pitcher_id}').json()
|
| 10 |
+
|
| 11 |
+
if pitcher_id not in df_arm_angle["pitcher"]:
|
| 12 |
+
|
| 13 |
+
data = requests.get(f'https://statsapi.mlb.com/api/v1/people?personIds={pitcher_id}').json()
|
| 14 |
+
height_in = data['people'][0]['height']
|
| 15 |
+
height = int(height_in.split("'")[0]) * 12 + int(height_in.split("'")[1].split('"')[0])
|
| 16 |
+
df_filter = (df_filter.with_columns(
|
| 17 |
+
(pl.col("release_pos_x") * 12).alias("release_pos_x"),
|
| 18 |
+
(pl.col("release_pos_z") * 12).alias("release_pos_z"),
|
| 19 |
+
(pl.lit(height * 0.70)).alias("shoulder_pos"),
|
| 20 |
+
)
|
| 21 |
+
.with_columns(
|
| 22 |
+
(pl.col("release_pos_z") - pl.col("shoulder_pos")).alias("Opp"),
|
| 23 |
+
pl.col("release_pos_x").abs().alias("Adj"),
|
| 24 |
+
)
|
| 25 |
+
.with_columns(
|
| 26 |
+
pl.struct(["Opp", "Adj"]).map_elements(lambda x: np.arctan2(x["Opp"], x["Adj"])).alias("arm_angle_rad")
|
| 27 |
+
))
|
| 28 |
+
|
| 29 |
+
df_filter = (df_filter.with_columns(
|
| 30 |
+
|
| 31 |
+
pl.col("arm_angle_rad").degrees().alias("arm_angle")
|
| 32 |
+
|
| 33 |
+
#.drop(["Opp", "arm_angle_rad"])
|
| 34 |
+
))
|
| 35 |
+
|
| 36 |
+
else:
|
| 37 |
+
shoulder_x = df_arm_angle.filter(pl.col("pitcher") == pitcher_id)["relative_shoulder_x"][0]
|
| 38 |
+
shoulder_z = df_arm_angle.filter(pl.col("pitcher") == pitcher_id)["shoulder_z"][0]
|
| 39 |
+
ball_angle = df_arm_angle.filter(pl.col("pitcher") == pitcher_id)["ball_angle"][0]
|
| 40 |
+
|
| 41 |
+
print(shoulder_x, shoulder_z)
|
| 42 |
+
|
| 43 |
+
df_filter = (df_filter.with_columns(
|
| 44 |
+
|
| 45 |
+
)
|
| 46 |
+
.with_columns(
|
| 47 |
+
(pl.col("release_pos_z") - shoulder_z).alias("Opp"),
|
| 48 |
+
(pl.col("release_pos_x") - shoulder_x).alias("Adj"),
|
| 49 |
+
)
|
| 50 |
+
.with_columns(
|
| 51 |
+
pl.struct(["Opp", "Adj"]).map_elements(lambda x: np.arctan2(x["Opp"], x["Adj"])).alias("arm_angle_rad")
|
| 52 |
+
)
|
| 53 |
+
.with_columns(
|
| 54 |
+
pl.col("arm_angle_rad").degrees().alias("arm_angle")
|
| 55 |
+
)
|
| 56 |
+
#.drop(["Opp", "arm_angle_rad"])
|
| 57 |
+
)
|
| 58 |
+
|
| 59 |
+
df_filter = df_filter.with_columns(
|
| 60 |
+
((pl.col("arm_angle") * 0.25) + (ball_angle * 0.75)).alias("arm_angle")
|
| 61 |
+
)
|
| 62 |
+
|
| 63 |
+
|
| 64 |
+
|
| 65 |
+
|
| 66 |
+
return df_filter
|
| 67 |
+
|
stuff_model/feature_engineering.py
CHANGED
|
@@ -1,140 +1,140 @@
|
|
| 1 |
-
import polars as pl
|
| 2 |
-
import numpy as np
|
| 3 |
-
|
| 4 |
-
def feature_engineering(df: pl.DataFrame) -> pl.DataFrame:
|
| 5 |
-
# Extract the year from the game_date column
|
| 6 |
-
df = df.with_columns(
|
| 7 |
-
pl.col('game_date').str.slice(0, 4).alias('year')
|
| 8 |
-
)
|
| 9 |
-
|
| 10 |
-
df = df.with_columns([
|
| 11 |
-
|
| 12 |
-
(-(pl.col('vy0')**2 - (2 * pl.col('ay') * (pl.col('y0') - 17/12)))**0.5).alias('vy_f'),
|
| 13 |
-
])
|
| 14 |
-
|
| 15 |
-
df = df.with_columns([
|
| 16 |
-
((pl.col('vy_f') - pl.col('vy0')) / pl.col('ay')).alias('t'),
|
| 17 |
-
])
|
| 18 |
-
|
| 19 |
-
df = df.with_columns([
|
| 20 |
-
(pl.col('vz0') + (pl.col('az') * pl.col('t'))).alias('vz_f'),
|
| 21 |
-
(pl.col('vx0') + (pl.col('ax') * pl.col('t'))).alias('vx_f')
|
| 22 |
-
])
|
| 23 |
-
|
| 24 |
-
df = df.with_columns([
|
| 25 |
-
(-np.arctan(pl.col('vz_f') / pl.col('vy_f')) * (180 / np.pi)).alias('vaa'),
|
| 26 |
-
(-np.arctan(pl.col('vx_f') / pl.col('vy_f')) * (180 / np.pi)).alias('haa')
|
| 27 |
-
])
|
| 28 |
-
|
| 29 |
-
# Mirror horizontal break for left-handed pitchers
|
| 30 |
-
df = df.with_columns(
|
| 31 |
-
pl.when(pl.col('pitcher_hand') == 'L')
|
| 32 |
-
.then(-pl.col('ax'))
|
| 33 |
-
.otherwise(pl.col('ax'))
|
| 34 |
-
.alias('ax')
|
| 35 |
-
)
|
| 36 |
-
|
| 37 |
-
# Mirror horizontal break for left-handed pitchers
|
| 38 |
-
df = df.with_columns(
|
| 39 |
-
pl.when(pl.col('pitcher_hand') == 'L')
|
| 40 |
-
.then(-pl.col('hb'))
|
| 41 |
-
.otherwise(pl.col('hb'))
|
| 42 |
-
.alias('hb')
|
| 43 |
-
)
|
| 44 |
-
|
| 45 |
-
# Mirror horizontal release point for left-handed pitchers
|
| 46 |
-
df = df.with_columns(
|
| 47 |
-
pl.when(pl.col('pitcher_hand') == 'L')
|
| 48 |
-
.then(pl.col('x0'))
|
| 49 |
-
.otherwise(-pl.col('x0'))
|
| 50 |
-
.alias('x0')
|
| 51 |
-
)
|
| 52 |
-
|
| 53 |
-
# Define the pitch types to be considered
|
| 54 |
-
pitch_types = ['SI', 'FF', 'FC']
|
| 55 |
-
|
| 56 |
-
# Filter the DataFrame to include only the specified pitch types
|
| 57 |
-
df_filtered = df.filter(pl.col('pitch_type').is_in(pitch_types))
|
| 58 |
-
|
| 59 |
-
# Group by pitcher_id and year, then aggregate to calculate average speed and usage percentage
|
| 60 |
-
df_agg = df_filtered.group_by(['pitcher_id', 'year', 'pitch_type']).agg([
|
| 61 |
-
pl.col('start_speed').mean().alias('avg_fastball_speed'),
|
| 62 |
-
pl.col('az').mean().alias('avg_fastball_az'),
|
| 63 |
-
pl.col('ax').mean().alias('avg_fastball_ax'),
|
| 64 |
-
pl.len().alias('count')
|
| 65 |
-
])
|
| 66 |
-
|
| 67 |
-
# Sort the aggregated data by count and average fastball speed
|
| 68 |
-
df_agg = df_agg.sort(['count', 'avg_fastball_speed'], descending=[True, True])
|
| 69 |
-
df_agg = df_agg.unique(subset=['pitcher_id', 'year'], keep='first')
|
| 70 |
-
|
| 71 |
-
# Join the aggregated data with the main DataFrame
|
| 72 |
-
df = df.join(df_agg, on=['pitcher_id', 'year'])
|
| 73 |
-
|
| 74 |
-
# If no fastball, use the fastest pitch for avg_fastball_speed
|
| 75 |
-
df = df.with_columns(
|
| 76 |
-
pl.when(pl.col('avg_fastball_speed').is_null())
|
| 77 |
-
.then(pl.col('start_speed').max().over('pitcher_id'))
|
| 78 |
-
.otherwise(pl.col('avg_fastball_speed'))
|
| 79 |
-
.alias('avg_fastball_speed')
|
| 80 |
-
)
|
| 81 |
-
|
| 82 |
-
# If no fastball, use the fastest pitch for avg_fastball_az
|
| 83 |
-
df = df.with_columns(
|
| 84 |
-
pl.when(pl.col('avg_fastball_az').is_null())
|
| 85 |
-
.then(pl.col('az').max().over('pitcher_id'))
|
| 86 |
-
.otherwise(pl.col('avg_fastball_az'))
|
| 87 |
-
.alias('avg_fastball_az')
|
| 88 |
-
)
|
| 89 |
-
|
| 90 |
-
# If no fastball, use the fastest pitch for avg_fastball_ax
|
| 91 |
-
df = df.with_columns(
|
| 92 |
-
pl.when(pl.col('avg_fastball_ax').is_null())
|
| 93 |
-
.then(pl.col('ax').max().over('ax'))
|
| 94 |
-
.otherwise(pl.col('avg_fastball_ax'))
|
| 95 |
-
.alias('avg_fastball_ax')
|
| 96 |
-
)
|
| 97 |
-
|
| 98 |
-
# Calculate pitch differentials
|
| 99 |
-
df = df.with_columns(
|
| 100 |
-
(pl.col('start_speed') - pl.col('avg_fastball_speed')).alias('speed_diff'),
|
| 101 |
-
(pl.col('az') - pl.col('avg_fastball_az')).alias('az_diff'),
|
| 102 |
-
(pl.col('ax') - pl.col('avg_fastball_ax')).abs().alias('ax_diff')
|
| 103 |
-
)
|
| 104 |
-
|
| 105 |
-
# Cast the year column to integer type
|
| 106 |
-
df = df.with_columns(
|
| 107 |
-
pl.col('year').cast(pl.Int64)
|
| 108 |
-
)
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
df = df.with_columns([
|
| 113 |
-
pl.lit('All').alias('all')
|
| 114 |
-
])
|
| 115 |
-
|
| 116 |
-
# Calculate mound_to_release as 60.5 - extension
|
| 117 |
-
df = df.with_columns([
|
| 118 |
-
(60.5 - df["extension"]).alias("release_pos_y")
|
| 119 |
-
])
|
| 120 |
-
|
| 121 |
-
# Calculate delta time (Δt)
|
| 122 |
-
delta_t = (df["release_pos_y"] - df["y0"]) / df["vy0"]
|
| 123 |
-
# print((df["vx0"] * delta_t + 0.5 * df["ax"] * delta_t ** 2))
|
| 124 |
-
# Corrected back-calculation of release_pos_x and release_pos_z
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
df = df.with_columns(
|
| 128 |
-
pl.when(pl.col('pitcher_hand')== 'R')
|
| 129 |
-
.then(df["x0"] - df["vx0"] * delta_t - 0.5 * df["ax"] * delta_t ** 2)
|
| 130 |
-
.otherwise(df["x0"] + df["vx0"] * delta_t
|
| 131 |
-
.alias('release_pos_x')
|
| 132 |
-
)
|
| 133 |
-
|
| 134 |
-
df = df.with_columns([
|
| 135 |
-
(df["z0"] + df["vz0"] * delta_t + 0.5 * df["az"] * delta_t ** 2).alias("release_pos_z")
|
| 136 |
-
])
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
return df
|
|
|
|
| 1 |
+
import polars as pl
|
| 2 |
+
import numpy as np
|
| 3 |
+
|
| 4 |
+
def feature_engineering(df: pl.DataFrame) -> pl.DataFrame:
|
| 5 |
+
# Extract the year from the game_date column
|
| 6 |
+
df = df.with_columns(
|
| 7 |
+
pl.col('game_date').str.slice(0, 4).alias('year')
|
| 8 |
+
)
|
| 9 |
+
|
| 10 |
+
df = df.with_columns([
|
| 11 |
+
|
| 12 |
+
(-(pl.col('vy0')**2 - (2 * pl.col('ay') * (pl.col('y0') - 17/12)))**0.5).alias('vy_f'),
|
| 13 |
+
])
|
| 14 |
+
|
| 15 |
+
df = df.with_columns([
|
| 16 |
+
((pl.col('vy_f') - pl.col('vy0')) / pl.col('ay')).alias('t'),
|
| 17 |
+
])
|
| 18 |
+
|
| 19 |
+
df = df.with_columns([
|
| 20 |
+
(pl.col('vz0') + (pl.col('az') * pl.col('t'))).alias('vz_f'),
|
| 21 |
+
(pl.col('vx0') + (pl.col('ax') * pl.col('t'))).alias('vx_f')
|
| 22 |
+
])
|
| 23 |
+
|
| 24 |
+
df = df.with_columns([
|
| 25 |
+
(-np.arctan(pl.col('vz_f') / pl.col('vy_f')) * (180 / np.pi)).alias('vaa'),
|
| 26 |
+
(-np.arctan(pl.col('vx_f') / pl.col('vy_f')) * (180 / np.pi)).alias('haa')
|
| 27 |
+
])
|
| 28 |
+
|
| 29 |
+
# Mirror horizontal break for left-handed pitchers
|
| 30 |
+
df = df.with_columns(
|
| 31 |
+
pl.when(pl.col('pitcher_hand') == 'L')
|
| 32 |
+
.then(-pl.col('ax'))
|
| 33 |
+
.otherwise(pl.col('ax'))
|
| 34 |
+
.alias('ax')
|
| 35 |
+
)
|
| 36 |
+
|
| 37 |
+
# Mirror horizontal break for left-handed pitchers
|
| 38 |
+
df = df.with_columns(
|
| 39 |
+
pl.when(pl.col('pitcher_hand') == 'L')
|
| 40 |
+
.then(-pl.col('hb'))
|
| 41 |
+
.otherwise(pl.col('hb'))
|
| 42 |
+
.alias('hb')
|
| 43 |
+
)
|
| 44 |
+
|
| 45 |
+
# Mirror horizontal release point for left-handed pitchers
|
| 46 |
+
df = df.with_columns(
|
| 47 |
+
pl.when(pl.col('pitcher_hand') == 'L')
|
| 48 |
+
.then(pl.col('x0'))
|
| 49 |
+
.otherwise(-pl.col('x0'))
|
| 50 |
+
.alias('x0')
|
| 51 |
+
)
|
| 52 |
+
|
| 53 |
+
# Define the pitch types to be considered
|
| 54 |
+
pitch_types = ['SI', 'FF', 'FC']
|
| 55 |
+
|
| 56 |
+
# Filter the DataFrame to include only the specified pitch types
|
| 57 |
+
df_filtered = df.filter(pl.col('pitch_type').is_in(pitch_types))
|
| 58 |
+
|
| 59 |
+
# Group by pitcher_id and year, then aggregate to calculate average speed and usage percentage
|
| 60 |
+
df_agg = df_filtered.group_by(['pitcher_id', 'year', 'pitch_type']).agg([
|
| 61 |
+
pl.col('start_speed').mean().alias('avg_fastball_speed'),
|
| 62 |
+
pl.col('az').mean().alias('avg_fastball_az'),
|
| 63 |
+
pl.col('ax').mean().alias('avg_fastball_ax'),
|
| 64 |
+
pl.len().alias('count')
|
| 65 |
+
])
|
| 66 |
+
|
| 67 |
+
# Sort the aggregated data by count and average fastball speed
|
| 68 |
+
df_agg = df_agg.sort(['count', 'avg_fastball_speed'], descending=[True, True])
|
| 69 |
+
df_agg = df_agg.unique(subset=['pitcher_id', 'year'], keep='first')
|
| 70 |
+
|
| 71 |
+
# Join the aggregated data with the main DataFrame
|
| 72 |
+
df = df.join(df_agg, on=['pitcher_id', 'year'])
|
| 73 |
+
|
| 74 |
+
# If no fastball, use the fastest pitch for avg_fastball_speed
|
| 75 |
+
df = df.with_columns(
|
| 76 |
+
pl.when(pl.col('avg_fastball_speed').is_null())
|
| 77 |
+
.then(pl.col('start_speed').max().over('pitcher_id'))
|
| 78 |
+
.otherwise(pl.col('avg_fastball_speed'))
|
| 79 |
+
.alias('avg_fastball_speed')
|
| 80 |
+
)
|
| 81 |
+
|
| 82 |
+
# If no fastball, use the fastest pitch for avg_fastball_az
|
| 83 |
+
df = df.with_columns(
|
| 84 |
+
pl.when(pl.col('avg_fastball_az').is_null())
|
| 85 |
+
.then(pl.col('az').max().over('pitcher_id'))
|
| 86 |
+
.otherwise(pl.col('avg_fastball_az'))
|
| 87 |
+
.alias('avg_fastball_az')
|
| 88 |
+
)
|
| 89 |
+
|
| 90 |
+
# If no fastball, use the fastest pitch for avg_fastball_ax
|
| 91 |
+
df = df.with_columns(
|
| 92 |
+
pl.when(pl.col('avg_fastball_ax').is_null())
|
| 93 |
+
.then(pl.col('ax').max().over('ax'))
|
| 94 |
+
.otherwise(pl.col('avg_fastball_ax'))
|
| 95 |
+
.alias('avg_fastball_ax')
|
| 96 |
+
)
|
| 97 |
+
|
| 98 |
+
# Calculate pitch differentials
|
| 99 |
+
df = df.with_columns(
|
| 100 |
+
(pl.col('start_speed') - pl.col('avg_fastball_speed')).alias('speed_diff'),
|
| 101 |
+
(pl.col('az') - pl.col('avg_fastball_az')).alias('az_diff'),
|
| 102 |
+
(pl.col('ax') - pl.col('avg_fastball_ax')).abs().alias('ax_diff')
|
| 103 |
+
)
|
| 104 |
+
|
| 105 |
+
# Cast the year column to integer type
|
| 106 |
+
df = df.with_columns(
|
| 107 |
+
pl.col('year').cast(pl.Int64)
|
| 108 |
+
)
|
| 109 |
+
|
| 110 |
+
|
| 111 |
+
|
| 112 |
+
df = df.with_columns([
|
| 113 |
+
pl.lit('All').alias('all')
|
| 114 |
+
])
|
| 115 |
+
|
| 116 |
+
# Calculate mound_to_release as 60.5 - extension
|
| 117 |
+
df = df.with_columns([
|
| 118 |
+
(60.5 - df["extension"]).alias("release_pos_y")
|
| 119 |
+
])
|
| 120 |
+
|
| 121 |
+
# Calculate delta time (Δt)
|
| 122 |
+
delta_t = (df["release_pos_y"] - df["y0"]) / df["vy0"]
|
| 123 |
+
# print((df["vx0"] * delta_t + 0.5 * df["ax"] * delta_t ** 2))
|
| 124 |
+
# Corrected back-calculation of release_pos_x and release_pos_z
|
| 125 |
+
|
| 126 |
+
|
| 127 |
+
df = df.with_columns(
|
| 128 |
+
pl.when(pl.col('pitcher_hand')== 'R')
|
| 129 |
+
.then(df["x0"] - df["vx0"] * delta_t - 0.5 * df["ax"] * delta_t ** 2)
|
| 130 |
+
.otherwise(df["x0"] + df["vx0"] * delta_t + 0.5 * df["ax"] * delta_t ** 2)
|
| 131 |
+
.alias('release_pos_x')
|
| 132 |
+
)
|
| 133 |
+
|
| 134 |
+
df = df.with_columns([
|
| 135 |
+
(df["z0"] + df["vz0"] * delta_t + 0.5 * df["az"] * delta_t ** 2).alias("release_pos_z")
|
| 136 |
+
])
|
| 137 |
+
|
| 138 |
+
|
| 139 |
+
|
| 140 |
return df
|
stuff_model/pitcher_arm_angles_2024.csv
ADDED
|
@@ -0,0 +1,285 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"pitcher","pitcher_name","pitch_hand","n_pitches","team_id","ball_angle","relative_release_ball_x","release_ball_z","relative_shoulder_x","shoulder_z"
|
| 2 |
+
663776,"Sandoval, Patrick","L",1442,108,"52.9",1.1443923693103126,6.057302358,-0.17503963715230125,4.313792056919843
|
| 3 |
+
672710,"Contreras, Roansy","R",1074,9999,"48.6",-1.1259998195250651,5.932337058,0.37329787656386415,4.234437701862529
|
| 4 |
+
543339,"Hudson, Daniel","R",980,119,"30.4",-2.263448653144934,5.503622449,-0.1941857984102729,4.288460335588779
|
| 5 |
+
650893,"Cabrera, Génesis","L",1030,141,"45.0",1.5394733943652752,5.925815534,-0.16798951802433248,4.217905889708049
|
| 6 |
+
664285,"Valdez, Framber","L",2526,117,"42.7",1.74519422684336,6.000645289,0.1558928916452495,4.532282610582554
|
| 7 |
+
489446,"Yates, Kirby","R",1025,140,"21.5",-2.2920950017325215,5.262741463,-0.35002454580235615,4.496734601278207
|
| 8 |
+
621383,"Banks, Tanner","L",1174,9999,"48.8",1.714208053035849,6.247052811,0.17068446578724417,4.481311275344894
|
| 9 |
+
656412,"Faedo, Alex","R",1007,116,"32.5",-2.3724476988645122,6.03367428,-0.3056385398467407,4.716390571525178
|
| 10 |
+
605130,"Barlow, Scott","R",1015,114,"28.4",-2.214323061795264,5.269990148,-0.14689085605402033,4.152144953504912
|
| 11 |
+
664747,"Díaz, Alexis","R",977,113,"10.0",-2.722673098433467,4.591514841,-0.5699764288985336,4.213885639950586
|
| 12 |
+
519326,"Strickland, Hunter","R",1157,108,"31.7",-2.301708015103437,5.880458081,-0.31566356195027706,4.653020648320615
|
| 13 |
+
641771,"Kuhl, Chad","R",980,145,"25.7",-2.331768445788542,5.286744898,-0.36573153397722746,4.338873728946121
|
| 14 |
+
680730,"Parker, Mitchell","L",2403,120,"52.0",1.4364986886722182,6.034481898,-0.03499019741366073,4.144509634310338
|
| 15 |
+
640462,"Puk, A.J.","L",1173,9999,"28.5",2.3190971725734237,5.551756181,0.08587987236590365,4.339213312985435
|
| 16 |
+
669854,"Blanco, Ronel","R",2649,117,"46.5",-1.4800588121656437,6.115534164,0.070721173832792,4.48458602136211
|
| 17 |
+
663559,"Falter, Bailey","L",2137,134,"56.0",0.8691145239582373,5.781478708,-0.3274440548789392,4.007466766845407
|
| 18 |
+
650644,"Civale, Aaron","R",2692,9999,"45.7",-1.3421083230851945,6.371500743,0.19698100018407985,4.790600549359959
|
| 19 |
+
663546,"Hjelle, Sean","R",1209,137,"28.1",-2.2232391563837064,6.42688172,0.048490647240172824,5.214660385492646
|
| 20 |
+
669022,"Gore, MacKenzie","L",2991,120,"47.2",1.5527495372897704,5.850668673,0.02610435757659193,4.203438725445501
|
| 21 |
+
687792,"Herz, DJ","L",1586,120,"37.2",1.8702606474185612,5.790296343,0.03271410705976759,4.392995163338749
|
| 22 |
+
681857,"Olson, Reese","R",1840,116,"38.5",-1.9633390844551182,6.020543478,-0.06357953712314962,4.505623485575059
|
| 23 |
+
694363,"Shuster, Jared","L",1290,145,"39.7",1.6596167465037226,5.553232558,-0.0002744903204410767,4.173069746438392
|
| 24 |
+
608334,"Fulmer, Carson","R",1469,108,"37.7",-2.045996826934498,5.659142274,-0.27422259901299484,4.28723766759009
|
| 25 |
+
671106,"Allen, Logan","L",1664,114,"44.6",1.33260852792692,5.376129808,-0.22884412461007142,3.8356412865397487
|
| 26 |
+
656550,"Holmes, Grant","R",1023,144,"40.0",-1.8970490700540585,5.943998045,-0.20386680527894083,4.522193906722911
|
| 27 |
+
668678,"Gallen, Zac","R",2506,109,"41.2",-1.492412602543747,5.859305666,0.10813196257680331,4.456933896829428
|
| 28 |
+
552640,"Kittredge, Andrew","R",1010,138,"39.2",-1.7372211490862814,5.770079208,-0.03156057676355873,4.378271410670478
|
| 29 |
+
663687,"Harris, Hogan","L",1213,133,"49.3",1.6158786686570186,5.887609233,0.09722832946114063,4.117371629392223
|
| 30 |
+
547973,"Chapman, Aroldis","L",1128,134,"52.5",1.3258410940034284,6.102748227,-0.1436272817347443,4.188267935218895
|
| 31 |
+
686563,"Cannon, Jonathan","R",2027,145,"25.1",-2.673735016307832,5.798815984,-0.5003058496394928,4.781583414677262
|
| 32 |
+
661403,"Clase, Emmanuel","R",983,114,"53.3",-1.254590071705738,6.051759919,0.1701257719012881,4.138711775676704
|
| 33 |
+
663978,"Paddack, Chris","R",1459,142,"45.9",-1.6276275989945883,6.174694997,0.07140337953986527,4.422423420370697
|
| 34 |
+
682610,"Muñoz, Roddery","R",1485,146,"37.7",-1.725879828910793,5.696713805,0.18445097883169193,4.216806210830823
|
| 35 |
+
657649,"Koenig, Jared","L",1017,158,"31.4",2.4561634301217965,5.878525074,0.48099452778697976,4.67601059282745
|
| 36 |
+
605288,"Houser, Adrian","R",1099,121,"40.5",-1.8987140841970263,5.874549591,-0.13430969816994542,4.367848275453781
|
| 37 |
+
543243,"Gray, Sonny","R",2483,138,"48.9",-1.186820582707179,5.513443415,0.20319720789425158,3.922408795711016
|
| 38 |
+
660853,"De Los Santos, Enyel","R",1116,9999,"24.8",-2.4590637711457184,5.451621864,-0.29312781291728157,4.448780313891598
|
| 39 |
+
596133,"Weaver, Luke","R",1362,147,"46.6",-1.3972290633010458,5.704427313,0.16288179985917742,4.055986939294483
|
| 40 |
+
650633,"King, Michael","R",2819,135,"29.3",-2.1450335861865732,5.498744236,-0.18806508075770562,4.400251933499384
|
| 41 |
+
664076,"Cleavinger, Garrett","L",1040,139,"35.0",2.0938403542104838,5.287298077,0.2420073922768407,3.991983443456052
|
| 42 |
+
657508,"Baumann, Mike","R",1066,9999,"48.7",-1.3804663682122662,6.096219512,0.13667325994187532,4.364813904997439
|
| 43 |
+
607481,"Bummer, Aaron","L",974,144,"7.3",2.626924781798182,5.131211499,0.30306837727437447,4.834755175288342
|
| 44 |
+
656557,"Houck, Tanner","R",2732,111,"22.1",-2.5273722653128736,5.603539531,-0.23545156111759227,4.670585774331036
|
| 45 |
+
596295,"Gomber, Austin","L",2542,115,"53.1",1.0217325748837662,6.530601888,-0.3957139499544893,4.643378077741351
|
| 46 |
+
592773,"Stanek, Ryne","R",977,9999,"45.6",-1.3805041722932,6.297430911,0.31637356480695933,4.565274209309664
|
| 47 |
+
669923,"Kirby, George","R",2967,136,"36.6",-1.7961652693752235,5.866788001,0.1481283429969714,4.420407643736484
|
| 48 |
+
680704,"Sandlin, Nick","R",1003,114,"11.8",-2.490515036023411,4.490189432,-0.47274894452116095,4.0685950920856016
|
| 49 |
+
681190,"Vásquez, Randy","R",1687,135,"36.7",-1.8452312919236804,5.946455246,0.03147377190785781,4.545042939718322
|
| 50 |
+
600917,"Leclerc, José","R",1204,140,"40.4",-1.5308313248757939,5.879393688,0.21652526175375025,4.389771065550953
|
| 51 |
+
677944,"Cecconi, Slade","R",1290,109,"37.3",-1.769911981246466,5.64627907,0.059029016982409574,4.2537874723983995
|
| 52 |
+
682243,"Miller, Bryce","R",2749,136,"43.0",-1.5842593208678222,5.567930156,0.16610178314720184,3.931086294092357
|
| 53 |
+
547179,"Lorenzen, Michael","R",2091,9999,"42.5",-1.6916731526971789,5.7847011,0.025535348931973085,4.207241914418032
|
| 54 |
+
622663,"Severino, Luis","R",2888,121,"41.1",-1.5554512666709055,5.910803324,0.0742207039948942,4.491105180728169
|
| 55 |
+
592836,"Walker, Taijuan","R",1355,143,"40.6",-1.9011491161973797,6.453365314,-0.10949153297682697,4.917818532338802
|
| 56 |
+
656288,"Canning, Griffin","R",2869,108,"45.2",-1.5130338159624626,5.900013942,0.04596217949076393,4.331306661814254
|
| 57 |
+
670950,"Richards, Trevor","R",1180,9999,"52.3",-1.1355378419609516,6.27959322,0.33174538377292356,4.384528123508256
|
| 58 |
+
681867,"Criswell, Cooper","R",1755,111,"12.4",-2.797251150315201,4.977219373,-0.3993439603678823,4.450454474711932
|
| 59 |
+
669461,"Liberatore, Matthew","L",1356,138,"45.2",1.603331989902913,6.441681416,-0.03552556604567272,4.789524688451407
|
| 60 |
+
658648,"Avila, Pedro","R",1419,9999,"45.0",-1.6812338141272143,5.781057082,-0.016615217465037115,4.111801814815239
|
| 61 |
+
693433,"Woo, Bryan","R",1715,136,"26.8",-2.2155939948002916,5.045364431,-0.262401298389485,4.056588193459201
|
| 62 |
+
605154,"Brebbia, John","R",994,9999,"40.7",-1.6253161384963786,5.874637827,0.05201702299357646,4.431563261386507
|
| 63 |
+
657746,"Ryan, Joe","R",2106,142,"25.6",-1.9662328413714925,4.771614435,0.07963416556210672,3.7881715277037182
|
| 64 |
+
664875,"Lawrence, Justin","R",1080,115,"-2.2",-3.259549013090106,4.357648148,-0.8318851390539375,4.4515316965405685
|
| 65 |
+
607192,"Glasnow, Tyler","R",1934,119,"57.8",-1.1237964225640695,6.054400207,0.1739812898742272,3.984910156095905
|
| 66 |
+
518876,"Kelly, Merrill","R",1142,109,"25.3",-2.237125414731012,5.484684764,-0.2453005412370329,4.540673060599818
|
| 67 |
+
684007,"Imanaga, Shota","L",2590,112,"39.6",1.8620924556216751,5.426718147,0.16718687836805488,4.027508508042043
|
| 68 |
+
656427,"Flaherty, Jack","R",2569,9999,"28.5",-1.9454571923441044,5.381514208,0.020469636222088524,4.313622697506052
|
| 69 |
+
607067,"Rea, Colin","R",2650,158,"34.5",-1.9164222712561934,5.576962264,-0.08772867638650654,4.319599294790293
|
| 70 |
+
671737,"Bradley, Taj","R",2294,139,"54.4",-1.298487122609478,6.105797733,0.01333809317338731,4.2752716189796915
|
| 71 |
+
665871,"Assad, Javier","R",2538,112,"54.8",-1.0466034696142876,6.000078802,0.22297430612620447,4.2008277051210285
|
| 72 |
+
506433,"Darvish, Yu","R",1189,135,"39.9",-1.7470111559752823,5.602607233,-0.15646071550112498,4.275107778072614
|
| 73 |
+
661563,"Gil, Luis","R",2664,147,"35.8",-2.0423615989939514,5.667837838,-0.06117254169276226,4.238033990641709
|
| 74 |
+
670970,"Morejon, Adrian","L",1053,135,"42.8",1.7560198025908749,5.811889839,0.1257744491166059,4.303193932961253
|
| 75 |
+
542881,"Anderson, Tyler","L",2913,108,"57.5",0.95180180764159,6.404263646,-0.23215594948087523,4.534649762176185
|
| 76 |
+
676710,"Crawford, Kutter","R",2822,111,"47.6",-1.5619419673766248,6.019964564,-0.07806651418508262,4.391882444025872
|
| 77 |
+
622491,"Castillo, Luis","R",2852,136,"15.3",-2.473328915976879,5.026399018,-0.16350473770790994,4.392772321765621
|
| 78 |
+
668881,"Greene, Hunter","R",2563,113,"32.0",-2.2741819552306226,5.971037846,-0.3170833260307283,4.7504010128018095
|
| 79 |
+
593576,"Neris, Héctor","R",1008,9999,"39.9",-1.8040204004016827,6.080426587,0.009674646146337316,4.561677304735028
|
| 80 |
+
621107,"Eflin, Zach","R",2447,9999,"27.2",-2.640400972678345,5.787331426,-0.44334020278022374,4.658509989969163
|
| 81 |
+
641302,"Alexander, Tyler","L",1668,139,"35.9",2.0843995684801238,5.638585132,0.18970622325668898,4.268755165439835
|
| 82 |
+
543037,"Cole, Gerrit","R",1534,147,"42.4",-1.795221336261276,5.986597132,-0.1485309828672492,4.481458357619447
|
| 83 |
+
621111,"Buehler, Walker","R",1336,119,"45.5",-1.5334914752059106,5.537769461,-0.07321128311558696,4.051138617350854
|
| 84 |
+
669373,"Skubal, Tarik","L",2741,116,"48.1",1.8776476453239535,6.163600876,0.17231184771941985,4.266464126738555
|
| 85 |
+
605135,"Bassitt, Chris","R",2959,141,"35.3",-2.0625863349555935,5.522419736,0.04098321426699654,4.032917895101137
|
| 86 |
+
657006,"Steele, Justin","L",2046,112,"45.7",1.6955910965256202,6.12487781,0.10514987611146825,4.489132182572656
|
| 87 |
+
663903,"Singer, Brady","R",2966,118,"27.8",-1.9701505505872088,5.262279164,-0.1463594480163177,4.299006867673195
|
| 88 |
+
668964,"Myers, Tobias","R",2151,158,"60.5",-0.8445685461695733,5.887168759,0.27299937893165777,3.9089800086350417
|
| 89 |
+
615698,"Quantrill, Cal","R",2545,115,"45.7",-1.5459790767581163,6.315347741,0.1581821504540374,4.568522694458745
|
| 90 |
+
657277,"Webb, Logan","R",3198,137,"22.1",-2.664236229954501,4.978202001,-0.514977356976676,4.103699446735312
|
| 91 |
+
669093,"Estrada, Jeremiah","R",977,135,"63.9",-0.6774426158304941,5.815649949,0.34159691532703185,3.7293622664418864
|
| 92 |
+
673513,"Matsui, Yuki","L",1029,135,"56.6",1.1437413090604613,5.968785228,-0.0012103495077684808,4.229526688337672
|
| 93 |
+
623167,"Flexen, Chris","R",2797,145,"70.1",-0.32153229258470356,6.842366822,0.4569256036038109,4.691820796760211
|
| 94 |
+
519242,"Sale, Chris","L",2813,144,"10.9",3.220037554211436,5.101283327,0.8792517942225213,4.6503050915883914
|
| 95 |
+
608331,"Fried, Max","L",2762,144,"48.4",1.4839332914968801,5.950351195,-0.09750065173393441,4.167907639649895
|
| 96 |
+
643511,"Rogers, Tyler","R",992,137,"-64.1",-2.69954250098942,1.099647177,-1.6707343370852739,3.21866756341283
|
| 97 |
+
679885,"Martinez, Justin","R",1176,109,"42.0",-1.8093757681284621,6.25130102,-0.06097415723865308,4.677376624816594
|
| 98 |
+
642547,"Peralta, Freddy","R",3066,158,"36.9",-2.172796899421919,5.279817352,-0.38902751629917226,3.9410911933598687
|
| 99 |
+
643410,"Leiter Jr., Mark","R",1008,9999,"50.3",-1.3895920347935513,5.802847222,0.015165158323430376,4.110382076012221
|
| 100 |
+
663485,"Sands, Cole","R",1154,142,"25.9",-2.346828611636853,5.750831889,-0.2304100323759566,4.721914213523757
|
| 101 |
+
676440,"Bibee, Tanner","R",2851,114,"51.0",-1.4410814686732119,6.177600842,-0.04281306790437225,4.4494183993357534
|
| 102 |
+
592791,"Taillon, Jameson","R",2483,112,"44.9",-1.577532290200118,6.136133709,0.06800485978450257,4.49131514318758
|
| 103 |
+
683769,"Gaddis, Hunter","R",1075,114,"34.2",-2.1084926308059138,6.154111628,-0.11468715881109326,4.796770656883471
|
| 104 |
+
445926,"Chavez, Jesse","R",1043,144,"21.6",-2.102754326809693,5.142003835,-0.16095765830432215,4.37360571033782
|
| 105 |
+
641540,"Dunning, Dane","R",1689,140,"38.2",-1.8942707644314136,5.41142688,-0.06612274384214105,3.968746011414954
|
| 106 |
+
570632,"Ureña, José","R",1758,140,"31.3",-2.228260857459457,5.668714448,-0.19095539839268025,4.428397145161716
|
| 107 |
+
676979,"Crochet, Garrett","L",2367,145,"37.6",1.9859444118600584,6.100397127,0.059108583147511794,4.617481752137045
|
| 108 |
+
592094,"Adam, Jason","R",1109,9999,"35.0",-2.054019192321219,6.140216411,-0.08328598703847472,4.760578074464477
|
| 109 |
+
592767,"Smyly, Drew","L",1015,112,"51.6",1.4344182351889798,6.630482759,-0.07906935978153012,4.720323113897596
|
| 110 |
+
548389,"Stripling, Ross","R",1357,133,"61.3",-1.05312809072389,6.863677229,0.0757114470160007,4.8002453522830715
|
| 111 |
+
678394,"Bello, Brayan","R",2709,111,"28.2",-2.2936397853996335,5.180073828,-0.25524866086439274,4.084940255101336
|
| 112 |
+
670102,"Francis, Bowden","R",1558,141,"40.2",-1.860114681123271,5.917188703,-0.09745535091151633,4.426798381534897
|
| 113 |
+
502624,"Anderson, Chase","R",1016,9999,"42.9",-1.6451803502189482,5.749212598,0.027916873429758446,4.1986923460812395
|
| 114 |
+
605452,"Ross, Joe","R",1197,158,"34.7",-1.999836891910833,5.689206349,-0.14489318088745334,4.404681786611516
|
| 115 |
+
642701,"Santana, Dennis","R",1106,9999,"32.3",-2.4010185760972966,5.741491863,-0.3426287560478735,4.440307997859681
|
| 116 |
+
621389,"Blach, Ty","L",1133,115,"20.9",2.3192544413560188,5.738358341,0.13436002048416254,4.901690177671003
|
| 117 |
+
571760,"Heaney, Andrew","L",2729,140,"29.5",2.3249950101168797,5.027753756,0.3514099486338391,3.9099913532540502
|
| 118 |
+
571670,"Floro, Dylan","R",1018,9999,"37.4",-2.1500307527466966,6.024390963,-0.3627336536811541,4.656118883273969
|
| 119 |
+
663567,"Lambert, Peter","R",1039,115,"53.7",-1.1604147387975718,6.097901829,0.1867814399729617,4.26426422036135
|
| 120 |
+
592866,"Williams, Trevor","R",1064,120,"16.8",-2.7544544334612278,4.98318609,-0.5090383604398696,4.302989583668403
|
| 121 |
+
594902,"Lively, Ben","R",2405,114,"37.7",-1.7416763682034175,5.224893971,-0.06751707309119073,3.9300239245703983
|
| 122 |
+
573124,"Rogers, Taylor","L",1060,137,"29.1",1.907909638805933,5.671754717,-0.16788201232637134,4.514249885817107
|
| 123 |
+
682847,"Ortiz, Luis L.","R",2143,134,"21.8",-2.2083496106858256,4.964638357,-0.08611329200156718,4.116028723789179
|
| 124 |
+
641927,"Ober, Bailey","R",2692,142,"35.0",-2.1973382258598293,5.985746657,-0.1650137036720672,4.560944401382055
|
| 125 |
+
683627,"Molina, Anthony","R",1042,115,"50.7",-1.2552328637125274,6.295316699,0.17527004098795332,4.5466221352910425
|
| 126 |
+
669713,"Wesneski, Hayden","R",1075,112,"49.6",-1.5217672216403837,5.933227907,0.012400272768726935,4.127370946233885
|
| 127 |
+
683155,"Estes, Joey","R",2027,133,"37.3",-1.7825559734712457,5.862654169,0.03257125679441618,4.479246618071371
|
| 128 |
+
680573,"Woods Richardson, Simeon","R",2295,142,"46.9",-1.2869274531712964,6.42020915,0.2950366494238813,4.733629990524233
|
| 129 |
+
622554,"Domínguez, Seranthony","R",1050,9999,"29.5",-2.0725608353855587,5.441904762,-0.09448619760631526,4.324531656395893
|
| 130 |
+
663623,"Irvin, Jake","R",3046,120,"28.5",-2.1689572141954647,5.724711097,-0.10945356377493992,4.603897474523142
|
| 131 |
+
434378,"Verlander, Justin","R",1580,117,"54.7",-1.2649702409476309,7.096683544,0.15464905046368377,5.087383938829837
|
| 132 |
+
608718,"Suter, Brent","L",1022,113,"55.6",1.114291703491014,6.29055773,-0.05780173081685979,4.575350392959183
|
| 133 |
+
689225,"Brieske, Beau","R",1145,116,"49.1",-1.3413182494944016,5.978034934,0.20894795452599454,4.188228531708034
|
| 134 |
+
641729,"Jiménez, Joe","R",1089,144,"31.4",-1.996595855618811,5.654710744,-0.03633453273620995,4.45809784312088
|
| 135 |
+
641793,"Littell, Zack","R",2467,139,"41.5",-1.9370185211283921,6.145889745,-0.2355123966843618,4.6382120798822415
|
| 136 |
+
684320,"Rodríguez, Yariel","R",1501,141,"39.8",-1.8796699363164069,5.794810127,-0.13280196416886667,4.339241032834909
|
| 137 |
+
623352,"Hader, Josh","L",1151,117,"34.0",2.109451622966337,5.70803649,0.1537040356289424,4.387063268552024
|
| 138 |
+
450203,"Morton, Charlie","R",2789,144,"20.8",-2.603150762323138,5.459802797,-0.26122756957080534,4.5689257680574755
|
| 139 |
+
493603,"Ottavino, Adam","R",997,121,"24.8",-2.7448973120471787,5.383219659,-0.5435088101201998,4.365634280113063
|
| 140 |
+
571948,"Milner, Hoby","L",1043,158,"-2.7",2.892088037009882,4.298926174,0.6544353676919216,4.403488625383044
|
| 141 |
+
643377,"Jax, Griffin","R",1066,142,"45.8",-1.380303012576681,5.500609756,0.21743911033968435,3.8567904753305062
|
| 142 |
+
686539,"Cronin, Declan","R",1074,146,"21.9",-2.44351402527686,5.27216946,-0.05533926265613746,4.31229988116459
|
| 143 |
+
676534,"Faucher, Calvin","R",987,146,"50.0",-1.5493588711437403,6.000577508,-0.08529302537262491,4.252645222292661
|
| 144 |
+
657044,"Thompson, Ryan","R",977,109,"-5.8",-3.364642491041433,3.794165814,-0.881876995221649,4.047886658748358
|
| 145 |
+
527048,"Pérez, Martín","L",2204,9999,"47.0",1.555468195732763,5.729319419,-0.01591995743438442,4.042135196660741
|
| 146 |
+
670280,"Bednar, David","R",1009,134,"40.8",-1.6814010821205483,5.897333994,-0.04265297642076924,4.480788854498459
|
| 147 |
+
624133,"Suárez, Ranger","L",2265,143,"41.8",1.7074498814543815,5.845532009,0.0005085696072528982,4.319290149803452
|
| 148 |
+
571578,"Corbin, Patrick","L",2888,120,"38.5",1.7949492310381978,6.250682133,-0.06345720635144018,4.770926001840558
|
| 149 |
+
666142,"Ragans, Cole","L",3118,118,"45.1",1.6507276514618041,6.335323926,-0.028577902901786995,4.648571388745016
|
| 150 |
+
672456,"Montero, Keider","R",1539,116,"43.1",-1.6209038147831607,5.834548408,0.017750412680873632,4.302410320612391
|
| 151 |
+
608379,"Wacha, Michael","R",2602,118,"51.5",-1.2611875324712418,6.520857033,0.16390851792327582,4.727319871112449
|
| 152 |
+
686730,"Spiers, Carson","R",1554,113,"30.2",-2.0396908324296676,5.318732304,-0.07962340392340395,4.18077275107422
|
| 153 |
+
640455,"Manaea, Sean","L",2909,121,"22.7",2.9287574626183006,5.436675834,0.7583734313082088,4.5272566668750045
|
| 154 |
+
608717,"Stratton, Chris","R",994,118,"35.1",-1.9525183981970033,5.854346076,0.02281348689283653,4.467459695965451
|
| 155 |
+
650556,"Abreu, Bryan","R",1270,117,"45.1",-1.6400657213600998,5.750322835,0.008255719398711515,4.089015636588215
|
| 156 |
+
543135,"Eovaldi, Nathan","R",2621,140,"32.6",-2.6056144678190556,5.507264403,-0.57545458622629,4.21015517539332
|
| 157 |
+
650911,"Sánchez, Cristopher","L",2796,143,"32.2",2.050893952705122,6.181698856,0.07531110307824528,4.937299007016648
|
| 158 |
+
701581,"Festa, David","R",1099,142,"56.4",-0.9512033536058627,6.154649682,0.3540488246485622,4.190241022871225
|
| 159 |
+
542888,"Armstrong, Shawn","R",1109,9999,"39.9",-1.9627118985369412,5.799603246,-0.185865349859921,4.313288856447578
|
| 160 |
+
573186,"Stroman, Marcus","R",2579,147,"32.5",-1.9202310426276124,5.226281504,-0.18844095156339535,4.121246778311593
|
| 161 |
+
666974,"Cano, Yennier","R",1008,110,"17.6",-2.8913293232672803,5.472083333,-0.47362847514005557,4.703143853450471
|
| 162 |
+
502085,"Robertson, David","R",1211,140,"44.7",-1.3893451659260567,5.821701073,0.05075309757113563,4.396749008936199
|
| 163 |
+
571656,"Farmer, Buck","R",1167,113,"29.7",-1.9366758614101762,5.693161954,0.12909357089723836,4.512314025022637
|
| 164 |
+
572020,"Paxton, James","L",1708,9999,"42.3",1.9248453831795227,6.051522248,0.1115418668883351,4.399527986679018
|
| 165 |
+
605280,"Holmes, Clay","R",1063,147,"49.2",-1.5000665255702261,6.575766698,0.13242143925559607,4.684355173364991
|
| 166 |
+
665795,"Cabrera, Edward","R",1734,146,"42.0",-1.6954773178697269,6.151972318,0.10661359827668085,4.528603850586053
|
| 167 |
+
686613,"Brown, Hunter","R",2888,117,"57.4",-0.9702870266338728,6.25699446,0.2146192269875716,4.398366899327732
|
| 168 |
+
666157,"Lodolo, Nick","L",1863,113,"18.5",2.930085846942243,5.519924852,0.5563698258994227,4.724156477151924
|
| 169 |
+
471911,"Carrasco, Carlos","R",1688,114,"35.8",-2.0050088437225027,5.896723934,-0.1365497419131375,4.551724024412653
|
| 170 |
+
664208,"Maton, Phil","R",1048,9999,"31.2",-2.1335546352379318,5.329675573,-0.212698189234056,4.164968452429545
|
| 171 |
+
667755,"Soriano, José","R",1736,108,"36.1",-2.1581442936076436,6.004665899,-0.24934576381872428,4.615176302962532
|
| 172 |
+
669432,"Rogers, Trevor","L",2243,9999,"22.7",2.468977066349182,5.706486848,0.2364509922730492,4.771702789029522
|
| 173 |
+
663947,"Holton, Tyler","L",1338,116,"43.2",1.7192384006938317,5.89009716,0.04131163854317371,4.314947225486202
|
| 174 |
+
687330,"Kelly, Kevin","R",1032,139,"3.0",-2.7095154995990725,3.715707364,-0.6287912040203676,3.6057412820061066
|
| 175 |
+
671922,"Smith, Cade","R",1166,114,"37.2",-1.8982844077956955,5.744914237,0.03033396119402074,4.278840376853999
|
| 176 |
+
647336,"Soroka, Michael","R",1442,145,"37.4",-2.0670947037653,6.095589459,-0.15588717047277875,4.631256250664431
|
| 177 |
+
502043,"Gibson, Kyle","R",2763,138,"45.1",-1.6622144149004505,6.247676439,0.0013884058700306993,4.579021336053259
|
| 178 |
+
677960,"Weathers, Ryan","L",1413,146,"35.6",1.9443078246001693,5.702724699,0.13241544147608228,4.405541130992705
|
| 179 |
+
676272,"Miller, Bobby","R",1053,119,"47.4",-1.2477083212670483,6.02951567,0.32421517462203747,4.318551870134223
|
| 180 |
+
621244,"Berríos, José","R",2907,141,"39.6",-2.1500712370168378,5.611795666,-0.3531916772287925,4.127703021227884
|
| 181 |
+
669060,"Wilson, Bryse","R",1642,158,"45.8",-1.7674747785831157,5.788879415,-0.14551856285865036,4.1211009572691815
|
| 182 |
+
668909,"Williams, Gavin","R",1361,114,"35.4",-2.0993518599185554,5.861763409,-0.21125753574557876,4.520651036710193
|
| 183 |
+
640448,"Finnegan, Kyle","R",1066,120,"50.3",-1.021797955220567,5.728245779,0.374476053131469,4.042453640978827
|
| 184 |
+
571882,"Law, Derek","R",1368,120,"51.2",-1.229722496161679,6.487843567,0.17753103636989098,4.74166512454265
|
| 185 |
+
669467,"Pallante, Andre","R",1880,138,"58.8",-1.3553052922705089,5.998718085,-0.22368324027193082,4.130519338093068
|
| 186 |
+
543859,"Tonkin, Michael","R",1402,9999,"13.2",-2.9512729321980045,5.194942939,-0.6195827679963185,4.6479821563796015
|
| 187 |
+
669302,"Gilbert, Logan","R",3036,136,"43.8",-1.4977128477976303,5.825405138,0.17979565226198288,4.211764179988675
|
| 188 |
+
592351,"Gray, Jon","R",1619,140,"32.4",-2.077590352065994,5.604848672,-0.13047884364481976,4.369111647338475
|
| 189 |
+
690986,"Harrison, Kyle","L",2078,137,"23.7",2.5294083950674238,4.840572666,0.42472318658761105,3.915027435282454
|
| 190 |
+
663855,"Hicks, Jordan","R",1958,137,"29.4",-2.319652760803334,5.615955056,-0.2930885606197164,4.474915976550338
|
| 191 |
+
669711,"Weissert, Greg","R",1028,111,"15.7",-2.7707199859551865,4.826809339,-0.5399130020738401,4.201374541015558
|
| 192 |
+
628317,"Maeda, Kenta","R",1958,116,"38.5",-1.9532311236786246,5.686149132,-0.18669332889066106,4.281775642230141
|
| 193 |
+
656464,"Ginkel, Kevin","R",1184,109,"40.3",-1.770292021859609,6.428353041,0.05065392789179553,4.8862614758726055
|
| 194 |
+
808967,"Yamamoto, Yoshinobu","R",1421,119,"46.1",-1.3543471716474054,5.515559465,0.03593674360026142,4.074549087973747
|
| 195 |
+
689147,"Kerkering, Orion","R",1063,143,"31.2",-2.2154343792579896,5.651721543,-0.21379688040272135,4.4423816397610105
|
| 196 |
+
656629,"Kopech, Michael","R",1141,9999,"44.8",-1.5907048719841157,5.717537248,-0.08144733518616584,4.219771227665629
|
| 197 |
+
676130,"Buttó, José","R",1222,121,"33.1",-2.1642543651469293,5.287790507,-0.14297427750597344,3.970941175814167
|
| 198 |
+
663474,"McKenzie, Triston","R",1299,114,"53.9",-1.0465318044701233,6.47308699,0.2863444106188917,4.643205124125366
|
| 199 |
+
608723,"Voth, Austin","R",974,136,"37.4",-1.7965253295734862,5.685985626,-0.04748363063537904,4.350308466748658
|
| 200 |
+
681676,"Fernandez, Ryan","R",1190,138,"52.6",-1.1512344728632113,5.781991597,0.24951944202279858,3.9454725164397257
|
| 201 |
+
601713,"Pivetta, Nick","R",2386,111,"56.4",-0.9674159910097777,6.813575021,0.3173364988203618,4.877866862214669
|
| 202 |
+
669194,"Nelson, Ryne","R",2406,109,"47.6",-1.3013737489520352,6.072323358,0.20760487795662344,4.418825069975092
|
| 203 |
+
571945,"Mikolas, Miles","R",2703,138,"43.3",-1.9708407148210172,6.42627081,-0.146000390996206,4.703901034138474
|
| 204 |
+
700249,"Povich, Cade","L",1381,110,"40.8",1.7929954178565317,5.811354091,0.008872285834879017,4.271760473242024
|
| 205 |
+
625643,"López, Reynaldo","R",2106,144,"41.9",-1.6624272906029005,5.831087369,-0.1138683400114774,4.441682113492896
|
| 206 |
+
607625,"Lugo, Seth","R",3112,118,"32.6",-2.202980982680942,5.485899743,-0.16934105498123525,4.182185503645256
|
| 207 |
+
676684,"Vest, Will","R",1143,116,"46.2",-1.5107271951801264,5.549256343,-0.0032502969325804093,3.977396642665657
|
| 208 |
+
579328,"Kikuchi, Yusei","L",2923,9999,"41.9",1.6505279990389494,5.426712282,0.04728330729362001,3.990787510176529
|
| 209 |
+
663554,"Mize, Casey","R",1788,116,"43.3",-1.6622942337749882,5.647869128,-0.07558678324899218,4.1527199200851825
|
| 210 |
+
607259,"Martinez, Nick","R",2122,113,"58.6",-0.8373672959795043,6.241573987,0.33658885527392357,4.316381573398785
|
| 211 |
+
663372,"Feltner, Ryan","R",2577,115,"42.0",-1.7236567941658807,5.536550252,-0.04595534216367607,4.025761687200015
|
| 212 |
+
686752,"Pepiot, Ryan","R",2148,139,"41.8",-1.6844739431351574,5.964283054,-0.032050986284136086,4.48771475567373
|
| 213 |
+
656222,"Beeks, Jalen","L",1157,9999,"49.5",1.7218073496372888,5.985280899,0.2039476869462329,4.20923450545929
|
| 214 |
+
683232,"Mears, Nick","R",1011,9999,"60.8",-0.6235561307854051,6.16520277,0.46931632294316844,4.209868329480881
|
| 215 |
+
666808,"Doval, Camilo","R",1116,137,"19.3",-2.20244030655531,5.472858423,-0.0142731126891943,4.7054131428932005
|
| 216 |
+
641712,"Hudson, Dakota","R",1508,115,"35.8",-1.946196048960028,6.124781167,0.005813847359537017,4.713632903835516
|
| 217 |
+
458681,"Lynn, Lance","R",2038,138,"31.9",-2.5766369100560116,5.578954858,-0.549158559823251,4.313939074474467
|
| 218 |
+
806185,"Birdsong, Hayden","R",1388,137,"41.5",-1.5906631766995039,6.343832853,0.17110463939702159,4.787208131899602
|
| 219 |
+
676254,"Walker, Ryan","R",1205,137,"17.1",-2.8554150330599875,5.180605809,-0.5597335510832019,4.474050149924927
|
| 220 |
+
656849,"Peterson, David","L",1871,121,"40.9",1.7605148115858427,6.129834313,-0.11821820820840838,4.502925692076552
|
| 221 |
+
680767,"Vodnik, Victor","R",1312,115,"42.5",-1.508661656118361,5.276036585,0.16746991170220865,3.7333882280933426
|
| 222 |
+
642232,"Yarbrough, Ryan","L",1476,9999,"13.5",3.187573510978042,5.017391599,0.9129248450550457,4.472438969078638
|
| 223 |
+
678368,"Bellozo, Valente","R",1094,146,"45.6",-1.459537712055548,6.106480804,0.06730277718034194,4.549337343376772
|
| 224 |
+
607074,"Rodón, Carlos","L",3102,147,"45.4",1.695468761020262,6.325892972,-0.016885460820515983,4.589699503511626
|
| 225 |
+
656731,"Megill, Tylor","R",1365,121,"36.8",-2.022162902236749,5.788322344,-0.1649961354331943,4.4001010782028445
|
| 226 |
+
689017,"Knack, Landon","R",1149,119,"53.0",-1.150137732800803,5.796927763,0.2035784787670906,3.998586262952049
|
| 227 |
+
607200,"Fedde, Erick","R",2891,9999,"37.2",-1.7711946611825544,5.82611899,0.11966506383755347,4.38812970041637
|
| 228 |
+
656546,"Hoffman, Jeff","R",990,143,"39.6",-1.8244440009601155,6.038555556,0.090339777003547,4.452051756333391
|
| 229 |
+
680570,"Rodriguez, Grayson","R",1869,110,"37.6",-1.8171576882126401,5.593017657,0.05545227375253813,4.148739274436355
|
| 230 |
+
683003,"Jones, Jared","R",1823,134,"44.6",-1.6016992556721459,5.544443225,-0.05199715161684281,4.01673158253178
|
| 231 |
+
554430,"Wheeler, Zack","R",3134,143,"24.7",-2.6740014675524764,5.228321634,-0.41501362931086516,4.190937892950315
|
| 232 |
+
592332,"Gausman, Kevin","R",2864,141,"36.1",-2.077901528296468,5.678823324,-0.14227836863541748,4.264443529922126
|
| 233 |
+
656756,"Montgomery, Jordan","L",1929,109,"45.6",1.6284171017978546,6.603639191,-0.08761701471766417,4.853465583656521
|
| 234 |
+
681911,"Vesia, Alex","L",1090,119,"61.3",0.7824376343029465,5.897899083,-0.3375379762547221,3.8506953260069694
|
| 235 |
+
663878,"Pearson, Nate","R",1058,9999,"40.3",-1.7340879779916964,5.493969754,0.09603073358403337,3.941480155861965
|
| 236 |
+
605483,"Snell, Blake","L",1773,137,"57.1",1.1071542499099822,6.638742245,-0.18897046703724812,4.636251638360313
|
| 237 |
+
680885,"Schwellenbach, Spencer","R",1887,144,"33.2",-2.2589370031130764,5.439798622,-0.5218472213484319,4.301821779895652
|
| 238 |
+
663423,"Thornton, Trent","R",1139,136,"35.0",-1.9588525719222694,5.18428446,-0.16624286142424108,3.9297969787739526
|
| 239 |
+
694297,"Pfaadt, Brandon","R",2790,109,"27.7",-2.4093714655386176,5.508007168,-0.37243589337396765,4.436423559184503
|
| 240 |
+
686826,"Jarvis, Bryce","R",1006,109,"35.8",-1.7970159757579187,5.648449304,-0.07428721503421541,4.402919838455896
|
| 241 |
+
544150,"Suárez, Albert","R",2233,110,"40.0",-1.7782574205615906,6.231957009,0.02347251836613811,4.719309859002015
|
| 242 |
+
500779,"Quintana, Jose","L",2749,121,"44.8",1.8301294520697202,5.781531466,0.23004516307663947,4.193622152505312
|
| 243 |
+
694973,"Skenes, Paul","R",2125,134,"23.3",-2.7569570580160905,5.664536471,-0.5522816388801509,4.7149253314040065
|
| 244 |
+
681293,"Arrighetti, Spencer","R",2505,117,"24.6",-2.2408396621029736,5.059361277,-0.183815285471837,4.116487344419894
|
| 245 |
+
621112,"Blackburn, Paul","R",1212,9999,"49.6",-1.502339439797867,6.042541254,0.005599708720872079,4.270532995946655
|
| 246 |
+
656945,"Scott, Tanner","L",1163,9999,"35.2",2.247539927534111,5.231642304,0.4436093735391444,3.9574394188457855
|
| 247 |
+
679525,"Marsh, Alec","R",2160,118,"32.3",-2.2605620849377934,5.658069444,-0.3067316554433222,4.4212335382831585
|
| 248 |
+
666214,"Wentz, Joey","L",1224,9999,"49.7",1.2627591531307136,6.352058824,-0.34871516607831504,4.452086176863793
|
| 249 |
+
606930,"Barnes, Jacob","R",1117,120,"43.1",-1.5237218940782336,5.698549687,0.21547261971444404,4.0696304456966255
|
| 250 |
+
666200,"Luzardo, Jesús","L",1083,146,"39.3",1.8947455220130873,5.975401662,0.0903972053926917,4.497080952427986
|
| 251 |
+
669211,"Akin, Keegan","L",1216,110,"42.4",1.7223487824887334,5.913478618,0.04394475326015576,4.377588611589973
|
| 252 |
+
641755,"Kinley, Tyler","R",1160,115,"45.0",-1.4902609041451407,6.45212931,0.13009408606859682,4.832219467622468
|
| 253 |
+
669203,"Burnes, Corbin","R",2994,110,"43.7",-1.576956648286833,5.967802271,0.06756166736324702,4.395320908513406
|
| 254 |
+
668933,"Ashcraft, Graham","R",1342,113,"49.0",-1.4540917994928408,6.296587183,0.11187623462201571,4.494224667601764
|
| 255 |
+
656302,"Cease, Dylan","R",3188,135,"53.4",-1.292627210020075,6.100291719,0.02094834375006984,4.3277111857187265
|
| 256 |
+
669358,"Baz, Shane","R",1206,139,"38.3",-1.7311867199624307,5.800787728,0.053425619230053,4.388375122678351
|
| 257 |
+
671096,"Abbott, Andrew","L",2333,113,"45.0",1.647072837067813,5.862678954,0.10519578209415706,4.319956515522084
|
| 258 |
+
663362,"Waldron, Matt","R",2448,135,"28.6",-2.4117433917979993,5.479093137,-0.4611482586825583,4.4156996644647
|
| 259 |
+
665152,"Kremer, Dean","R",2171,110,"41.0",-1.7797091577545752,6.04015661,-0.052828772730146384,4.537115732500446
|
| 260 |
+
608344,"Irvin, Cole","L",1767,9999,"40.0",2.0097597653100228,6.094272779,0.23581559487817333,4.605764152964776
|
| 261 |
+
518585,"Cruz, Fernando","R",1138,113,"45.4",-1.6678581342655572,6.028646749,-0.10075219863788301,4.437668922320484
|
| 262 |
+
605400,"Nola, Aaron","R",3189,143,"20.1",-2.4011946140621263,5.024550016,-0.24431070963634435,4.236191173983201
|
| 263 |
+
657376,"Schmidt, Clarke","R",1454,147,"35.1",-1.9219600941680635,5.640742779,0.012585028086512823,4.280150257939866
|
| 264 |
+
676664,"Sears, JP","L",2856,133,"21.4",2.3110987940334904,4.639856443,0.2886569901935819,3.8479927047601565
|
| 265 |
+
695243,"Miller, Mason","R",1024,133,"34.0",-2.16228081441607,6.05671875,-0.14260596033868098,4.696207808148116
|
| 266 |
+
660761,"Suarez, José","L",987,108,"40.2",1.8095025449487545,5.597760892,0.16150701517228408,4.201810220477619
|
| 267 |
+
674370,"Bido, Osvaldo","R",1055,133,"33.9",-2.085203316989408,5.847554502,-0.08690994956534963,4.505703603669822
|
| 268 |
+
694813,"Stone, Gavin","R",2152,119,"47.0",-1.2617736518529612,5.611933086,0.2622877372290585,3.9767142615334405
|
| 269 |
+
607536,"Freeland, Kyle","L",1769,115,"27.3",2.165502115003914,5.723629169,0.13370775854511577,4.67591056560349
|
| 270 |
+
621237,"Alvarado, José","L",1017,143,"65.1",0.5206819358590478,6.65460177,-0.5324393113855895,4.3747386509551465
|
| 271 |
+
605397,"Musgrove, Joe","R",1522,135,"35.5",-2.299058103963369,6.355236531,-0.22482447601546898,4.8764739021388035
|
| 272 |
+
641482,"Cortes, Nestor","L",2849,147,"47.1",1.6822741184557912,5.71963145,0.2844120817011192,4.215708523771347
|
| 273 |
+
656605,"Keller, Mitch","R",2848,134,"34.7",-1.9514175314775688,5.753110955,-0.16204622598464824,4.512348614282276
|
| 274 |
+
543294,"Hendricks, Kyle","R",2134,112,"43.0",-1.8336664558747002,5.987469541,-0.045843810841197666,4.321524930377707
|
| 275 |
+
641154,"López, Pablo","R",2985,142,"38.3",-2.1003531825457413,5.583159129,-0.21565295500079107,4.093698536682223
|
| 276 |
+
672282,"Detmers, Reid","L",1557,108,"45.4",1.4723519362551278,6.140706487,-0.11360945125057667,4.5319578683812
|
| 277 |
+
674003,"Bradford, Cody","L",1175,140,"56.6",1.058774611957563,6.224374468,-0.27013268942238383,4.206505137027347
|
| 278 |
+
657612,"Hill, Tim","L",982,9999,"-19.6",3.10225969380416,3.142362525,0.8772059571393823,3.934527787247094
|
| 279 |
+
682120,"Herrin, Tim","L",990,114,"30.9",2.3761960638626016,5.720121212,0.37042885305821155,4.517394167701975
|
| 280 |
+
676106,"Hancock, Emerson","R",1013,136,"27.5",-2.0990577833138824,5.568716683,-0.06295074512619374,4.511082102190247
|
| 281 |
+
687765,"Spence, Mitch","R",2480,133,"47.4",-1.6672343903423554,6.205987903,-0.09307258405928355,4.494800895362534
|
| 282 |
+
670174,"Winckowski, Josh","R",1240,111,"51.0",-1.1569769240218712,6.031991935,0.2679147856649995,4.270517621327124
|
| 283 |
+
605463,"Scott, Tayler","R",1178,117,"13.2",-2.783731494946471,4.77655348,-0.5824923124937569,4.259493113573567
|
| 284 |
+
593423,"Montas, Frankie","R",2632,9999,"42.7",-1.6702669268424926,5.940531915,0.033713203937280854,4.371810502948759
|
| 285 |
+
669062,"Miller, Erik","L",1269,137,"37.1",1.95344870808306,6.389078014,-0.006170083676424944,4.91173663537053
|