You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Data-Science-For-Beginners/1-Introduction/04-stats-and-probability/Challenge3.ipynb

494 lines
28 KiB

{
"cells": [
{
"cell_type": "markdown",
"id": "7025a798-cfa4-4199-9904-ff24b1000bbc",
"metadata": {},
"source": [
"# H1 = Shortstops are taller than second basemen"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "e6358a4a-b786-4533-ba8c-8d0d151615c9",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Adam_Donachie</th>\n",
" <th>BAL</th>\n",
" <th>Catcher</th>\n",
" <th>74</th>\n",
" <th>180</th>\n",
" <th>22.99</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Paul_Bako</td>\n",
" <td>BAL</td>\n",
" <td>Catcher</td>\n",
" <td>74</td>\n",
" <td>215.0</td>\n",
" <td>34.69</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Ramon_Hernandez</td>\n",
" <td>BAL</td>\n",
" <td>Catcher</td>\n",
" <td>72</td>\n",
" <td>210.0</td>\n",
" <td>30.78</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Kevin_Millar</td>\n",
" <td>BAL</td>\n",
" <td>First_Baseman</td>\n",
" <td>72</td>\n",
" <td>210.0</td>\n",
" <td>35.43</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Chris_Gomez</td>\n",
" <td>BAL</td>\n",
" <td>First_Baseman</td>\n",
" <td>73</td>\n",
" <td>188.0</td>\n",
" <td>35.71</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Brian_Roberts</td>\n",
" <td>BAL</td>\n",
" <td>Second_Baseman</td>\n",
" <td>69</td>\n",
" <td>176.0</td>\n",
" <td>29.39</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Adam_Donachie BAL Catcher 74 180 22.99\n",
"0 Paul_Bako BAL Catcher 74 215.0 34.69\n",
"1 Ramon_Hernandez BAL Catcher 72 210.0 30.78\n",
"2 Kevin_Millar BAL First_Baseman 72 210.0 35.43\n",
"3 Chris_Gomez BAL First_Baseman 73 188.0 35.71\n",
"4 Brian_Roberts BAL Second_Baseman 69 176.0 29.39"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"df = pd.read_table('../../data/SOCR_MLB.tsv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "8b6cd627-8cba-440e-9258-0d4b31631a01",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Team</th>\n",
" <th>Role</th>\n",
" <th>Weight</th>\n",
" <th>Height</th>\n",
" <th>Age</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Paul_Bako</td>\n",
" <td>BAL</td>\n",
" <td>Catcher</td>\n",
" <td>74</td>\n",
" <td>215.0</td>\n",
" <td>34.69</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Ramon_Hernandez</td>\n",
" <td>BAL</td>\n",
" <td>Catcher</td>\n",
" <td>72</td>\n",
" <td>210.0</td>\n",
" <td>30.78</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Kevin_Millar</td>\n",
" <td>BAL</td>\n",
" <td>First_Baseman</td>\n",
" <td>72</td>\n",
" <td>210.0</td>\n",
" <td>35.43</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Chris_Gomez</td>\n",
" <td>BAL</td>\n",
" <td>First_Baseman</td>\n",
" <td>73</td>\n",
" <td>188.0</td>\n",
" <td>35.71</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Brian_Roberts</td>\n",
" <td>BAL</td>\n",
" <td>Second_Baseman</td>\n",
" <td>69</td>\n",
" <td>176.0</td>\n",
" <td>29.39</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Team Role Weight Height Age\n",
"0 Paul_Bako BAL Catcher 74 215.0 34.69\n",
"1 Ramon_Hernandez BAL Catcher 72 210.0 30.78\n",
"2 Kevin_Millar BAL First_Baseman 72 210.0 35.43\n",
"3 Chris_Gomez BAL First_Baseman 73 188.0 35.71\n",
"4 Brian_Roberts BAL Second_Baseman 69 176.0 29.39"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.columns = ['Name', 'Team', 'Role', 'Weight', 'Height', 'Age']\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "d8f344e6-2e5e-42fb-aa7e-d86070df65fa",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Mean_Height</th>\n",
" <th>Count</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Role</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Catcher</th>\n",
" <td>204.653333</td>\n",
" <td>75</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Designated_Hitter</th>\n",
" <td>220.888889</td>\n",
" <td>18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>First_Baseman</th>\n",
" <td>213.109091</td>\n",
" <td>55</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Outfielder</th>\n",
" <td>199.113402</td>\n",
" <td>194</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Relief_Pitcher</th>\n",
" <td>203.517460</td>\n",
" <td>315</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Second_Baseman</th>\n",
" <td>184.344828</td>\n",
" <td>58</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Shortstop</th>\n",
" <td>182.923077</td>\n",
" <td>52</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Starting_Pitcher</th>\n",
" <td>205.163636</td>\n",
" <td>221</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Third_Baseman</th>\n",
" <td>200.955556</td>\n",
" <td>45</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Mean_Height Count\n",
"Role \n",
"Catcher 204.653333 75\n",
"Designated_Hitter 220.888889 18\n",
"First_Baseman 213.109091 55\n",
"Outfielder 199.113402 194\n",
"Relief_Pitcher 203.517460 315\n",
"Second_Baseman 184.344828 58\n",
"Shortstop 182.923077 52\n",
"Starting_Pitcher 205.163636 221\n",
"Third_Baseman 200.955556 45"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby('Role').agg(\n",
" Mean_Height=('Height', 'mean'),\n",
" Count=('Age', 'count')\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "a595d050-a4bf-42e7-9f15-3c4f805c6429",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import scipy.stats"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "ad03e6f2-6588-4404-9582-f0f1f9410900",
"metadata": {},
"outputs": [],
"source": [
"def mean_confidence_interval(data, confidence=0.95):\n",
" a = 1.0 * data\n",
" n = len(a)\n",
" m, se = np.mean(a), scipy.stats.sem(a)\n",
" h = se * scipy.stats.t.ppf((1+confidence)/2, n-1)\n",
" return m, h"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "286aea04-e2f0-4917-a70f-0da790bad06e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"p: 0.85, Shortstop's Height: 179.98..185.86, 2nd Basemen's Height: 182.24..186.45\n",
"p: 0.90, Shortstop's Height: 179.55..186.29, 2nd Basemen's Height: 181.93..186.76\n",
"p: 0.95, Shortstop's Height: 178.89..186.96, 2nd Basemen's Height: 181.45..187.24\n"
]
}
],
"source": [
"for p in [0.85, 0.9, 0.95]:\n",
" m1, h1 = mean_confidence_interval(df.loc[df['Role'] == 'Shortstop', ['Height']], p)\n",
" m2, h2 = mean_confidence_interval(df.loc[df['Role'] == 'Second_Baseman', ['Height']], p)\n",
" print(f\"p: {p:.2f}, Shortstop's Height: {m1-h1[0]:.2f}..{m1+h1[0]:.2f}, 2nd Basemen's Height: {m2-h2[0]:.2f}..{m2+h2[0]:.2f}\")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "1e9d1d65-8f13-4d10-8946-5c9f50d18db7",
"metadata": {},
"outputs": [],
"source": [
"from scipy.stats import ttest_ind"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "0947a024-f90c-4bda-a46f-63661aab5183",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"t-value: -0.57, p-value: 0.57\n"
]
}
],
"source": [
"tval, pval = ttest_ind(df.loc[df['Role'] == 'Shortstop', ['Height']], df.loc[df['Role'] == 'Second_Baseman', ['Height']], equal_var=False)\n",
"print(f\"t-value: {tval[0]:.2f}, p-value: {pval[0]:.2f}\")"
]
},
{
"cell_type": "markdown",
"id": "99c6dd12-fa71-4bd8-8986-a2de7bc1658c",
"metadata": {},
"source": [
"> Since t-value is -ve, it suggests that shortstops are actually shorter than second basemen."
]
},
{
"cell_type": "markdown",
"id": "f8e7bbfe-cabe-4f07-ba42-e7fc292235df",
"metadata": {},
"source": [
"> and, Since p-value is above threshold (0.05), therefore, we accept H1"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "d1bb519f-73db-460c-8af8-0dbfeaab66f7",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "a42b9862-2a6f-40de-a6af-295d100d49c3",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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Athpp52WzjzzzLTJJpukq666arHlBw4cmL7zne+kSy+9tNr2CIX9+vVLu+22W7rkkkvS9ttvnwYNGpRKpVJtqgMAQF177Fq3bl30ssV9uP/++4uAtscee6Qdd9yxWtkbb7wxffDBB2nfffddaD9XX311GjVqVHrttdeKcPj666+nnXfeOe25557pqKOOqk2VAACoS4/dD3/4w0qoC4cffnhq0qRJGjNmTLVyEf7OPffcNHz48LTaaqsttJ/Y3r9//yLUhW222Sb17t073X777bWpDgAA9bV44rnnnkuzZ89OXbt2rWz76quv0hFHHJEuv/zy1KFDh4VeM3fu3CL4bbfddtW2x3Bs9OAtzqxZs4o5e1VvAADUQ7D7/PPP03HHHZcOPPDAYii2LObfxaKKAQMGLPJ1X3zxRZo3b15aZ511qm1fb731in0uztChQ4vewvKtffv2da06AECW6hTsIpz16dMnrbnmmunOO++sbH/22WfTLbfcUgyrPvjgg8Xt448/Th9++GHx94wZM4qh2xB/L7jPpk2bLvY9hwwZkqZOnVq5TZ48uS5VBwDIVq0vdxIBLHrpYsj1kUceSWuvvXbluZhPF89FiCuLABbbb7311mIV7Prrr5822GCDhYJZPN50000X+74R+r4u+AEArOpqFey+/PLLoqcu7iPULXgNu29961vVQl04+OCDU7NmzdJ9991X2Rbh73e/+10666yzUuPGjYv5cw899FD63ve+t7SfBwBglVWrYHfIIYekl19+OV1zzTXpySefrGzv0qVLcaupc845p7hgcVzj7qCDDkp33XVXatSoURo8eHDtag8AQN2CXSxwiOvSjRw5str2WAW7uGC36667pjXWWKPats022yyNHj06/eIXv0gPP/xwcQ27uARKmzZtalMdAACqaFRaSX/uIS53EqtjYyFFq1atlnd1AOBrxTVfu3fvXnRsdOvWzdGiQTLPUl3HDgCAFYdgBwCQCcEOACATgh0AQCYEOwCATAh2AACZEOwAADIh2AEAZEKwAwDIhGAHAJAJwQ4AIBOCHQBAJgQ7AIBMCHYAAJkQ7AAAMiHYAQBkQrADAMiEYAcAkAnBDgAgE4IdAEAmBDsAgEwIdgAAmRDsAAAyIdgBAGRCsAMAyIRgBwCQCcEOACATgh0AQCYEOwCATAh2AACZEOwAADIh2AEAZEKw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0WsX28suvvjiIside+65aYcddih6+L75zW+m//7v/166TwMAsAqrVbBbffXVl1gmQtzTTz+dPvnkk+Lxe++9l8aMGZP233//Spknnngi9e7du9rrogdv1KhRtakOAABVLDmp1VIMw06bNi1ttNFGqU2bNunTTz8thmcHDhxYPD99+vQ0derU9I1vfKPa6+LxBx98sNj9zpo1q7iVxXuwavjGWo1S88/Hp/Thir3WJ+oYdQVWHTNmzEjjxo2rUdmxY8dWu1+SGPVq0aLFUtWPVU+9B7trr702DR8+PI0YMSJts8026bnnnkunnXZa2nTTTVP//v2LxRWL6v1bY4010rx58xa736FDh6YLLrigvqvLSmBQ9yap65ODUnoyrdC6/r+6AquOCHXdu3ev1WsGDBhQo3KjR49O3bp1q2PNWFXVe7A777zz0plnnlmEuLDlllum1157rdge21q2bJmaNm1a9ORVNWXKlNS2bdvF7nfIkCFp8ODB1Xrs2rdvX9/VZwX069GzU/9zb01du3RJK7Kx48alX//3kemQ5V0RYJmJXrUIYDUxc+bMNHHixOKqEs2bN6/RvmG5BrvojYvh0rXXXrva9tatWxf/Q4fGjRsXZzfPPvtsOvnkkytlYl7eTjvttNh9RxiMG6uej74opZlrd05pw+3TimzmR/OLugKrjhgqrU2vWo8ePRq0PlCvk5YitO27777phhtuSB9++GGx7Z133km33HJLcc26sgh0DzzwQHryyf87tva73/0uPfXUU+mkk07yXwQAYFkEu2eeeaboQo5bOP3004u/Y+i17KabbiquSxdz6jbYYIO01VZbpZ49e6YrrriiUuaoo44qhlb79OlT9OYdd9xx6brrritCIQAAy2AoNoZQF3VJkpg3V3V1a/TAzZ07t5hHF/PmoidvQeecc0766U9/WilTk0upAACweLVKU82aNav01i1JBLXosfs6TZo0Se3atatNFQAAWIwV+8JgAADUmGAHAJAJwQ4AIBOCHQBAJgQ7AIBMCHYAAJkQ7AAAMiHYAQBkQrADAMiEYAcAkAnBDgAgE4IdAEAmBDsAgEwIdgAAmVh9eVcAvs6MGTOK+zFjxtTbgZo5c2aaOHFi6tChQ2revHm97Xfs2LH1ti8AqAvBjhXauHHjivsTTzwxrSxatmy5vKsAwCpKsGOF1rdv3+K+S5cuqUWLFvXWszZgwIA0YsSI1LVr11Tfoa5Tp071uk8AqCnBjhVamzZt0gknnNAg+45Q161btwbZNwAsDxZPAABkQrADAMiEYAcAkAnBDgAgE4IdAEAmBDsAgEwIdgAAmRDsAAAyIdgBAGRCsAMAyIRgBwCQCcEOACATgh0AQCYEOwCATAh2AACZEOwAADIh2AEAZEKwAwDIhGAHAJAJwQ4AIBOCHQBAJgQ7AIBMCHYAAJkQ7AAAMiHYAQBkQrADAMiEYAcAkAnBDgAgE4IdAEAmBDsAgEwIdgAAmRDsAAAyIdgBAGRCsAMAyIRgBwCQCcEOACATgh0AQCYEOwCATAh2AACZEOwAADKxel1e9MILL6QxY8akfffdN3Xq1GmRZaZMmZJGjRqVGjVqVJRbe+21qz0/f/784vlJkyYV+9h9993r9gkAAKh9j93TTz+dunfvnk4++eR00kknpeeff36R5W666abUoUOH4v7BBx9MPXr0SK+88krl+RkzZqS99torHXvssenhhx9O/fr1S3379k1z586tTXUAAFiaHrthw4YV4S564hblqaeeSgMHDkz33HNPEdjCP//5z/TJJ59Uylx22WXpnXfeSa+++mpq06ZNeu+999K2226bbr755jRo0KDaVgkAgNr22MVwaYS6r3PFFVcUPXTlUBfatm2bttpqq8rju+++O/Xv378IdWHTTTdNBx10ULEdAIAVZPHEM888U8yp+9vf/pZuu+229Mc//jFNnz698vycOXPShAkT0pZbblntdfH4zTffXOx+Z82alaZNm1btBgBAAwW7UqmUPv3002Iu3oEHHpgeeeSRdM455xSLI2LBRfjiiy+KhRMLLqZYZ511vjasDR06NLVu3bpya9++fX1WHQBgpVevwS7m3TVr1iyNHz++WDU7fPjw9NJLL6XddtutWGwRmjdvXtxX7cULEepatGix2H0PGTIkTZ06tXKbPHlyfVYdAGDVvNzJ1+ncuXMxn65ly5aVbb17906nnnpq0aMXwW/jjTcuFkxUFY87duy42P02bdq0uAEAsIzm2MVlS15//fViuLUsVr/GAonyStpDDjkk3XfffWn27NmV3rqRI0cW2wEAWAY9dh988EF66KGHKo8fe+yxYs5c165dU8+ePYttZ5xxRnrggQeKXrqYZxcLIu6888507733Vl539tlnF/vp1atXUS7Kx8rZ//iP/6jjxwAAoFbBLubFlS80XL7eXDxea621KmVatWpVXLg4VsS+/fbbxdDsG2+8kTbffPNKmXbt2qWXX3453Xrrren9999PxxxzTHGx4qr7AQCgdhqVYuLbSiiGb2N1bCykiDAJNRULe+J6jKNHj07dunVz4ADIJvPU+xw7AACWD8EOACATgh0AQCYEOwCATAh2AACZEOwAADIh2AEAZEKwAwDIhGAHAJAJwQ4AIBOCHQBAJgQ7AIBMCHYAAJkQ7AAAMiHYAQBkQrADAMiEYAcAkAnBDgAgE4IdAEAmBDsAgEwIdgAAmRDsAAAyIdgBAGRCsAMAyIRgBwCQCcEOACATgh0AQCYEOwCATKy+vCsA9WHGjBlp3LhxNSo7duzYavc10aVLl9SiRYs61w8AlgXBjixEqOvevXutXjNgwIAalx09enTq1q1bHWoGAMuOYEcWokctwldNzJw5M02cODF16NAhNW/evMb7B4AVXaNSqVRKK6Fp06al1q1bp6lTp6ZWrVot7+oAACz3zGPxBABAJgQ7AIBMCHYAAJkQ7AAAMiHYAQBkQrADAMiEYAcAkAnBDgAgE4IdAEAmBDsAgEwIdgAAmRDsAAAyIdgBAGRCsAMAyIRgBwCQidXTSqpUKhX306ZNW95VAQBoMOWsU84+WQa76dOnF/ft27df3lUBAFgm2ad169ZfW6ZRqSbxbwU0f/789OGHH6aWLVumRo0aLe/qsJKd+cQJweTJk1OrVq2Wd3WAVYS2h7qKqBahbsMNN0yNGzfOs8cuPtjGG2+8vKvBSixCnWAHaHtYGSypp67M4gkAgEwIdgAAmRDsWOU0bdo0nXfeecU9gLaHnKy0iycAAKhOjx0AQCYEOwCATAh2rJCefvrpNGbMmOVdDYBFevvtt9Of//xnR4cVzkp7HTtWbnPnzk0vv/xy+sc//pE6dOiQtt5662oXXbziiiuK6xR269atQd7/r3/9a1p99dXTTjvt1CDlgSV79dVX0/vvv5/atWuXtt1229SkSZOV5rA99NBD6e677069evVaYtnx48dXO1Fda621UpcuXVLHjh0buJasigQ7lrkIdP/+7/9eXEk7Al38AsTs2bPTtddem/bZZ59lUodrrrmmaFxrGtRqWx5YvL///e/pkEMOSR999FHacccd0z//+c/0ySefpJ///OfpyCOPzO7Q/eEPf0g/+clP0uGHH148njp1anryySfTYYcdlm6//fYl/pIA1IZgxzJ33HHHpe7duxdnu+Wfg/vb3/5W3BYUP6ESQXDWrFlpl112KX5CbsGev+hNmzJlSuratWtxFrzgkG6LFi3SZpttlp577rm02mqrpfXWW6/oJWjWrFlRh9C7d++0zjrrpHfeeSe99dZb6Rvf+EbaYYcdil66ONNeXPmavv/mm29efI6vvvoq9ezZMzVv3rzejyusLE477bSid27ixImVXroIeU899dRCZceNG1fcolcvevDXWGONhcpMmDCh+N5+85vfTNtvv3215+IE8sUXXyzCZIwOLDgK8MorrxRBK9qX+Puzzz4rTuDatGlTrVx816N+cb/ge9REtAPl9iM8//zzxXsef/zxlRPaaH+iriHauq222qqo84Li5zSjrvHLOdGWLtiefN0xK3/enXfeufg72q4ePXqkddddN82YMSM988wzxTHbbbfdipPZsprUrabHkoYl2LFMRYMRDfAPfvCDar/xG0MSCw5LRCMSjVZsnzRpUvE7i9HobLLJJsXzsS0CVvT2de7cOT377LNFT+DNN99cbUg3hnuj8dpiiy2KsBb7++CDD4rQ9uCDDxblopG7+OKL04033pj22GOP9Omnn6Y5c+YUz8dw0aLKR31q8v7RCH/88cdF6IvGcd68eenxxx9fZIMNq4I33ngjHXzwwdWGXuNkKr4/ZXEyd/TRR6cnnniiCAcRAuM3wmMINE7UQpwoHXPMMemPf/xjESbiex5TOH7/+98X7UuEjIMOOqj43sV3P9qUCDrxPS6HoREjRqT//d//Lb7fEYQ+//zzYug05s/F9zz861//KsJX9Cxus8026bXXXkudOnVaqmMQITR88cUXlW3vvfdepY2J9iWC5CmnnJIuueSSSpkbbrgh/fSnPy2CV7RREYjvuuuutN1229XomMXnHTlyZNEOxWeIti1Cb4xK/OxnPyu2xeuiXYvjFYGvpnWrybFkGYjr2MGy1KNHj1KnTp1Kv//970vTpk1bZJlDDz201Lp169LEiROLx3Pnzi3tuOOOpcGDB1fK9O3bt9SzZ8/SV199VTx+8803S02bNi399re/rbaf5s2bl8aPH19t//379y99//vfrzz+/PPPS40aNSq98MILlW2vvfZaacKECYssX5v3X2211UovvfRS8Xj27Nmlvffeu3T44YfX6dhBDo455phS27ZtS8OHDy9NmTJlkWXOOuus0q677lr68ssvK9tOPPHEUu/evSuPf/zjH5c22mijSjsRRo4cWZo3b17x949+9KNS586dS5999lnx+B//+EepXbt2pYsuuqhS/owzzii+o88991xlW79+/UqHHHJI5fHpp59e2nrrrSvt1bvvvltq2bJlqXv37jX6vFdddVWpRYsWpbvuuqu4DRs2rGgHq7YfixLtT7yu3H6ENm3alO68887K4/fff7/04osv1viYlT9v+TVxrLbddttSkyZNSq+++mqxbc6cOaWOHTuWLr300lrVrSbHkoZnYJ9lLoYjYijjiCOOKH7UOCZNn3/++cUwQFV9+vSpnNXGEOruu+9erEQrn6nHWfkZZ5xR+QWJLbfcspizUnW4IxxwwAFLPLuO/cdwRZyJl6/ZHWfmi5vcXJv333vvvYuexxDvcfrppxdnvnFGDKuiq6++uphv9sMf/rAYpovvZ3wvoset7JZbbinahpifdu+996Z77rknrb/++kVvVPRChdtuuy2deuqplXYifPvb367MWYvvYowOxLSJcq/g97///YW+o9GL961vfavyeK+99qq0NSHeO/ZTngqy6aabVutdrInyCEDcoscspndEL9aC8+uiHYwpHPfdd1966aWX0gYbbJBeeOGFyvPR0/jmm28WQ8Khffv2xTzFmh6zEO1R+TXx/lGP6PGM14bocYvno7etNnWrybGk4RmKZZmLoZJocCIcxfy1v/zlL+nKK68sGoxHHnmkUq48BFAWASpeE6JRjABWHl4oi7lsMSxTVQwJLEnMJYlG8cwzz0xnn3120RgdddRRxXDRotTm/Rccco1/FKKRjeGPBV8Pq4K11147/epXv0rXX399cTI1atSoYtpCfHdi6kMMo8YUirFjxxbDeVUdeuihRTsQJ2Ox4CKmQSxKBJ8YZlzUdzSmcVT1dW1N7CemUyzqexx1rescuwixcTIY8+SizQnR/sUJ74YbbljUO+b1xjzj+Jxlt956axGIf/GLX6Q999wz9evXr2irop5LOmZRh1AOulU/76K2lY9BTeu2pGPJsiHYsdxEwxDzROIWZ9JxRhyNRJxhLknbtm2L+5icW1U8XnCibtW5fF8nVuPFLRrG//mf/0n9+/dP1113XTG5eWneP+bnLOqxCcWs6qJnKHp44hZzxPbbb780evTotOuuuxbtQ3wHTz755MW+PnqvYj7s4vYdAbIm39El1TFGFhb3Pa6rqEP0kj366KOVYDd48OBi3toFF1xQKRdzc6v+8mfM9Yt5yjEP7k9/+lP68Y9/XLRZF110UY2OWV3VpG6sGAzFsszFJNwFlc/Aq67C+jpxdhmrUB944IHKtpg4HJOEY8h2SeJ9qp5Fxpln3ELsNxrL+EcmVtIuqnxt3j8a7vK+Q7wmLvMSZ+qwKlpcGxAijMXJWCxMuummm4pJ/lVFL1zZ/vvvn4YPH14tXERPWPlxfBerfkdj+/3331+jNqKqKF9eOBCidyyGU5dG1CUWdcRJbVkshIhFXmXRmxkrfsviWMRCrBA9iIMGDSp666Kdqukxq6sl1Y0Vhx47lrlYpRZnenG2Gr1zsULul7/8ZXFGWB4qqOk8nRgqjbkrMR8uGvjo9o+5OksS80fOO++8NGzYsCJgRX1iSCPm/cTwSDS4MURc/kdhwfLRgNb0/SOwxll2zO2JM+tY1Rbz82BVFUOJcSIU809jakZ836INiO9fnDCFmJ4RlwaKHv0BAwYUQSiu/RYrae+8886iTAzfxir2OAmL72+sWo25ZeXh3KFDhxa9f9/97neL72D0xMdlQO64445a1TdWi0Y9YgVuXBokppLEcGf05NVUtBPlodgvv/yyqMu7775bXMeurG/fvumss84q9h1lrrrqqmonu7GPCJnR/sQq3wixMYUkeutqeszqakl1Y8Uh2LHMRZCLRi0uXRJBJ85YH3744aKBLou/F5yrEUM1Va9jF1d8j2tBRaCKfcWk6YEDB1ZrbBa1n3DCCScU9zHxNy43EJc6ibPeaCSjIYyh1ljOX170sGD5mGxck/cPMS8lFnBEUIx/zB577LFqnxVWNXFJjJhXF73Zcemf+L7Fdy9O+spTJ2Ie1+uvv14skIi5uNGTF2El5ouVxaKLKBO9VPH9jflzMResvCAhrrUW11OL5+P7HG1IzE2LMFkWAWnBodnYT3yfq5aJ/cd+Yn9xLc4IdXENy5qInq7YX7nXL05go22Ji7LH4oeymHMYJ49xmZE4gYyQGu1G9PCHGGqN949jEu8d7WGU2XfffWt8zBb1eaMuMWewqlgAUXXBxZLqVtNjScNrFEtjl8H7wCopznLjH5FoFAGgoemxA4ClEPP2Yph0UWLotGoPITQ0wQ4a0OKGgoF8xKKpxV3SI4Y4BTuWJUOxAACZcLkTAIBMCHYAAJkQ7AAAMiHYAQBkQrADAMiEYAcAkAnBDgAgE4IdAEAmBDsAgJSH/wPtT+TyeJ+1JgAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"shortstops = df[df['Role'] == 'Shortstop']['Height']\n",
"second_baseman = df[df['Role'] == 'First_Baseman']['Height']\n",
"\n",
"plt.boxplot([shortstops, second_baseman])\n",
"plt.tight_layout()\n",
"plt.xticks([1, 2], ['Shortstop', 'Second_Baseman'])\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1c57c909-c094-4497-998f-1aa9af4f0bb5",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}