From 6dd1c054bab3b28081cc59f7d9259fcf41c08e9a Mon Sep 17 00:00:00 2001 From: Dmitri Soshnikov Date: Thu, 12 Aug 2021 14:57:28 +0300 Subject: [PATCH] Continue working on intro to probability --- .../04-stats-and-probability/README.md | 20 +- .../images/weight-histogram.png | Bin 0 -> 3948 bytes .../04-stats-and-probability/notebook.ipynb | 373 ++++++++++++++++++ 3 files changed, 390 insertions(+), 3 deletions(-) create mode 100644 1-Introduction/04-stats-and-probability/images/weight-histogram.png diff --git a/1-Introduction/04-stats-and-probability/README.md b/1-Introduction/04-stats-and-probability/README.md index 6c768e0a..4f762e2b 100644 --- a/1-Introduction/04-stats-and-probability/README.md +++ b/1-Introduction/04-stats-and-probability/README.md @@ -20,7 +20,7 @@ In the case of discrete random variables, it is easy to describe the probability The most well-known discrete distribution is **uniform distribution**, in which there is a sample space of N elements, with equal probability of 1/N for each of them. -It is more difficult to describe the probability distribution of a continuous variable. Consider the case of bus arrival time. In fact, for each exact arrival time $t$, the probability of a bus arriving at exactly that time is 0! +It is more difficult to describe the probability distribution of a continuous variable, with values drawn from some interval [a,b], or the whole set of real numbers ℝ. Consider the case of bus arrival time. In fact, for each exact arrival time $t$, the probability of a bus arriving at exactly that time is 0! > Now you know that events with 0 probability happen, and very often! At least each time when the bus arrives! @@ -34,9 +34,23 @@ Another important distribution is **normal distribution**, which we will talk ab ## Mean, Variance and Standard Deviation -Suppose we draw n samples of a random variable X: {x1, x2, ..., xn}. We can define **mean** (or ** arithmetic average**) value of the sequence in the traditional way as (x1+x2+xn)/n. As we grow the size of the sample (i.e. take the limit with n→∞), we will obtain the mean (also called **expectation**) of the distribution. +Suppose we draw a sequence of n samples of a random variable X: x1, x2, ..., xn. We can define **mean** (or **arithmetic average**) value of the sequence in the traditional way as (x1+x2+xn)/n. As we grow the size of the sample (i.e. take the limit with n→∞), we will obtain the mean (also called **expectation**) of the distribution. + +> It can be demonstrated that for any discrete distribution with values {x1, x2, ..., xN} and corresponding probabilities p1, p2, ..., pN, the expectation would equal to E(X)=x1p1+x2p2+...+xNpN. + +To identify how far the values are spread, we can compute the variance σ2 = ∑(xi - \mu;)2/n), where μ is the mean of the sequence. The value σ is called **standard deviation**, and σ2 is called a **variance**. + +## Real-world Data + +When we analyze data from real life, they often are not random variables as such, in a sense that we do not perform experiments with unknown result. For example, consider a team of baseball players, and their body data, such as height, weight and age. Those numbers are not exactly random, but we can still apply the same mathematical concepts. For example, a sequence of people's weights can be considered to be a sequence of values drawn from some random variable. Below is the sequence of weights of actual baseball players from [Major League Baseball](http://mlb.mlb.com/index.jsp), taken from [this dataset](http://wiki.stat.ucla.edu/socr/index.php/SOCR_Data_MLB_HeightsWeights) (for your convenience, only first 20 values are shown): + +``` +[180.0, 215.0, 210.0, 210.0, 188.0, 176.0, 209.0, 200.0, 231.0, 180.0, 188.0, 180.0, 185.0, 160.0, 180.0, 185.0, 197.0, 189.0, 185.0, 219.0] +``` + +> When working with real data, we assume that data points are samples drawn from some probability distribution. This assumption allows us to apply machine learning techniques and build working predictive models. + -> It can be demonstrated that for any discrete distribution with values x1, x2, ..., xN and corresponding probabilities p1, p2, ..., pN, the expectation would equal to E(X)=x1p1+x2p2+...+xNpN. ## Normal Distribution diff --git a/1-Introduction/04-stats-and-probability/images/weight-histogram.png b/1-Introduction/04-stats-and-probability/images/weight-histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..832c41ddff9091b806e11686644481aaf70d45d3 GIT binary patch literal 3948 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 H{^S1voNmIn literal 0 HcmV?d00001 diff --git a/1-Introduction/04-stats-and-probability/notebook.ipynb b/1-Introduction/04-stats-and-probability/notebook.ipynb index e69de29b..41dda760 100644 --- a/1-Introduction/04-stats-and-probability/notebook.ipynb +++ b/1-Introduction/04-stats-and-probability/notebook.ipynb @@ -0,0 +1,373 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# Introduction to Probability and Statistics\r\n", + "|\r\n", + "In this notebook, we will play around with some of the concepts we have previously discussed. Many concepts from probability and statistics are well-represented in major libraries for data processing in Python, such as `numpy` and `pandas`." + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 6, + "source": [ + "import numpy as np\r\n", + "import pandas as pd\r\n", + "import random\r\n", + "import matplotlib.pyplot as plt" + ], + "outputs": [], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "\r\n", + "## Random Variables and Distributions\r\n", + "\r\n", + "Let's start with drawing a sample of 30 variables from a uniform disribution from 0 to 9. We will also compute mean and variance." + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 17, + "source": [ + "sample = [ random.randint(0,10) for _ in range(30) ]\r\n", + "print(f\"Sample: {sample}\")\r\n", + "print(f\"Mean = {np.mean(sample)}\")\r\n", + "print(f\"Variance = {np.var(sample)}\")" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Sample: [4, 6, 3, 0, 3, 4, 7, 7, 9, 6, 8, 2, 0, 3, 10, 7, 2, 0, 2, 1, 1, 6, 5, 0, 9, 0, 1, 8, 2, 9]\n", + "Mean = 4.166666666666667\n", + "Variance = 10.272222222222222\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "To visually estimate how many different values are there in the sample, we can plot the **histogram**:" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 18, + "source": [ + "plt.hist(sample)\r\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-08-12T14:31:22.124750\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.2, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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" + }, + "metadata": {} + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "## Analyzing Real Data\r\n", + "\r\n", + "Mean and variance are very important when analyzing real-world data. Let's load the data about baseball players from [SOCR MLB Height/Weight Data](http://wiki.stat.ucla.edu/socr/index.php/SOCR_Data_MLB_HeightsWeights)" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 26, + "source": [ + "df = pd.read_csv(\"../../data/SOCR_MLB.tsv\",sep='\\t',header=None,names=['Name','Team','Rome','Height','Weight','Age'])\r\n", + "df" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Name Team Rome Height Weight Age\n", + "0 Adam_Donachie BAL Catcher 74 180.0 22.99\n", + "1 Paul_Bako BAL Catcher 74 215.0 34.69\n", + "2 Ramon_Hernandez BAL Catcher 72 210.0 30.78\n", + "3 Kevin_Millar BAL First_Baseman 72 210.0 35.43\n", + "4 Chris_Gomez BAL First_Baseman 73 188.0 35.71\n", + "... ... ... ... ... ... ...\n", + "1029 Brad_Thompson STL Relief_Pitcher 73 190.0 25.08\n", + "1030 Tyler_Johnson STL Relief_Pitcher 74 180.0 25.73\n", + "1031 Chris_Narveson STL Relief_Pitcher 75 205.0 25.19\n", + "1032 Randy_Keisler STL Relief_Pitcher 75 190.0 31.01\n", + "1033 Josh_Kinney STL Relief_Pitcher 73 195.0 27.92\n", + "\n", + "[1034 rows x 6 columns]" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NameTeamRomeHeightWeightAge
0Adam_DonachieBALCatcher74180.022.99
1Paul_BakoBALCatcher74215.034.69
2Ramon_HernandezBALCatcher72210.030.78
3Kevin_MillarBALFirst_Baseman72210.035.43
4Chris_GomezBALFirst_Baseman73188.035.71
.....................
1029Brad_ThompsonSTLRelief_Pitcher73190.025.08
1030Tyler_JohnsonSTLRelief_Pitcher74180.025.73
1031Chris_NarvesonSTLRelief_Pitcher75205.025.19
1032Randy_KeislerSTLRelief_Pitcher75190.031.01
1033Josh_KinneySTLRelief_Pitcher73195.027.92
\n", + "

1034 rows × 6 columns

\n", + "
" + ] + }, + "metadata": {}, + "execution_count": 26 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "> We are using a package called **Pandas** here for data analysis. We will talk more about Pandas and working with data in Python later in this course.\r\n", + "\r\n", + "Let's compute average values for age, height and weight:" + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 30, + "source": [ + "df[['Age','Height','Weight']].mean()" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Age 28.736712\n", + "Height 73.697292\n", + "Weight 201.689255\n", + "dtype: float64" + ] + }, + "metadata": {}, + "execution_count": 30 + } + ], + "metadata": {} + }, + { + "cell_type": "markdown", + "source": [ + "Age, height and weight are all continuous random variables. What do you think their distribution is? A good way to find out is to plot the histogram of values: " + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 40, + "source": [ + "df['Weight'].hist(bins=15)\r\n", + "plt.suptitle('Weight distribution of MLB Players')\r\n", + "plt.xlabel('Weight')\r\n", + "plt.ylabel('Count')\r\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-08-12T14:47:40.679219\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.2, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHgCAYAAABDx6wqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAA9hAAAPYQGoP6dpAABGB0lEQVR4nO3de3xU1b3///fkNhBIAiHmVkJAFFqBolzEA2gSIdxBRCtKVbBYORVoEdB6KRKsCsWKKBRse7gpRqj+AKl4wAAJF4EKQSpQi6gBFIKUiwkQHIZk/f7wmzkMuYckk6y8no/HPGDWXnvv9VnJbN7s2XvGYYwxAgAAsJSfrwcAAABQnQg7AADAaoQdAABgNcIOAACwGmEHAABYjbADAACsRtgBAABWI+wAAACrEXYAAIDVCDuoNd599105HA4tX768yLKOHTvK4XBo3bp1RZa1bt1anTp1qtC+Ro0apZYtW1ZqnCkpKXI4HDp58mSZfV988UWtWrWqUvspdOjQITkcDi1evLjIGCoiLy9PKSkpysjIqNB6xe2rZcuWGjRoUIW2U5bU1FTNnj272GUOh0MpKSlVur+qtmHDBnXp0kWNGjWSw+Eo8ede+PMsraZf/OIXnj6XS0xMVPv27UsdR+HPq/Dh5+enmJgYDRgwQB999FG5amnZsqXXNho3bqxu3brpjTfeKDKexMTEcm0T8CXCDmqNxMREORwOpaene7WfPn1ae/fuVaNGjYos++abb/TVV18pKSmpQvuaMmWKVq5cedVjLktVhJ3iPPzww9q+fXuF1snLy9O0adMqHHYqs6/KKC3sbN++XQ8//HC1j6GyjDG65557FBgYqNWrV2v79u1KSEgodZ2QkBAtXrxYBQUFXu3nzp3TO++8o9DQ0Ksa09q1a7V9+3Zt3bpVr7zyio4fP67ExETt3r27XOv36NFD27dv1/bt27V48WI5HA6NHDlS8+fPv6pxAb4Q4OsBAIUiIiLUvn37Iv8Yb9q0SQEBARo9enSRsFP4vKJhp3Xr1lc1Vl9r3ry5mjdvXq37yMvLU3BwcI3sqyy33HKLT/dflmPHjun06dO688471atXr3KtM3z4cP3P//yPNmzYoOTkZE/78uXLlZ+fr6FDh2rp0qWVHlPnzp0VEREhSerevbtuvvlmtW7dWu+++265zoQ2adLEa9579+6t+Ph4zZo1S7/61a8qPa6aVPg7DHBmB7VKUlKSDhw4oOzsbE9bRkaGunbtqgEDBigzM1Nnz571Wubv769bb71V0g//w543b55uvPFGNWzYUE2bNtXdd9+tr776yms/xb2N9d1332n06NEKDw9X48aNNXDgQH311Vclvt3w7bff6r777lNYWJiioqL0i1/8Qjk5OZ7lDodD58+f15IlSzxvB5R1yv/YsWO65557FBISorCwMA0fPlzHjx8v0q+4t5Y2btyoxMRENWvWTA0bNlSLFi101113KS8vT4cOHdI111wjSZo2bZpnPKNGjfLa3u7du3X33XeradOmnkBY2ltmK1eu1E9/+lM1aNBA1157rV577TWv5YVnBA4dOuTVnpGRIYfD4Qm2iYmJWrNmjQ4fPuz19snlc3nlz2Dfvn2644471LRpUzVo0EA33nijlixZUux+3n77bT3zzDOKjY1VaGioevfurQMHDhRb05W2bt2qXr16KSQkRMHBwerevbvWrFnjWZ6SkuIJg7/97W/lcDjK9RZp27Zt1b17dy1cuNCrfeHChRo2bJjCwsLKNb7yKtxeYGBgpdZv0qSJ2rZtq8OHD5fab9q0aerWrZvCw8MVGhqqTp06acGCBbr8O6cLX2d5eXlF1r/99tvVrl07z/PyvqYL3+LbvHmzunfvruDgYP3iF7+QVPprA/UDYQe1SuEZmsvP7qSnpyshIUE9evSQw+HQli1bvJZ16tTJcyAfM2aMJkyYoN69e2vVqlWaN2+e9u/fr+7du+vbb78tcb8FBQUaPHiwUlNT9dvf/lYrV65Ut27d1K9fvxLXueuuu9SmTRv9f//f/6cnn3xSqampeuyxxzzLt2/froYNG2rAgAGetwPmzZtX4vYuXLig3r1768MPP9T06dP1zjvvKDo6WsOHDy9z3g4dOqSBAwcqKChICxcu1Nq1azVjxgw1atRIFy9eVExMjNauXSvph39oCsczZcoUr+0MGzZM1113nd555x29/vrrpe5zz549mjBhgh577DGtXLlS3bt3129+8xv98Y9/LHO8V5o3b5569Oih6Ohoz9hKe+vswIED6t69u/bv36/XXntNK1as0A033KBRo0Zp5syZRfo//fTTOnz4sP7nf/5Hf/nLX3Tw4EENHjxY+fn5pY5r06ZNuv3225WTk6MFCxbo7bffVkhIiAYPHuy5tuzh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jRo1Urdu3bRixQqvcRUUFGjp0qVq3ry52rRpc9X7kaTf/e53Gjx4sCZNmlQl2ytOfn6+9u7dK6fTedWf4VMSh8OhgIAA+fv7e9ouXLigN998s9j+Dz/8sIKCgvTzn/9cBw4c0Lhx47yWX81rujglvTZgP87soNYpvF111apV8vPz81yvUyghIcHz4XOXh50ePXrokUce0UMPPaRdu3bptttuU6NGjZSdna2tW7eqQ4cOJX4+SL9+/dSjRw9NmjRJubm56ty5s7Zv3+75xFg/v8r9v6BDhw7KyMjQ3//+d8XExCgkJMTrf66Xe/DBB/XKK6/owQcf1AsvvKDrr79eH3zwQbGfGn2l119/XRs3btTAgQPVokULff/9955bmnv37i3phw+xi4+P13vvvadevXopPDxcERERlf4k6djYWA0ZMkQpKSmKiYnR0qVLlZaWpj/84Q+ezzbp2rWr2rZtq8mTJ+vSpUtq2rSpVq5cqa1btxY7VytWrND8+fPVuXNn+fn5lXhmYerUqXr//feVlJSkZ599VuHh4Xrrrbe0Zs0azZw5s8pu254+fbqSk5OVlJSkyZMnKygoSPPmzdO+ffv09ttvV8m1NZJ0//336/777y9X39zcXL377rtF2q+55hqvDzLMzMz0zMO3336rhQsX6t///rcee+wxr7MuVWngwIGaNWuWRowYoUceeUSnTp3SH//4xxLPqjZp0kQPPvig5s+fr/j4eA0ePNhr+dW8pguV57WBesCnl0cDJXjiiSeMJNOlS5ciy1atWmUkmaCgIM9dP5dbuHCh6datm2nUqJFp2LChad26tXnwwQfNrl27PH2uvBvLmB/uBHvooYdMkyZNTHBwsElOTjY7duwwksyrr77q6Vd4t8t//vMfr/WLu/Noz549pkePHiY4ONhIKvXOFWOM+eabb8xdd91lGjdubEJCQsxdd91ltm3bVubdWNu3bzd33nmniY+PN06n0zRr1swkJCSY1atXe21//fr15qabbjJOp9NI8twpVlJNxe3LmB/u1hk4cKB59913Tbt27UxQUJBp2bKlmTVrVpH1P//8c9OnTx8TGhpqrrnmGjN+/HjP3W+X3411+vRpc/fdd5smTZoYh8PhtU8VcxfZ3r17zeDBg01YWJgJCgoyHTt29JojY/7vbqx33nnHq73wjqgr+xdny5Yt5vbbb/f8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LM2dO1c7d+5UdHS0kpOTPV+aJ9k9B3l5edq9e7emTJmi3bt3a8WKFfr88881ZMgQr+3U1Tkoz+9AoVWrVukf//hHsR+nb3P9th8HyzMHth8LK6QqvowTviPJrFy50qtt+PDh5v777y9xne+++84EBgaaZcuWedqOHj1q/Pz8zNq1a6trqNWiuPrbtWtnnnvuOa+2Tp06md/97nfGGLvqN8aYEydOGElm06ZNxhhjCgoKTHR0tJkxY4anz/fff2/CwsLM66+/boyxfw6K8/HHHxtJ5vDhw8YYu+agpPq/+eYb86Mf/cjs27fPxMfHm1deecWzzPb669Nx0Jji56C+HQtLw5kdyxQUFGjNmjVq06aN+vbtq8jISHXr1s3rrZ7MzEy53W716dPH0xYbG6v27dtr27ZtPhh11erZs6dWr16to0ePyhij9PR0ff755+rbt68k++rPycmRJIWHh0uSsrKydPz4ca/6nE6nEhISPPXZPgcl9XE4HJ7vwbNpDoqrv6CgQA888IAef/xxtWvXrsg6NtdfH4+Dxf0O1LdjYWkIO5Y5ceKEzp07pxkzZqhfv3768MMPdeedd2rYsGHatGmTJOn48eMKCgpS06ZNvdaNiooq8oWqddFrr72mG264Qc2bN1dQUJD69eunefPmqWfPnpLsqt8Yo4kTJ6pnz55q3769JHlquPKLcC+vz/Y5uNL333+vJ598UiNGjPB8EaItc1BS/X/4wx8UEBCgX//618WuZ3P99e04WNLvQH06FpbFiq+LwP8pKCiQJN1xxx167LHHJEk33nijtm3bptdff10JCQklrmuMkcPhqJFxVqfXXntNO3bs0OrVqxUfH6/Nmzfr0UcfVUxMjHr37l3ienWx/nHjxunTTz/V1q1biyy7spby1GfbHEg/XKx87733qqCgQPPmzStze3VtDoqrPzMzU6+++qp2795d4VpsqL++HQdLeg3Up2NhWTizY5mIiAgFBATohhtu8Gr/yU9+4rkLITo6WhcvXtSZM2e8+pw4caLI2YC65sKFC3r66ac1a9YsDR48WD/96U81btw4DR8+XH/84x8l2VP/+PHjtXr1aqWnp6t58+ae9ujoaEkq8j+zy+uzfQ4Kud1u3XPPPcrKylJaWprnrI5kxxyUVP+WLVt04sQJtWjRQgEBAQoICNDhw4c1adIktWzZUpLd9den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" + }, + "metadata": {} + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 44, + "source": [ + "print(list(df['Weight'])[:20])" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[180.0, 215.0, 210.0, 210.0, 188.0, 176.0, 209.0, 200.0, 231.0, 180.0, 188.0, 180.0, 185.0, 160.0, 180.0, 185.0, 197.0, 189.0, 185.0, 219.0]\n" + ] + } + ], + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [], + "outputs": [], + "metadata": {} + } + ], + "metadata": { + "orig_nbformat": 4, + "language_info": { + "name": "python", + "version": "3.8.8", + "mimetype": "text/x-python", + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "pygments_lexer": "ipython3", + "nbconvert_exporter": "python", + "file_extension": ".py" + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.8.8 64-bit (conda)" + }, + "interpreter": { + "hash": "86193a1ab0ba47eac1c69c1756090baa3b420b3eea7d4aafab8b85f8b312f0c5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file