"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "np.arange (1,7,1)\n",
+ "lançamentos = []\n",
+ "for i in range(10):\n",
+ " lançamentos.append(random.choice(np.arange(1,7,1)))\n",
+ "\n",
+ "pd.DataFrame(lançamentos)\n",
+ "\n",
+ "\n",
+ "sorted_lançamentos = sorted(lançamentos)\n",
+ "\n",
+ "\n",
+ "df = pd.DataFrame(sorted_lançamentos, columns = ['Roll']) \n",
+ "df.plot(kind = 'bar', legend = None)\n",
+ "plt.xlabel('Roll Number')\n",
+ "plt.ylabel('Dice Value')\n",
+ "plt.title('Dice Roll Results (Sorted)')\n",
+ "\n",
+ "plt.show()\n"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### 3.- Calculate the frequency distribution and plot it. What is the relation between this plot and the plot above? Describe it with words."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHACAYAAABKwtdzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABCRklEQVR4nO3deVhV5f7//9d2ANQERWNKRTIn1JwwBXOKoERNLY92KtTEOmadTPPb59CkVCe1HHAotZO6s46oRU5HSzHnpEEFmk1LxWyTQwWKiQrr94eX++eWQdxu2OB6Pq5r/bHuda97v+8Fxqs17GUxDMMQAACAiVRxdwEAAADljQAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwCE65rVapXFYrEvXl5eCggIUK9evTRp0iQdPXq00D4TJ06UxWIp1zoPHjzoUGeVKlVUt25dRUZGasOGDdc0ptVqtbddPB4HDx4scd/Lj9uly/jx452qB0Urr9/R06dPa+LEidqyZctV7VfUZzVu3Fh9+/a9qnGuZPjw4WrcuLFD26uvvqqVK1cW6rtlyxZZLJarngtwqWruLgAoD4sWLVKLFi107tw5HT16VDt27NCUKVM0depULVu2THfeeae978iRI3X33Xe7pc5//vOfeuCBB5Sfn68ffvhBCQkJiomJ0aZNm9S9e/dyr+ficbtUUFBQuddhBmX9O3r69GklJCRIknr27Fnq/crr38MLL7ygMWPGOLS9+uqrGjRokAYMGODQ3qFDB6Wmpio0NLTM68L1iwAEU2jdurXCwsLs6/fdd5/Gjh2r22+/Xffee6/27dsnf39/SVKDBg3UoEEDt9TZqFEjdenSRZLUtWtXNW3aVD169NCCBQvcEoAuP24lOXfunCwWi6pV4z8rzqhov6OnT59WzZo1y+3fQ5MmTUrd19vb2/7vBHAWl8BgWo0aNdK0adN08uRJzZ8/395e3OWFJUuWKDw8XDfccINuuOEGtWvXTgsWLHDos3HjRkVGRsrb21s1a9ZU165d9cknnzhd48U/iL/99ptD+zfffKP+/furbt268vLyUrt27fTOO+84/TlX6+IliHfffVdPP/20brrpJnl6emr//v2SSn8c1q5dq3bt2snT01MhISGaOnVqoeNf1KW8iywWiyZOnOjQtm/f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cWsAys3NVdu2bTVnzpyr2m/v3r2y2Wz2pWnTpvZtqampGjJkiGJjY5WRkaHY2FgNHjxYn3/+uavLBwAAlVQ1d35479691bt376vez8/PT3Xq1ClyW2JioqKiohQfHy9Jio+P19atW5WYmKikpKRrKRcAAFwnKuU9QO3bt1dgYKAiIyO1efNmh22pqamKjo52aLvrrru0c+fO8iwRAABUYG49A3S1AgMD9dZbb6ljx47Ky8vTu+++q8jISG3ZskXdu3eXJGVlZcnf399hP39/f2VlZRU7bl5envLy8uzrOTk5ZTMBAABQIVSqANS8eXM1b97cvh4eHq7Dhw9r6tSp9gAkSRaLxWE/wzAKtV1q0qRJSkhIcH3BAACgQqqUl8Au1aVLF+3bt8++HhAQUOhsz9GjRwudFbpUfHy8srOz7cvhw4fLrF4AAOB+lT4ApaWlKTAw0L4eHh6ulJQUhz4bNmxQREREsWN4enrK29vbYQEAANcvt14CO3XqlPbv329fP3DggNLT0+Xr66tGjRopPj5eR44c0eLFiyVdeMKrcePGatWqlc6ePav33ntPycnJSk5Oto8xZswYde/eXVOmTFH//v21atUqbdy4UTt27Cj3+QEAgIrJrQFo165d6tWrl3193LhxkqRhw4bJarXKZrMpMzPTvv3s2bMaP368jhw5oho1aqhVq1Zau3atYmJi7H0iIiK0dOlSPf/883rhhRfUpEkTLVu2TJ07dy6/iQEAgArNrQGoZ8+eMgyj2O1Wq9Vh/ZlnntEzzzxzxXEHDRqkQYMGXWt5AADgOlXp7wECAAC4WgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOgQgAABgOm4NQNu2bVO/fv0UFBQki8WilStXltj/ww8/VFRUlG688UZ5e3srPDxc69evd+hjtVplsVgKLWfOnCnDmQAAgMrErQEoNzdXbdu21Zw5c0rVf9u2bYqKitK6deu0e/du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s2cXO9akSZPk4+NjXxo2bOjUXAAAQOXgtgBUv359Va1atdDZnqNHjxY6K3Q5wzC0cOFCxcbGysPDo8S+VapUUadOnbRv375i+8THxys7O9u+HD58uPQTAQAAlY7bApCHh4c6duyolJQUh/aUlBRFRESUuO/WrVu1f/9+xcXFXfFzDMNQenq6AgMDi+3j6ekpb29vhwUAAFy/3HYPkCSNGzdOsbGxCgsLU3h4uN566y1lZmZq1KhRki6cmTly5IgWL17ssN+CBQvUuXNntW7dutCYCQkJ6tKli5o2baqcnBzNmjVL6enpeuONN8plTgAAoOJzawAaMmSITpw4oZdeekk2m02tW7fWunXr7E912Wy2Qt8JlJ2dreTkZM2cObPIMf/88089+uijysrKko+Pj9q3b69t27bptttuK/P5AACAysGtAUiSRo8erdGjRxe5zWq1Fmrz8fHR6dOnix1vxowZmjFjhqvKAwAA1yG3PwUGAABQ3ghAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdNwegN58802FhITIy8tLHTt21Pbt24vtu2XLFlkslkLLDz/84NAvOTlZoaGh8vT0VGhoqFasWFHW0wAAAJWIWwPQsmXL9NRTT+m5555TWlqaunXrpt69eyszM7PE/fbu3SubzWZfmjZtat+WmpqqIUOGKDY2VhkZGYqNjdXgwYP1+eefl/V0AABAJeHWADR9+nTFxcVp5MiRatmypRITE9WwYUPNnTu3xP38/PwUEBBgX6pWrWrflpiYqKioKMXHx6tFixaKj49XZGSkEhMTy3g2AACgsnBbADp79qx2796t6Ohoh/bo6Gjt3LmzxH3bt2+vwMBARUZGavPmzQ7bUlNTC4151113XXFMAABgHtXc9cHHjx9Xfn6+/P39Hdr9/f2VlZVV5D6BgYF666231LFjR+Xl5endd99VZGSktmzZou7du0uSsrKyrmpMScrL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ixb64YcfNHPmTOXl5emhhx7SHXfc4e4SK7xL30N4qfz8fE2ePNn+nsPp06eXZ1nXhT/++EPvvPOO9u3bp8DAQA0bNsyUL7l2RlpamurUqaOQkBBJ0nvvvae5c+cqMzNTwcHBeuKJJ3T//fe7ucprw/cAXScyMjLUoUMH5efnu7uUCu3HH39UdHS0MjMzZbFY1K1bNyUlJSkwMFCS9NtvvykoKIjjWAoff/yx+vfvrxtuuEGnT5/WihUrNHToULVt21aGYWjr1q1av349IegKqlSporZt2xZ6/+DWrVsVFhamWrVqyWKxaNOmTe4psBIJCgrS119/rXr16unAgQP2d0C2adNG33//vU6ePKnPPvtMLVq0cHOlFV+HDh00bdo09erVS2+//baefPJJPfLII2rZsqX27t2rt99+WzNnztSIESPcXarTCECVxOrVq0vc/vPPP+vpp5/mD/cVDBw4UOfPn9eiRYv0559/aty4cfrmm2+0ZcsWNWrUiAB0FSIiInTHHXfolVde0dKlSzV69Gg99thj+ve//y1Jeu655/Tll19qw4YNbq60Yps0aZL+85//6O2333YIi9WrV1dGRkahs5QoXpUqVZSVlSU/Pz/9/e9/V1ZWltauXauaNWsqLy9PgwYNkpeXl95//313l1rh1apVS99//70aNWqkDh06aNSoUXr00Uft25csWaJ///vf+vbbb91Y5TUyUClYLBajSpUqhsViKXapUqWKu8us8Pz8/IyvvvrKoW306NFGo0aNjJ9++snIysriOJaSt7e3sW/fPsMwDCM/P9+oVq2asXv3bvv2r7/+2vD393dXeZXKF198YTRr1sx4+umnjbNnzxqGYRjVqlUzvv32WzdXVrlYLBbjt99+MwzDMEJCQoxPPvnEYftnn31mNGjQwB2lVTr16tUzdu3aZRjGhf9upqenO2zfv3+/UaNGDXeU5jLcBF1JBAYGKjk5WQUFBUUuV3o/Gi7466+/VK2a461vb7zxhu655x716NFDP/74o5sqq9yqVKkiLy8vh8s4tWvXVnZ2tvuKqkQ6deqk3bt369ixYwoLC9PXX38ti8Xi7rIqpYvHLS8vT/7+/g7b/P39dezYMXeUVen07t1bc+fOlXThHZwffPCBw/bly5frlltucUdpLsNN0JVEx44dtWfPHg0YMKDI7RaLhcdmS6FFixbatWuXWrZs6dA+e/ZsGYahe+65x02VVT6NGzfW/v377f8RTE1NVaNGjezbDx8+bL+3Cld2ww036J133tHSpUsVFRXFZVgnRUZGqlq1asrJydGPP/6oVq1a2bdlZmaqfv36bqyu8pgyZYq6du2qHj16KCwsTNOmTdOWLVvs9wB99tlnWrFihbvLvCYEoEri//2//6fc3Nxit99yyy3avHlzOVZUOQ0cOFBJSUmKjY0ttG3OnDkqKCjQvHnz3FBZ5fPYY485/JFu3bq1w/aPPvqIG6CdcP/99+v222/X7t27FRwc7O5yKpUJEyY4rNesWdNhfc2aNerWrVt5llRpBQUFKS0tTZMnT9aaNWtkGIa++OILHT58WF27dtWnn36qsLAwd5d5TbgJGgAAmA73AAEAANMhAAEAANMhAAEAANMhAAGocCwWi1auXOnuMko0fPjwYp/KBFDxEYAAlIvhw4fLYrHIYrGoevXq8vf3V1RUlBYuXKiCggKHvjabTb179y6TOv75z3+qadOmRW47cuSIqlatqg8//LBMPhtAxUEAAlBu7r77btlsNh08eFAfffSRevXqpTFjxqhv3746f/68vV9AQIA8PT3LpIa4uDjt379f27dvL7TNarWqXr166tevX5l8NoCKgwAEoNx4enoqICBAN910kzp06KBnn31Wq1at0kcffSSr1Wrvd/klsF9++UX333+/fH19VatWLYWFhenzzz+3b1+zZo06duwoLy8v3XzzzUpISHAIVJdq166dOnTooIULFxbaZrVaNXToUFWpUkVxcXEKCQlRjRo11Lx5c82cObPEuTVu3FiJiYmFPmvixIn29ezsbD366KPy8/OTt7e37rjjDmVkZJQ4LoCyQQAC4FZ33HGH2rZtW+xlp1OnTqlHjx769ddftXr1amVkZOiZZ56xXzZbv369HnroIT355JP67rvvNH/+fFmtVvtLWYsSFxen999/X6dOnbK3bd26Vfv379eIESNUUFCgBg0aaPny5fruu+/04osv6tlnn9Xy5cudnqdhGOrTp4+ysrK0bt067d69Wx06dFBkZKR+//13p8cF4BwCEAC3a9GihQ4ePFjktiVLlujYsWNauXKlbr/9dt1yyy0aPHiwwsPDJUn//ve/9a9//UvDhg3TzTffrKioKL388suaP39+sZ/3wAMPKD8/3+Gt4AsXLlR4eLhCQ0NVvXp1JSQkqFOnTgoJCdGDDz6o4cOHX1MA2rx5s77++mu9//77CgsLU9OmTTV16lTVqVOn0HuWAJQ9XoUBwO0Mwyj25Z/p6elq3769fH19i9y+e/duffnllw5nfPLz83XmzBmdPn260OsQJKlOnTq69957tXDhQj388MM6efKkkpOTHS5hzZs3T2+//bYOHTqkv/76S2fPnlW7du2cnuPu3bt16tQp1atXz6H9r7/+0k8//eT0uACcQwAC4Hbff/+9QkJCitxWo0aNEvctKChQQkKC7r333kLbvLy8it0vLi5OkZGR2rdvn7Zu3SpJGjJkiKQLb7oeO3aspk2bpvDwcNWuXVuvv/66w31Hl6tSpUqhFxKfO3fOoc7AwEBt2bKl0L516tQpaYoAygABCIBbbdq0SV9//bXGjh1b5PZbb71Vb7/9tn7//fcizwJ16NBBe/futb+VvrR69eqlm2++WVarVZs3b9bgwYNVu3ZtSdL27dsVERGh0aNH2/tf6SzNjTfeKJvNZl/PycnRgQMHHOrMyspStWrV1Lhx46uqFYDrcQ8QgHKTl5enrKwsHTlyRHv27NGrr76q/v37q2/fvho6dGiR+/z9739XQECABgwYoE8//VQ///yzkpOTlZqaKkl68cUXtXjxYk2cOFHffvutvv/+ey1btkzPP/98ibVYLBY9/PDDmjt3rlJTUxUXF2ffdsstt2jXrl1av369fvzxR73wwgv68ssvSxzvjjvu0Lvvvqvt27frm2++0bBhw1S1alX79jvvvFPh4eEaMGCA1q9fr4MHD2rnzp16/vnntWvXrtIeQgAuQgACUG4+/vhjBQYGqnHjxrr77ru1efNmzZo1S6tWrXIIC5fy8PDQhg0b5Ofnp5iYGLVp00aTJ0+297/rrrv0v//9TykpKerUqZO6dOmi6dOnKzg4+Ir1DB8+XNnZ2WrevLm6du1qbx81apTuvfdeDRkyRJ07d9aJEycczgYVJT4+Xt27d1ffvn0VExOjAQMGqEmTJvbtFotF69atU/fu3TVixAg1a9ZM999/vw4ePCh/f//SHD4ALmQxLr9oDQAAcJ3jDBAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADCd/w8nwEMuvRZ75gAAAABJRU5ErkJggg==",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "np.arange (1,7,1)\n",
+ "lançamentos = []\n",
+ "for i in range(10):\n",
+ " lançamentos.append(random.choice(np.arange(1,7,1)))\n",
+ "\n",
+ "pd.DataFrame(lançamentos)\n",
+ "\n",
+ "\n",
+ "sorted_lançamentos = sorted(lançamentos)\n",
+ "\n",
+ "\n",
+ "df = pd.DataFrame(sorted_lançamentos, columns = ['Roll']) \n",
+ "frequency_distribuition = df['Roll'].value_counts().sort_index()\n",
+ "frequency_distribuition.plot (kind='bar')\n",
+ "plt.xlabel('Dice Value')\n",
+ "plt.ylabel('Frequency')\n",
+ "plt.title('Dice Roll Frequency Distribuition')\n",
+ "\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\"\"\"\n",
+ "In comparison to the previous plot, which displayed the sorted dice roll values, i think this plot provides a clearer picture \n",
+ "of how frequently each dice value occurred in the 10 rolls.\n",
+ "\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Challenge 2\n",
+ "Now, using the dice results obtained in *challenge 1*, your are going to define some functions that will help you calculate the mean of your data in two different ways, the median and the four quartiles. \n",
+ "\n",
+ "#### 1.- Define a function that computes the mean by summing all the observations and dividing by the total number of observations. You are not allowed to use any methods or functions that directly calculate the mean value. "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def calculate_mean(lançamentos):\n",
+ " total = 0\n",
+ " count = 0\n",
+ "\n",
+ " for value in lançamentos:\n",
+ " total += value\n",
+ " count += 1\n",
+ "\n",
+ " if count == 0:\n",
+ " return None\n",
+ "\n",
+ " mean = total / count\n",
+ " print (mean)\n",
+ "\n"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### 2.- First, calculate the frequency distribution. Then, calculate the mean using the values of the frequency distribution you've just computed. You are not allowed to use any methods or functions that directly calculate the mean value. "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Mean: 2.9\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "C:\\Users\\David Santos\\AppData\\Local\\Temp\\ipykernel_14504\\4223867082.py:16: FutureWarning: iteritems is deprecated and will be removed in a future version. Use .items instead.\n",
+ " for dice_value, frequency in frequency_distribuition.iteritems():\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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cccdCgoK0gMPPKAZM2bo1VdflfT7f5QzMzOLjC28aLWwlqpw5WxGWd+HwjursrKyiqy/sq1wZsdutzu1X/kHtEGDBqpdu7YefPDBEmfZQkNDSzmaoi7/7K9m8uTJWrFihT766CNt2rRJ9evX18iRI8u1v+KU5TsqSd27d1f37t2Vn5+v1NRUvfLKK3r88ccVGBio++67r0z7Ks9v55T22RUGh5I+uytD5rUq3F9J/y4KfzcKuBwzNzCl9PR0TZs2Tf7+/vrrX/9aYr++ffuqdu3aWrhwYYl97rjjDtWvX1/ffPNNkZmOwpeXl1e5axw5cqR69eqlN99803GqJCoqSlu3bi1yB87y5cvl4+Pj1ltky/o+1K1bV3/4wx/0wQcf6MKFC47xZ8+e1bp165y2GRgYKG9vb3311VdO7R999JHTso+Pj3r37q20tDS1b9++2H1f+X/rV9O1a1f5+/srPj7+qqeGwsPD1bVrV82aNUv/+te/NGbMGNWtW7dc+7tSWb+jl6tdu7Zuu+02xwXOhaeIKnpm4uuvv9bevXud2lauXClfX1917txZkhynU6/87NauXVumfVit1jLVGxYWphtvvFErV650+pxyc3OVmJjouIMKuBwzN6jx9u/f77j+4sSJE9q+fbuWLl2q2rVra82aNY7/Qy9OSEiIpk+frueee06//fab4/bRb775RqdOnVJsbKzq1aunV155RaNHj9aZM2d07733KiAgQCdPntTevXt18uTJUsNRaWbNmqXbbrtNzz33nN566y3NmDFD//73v9W7d28988wzatiwof71r39p/fr1eumll+Tv7+/q23TNyvM+PPfcc+rfv7/69OmjJ554Qvn5+Zo1a5bq1q3rdArPYrHogQce0JIlS3TTTTepQ4cO+u9//6uVK1cW2f/8+fPVrVs3de/eXQ8//LBCQkJ09uxZHT58WOvWrdPWrVvLfTwvv/yyxo8fr7vuukt//vOfFRgYqMOHD2vv3r2O2bRCkydP1ogRI2SxWDRx4sRy7etavqPx8fHaunWrBg4cqGbNmunChQtasmSJJDl+/M/X11fNmzfXRx99pKioKDVs2FA33HBDkV8FLqvg4GDdc889evbZZ2Wz2fT2229ry5YtmjVrliNIdOnSRWFhYZo2bZry8vLUoEEDrVmzpti7l4pz6623KikpSevWrZPNZpOv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4uLiFBsbW7FFA2UU8tR6d5fgFkdnDnR3CQCuY24/LeXl5aWWLVsqIiJCcXFx6tChg+bPn19s36CgIGVlZTm1nThxQh4eHmrUqFGxY2JiYpSdne14ZWRkVPgxAACA6sPtMzdXMgzD6TTS5SIjI7Vu3Tqnts2bNysiIkKenp7FjrFarbJarRVeJwAAqJ7cOnMzffp0bd++XUePHtW+ffv09NNPKykpSSNHjpT0+6zLqFGjHP0nTJigY8eOaerUqTpw4ICWLFmixYsXa9q0ae46BAAAUM24debm559/1oMPPqjMzEz5+/urffv22rRpk/r06SNJyszMVHp6uqN/aGioNmzYoClTpui1115TcHCwFixYwG3gAADAwa3hZvHixaWuT0hIKNLWs2dP7d69u5IqAgAANZ3bLygGAACoSIQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKoQbAABgKm4NN3FxcerSpYt8fX0VEBCgIUOG6ODBg6WOSUpKksViKfL69ttvq6hqAABQnbk13CQnJ+uRRx7Rjh07tGXLFuXl5alv377Kzc296tiDBw8qMzPT8WrVqlUVVAwAAKo7D3fufNOmTU7LS5cuVUBAgHbt2qUePXqUOjYgIED169evxOoAAEBNVK2uucnOzpYkNWzY8Kp9O3XqJJvNpqioKG3btq2ySwMAADWEW2duLmcYhqZOnapu3bqpXbt2Jfaz2Wx64403FB4eLrvdrhUrVigqKkpJSUnFzvbY7XbZ7XbHck5OTqXUDwAAqodqE24effRRffXVV/r8889L7RcWFqawsDDHcmRkpDIyMjRnzpxiw01cXJxiY2MrvF4AAFA9VYvTUo899pjWrl2rbdu2qUmTJuUef/vtt+vQoUPFrouJiVF2drbjlZGRca3lAgCAasylmZsjR44oNDT0mnduGIYee+wxrVmzRklJSS5vMy0tTTabrdh1VqtVVqv1WsoEAAA1iEvhpmXL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3AAAAFMh3AAAAFMh3AAAAFMh3AAAAFMh3AAAAFMh3AAAAFMh3AAAAFNxa7j57LPPNGjQIAUHB8tisejDDz8stX9SUpLjyeSXv7799tuqKRgAAFR75Xq2VEXLzc1Vhw4d9NBDD2n48OFlHnfw4EH5+fk5lhs3blwZ5QEAgBrIreFmwIABGjBgQLnHBQQEqH79+hVfEAAAqPFq5DU3nTp1ks1mU1RUlLZt2+bucgAAQDXi1pmb8rLZbHrjjTcUHh4uu92uFStWKCoqSklJSerRo0exY+x2u+x2u2M5JyenqsoFAABuUKPCTVhYmMLCwhzLkZGRysjI0Jw5c0oMN3FxcYqNja2qEgEAgJvVyNNSl7v99tt16NChEtfHxMQoOzvb8crIyKjC6gAAQFWrUTM3xUlLS5PNZitxvdVqldVqrcKKAACAO7k13Jw7d06HDx92LB85ckR79uxRw4YN1axZM8XExOj48eNavny5JGnevHkKCQlR27ZtdfHiRb399ttKTExUYmKiuw4BAABUM24NN6mpqerdu7djeerUqZKk0aNHKyEhQZmZmUpPT3esv3jxoqZNm6bjx4+rTp06atu2rdavX6/o6Ogqrx0AAFRPbg03vXr1kmEYJa5PSEhwWn7yySf15JNPVnJVAACgJqvxFxQDAABcjnADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMxa3h5rPPPtOgQYMUHBwsi8WiDz/88KpjkpOTFR4eLm9vb7Vo0ULx8fGVXygAAKgx3BpucnNz1aFDB7366qtl6n/kyBFFR0ere/fuSktL0/Tp0zVp0iQlJiZWcqUAAKCm8HDnzgcMGKABAwaUuX98fLyaNWumefPmSZJat26t1NRUzZkzR8OHD6+kKgEAQE1So665SUlJUd++fZ3a+vXrp9TUVF26dMlNVQEAgOrErTM35ZWVlaXAwECntsDAQOXl5enUqVOy2WxFxtjtdtntdsdyTk5OpdcJAADcp0aFG0myWCxOy4ZhFNteKC4uTrGxsZVeFwDg+hLy1Hp3l+AWR2cOdHcJV1WjTksFBQUpKyvLqe3EiRPy8PBQo0aNih0TExOj7OxsxysjI6MqSgUAAG5So2ZuIiMjtW7dOqe2zZs3KyIiQp6ensWOsVqtslqtVVEeAACoBtw6c3Pu3Dnt2bNHe/bskfT7rd579uxRenq6pN9nXUaNGuXoP2HCBB07dkxTp07VgQMHtGTJEi1evFjTpk1zR/kAAKAacuvMTWpqqnr37u1Ynjp1qiRp9OjRSkhIUGZmpiPoSFJoaKg2bNigKVOm6LXXXlNwcLAWLFjAbeAAAMDBreGmV69ejguCi5OQkFCkrWfPntq9e3clVgUAAGqyGnVBMQAAwNUQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKm4Pdy8/vrrCg0Nlbe3t8LDw7V9+/YS+yYlJclisRR5ffvtt1VYMQAAqM7cGm5WrVqlxx9/XE8//bTS0tLUvXt3DRgwQOnp6aWOO3jwoDIzMx2vVq1aVVHFAACgunNruJk7d67GjRun8ePHq3Xr1po3b56aNm2qhQsXljouICBAQUFBjlft2rWrqGIAAFDduS3cXLx4Ubt27VLfvn2d2vv27asvv/yy1LGdOnWSzWZTVFSUtm3bVpllAgCAGsbDXTs+deqU8vPzFRgY6NQeGBiorKysYsfYbDa98cYbCg8Pl91u14oVKxQVFaWkpCT16NGj2DF2u112u92xnJOTU3EHAQAAqh23hZtCFovFadkwjCJthcLCwhQWFuZYjoyMVEZGhubMmVNiuImLi1NsbGzFFQwAAKo1t52WuuGGG1S7du0iszQnTpwoMptTmttvv12HDh0qcX1MTIyys7Mdr4yMDJdrBgAA1Z/bwo2Xl5fCw8O1ZcsWp/YtW7aoa9euZd5OWlqabDZbieutVqv8/PycXgAAwLzcelpq6tSpevDBBxUREaHIyEi98cYbSk9P14QJEyT9Puty/PhxLV++XJI0b948hYSEqG3btrp48aLefvttJSYmKjEx0Z2HAQAAqhG3hpsRI0bo9OnT+uc//6nMzEy1a9dOGzZsUPPmzSVJmZmZTr95c/HiRU2bNk3Hjx9XnTp11LZtW61fv17R0dHuOgQAAFDNuP2C4okTJ2rixInFrktISHBafvLJJ/Xkk09WQVUAAKCmcvvjFwAAACoS4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJiK28PN66+/rtDQUHl7eys8PFzbt28vtX9ycrLCw8Pl7e2tFi1aKD4+vooqBQAANYFbw82qVav0+OOP6+mnn1ZaWpq6d++uAQMGKD09vdj+R44cUXR0tLp37660tDRNnz5dkyZNUmJiYhVXDgAAqiu3hpu5c+dq3LhxGj9+vFq3bq158+apadOmWrhwYbH94+Pj1axZM82bN0+tW7fW+PHjNXbsWM2ZM6eKKwcAANWV28LNxYsXtWvXLvXt29epvW/fvvryyy+LHZOSklKkf79+/ZSamqpLly5VWq0AAKDm8HDXjk+dOqX8/HwFBgY6tQcGBiorK6vYMVlZWcX2z8vL06lTp2Sz2YqMsdvtstvtjuXs7GxJUk5OzrUegksK7Ofdsl93c9f77W583tcXPu/rC5+3e/ZrGMZV+7ot3BSyWCxOy4ZhFGm7Wv/i2gvFxcUpNja2SHvTpk3LWyqugf88d1eAqsTnfX3h876+uPvzPnv2rPz9/Uvt47Zwc8MNN6h27dpFZmlOnDhRZHamUFBQULH9PTw81KhRo2LHxMTEaOrUqY7lgoICnTlzRo0aNSo1RJlNTk6OmjZtqoyMDPn5+bm7HFQyPu/rC5/39eV6/bwNw9DZs2cVHBx81b5uCzdeXl4KDw/Xli1bNHToUEf7li1bNHjw4GLHREZGat26dU5tmzdvVkREhDw9PYsdY7VaZbVandrq169/bcXXYH5+ftfVP4brHZ/39YXP+/pyPX7eV5uxKeTWu6WmTp2qt956S0uWLNGBAwc0ZcoUpaena8KECZJ+n3UZNWqUo/+ECRN07NgxTZ06VQcOHNCSJUu0ePFiTZs2zV2HAAAAqhm3XnMzYsQInT59Wv/85z+VmZmpdu3aacOGDWrevLkkKTMz0+k3b0JDQ7VhwwZNmTJFr732moKDg7VgwQINHz7cXYcAAACqGbdfUDxx4kRNnDix2HUJCQlF2nr27Kndu3dXclXmY7VaNWPGjCKn6GBOfN7XFz7v6wuf99VZjLLcUwUAAFBDuP3ZUgAAABWJcAMAAEyFcAMAAEyFcAMAAEyFcAMAQA3DvUClI9wAAFDDWK1WHThwwN1lVFtu/50buEdGRoZmzJihJUuWuLsUVLBffvlFy5Yt06FDh2Sz2TR69GgeFGsyBw4c0I4dOxQZGalbbrlF3377rebPny+73a4HHnhAd955p7tLRAW5/NmIl8vPz9fMmTMdz1WcO3duVZZV7fE7N9epvXv3qnPnzsrPz3d3KbhGwcHB2rdvnxo1aqQjR46oa9eukqRbb71VBw4c0NmzZ7Vjxw7dcsstbq4UFWHTpk0aPHiw6tWrp/Pnz2vNmjUaNWqUOnToIMMwlJycrI8//piAYxK1atVShw4dijwTMTk5WREREapbt64sFou2bt3qngKrKcKNSa1du7bU9T/88IOeeOIJwo0J1KpVS1lZWQoICNCf/vQnZWVlaf369fLx8ZHdbte9994rb29vvffee+4uFRWga9euuvPOO/X888/r3Xff1cSJE/Xwww/rhRdekCQ9/fTT2rlzpzZv3uzmSlER4uLi9Oabb+qtt95yCqyenp7au3ev2rRp48bqqi/CjUnVqlVLFoul1IvOLBYL4cYELg83LVq0KPIfwf/85z+69957lZGR4cYqUVH8/f21a9cutWzZUgUFBbJarfrPf/6jzp07S5L279+vu+66S1lZWW6uFBVl586deuCBBzRo0CDFxcXJ09OTcHMVXFBsUjabTYmJiSooKCj2xfO5zMVisUiS7Ha7AgMDndYFBgbq5MmT7igLlaxWrVry9vZ2OmXh6+ur7Oxs9xWFCtelSxft2rVLJ0+eVEREhPbt2+f4N4/iEW5MKjw8vNQAc7VZHdQsUVFR6ty5s3JycvTdd985rUtPT9cNN9zgpspQ0UJCQnT48GHHckpKipo1a+ZYzsjIkM1mc0dpqET16tXTsmXLFBMToz59+jDrfhXcLWVS//u//6vc3NwS17ds2VLbtm2rwopQWWbMmOG07OPj47S8bt06de/evSpLQiV6+OGHnf6wtWvXzmn9xo0buZjYxO677z5169ZNu3btUvPmzd1dTrXFNTcAAMBUOC0FAABMhXADAABMhXADAABMhXADoEpZLBZ9+OGH7i6jVGPGjNGQIUPcXQYAFxFuAFyzMWPGyGKxyGKxyNPTU4GBgerTp4+WLFmigoICp76ZmZkaMGBApdTx2GOPqVWrVsWuO378uGrXrq0PPvigUvYNoPog3ACoEP3791dmZqaOHj2qjRs3qnfv3po8ebLuvvtu5eXlOfoFBQXJarVWSg3jxo3T4cOHtX379iLrEhIS1KhRIw0aNKhS9g2g+iDcAKgQVqtVQUFBuvHGG9W5c2dNnz5dH330kTZu3KiEhARHvytPS/3444+677771LBhQ9WtW1cRERH6z3/+41i/bt06hYeHy9vbWy1atFBsbKxTWLpcx44d1blz52Kfdp+QkKBRo0apVq1aGjdunEJDQ1WnTh2FhYVp/vz5pR5bSEiI5s2bV2Rfzz77rGM5Oztbf/nLXxQQECA/Pz/deeed2rt3b6nbBVA5CDcAKs2dd96pDh06lHgq6Ny5c+rZs6d++uknrV27Vnv37tWTTz7pOJX18ccf64EHHtCkSZP0zTffaNGiRUpISHA8JLI448aN03vvvadz58452pKTk3X48GGNHTtWBQUFatKkiVavXq1vvvlGzzzzjKZPn67Vq1e7fJyGYWjgwIHKysrShg0btGvXLnXu3FlRUVE6c+aMy9sF4BrCDYBKdcstt+jo0aPFrlu5cqVOnjypDz/8UN26dVPLli31xz/+UZGRkZKkF154QU899ZRGjx6tFi1aqE+fPnruuee0aNGiEvd3//33Kz8/3+kp6EuWLFFkZKTatGkjT09PxcbGqkuXLgoNDdXIkSM1ZsyYawo327Zt0759+/Tee+8pIiJCrVq10pw5c1S/fn29//77Lm8XgGt4/AKASmUYRokP+duzZ486deqkhg0bFrt+165d2rlzp9NMTX5+vi5cuKDz588XedSEJNWvX1/Dhg3TkiVL9NBDD+ns2bNKTEx0Oq0UHx+vt956S8eOHdNvv/2mixcvqmPHji4f465du3Tu3Dk1atTIqf23337T999/7/J2AbiGcAOgUh04cEChoaHFrqtTp06pYwsKChQbG6thw4YVWeft7V3iuHHjxikqKkqHDh1ScnKyJGnEiBGSpNWrV2vKlCl6+eWXFRkZKV9fX82ePdvpOp8r1apVq8iDZi9duuRUp81mU1JSUpGxlz+xG0DVINwAqDRbt27Vvn37NGXKlGLXt2/fXm+99ZbOnDlT7OxN586ddfDgQbVs2bJc++3du7datGihhIQEbdu2TX/84x/l6+srSdq+fbu6du2qiRMnOvpfbXalcePGyszMdCzn5OToyJEjTnVmZWXJw8NDISEh5aoVQMXjmhsAFcJutysrK0vHjx/X7t279eKLL2rw4MG6++67NWrUqGLH/OlPf1JQUJCGDBmiL774Qj/88IMSExOVkpIiSXrmmWe0fPlyPfvss/r666914MABrVq1Sn//+99LrcViseihhx7SwoULlZKSonHjxjnWtWzZUqmpqfr444/13Xff6R//+Id27txZ6vbuvPNOrVixQtu3b9f+/fs1evRo1a5d27H+rrvuUmRkpIYMGaKPP/5YR48e1Zdffqm///3vSk1NLetbCKCCEG4AVIhNmzbJZrMpJCRE/fv317Zt27RgwQJ99NFHTkHgcl5eXtq8ebMCAgIUHR2tW2+9VTNnznT079evn/79739ry5Yt6tKli26//XbNnTtXzZs3v2o9Y8aMUXZ2tsLCwnTHHXc42idMmKBhw4ZpxIgRuu2223T69GmnWZzixMTEqEePHrr77rsVHR2tIUOG6KabbnKst1gs2rBhg3r06KGxY8fq5ptv1n333aejR48qMDCwLG8fgApkMa48kQwAAFCDMXMDAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABM5f8BDJltvo0FbggAAAAASUVORK5CYII=",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "np.random.seed(42) \n",
+ "lançamentos = []\n",
+ "for i in range (10): \n",
+ " lançamentos.append(random.choice(np.arange(1,7,1)))\n",
+ "\n",
+ "df = pd.DataFrame(lançamentos, columns = ['Roll'])\n",
+ "\n",
+ "sorted_lançamentos = sorted(lançamentos)\n",
+ "frequency_distribuition = pd.Series(sorted_lançamentos).value_counts()\n",
+ "\n",
+ "#mean using the frequency distribuition\n",
+ "\n",
+ "sum_products = 0 \n",
+ "sum_frequencies = 0 \n",
+ "\n",
+ "for dice_value, frequency in frequency_distribuition.iteritems(): \n",
+ " sum_products += dice_value * frequency \n",
+ " sum_frequencies += frequency \n",
+ "\n",
+ "mean = sum_products / sum_frequencies \n",
+ "print(\"Mean:\", mean)\n",
+ "\n",
+ "frequency_distribuition.plot(kind='bar')\n",
+ "plt.xlabel ('Dice Value')\n",
+ "plt.ylabel ('Frequency')\n",
+ "plt.title ('Dice Roll Frequency Distribuition')\n",
+ "\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### 3.- Define a function to calculate the median. You are not allowed to use any methods or functions that directly calculate the median value. \n",
+ "**Hint**: you might need to define two computation cases depending on the number of observations used to calculate the median."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'length' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[1;32mIn[16], line 6\u001b[0m\n\u001b[0;32m 2\u001b[0m sorted_data \u001b[39m=\u001b[39m \u001b[39msorted\u001b[39m(data)\n\u001b[0;32m 4\u001b[0m length \u001b[39m=\u001b[39m \u001b[39mlen\u001b[39m(sorted_data) \n\u001b[1;32m----> 6\u001b[0m \u001b[39mif\u001b[39;00m length \u001b[39m%\u001b[39m \u001b[39m2\u001b[39m \u001b[39m==\u001b[39m \u001b[39m1\u001b[39m:\n\u001b[0;32m 7\u001b[0m median \u001b[39m=\u001b[39m \u001b[39msorted\u001b[39m\u001b[39m.\u001b[39mdata[length \u001b[39m/\u001b[39m\u001b[39m/\u001b[39m \u001b[39m2\u001b[39m]\n\u001b[0;32m 8\u001b[0m \u001b[39melse\u001b[39;00m: \n",
+ "\u001b[1;31mNameError\u001b[0m: name 'length' is not defined"
+ ]
+ }
+ ],
+ "source": [
+ "def calculate_median(data):\n",
+ " sorted_data = sorted(data)\n",
+ "\n",
+ " length = len(sorted_data) \n",
+ " \n",
+ "if length % 2 == 1:\n",
+ " median = sorted.data[length // 2]\n",
+ "else: \n",
+ " middle_right = sorted_data [length // 2]\n",
+ " middle_left = sorted_data [length // 2-1]\n",
+ " median = (middle_left + middle_right) / 2 \n",
+ "\n",
+ "return median "
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### 4.- Define a function to calculate the four quartiles. You can use the function you defined above to compute the median but you are not allowed to use any methods or functions that directly calculate the quartiles. "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def calculate_quartiles (data):\n",
+ " sorted_data = sorted(data)\n",
+ " length = len(sorted_data)\n",
+ "\n",
+ " q1_index = length // 4\n",
+ " q2_index = length // 2\n",
+ " q3_index = (length * 3) // 4\n",
+ "\n",
+ " if length % 2 == 1:\n",
+ " q1 = calculate_median(sorted_data[:q1_index])\n",
+ " q2 = calculate_median(sorted_data)\n",
+ " q3 = calculate_median(sorted_data[q3_index + 1:])\n",
+ " else: \n",
+ " q1 = calculate_median(sorted_data[:q1_index])\n",
+ " q2 = calculate_median(sorted_data)\n",
+ " q3 = calculate_median(sorted_data[q3_index:])\n",
+ "\n",
+ "return q1, q2, q3"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Challenge 3\n",
+ "Read the csv `roll_the_dice_hundred.csv` from the `data` folder.\n",
+ "#### 1.- Sort the values and plot them. What do you see?"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "