{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "5505d2e3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Päivitetty 2025-11-30 / Aki Taanila\n" ] } ], "source": [ "from datetime import datetime\n", "print(f'Päivitetty {datetime.now().date()} / Aki Taanila')" ] }, { "cell_type": "markdown", "id": "87d52bcb", "metadata": {}, "source": [ "## Barplot - määrällisten muuttujien yhteenvetoja\n", "\n", "Seabornin **barplot** esittää oletuksena keskiarvoja. Pylvään päässä näkyvä viiva kuvaa keskiarvon 95 % luottamusväliä. Lisätietoa https://seaborn.pydata.org/generated/seaborn.barplot.html.\n", "\n", "\n", "### Tuonnit ja alkuvalmistelut\n", "\n", " Grafiikan tyylimäärittelyssä voit käyttää **'whitegrid'** sijasta **'white'**, **'dark'**, **'darkgrid'** tai **'ticks'**. Voit myös jättää tyylimäärittelyn tekemättä." ] }, { "cell_type": "code", "execution_count": 2, "id": "6cf278ec", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "sns.set_style('whitegrid')" ] }, { "cell_type": "markdown", "id": "607204cf-0661-473a-b145-3df48201b52d", "metadata": {}, "source": [ "### Datojen avaaminen\n", "\n", "Seaborn-paketin esimerkkidata **penguins** sisältää tietoja pingviinilajeista eri saarilla." ] }, { "cell_type": "code", "execution_count": 3, "id": "2be1021a-04be-4765-9ec7-0c7483610da2", "metadata": {}, "outputs": [ { "data": { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
speciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gsex
0AdelieTorgersen39.118.7181.03750.0Male
1AdelieTorgersen39.517.4186.03800.0Female
2AdelieTorgersen40.318.0195.03250.0Female
3AdelieTorgersenNaNNaNNaNNaNNaN
4AdelieTorgersen36.719.3193.03450.0Female
........................
339GentooBiscoeNaNNaNNaNNaNNaN
340GentooBiscoe46.814.3215.04850.0Female
341GentooBiscoe50.415.7222.05750.0Male
342GentooBiscoe45.214.8212.05200.0Female
343GentooBiscoe49.916.1213.05400.0Male
\n", "

344 rows × 7 columns

\n", "
" ], "text/plain": [ " species island bill_length_mm bill_depth_mm flipper_length_mm \\\n", "0 Adelie Torgersen 39.1 18.7 181.0 \n", "1 Adelie Torgersen 39.5 17.4 186.0 \n", "2 Adelie Torgersen 40.3 18.0 195.0 \n", "3 Adelie Torgersen NaN NaN NaN \n", "4 Adelie Torgersen 36.7 19.3 193.0 \n", ".. ... ... ... ... ... \n", "339 Gentoo Biscoe NaN NaN NaN \n", "340 Gentoo Biscoe 46.8 14.3 215.0 \n", "341 Gentoo Biscoe 50.4 15.7 222.0 \n", "342 Gentoo Biscoe 45.2 14.8 212.0 \n", "343 Gentoo Biscoe 49.9 16.1 213.0 \n", "\n", " body_mass_g sex \n", "0 3750.0 Male \n", "1 3800.0 Female \n", "2 3250.0 Female \n", "3 NaN NaN \n", "4 3450.0 Female \n", ".. ... ... \n", "339 NaN NaN \n", "340 4850.0 Female \n", "341 5750.0 Male \n", "342 5200.0 Female \n", "343 5400.0 Male \n", "\n", "[344 rows x 7 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "penguins = sns.load_dataset('penguins')\n", "penguins" ] }, { "cell_type": "markdown", "id": "8dcc3a7b-aee1-479e-828a-a81ca87cb339", "metadata": {}, "source": [ "Seaborn-paketin esimerkkidata **tips** sisältää tietoja ravintolassa asioineista seurueista." ] }, { "cell_type": "code", "execution_count": 4, "id": "fef06e24-e0aa-48a4-becf-8fbc1b4304c7", "metadata": {}, "outputs": [ { "data": { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
total_billtipsexsmokerdaytimesize
016.991.01FemaleNoSunDinner2
110.341.66MaleNoSunDinner3
221.013.50MaleNoSunDinner3
323.683.31MaleNoSunDinner2
424.593.61FemaleNoSunDinner4
........................
23929.035.92MaleNoSatDinner3
24027.182.00FemaleYesSatDinner2
24122.672.00MaleYesSatDinner2
24217.821.75MaleNoSatDinner2
24318.783.00FemaleNoThurDinner2
\n", "

244 rows × 7 columns

\n", "
" ], "text/plain": [ " total_bill tip sex smoker day time size\n", "0 16.99 1.01 Female No Sun Dinner 2\n", "1 10.34 1.66 Male No Sun Dinner 3\n", "2 21.01 3.50 Male No Sun Dinner 3\n", "3 23.68 3.31 Male No Sun Dinner 2\n", "4 24.59 3.61 Female No Sun Dinner 4\n", ".. ... ... ... ... ... ... ...\n", "239 29.03 5.92 Male No Sat Dinner 3\n", "240 27.18 2.00 Female Yes Sat Dinner 2\n", "241 22.67 2.00 Male Yes Sat Dinner 2\n", "242 17.82 1.75 Male No Sat Dinner 2\n", "243 18.78 3.00 Female No Thur Dinner 2\n", "\n", "[244 rows x 7 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tips = sns.load_dataset('tips')\n", "tips" ] }, { "cell_type": "markdown", "id": "a9302149", "metadata": {}, "source": [ "### Useiden muuttujien keskiarvot\n", "\n", "Parametri `orient='y'` vaihtaa pystypylväskaavion vaakapylväskaavioksi." ] }, { "cell_type": "code", "execution_count": 5, "id": "6256bf17", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "([,\n", " ],\n", " [Text(0, 0, 'Nokan pituus, n=342'), Text(0, 1, 'Nokan leveys, n=342')])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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U/bRxOzlLly4cMMjdNnvzcWLFx3TfvjhB9WvX18bN27Uhg0bnE7rHzt2TEOHDtX27dvl6uqqkiVLOq4lvHaMd7Idvr6+cnNzc5r28MMP3/TSgHspODhYs2bN0rx58xQXF6cZM2bIz89PkZGReumll25rHcnJyRo2bJi+/vprWSwWFS9eXFWrVpV0+99def78eUlSt27dbvh89jWZNWrUUJEiRbRq1SpVqlRJX3zxhUJCQhz7/fz58zpz5ozKly9/w/WcOXNGBQsWVLt27TRjxgytW7dOtWrV0nfffed01P+dd97RjBkztGbNGn355ZeyWq2qVauWhg8ffsvLT/DgIiAB5Ij8+fMrKCgox9ebfdQtOTlZJUuWdEz/840q2Vq1aqVRo0YpJSVFa9asUbt27W77qJKp/Pnzy2KxqEuXLk5H17JdG6P3QsGCBa+72Ui6Gg2SVKhQIce0jh07KiYmRhERERo+fLiqV68ub29vZWVlqVu3bnJzc9Nnn32mcuXKydXVVT///PNNr6M0df78+etODyclJenhhx82Wo/NZnN6fO2Rz+z122w2x6nXS5cuXbeeOnXqqE6dOkpLS9P27dv10UcfafTo0apcubLjNPCtDBw4UEePHtXcuXNVpUoVubu7Ky0tTYsXL77tbXnooYckSRMnTlSJEiWuez77HwEWi0Xh4eH6/PPP1bt3b23atMnpq7AKFCigEiVKaOLEiTd8nezQfOyxx1S9enWtWbNGKSkp8vLyUuPGjZ3WM2jQIA0aNEi//PKL1q9fr2nTpikmJkZz5sy57e3Cg4NT2ADytLJly6pAgQJat26d0/S1a9deN2+zZs0kXb3L+MyZM2rZsuU9G5e3t7fKlSunX375RUFBQY6fJ598UlOnTv1bbj6oVq2a9u7dq+PHjztNX7lypfz8/FS8eHHHND8/P1ksFg0fPlzJycmaMGGCJOncuXP69ddf1b59e1WsWFGurlePK2zatEnSjY++mrpy5YrTjTbp6enatGmT43q8a/35us1s3t7e+v33352mXXvDSvbR7t9+++2m84wbN07t27eX3W6Xl5eX6tevryFDhly33K3s3r1bTZo0UY0aNeTu7i7J/P2qVKmS3NzcdOrUKafPj5ubmyZNmuR0p3+rVq106tQpxcbGymKxOF3OUb16df322296+OGHndazbds2zZkzx+kaxvbt22vr1q1auXKlmjVr5vhHzokTJxQWFua47rhkyZKKjIxUrVq1rnvPgWwcgQSQp3l7e6tr165677335OXlperVq2vnzp1asGCBJOfYKFiwoOrXr69PP/1UQUFBKlWq1D0d24ABA9StWze99tpratmypWw2mz744APt37/fcSfxvfTyyy9r5cqVevnll9WnTx8VKlRIK1as0Pbt2zV69OgbhliZMmX00ksvKS4uTi1atFC1atUUEBCg+fPny9/fXw899JC2bNmiDz/8UNKNr/+8E2+88Yb69++vhx9+WHFxcbp8+fJN36Pso3NfffWV6tatq1KlSql+/fqaOXOmZsyYocqVK+ubb75x+qoa6eoNRGPGjNFbb72lyMhI/f7775o6dary58/vmKdmzZqaO3euoqKi1LJlS125ckVz5syRj4+PatSocVvbUrFiRcXHx6t8+fLy9/fX3r17NXPmTFksltt+vwoVKqSuXbtqypQpSk1NVWhoqE6dOqUpU6bIYrGobNmyjnlLly6t8uXL69NPP1WjRo1UoEABx3Nt27bVJ598opdfflk9evRQkSJFtHXrVs2ePVsvvvii06UDTZo00ciRI7V//36nr0QKCAiQv7+/3n77baWmpurxxx/XwYMH9e2336p79+63tT148HAEEkCe1717d/Xp00crVqxQ9+7dlZCQ4LgjO1++fE7zZofcvTz6mK127dqKi4vT77//rr59+2rw4MFycXHR3Llz/5Yvnvbz89OCBQtUoUIFjRo1Sv369dNvv/2madOmqV27djddrk+fPipatKiio6P1xx9/aNq0aXr00UcVFRWl/v37a9++fZo+fbpKliyphISEHBnr8OHDNW3aNL366qtyd3fXggULnI6Q/lloaKhq1aqlSZMmady4cZKufgY6dOigDz74QD179tSpU6c0atQop+WeeOIJjRs3TidPnlS3bt304YcfauTIkU6/Oahu3bqaOHGijhw5oj59+mjAgAHy8vLSRx99JB8fn9valrFjx6pSpUoaOXKkevfura+//loxMTGqXbu20fvVv39/RUVF6auvvlJkZKQmTJigqlWr6pNPPnGKROnqUcgbfa7z5cun+fPnq2rVqpowYYIiIyO1bt06vfbaa47v08zm4eGhmjVrqkSJEtfdKT516lTVqVNHU6ZM0SuvvKIFCxaoT58+TnfmA39msfPb6gHkYZmZmfriiy8UGhqqIkWKOKbPnz9fb7/9tnbs2OE4YoW8JzY2VlOnTtVPP/2U20O5Y5s2bVJkZKQWL16sihUr5vZw7lh6errCwsLUvXt3vfLKK7k9HNznOIUNIE9zdXXV7Nmz9eGHH6pnz54qVKiQDh06pClTpqh169bEI+6pr776SvHx8bJarTn+nZR/lxMnTmj58uXaunWrJDm+xxO4GwQkgDxvxowZmjx5soYPH66LFy+qaNGi6tKlC9dn4Z7KyMjQ8OHDlZWVpQEDBty3vwfdarXq448/Vr58+TR58uTrTo8Dd4JT2AAAADDCTTQAAAAwQkACAADACAEJAAAAI9xEgxyXlZWlzMxMWa3We/Zr5AAAQM6y2+3KysqSq6vrDX8RwZ8RkMhxmZmZOnDgQG4PAwAA3IGgoCDHr+m8GQISOS77Xy3lypX7yw8gco/NZtOBAwcUFBTk9Ptykbewn+4P7Kf7A/vp1rLfn786+igRkLgHsk9bu7i48Af0PsB+uj+wn+4P7Kf7A/vp1m7n8jNuogEAAIARAhIAAABGCEgAAAAYISABAABghIAEAACAEQISAAAARghIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABghIAEAAGCEgAQAAIARAhIAAABGCEgAAAAYISCBB5iXl1duDwG3gf10f2A/3R/YTznDNbcHgH8uFxeX3B4CbsHFxUXlypXL7WHgL7Cf7g/sp/vD/bSfbFlZcrHm3eN8BCTumZGLt+rI7xdyexgAANxXnihcUG+/UCe3h3FLBCTumf+duahDJ5JzexgAACCH5d1jowAAAMiTCEgAAAAYISABAABghIAEAACAEQISAAAARghIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABghIAEAAGCEgAQAAIARAhIAAABGCEgAAAAYISABAABghIAEAACAEQISAAAARghIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABghIAEAAGCEgAQAAIARAhIAAABGCEgAAAAYISABAABghIAEAACAEQISAAAARghIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABghIAEAAGCEgAQAAIARAhIAAABGCEgAAAAYISABAABghIAEAACAEQISAAAARghIAAAAGCEgAQAAYISABAAAgBEC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V1pAFVmuOQD2ZFEfze7Z9IbLuLq6Ot3TkFty5Hsgn332WbVr106LFi1yTAsLC5MkTZw4Uenp6Tpz5oxGjRqlGjVqKCAgQNLVo2oWi0X9+/eX1WrVuHHjJEmpqany8PCQ1WpVamqqxo8fr9TUVKdYMzVp0iSlpqbq1KlTeu+999SqVSu5ubk5zZN9ZDD7BptSpUrpp59+0pEjR5SZmak5c+Y43aVdqlQpbd68WRcvXlRKSopmz57teO7kyZN65ZVXtG3bNlmtVj366KOS9JfRmhNCQkK0cOFC7dq1S1lZWdqwYYNWr16tDh06qGfPntq3b58SEhKUkJDguP4xISFB4eHhunLlirp27Spvb28tWLCAeAQA4F6yusru6u70Y3XzlLe39w1/8kI8SjlwBDLbG2+8of379+vixYuSpAIFCmju3LkaO3asIyYbNmyowYMHX7esh4eHxowZo4iICDVs2FDR0dEaOnSoqlevrvz586tevXqqU6eODh8+fMfje/zxx9WiRQulpaUpPDxcgwYNum6eRx55RI0aNVLHjh0VFRWlDh06aOvWrerSpYuysrLUunVrVa1a1TF/9+7d9eabb6phw4YqUKCA+vbtq7Vr10qSgoKCNHToUA0fPlynT59WgQIF9MILL6hZs2aSrt5JXbRoUY0YMeKOt+lmnnnmGUVHRys6OlpJSUkqUaKEYmNjHZcI3MrGjRv1ww8/yMPDw3HDUrZVq1apaNGiOT5eAABwf7HYr7375R8mMTFRDRs21Pr16x3XYOYFv/zyiz7++GMNGzYst4eS42w2m/bt26epW3/X98dufmMTAAC4XtkAX83v3+Jvf93sv78rV67sdA/LjfCrDHPJ6tWr9fzzz+f2MAAAAIzl2ClsmOnTp09uDwEAAOCO/OMDslixYvrpp59yexgAAAD/GJzCBgAAgBECEgAAAEYISAAAABghIAEAAGCEgAQAAIARAhIAAABGCEgAAAAYISABAABghIAEAACAEQISAAAARghIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABghIAEAAGCEgAQAAIARAhIAAABGCEgAAAAYISABAABghIAEAACAEQISAAAARghIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABghIAEAAGCEgAQAAIARAhIAAABGCEgAAAAYISABAABghIAEAACAEQISAAAARghIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABghIAEAAGCEgAQAAIARAhIAAABGCEgAAAAYISABAABghIAEAACAEQISAAAARghIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABghIAEAAGCEgAQAAIARAhIAAABGCEgAAAAYISABAABghIAEAACAEQISAAAARghIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABhxze0B4J+ruN9DyrDZc3sYAADcV54oXDC3h/CXCEjcM291qCUXF5fcHgYAAPcdW1aWXKx590Rx3h0Z7ns2my23h4BbsNls+s9//sN+yuPYT/cH9tP94X7aT3k5HiUCEnigpaWl5fYQcBvYT/cH9tP9gf2UMwhIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABghIAEAAGCEgAQAAIARAhIAAABGCEgAAAAYISABAABghIAEAACAEQISAAAARghIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABghIAEAAGCEgAQAAIARAhIAAABGCEgAAAAYISABAABghIAEAACAEQISAAAARghIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABghIAEAAGCEgAQAAIARAhIAAABGCEgAAAAYISCBB5iXl1duDwEAcB9yze0B4J/LxcUlt4eAW3BxcVG5cuVyexj3FXuWTRYrn2sAICBxz5xdOUy2M4dzexhAjnB7pKQeaTs2t4cBAHkCAYl75srZ/8r2+4+5PQwAAJDDuAYSAAAARghIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABghIAEAAGCEgAQAAIARAhIAAABGCEgAAAAYISABAABghIAEAACAEQISAAAARghIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABghIAEAAGCEgAQAAIARAhIAAABGCEgAAAAYISABAABghIAEAACAEQISAAAARghIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABghIAEAAGCEgAQAAIARAhIAAABGCEgAAAAYISABAABghIAEAACAEQISAAAARghIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABghIAEAAGCEgAQAAIARAhIAAABGCEgAAAAYISABAABghIAEAACAEQISAAAARghIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABghIAEAAGCEgAQAAIARAhIAAABGCEgAAAAYISABAABghIAEAACAEQISAAAARghIAAAAGCEgAQAAYISABAAAgBECEgAAAEYISAAAABghIAEAAGDEKCADAwPVrVs32e12p+nLli1TgwYNbmsdJvPejcTERAUGBioxMfGev1Ze9OOPP6pz586qWrWqQkNDNWjQIJ07d+66+S5fvqxmzZopNjbWafqCBQvUpEkTBQcHq0mTJpo/f/7fNXQAAJDHGR+B/PbbbzVnzpx7MRbkkIyMDEVGRio0NFQ7duzQV199pTNnzmjs2LHXzRsTE6P//ve/TtO+/vprTZ48WePGjdOePXs0duxYvfvuu1q7du3ftAUAACAvMw7ITp06acqUKdqzZ89N5/npp58UGRmp6tWrq27duho+fLhSUlKumy87dCIiIpSamqqMjAyNGzdOzZo1U3BwsGrWrKmRI0c6jnh26tRJkyZNUkREhIKDg9WsWTOtXr36tsadlJSkgQMH6umnn1bt2rU1dOhQpaamSpIiIiI0efJkp/k7dOjgCOUffvhBnTp1UrVq1dS4cWPNmzdPdrtdf/zxh6pVq6b4+HinbQoNDdW2bdt06tQpde3a1fE+9OnTR6dPn76t8TZo0EAzZ85U69atFRwcrNatW2v79u2SpISEBAUHB9/wZ+XKlXJ3d9e6devUs2dPubq66sKFC0pLS5Ovr6/TayxbtkwnT55UlSpVnKafOnVKkZGRqly5siwWi4KDgxUaGqpdu3bd1tiBf5o/bNKljCylpqYqNTVV6enpuT0kAMhVxgHZqFEjdezYUQMGDND58+eve/7cuXPq3LmzSpcurU2bNmnp0qX69ddfNXjwYKf50tPT1bNnT9ntdsXFxcnb21sffvihNm/erA8//FB79+7VtGnTtHDhQkc4SdJnn32mN998Uzt27FDjxo01dOhQ/fHHH7ccc1ZWlnr16iWr1aq1a9cqPj5ep0+f1tChQyVdjcWVK1cqKytLknT06FH9+OOPat26tU6dOqWXXnpJTZs21datWzVt2jR9+umnWrRokTw8PNS8eXN9/vnnjtfauHGj8ufPrxo1amjy5Mny9/fXd999p9WrV+vy5cuaNWvWbb/XS5cu1ZQpU7R1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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.barplot(penguins[['bill_length_mm', 'bill_depth_mm']], orient='y')\n", "plt.title('Pingviinien nokan pituus ja leveys')\n", "plt.xlabel('Keskiarvo mm')\n", "plt.yticks([0, 1], [f'Nokan pituus, n={penguins['bill_length_mm'].count()}', \n", " f'Nokan leveys, n={penguins['bill_depth_mm'].count()}'])" ] }, { "cell_type": "markdown", "id": "39180703", "metadata": {}, "source": [ "### Keskiarvot kategorisen muuttujan määrittämissä ryhmissä\n", "\n", "Ryhmittelevän muuttujan voit lisätä **x**- tai **y**-parametrina riippuen siitä kumman parametrin arvona on määrällinen muuuttuja. Esimerkissä käytetään vaakapylväitä, jolloin määrällinen muuttuja annetaan **x**-parametrina ja ryhmittelevä muuttuja **y**-parametrina." ] }, { "cell_type": "code", "execution_count": 6, "id": "eb3f7f54", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "([,\n", " ,\n", " ],\n", " [Text(0, 0, 'Adelie, n=151'),\n", " Text(0, 1, 'Chinstrap, n=68'),\n", " Text(0, 2, 'Gentoo, n=123')])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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BQrIYrHo1VdfdQgdyf79R+ZeXL58WYZhOBzDpUuX9NBDD0mSZs+erQULFmjUqFFq2rSpChYsKElpXvOWXoULF1ZMTIySkpIcguCFCxckSUWLFv1P25du9WLOnDlTQ4YM0aRJk/Tss8+qTJkykqSCBQuqTp069iHG291eT8uWLdWyZUvFxsbq559/1pw5czR06FD5+vraeyQ7duyo4OBgdenSRaNGjZKfn1+qQSYyMlIBAQH2a86Se/oWL15812s3pVs9k6VKldLGjRtVqlQpubi42C8hSO4d+/fNTpJ08eLFdLdneHi4AgMD9corr+i1116z/2x8/PHH+vXXX9O1jeyW1j9Sqd2Ekda5stls6t27t/LkyaOvv/5alSpVkouLi/7++2+tWbPGvv7YsWP13XffafLkyapTp47y588v6dZwLx4M3BgCmEzFihVVsGBBbdq0yWH6d999l2LZ559/XtKtOwsvXrxov54tK7i7u6tSpUo6duyYqlatan899dRTCgkJSfcQ350kJiY6BJD4+Hht27bN/kft119/Vfny5dW+fXt7ADx//rwOHz581564O/Hz85PVak3RE5f8B7dGjRr3vO1kyb2K77zzjlxcXBxubPDz89Pff/+t//3vf/Z2rVKlihYsWKDvv/9e0q07b5OHXgsWLKjnn39e/fv3l9VqtYfV5P1YLBaNGjVK0dHRmjBhQqr1HDx4UDdv3lSfPn0chnqT2/9uvUROTk5q2bKlfvzxR3377bdq3LixPWw+8cQTKlGihNauXeuwzqlTp7R//375+Pikq8327dsnm82mgQMH2gOg1Wq1D5H/l3OeVZLb4Pa7oI8dO2bvHb1dWucqJiZGx48fV/v27VWtWjX7PwLbtm2T9H/H/euvv6pWrVp69tln7QHw4MGDio6OzpVtg4yjJxAwGXd3d73++uuaOnWq8uXLJz8/P+3evVtfffWVpP8bfpRu9WA1atRIX375papWrapy5cplaW1vvfWWevfurSFDhqh169ayWq2aN2+eDhw4oH79+mXKPt59910NGjRIDz30kEJDQ3X9+nX7tqtVq6bp06dr9uzZ8vLy0smTJzVr1iwlJCTc9Zq8O2nQoIFq1aqlkSNH6sKFC6pUqZJ2796tOXPm6IUXXsjUz3osXry4Bg8erODgYK1evVpt2rRR//791alTJ/Xp00cvv/yy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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.barplot(penguins, x='body_mass_g', y='species')\n", "plt.title('Pingviinien painon keskiarvo lajin mukaan')\n", "plt.xlabel('Keskiarvo g')\n", "plt.ylabel('Pingviinin laji')\n", "\n", "n_arvot = penguins.groupby('species')['body_mass_g'].count()\n", "plt.yticks([0, 1, 2], [f'Adelie, n={n_arvot['Adelie']}', \n", " f'Chinstrap, n={n_arvot['Chinstrap']}', \n", " f'Gentoo, n={n_arvot['Gentoo']}'])" ] }, { "cell_type": "markdown", "id": "70e85263-f2bf-4294-82c4-769262320ba5", "metadata": {}, "source": [ "Keskiarvon sijasta voit käyttää myös muita tunnuslukuja. Seuraavassa esimerkissä on laskettu laskujen summa (`estimator='sum').\n", "\n", "Pylväiden nimet (**xticks**) korvataan suomenkielisillä viikonpäivillä. Ennen korvaamista on tärkeää katsoa kaaviosta, mitä viikonpäivää mikäkin pylväs edustaa. **plt.xticks**-funktion ensimmäinen parametri on viittaus korvattavien nimien numeroihin [0, 1, 2, 3]. Toisena parametrina annetaan korvattavat arvot." ] }, { "cell_type": "code", "execution_count": 7, "id": "0948c11e-951e-4aa7-b075-6502d94b56ed", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "([,\n", " ,\n", " ,\n", " ],\n", " [Text(0, 0, 'Torstai'),\n", " Text(1, 0, 'Perjantai'),\n", " Text(2, 0, 'Lauantai'),\n", " Text(3, 0, 'Sunnuntai')])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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+jMUvPXWW3r11VclSd7e3vryyy+1a9euv71W4urVq+rVq5fs7e21YsUKlS1bVtKfZ5KOHDmiNWvWyNvbW5LUrFkzZWZmauHCherUqZOcnJxM+/nmm280fPhw9enTR++8806uPlSrVk1Lly419cHPz08BAQGaP3++5syZY2r76quvmsahcePG+uqrr7Rr1y516tRJFy9elIODg0aMGKEGDRpIknx9fXXmzBmtXbv2nn376aeflJaWpr59+6pixYqSpMqVK+vrr7/WjRs3dPPmTR07dkz9+vUzjZWnp6cWLFigW7duPXhw7qFZs2amvru6uurzzz9X+fLlTcGsadOm2rZtmw4dOqQXX3zxH2938uRJVapUSe+++67pmpRGjRopLi5O33///X3r++yzzxQfH69PP/1U9erVkyQ1b95c3bp106xZs7RhwwZTW09PT/Xp08d0++eff87TY1CuXDktWrRItra2atGihaytrTV9+nQdPXpUtWrV0qVLl9SnTx+FhISYtilWrJgGDBighIQEeXl55dpflSpV1LBhQ33++efq1KmTpD/PTh46dEgzZ868bx3JycnauHGj6fEpUaKEunbtqv3796t169aKj4/Xc889pzlz5sje3t70OO/cuVMHDhxQ27Zt89RfPN4IPjCk2+9ISk5O1smTJ3Xy5EnTf7+3p7J8fX01e/Zsde7cWQEBAWrevLm6du16175Wr16tw4cPKzAwUK1atXqoum7evKkff/xRb775pnJyckxTPtWqVVPNmjW1Z88eU/CRlOsPRrFixVSuXLl7/gf9VyEhITpy5Eiu0CNJ33//vapWrWoKPbe1a9dO69ev148//mgKCz///LOioqJUoUIFDRo0yNT2xo0biouLU2hoqCn0SFKZMmXUqlWru6Ye/vpHr1KlSqY+VKxYUStXrpT05x++3377TceOHdOhQ4fuO+VYr149FS9eXB06dNBLL72kFi1aqEGDBvL09JQklSxZUq6urho3bpz27t2r5s2by8/PT6NGjfrbx+1e7qz/9pmI2wFDkqysrOTo6Kjk5OSH2u7ZZ5/VmjVrlJ2drdOnT+vkyZM6evSojh8/nmtq8K/27dsnFxcX1alTJ1e7Vq1aaebMmbp+/bocHR0lSbVr1853/yWpTZs2srX9vz8nrVu31vTp03Xw4EHVqlVLs2bNkvTntOVvv/2m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Oy+buwxYqPz8/ba4qS4AAIDCQvABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAOD/y8rONncJ+P8KayxsC2WvAAA8hmysrTV2zW6duHjd3KUY2lMVHDWlc7NC2TfBBwCAO5y4eF3xZ5PMXQYKCVNdAADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMAg+AADAMMwafJKSkhQQEKDo6GjTsgkTJqhu3bry8vIy/axbt860ftOmTQoICFD9+vUVFBSk2NhY07qsrCzNmDFDTZo0kZeXl/r376+LFy8+0j4BAADLZbbgExMTo44dO+rUqVO5lsfFxWny5MmKjY01/XTs2FGSFB0drcmTJ+vdd9/VgQMH1K5dO/Xv3183b96UJEVERGjPnj3asGGDdu/eLXt7e40dO/aR9w0AAFgmW3Pc6aZNmzRv3jwNGzZMgwcPNi1PT0/XkSNHVLdu3XtuFxkZqTZt2sjb21uS1KNHD61bt05RUVEKDg5WZGSkwsLCVLlyZUnSmDFj5Ofnp9OnT6tatWp5ri8rK+shegegKLGxsTF3CbhDYb8+M96WJa/jnZ/nhVmCj5+fn9q2bStbW9tcwSc+Pl6ZmZmaN2+eYmJiVLp0aQUHByskJETW1tZKTExUcHBwrn25uroqPj5eycnJOn/+vGrXrm1a5+zsLEdHRyUkJOQr+MTFxT18JwE89hwcHOTu7m7uMnCHhIQE01n+gsZ4W57CGG+zBB8XF5d7Lk9OTpaPj4+6deum999/X7/++qtCQ0NlbW2tkJAQpaamysHBIdc29vb2unHjhlJTUyVJJUqUuGv97XV55eHhQeoHAAvk5uZm7hLwCOV1vLOysvJ80sIswed+mjZtqqZNm5pue3p6qnv37oqKilJISIgcHByUlpaWa5u0tDSVLVvWFIj+mgzT0tJUsmTJfNVhY2ND8AEAC8Rrs7EUxnhb1NvZv/rqK61duzbXsvT0dNnb20uSatWqpaNHj+Zan5iYqFq1asnR0VEVK1ZUYmKiad2lS5d07dq1XNNfAADAuCwq+OTk5Gj69Onat2+fcnJyFBsbq5UrV5re1dWhQwdt2bJF+/fvV0ZGhlasWKErV64oICBAkhQUFKSIiAidPn1aKSkpmjZtmnx8fFS9enVzdgsAAFgIi5rqCggI0KhRoxQeHq4LFy7I2dlZAwYMUGBgoCSpcePGmjBhgmm9q6urlixZIicnJ0lSaGioMjMz1aVLF6WmpsrX11dz5swxX4cAAIBFMXvwSUhIyHW7U6dO6tSp033bBwYGmoLQX9nZ2SksLExhYWEFWiMAACgaLGqqCwAAoDARfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGEQfAAAgGGYNfgkJSUpICBA0dHRpmU7duxQYGCgnnvuOfn7+2vBggXKzs42rX/xxRdVr149eXl5mX6OHTsmScrKytKMGTPUpEkTeXl5qX///rp48eIj7xcAALBMZgs+MTEx6tixo06dOmVadvjwYQ0fPlzvvPOODh48qCVLlmjjxo1asWKFJCklJUUnTpxQVFSUYmNjTT81a9aUJEVERGjPnj3asGGDdu/eLXt7e40dO9Yc3QMAABbILMFn06ZNCgsL0+DBg3MtP3v2rDp16qRWrVrJ2tpaNWvWVEBAgA4cOCDpz2Dk5OSkqlWr3nO/kZGR6t27typXrqxSpUppzJgx+u6773T69OlC7xMAALB8tua4Uz8/P7Vt21a2tra5wk/r1q3VunVr0+20tDTt2rVLbdu2lSTFxcXJwcFBXbt21dGjR1W1alUNGDBArVq1UnJyss6fP6/atWubtnd2dpajo6MSEhJUrVq1PNeXlZVVAL0EUBTY2NiYuwTcobBfnxlvy5LX8c7P88IswcfFxeVv26SkpGjQoEGyt7dXjx49JElWVlby8PDQkCFDVKVKFW3fvl0DBgzQqlWrVKlSJUlSiRIlcu3H3t5eqamp+aovLi4uX+0BFE0ODg5yd3c3dxm4Q0JCgm7evFko+2a8LU9hjLdZgs/fOX78uAYOHKjy5ctr5cqVKlWqlCQpJCQkV7t27dpp69at2rFjh/r16ydJdz1AaWlpKlmyZL7u38PDg9QPABbIzc3N3CXgEcrreGdlZeX5pIXFBZ9vv/1WQ4YM0WuvvaahQ4fK1vb/Sly2bJnc3d3VuHFj07L09HQVL15cjo6OqlixohITE03TXZcuXdK1a9dyTX/lhY2NDcEHACwQr83GUhjjbVGf4/PDDz8oNDRUo0aN0ogRI3KFHkn6/fffNXHiRJ0+fVqZmZlav369YmNj1b59e0lSUFCQIiIidPr0aaWkpGjatGny8fFR9erVzdEdAABgYSzqjM+iRYuUmZmpqVOnaurUqabl3t7eWrp0qYYPHy5ra2t17txZycnJcnV11UcffaQnn3xSkhQaGqrMzEx16dJFqamp8vX11Zw5c8zUGwAAYGnMHnwSEhJMvy9atOiBbYsVK6bRo0dr9OjR91xvZ2ensLAwhYWFFWiNAACgaLCoqS4AAIDCRPABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfApAFnZ2eYuAf8fYwEAeBBbcxdQFNhYW2vsmt06cfG6uUsxtKcqOGpK52bmLgMAYMEIPgXkxMXrij+bZO4yAADAAzDVBQAADIPgAwAADIPgAwAADIPgAwAADIPgAwAADIPgAwAADIPgAwAADIPgAwAADIPgAwAADIPgAwAADOMffWXF/v37deHCBeXk5EiSMjIylJCQoLFjxxZocQAAAAUp38FnypQpWrt2rUqWLClJysrKUmpqqpo148shAQCAZct38Nm2bZtWrVqlmzdvavPmzZo2bZpmzJihGzduFEZ9AAAABSbf1/jcvHlT9evXl6urq37++WdZWVnp7bff1q5du/J950lJSQoICFB0dLRp2Y8//qhXX31VXl5e8vf3V2RkZK5tNm3apICAANWvX19BQUGK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kKurq5YsWSInJyfzdgoAAFgEiws+kuTj46O1a9fec52Hh8d910lSYGCgAgMDC6s0AADwGLO4qS4AAIDCQvABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfABAACGQfAB8ikrO9vcJeD/YywA5JetuQsAHjc21tYau2a3Tly8bu5SDO2pCo6a0rmZucsA8Jgh+AD/wImL1xV/NsncZQAA8ompLgAAYBgEHwAAYBgEHwAAYBgEHwAAYBgEHwAAYBgEHwAAYBgEHwAAYBgEHwAAYBgWGXzi4+PVs2dP+fj4qGnTpho+fLiSkv78sLgJEyaobt268vLyMv2sW7fOtO2mTZsUEBCg+vXrKygoSLGxsebqBgAAsDAWF3zS0tIUEhIiLy8v/fe//9XWrVt17do1jR49WpIUFxenyZMnKzY21vTTsWNHSVJ0dLQmT56sd999VwcOHFC7du3Uv39/3bx505xdAgAAFsLigs+5c+f0zDPPKDQ0VMWKFVPZsmXVsWNHHThwQOnp6Tpy5Ijq1q17z20jIyPVpk0beXt7y87OTj169FDZsmUVFRX1iHsBAAAskcV9V9fTTz+tpUuX5lq2Y8cO1alTR/Hx8crMzNS8efMUExOj0qVLKzg4WCEhIbK2tlZiYqKCg4Nzbevq6qr4+Ph81ZCVlZWv9jY2Nvlqj8KV3/HLL8bbsjDexsJ4G0texzs/zwuLCz53ysnJ0Zw5c/TNN99o1apVunz5snx8fNStWze9//77+vXXXxUaGipra2uFhIQoNTVVDg4OufZhb2+vGzdu5Ot+4+Li8tzWwcFB7u7u+do/CldCQkKhTW8y3paH8TYWxttYCmO8LTb4pKSkaNSoUfr555+1atUqubm5yc3NTU2bNjW18fT0VPfu3RUVFaWQkBA5ODgoLS0t137S0tJUtmzZfN23h4cHqf8x5ubmZu4S8Agx3sbCeBtLXsc7KysrzyctLDL4nDp1Sr1791aVKlW0fv16lStXTpL01Vdf6fLly+rUqZOp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+yVJvXr10rlz5zRhwgTTP9l/9/rRrVu3wnoYCxTBp4i5evWq3njjDbm6uuq7777Thg0bdOLECQ0fPtzU5ueff1bbtm21d+9eBQQEaPjw4erWrZsOHjyojz/+WNu3b9fXX3+t0NBQtW3bVm3bttXmzZuVlpam/v37q3Xr1vruu+8UHR2t6tWra+bMmWbscdGWkZGh6Oho7d+/X02bNtUHH3ygXbt2acWKFdq9e7fq1aunXr166datW6ZtTp06pV27dt01Lj/99JOmTJmi8PBwRUdHa9u2bTp58qRWrlxpavPFF1/Iz89P0dHRmjx5spYsWaIffvhB7du3V9++fdWgQQPTNOqAAQNUu3Ztffnllzp48KD8/PwUHh7+SB4Xo/jkk0+0e/duffLJJ4qNjdXChQu1du1a0x+nB8nL8Xr27FlduHBBX375pSIjIxUbG6s1a9aoWrVqWrJkiSQpNjZWXl5emjVrls6cOaP169crNjZWY8eO1QcffMA1gH+jTZs2mjBhgsLDwxUVFaWzZ8/KxcVF7777rsqVK5enfezatUv/+c9/tGPHDl2+fFkLFy40rTt06JDKly+v3bt3a/HixYqKitIXX3yR5/o2bNiguXPnau/evXrmmWdMx/Dy5ctVpUoVTZw4UePHj8/T68fjwnLPseEf+frrr2VnZ2f6mg57e3uNGzdObdq00aVLlyRJdnZ2CgwMlLX1n7m3ePHi2rZtm5ycnNSwYUN9++23pnV3srOz07p16/Tkk0/q1q1bOnv2rJycnBQXF/dI+1jUTZw4UdOmTTPdrlSpknr27KmuXbvqueee07x581StWjVJUmhoqD799FPt2rVLrVu3liS9/PLLcnBwkIODQ6791q5dW1u3btUTTzyh69ev6+LFiypXrpwuXLhgalOjRg298sorkqQWLVrIxcVFJ0+eVP369e+qc/HixapYsaJycnJ09uxZlSlTJte+8PBee+01tW/fXuXLl9fFixeVlpamkiVL5ulxzuvxGhoaKnt7ez355JPy9fXViRMn7rm/AQMGyMbGRqVKldL58+dVvHhxSdLFixf15JNPPnxni6jbZ2CjoqI0fvx4JScnq3r16howYECep6F79+6tMmXKSPrzLM2d08j29vbq16+frKys5OnpKTc3t/uO4b106NDBNH5t27bVf/7zn3u2y8vrx+OC4FPEXLly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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.barplot(tips, x='day', y='total_bill', estimator='sum', errorbar=None)\n", "plt.title('Laskujen kokonaissumma eri päivinä')\n", "plt.ylabel('Dollaria')\n", "plt.xticks([0, 1, 2, 3], ['Torstai', 'Perjantai', 'Lauantai', 'Sunnuntai'])" ] }, { "cell_type": "code", "execution_count": 8, "id": "a7a28e00", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAHBCAYAAABpHrH9AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAU2NJREFUeJzt3Xl8TPf+x/FXVokti11Kt0hcBJE0xNaKpmqJRNCqVFFLKVUqlqJF1Va1FqlarirKjbVRWrelqCWNWqqtteUKriC2JKSSzPz+8DPX1JZhJgnzfj4eHo/M+Z7lcyZH8s73+51zHIxGoxERERERO+CY3wWIiIiI5BUFHxEREbEbCj4iIiJiNxR8RERExG4o+IiIiIjdUPARERERu6HgIyIiInZDwUdERETshoKPiIiI2A0FHxEr6tChA/7+/mb/qlWrxnPPPcfIkSO5dOmS2bodOnTI8xpPnDiBv78/K1asAGDFihX4+/tz4sSJXO/jfrYpCPz9/fnkk0/yuwyTsLAwBg8ebPPj3Ou8Bw8eTFhYmM3rECkInPO7AJFHTZUqVRg+fLjpdVZWFr/99huTJk1i//79fPnllzg4OJitk5dKly7N0qVLqVixIgDPPfccS5cupXTp0rnex/1sUxAsXbqUsmXL5ncZBc6bb77Ja6+9lt9liOQJBR8RKytatCg1a9Y0W/bMM8+QkZHBtGnT2Lt3LzVr1sTX1zdf6nN1dTWrz9vbG29vb4v2cT/bFAR//77IdTdCsIg90FCXSB6pVq0aAKdOnQJuHery9/dn0aJFDB06lJCQEAIDA+nTpw/nzp0z28/cuXNp3Lgx1atXp127dmzYsAF/f38SExPZtWsX/v7+fPfdd2bb/PHHH/j7+7Nu3bp7DnUNHjyYTp06sXz5cpo0aUK1atVo2bIlmzZtMu3vdkNdO3fu5NVXX6VGjRqEhIQwaNAgzp8/b7ZNlSpV2Lt3Ly+//DIBAQE899xzzJ49+67v2yeffEJYWBgbN27kxRdfpEaNGrRt25bt27ebrXfgwAF69+5NnTp1qFq1Kg0aNODDDz8kMzPT7D2+MeSTmJiIv78/27dv5/XXX6dGjRrUrVuX8ePHk52dbdrmr7/+YsaMGbz44osEBATwwgsv8Nlnn2EwGEzrdOjQgaFDh/LZZ5/x3HPPERAQQLt27di7d+9dz+3vli1bRuXKlc2GpQ4dOsQbb7xBrVq1qFWrFr169SI5Odlsuy+++MJUX4MGDRgxYgTp6el3PM7UqVOpXLkyy5YtA24d6srMzGTixIm88MILVKtWjVq1atG5c2f2799vWmfw4MF07NiR4cOHExwcTKtWrXjttdeIioq65Xh9+/alefPmptdbt26lffv2BAUFUbt2bfr3789///tfi94rkful4COSR44ePQpAhQoV7rjO5MmTMRgMTJo0iYEDB/LDDz8wZswYU/v06dP5+OOPadq0KTNnzqRGjRr069fP1F6rVi0ef/xx1q5da7bfhIQEihUrlut5HL/++itz586lT58+zJgxA2dnZ/r06WM2R+lmSUlJdOrUCTc3N6ZMmcKQIUP46aefeO2118yCh8FgoG/fvjRr1ozPPvuMoKAgPv74Y7Zs2XLXes6fP8+gQYNo3749U6dOxd3dnW7duvHrr78CcObMGWJiYrh69Srjxo1j9uzZNG3alC+++IL58+ffdd+xsbEEBQXx6aefEhERwbx580yBwGg00qNHD+bMmUObNm349NNPefHFF5kyZcotQ5Xffvst33//PcOGDWPSpEmcO3eOPn36kJOTc6+3G4C1a9fy3nvv0aNHD9566y3g+jXTrl07UlNTGTduHKNHjyY5OZlXXnmF1NRUAL7++mvGjx9PTEwMc+fOpVevXqxevZoPP/zwtseZO3cucXFxfPDBB7Rp0+a26wwcOJBly5bRvXt35s2bx+DBgzl06BD9+vXDaDSa1tu5cyf/+c9/+OSTT+jVqxetW7dm//79/Pnnn6Z1MjIy2LhxI5GRkQCsXr2a119/nTJlyjBp0iTeffdddu/ezcsvv2w6JxFb0lCXiJUZjUazHoNLly7x008/ERcXR82aNU09P7fj5+fH2LFjTa9/+eUXvvnmGwCuXLnC7NmziYmJITY2FoD69etz9epVli5datqmZcuWzJ07l6tXr+Lu7g5c/+X44osvUqhQoVydQ1paGitWrDANgRQuXJhXX32VHTt20KRJk1vWnzhxIk8++SSzZs3CyckJgBo1atC8eXOWL19OTEyM6b158803adu2LQBBQUH8+9//5ocffqBBgwZ3rOfq1auMGDHC1JtQp04dnn/+eT777DOmTZvGoUOH+Mc//sHUqVMpWrQoAHXr1mX79u0kJSXRo0ePO+67bdu29OrVC4DQ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AH7//XcAKleuzNmzZ61XnTy0dJfc/9H7ICJScFjU41OhQgWWL19O27ZtTcsSEhIoX748AL/99hulSpW60+ZiR3SX3Ot0l1wRkYLFouAzYMAAevbsyfLly/Hx8eHUqVMcOHCAadOmsX//fl599VWGDh1qq1rlIaS75IqISEFiUfCpW7cua9euJSEhgf/+9780atSIKVOmUKZMGU6fPs3ixYv5xz/+YataRURERB6IRcEHwMfHhx49etyyvGzZspQtW9YqRYk8KN0zRUREbifvJz2I5IEb90xxxKh7poiIiInFPT4iD4v2vum6X4qIiJhRj4+IiIjYDYt7fDIyMti0aRMnT56kVKlShIWFUbx4cVvUJiIiImJVFgWf//znP3Tq1ImsrCzKly/PqVOn+Oijj/j888+pVKmSrWoUERERsQqLhrrGjh3Liy++yObNm/nXv/7F5s2biYyMZNw43aBNRERECj6Lgs/evXvp168fjo7XN3N0dOTtt99m7969NilORERExJosCj5OTk6kp5t/SiY9PR13d3erFiUiIiJiCxYFn0aNGtG/f3/+/PNPrl27xh9//MGAAQNo1KiRreoTERERsRqLgk///v3Jzs6mWbNm1KhRgxYtWlCoUCFiY2NtVZ+IiIiI1Vj0qS5PT0+++OILkpOTSU1NxcfHR09jFxERkYeGRT0+ERERfP755xQrVoyaNWsq9IiIiMhDxaLg88orr/D111/TsGFD+vbty48//mirukRERESszqLg0759e/71r3+xcuVKfHx8GDp0KGFhYUyfPt1W9YmIiIhYzX09q+vpp5+md+/evPPOOwDMnTvXqkWJiIiI2ILFwWf79u0MGjSIevXq8fnnn9OlSxc2b95s8T7atm1LrVq1qFevHqNGjSIzMxO4fpPEtm3bEhgYSFhYGPHx8Wbbrly5kvDwcGrWrEl0dDS7d+82teXk5DB+/Hjq1q1LYGAgPXv25MyZM5aeooiIiDyiLAo+zz77LG+99RaFChViwYIFrFixgpiYGIoVK5brfZw/f5433niDV155hZ07d7Jy5Up++uknPvvsMy5dukT37t2JiooiKSmJ0aNHM3bsWH755RcAEhMTGTVqFOPGjSMpKYmWLVvSs2dPrl69CkBcXBxbt25l+fLlbNmyBTc3N4YNG2bJKYqIiMgjzKKPs7/00kt07NiRokWL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GjF58mSuXbt2yzH+3lOU2+3k0fD+++8TFRVFnz598Pb2BuDJJ59k8uTJlChRguTkZAC2bt1KZGQkgYGBtGnThkOHDgHm18+JEyfw9/cnPj6esLAwgoKC6Ny5M6dPnwYgPT2dfv36Ubt2berVq0eXLl34448/SE5Oplu3bgAEBgaye/duBg8eTJ8+fWjatCl16tTh+PHj7Nq1i9dee4369esTEBBAdHQ0e/bsMdXRsGFDpk6dSu3atalduzajR4/WtfsIev/996lXrx5jx47l6aefxsnJCU9PTyIjIxk+fLgpQG/bto02bdoQHBxM8+bN+eqrr0z7GDx4MO+//z49evQgMDCQxo0bs2DBAgBmzJhBQkICCQkJtGzZEoCTJ0/St29fQkNDqVevHv379+fMmTOm/e3cuZOYmBiCg4MJCwtjypQpuvbuQsFH7uiLL77gpZdews3Njfbt2zNv3jxTW79+/XB2dmbz5s0sXLiQzZs3m9quXLlCp06dqFSpEps3b2bx4sVs27aNTz755K7Hu9/t5OF0/PhxDh8+fNshppIlSzJz5kyeeOIJAH766Sfmzp3L9u3b8fLyYvz48Xfc7w8//MCqVav49ttvOXfuHDNnzgRg3rx5pKens2nTJjZu3EipUqX4+OOPqVChArNnzwZg9+7dpqGzLVu2MHXqVNavX0/p0qXp2bMnTZo0YfPmzSQmJlKxYkU++ugj03FTUlI4evQo33//PUuXLuWHH34wHVseDadPn2b37t20a9futu2tWrXi+eef58CBA/Ts2ZPu3buTmJjIqFGjGDNmDFu2bDGtu2LFCjp06EBSUhLdunVj3LhxpKSk0KtXLyIiIoiIiOCrr74iKyuL119/HScnJ9avX8+6desA6NGjB9nZ2fz555907tyZF154gW3btvHPf/6TDRs2mF2bYk7BR27r5MmTbNmyhZiYGABeeukljhw5wk8//cTJkyfZuXMnsbGxFC1alHLlytG7d2/Ttj/88APXrl3jnXfeoVChQpQrV463336bRYsW3fWY97udPJzOnz8PYHqg8N107tyZkiVL4ubmxvPPP8/x48fvuG63bt0oXrw4JUuWJCwszDRp2c3NjQMHDrBq1SpSUlIYM2bMXedR1KxZEz8/P4oXL46LiwtLly6lffv2XLt2jZMnT+Lp6UlKSoppfQcHB4YPH07RokV54okn6Nq1q9lf+fLwu9F7WLZsWdOy7du3ExwcTHBwMIGBgTRp0oQlS5bQuHFjXnjhBZycnKhVqxYvvfSS2c+yGz2Pzs7OtG7dmpycnNte1zt37iQ5OZmRI0dSrFgxihcvzsiRIzlw4AC//vorCQkJ+Pv707FjR1xdXXn88cfp378/8fHxGAwG278pD6FH6unsYj2LFy8mOzubyMhI07Ls7GzmzZtH9+7dAShfvryprWLFiqavT548yfnz53nmmWdMy4xGI1lZWaSmpt7xmPfarkSJElY5NykYSpUqBcDZs2dNPTs3O3funCkUeXp6mpa7uLjcde7PzUHK2dmZG0/l6datG66urixbtowPPviAChUq0L9/f1544YXb7qd06dKmr52cnEhMTKRbt25cuXIFX19fs30DeHh44OXlZXpdrlw5s+EIefjduGZTUlJ48sknAQgNDWXnzp3A9V6c6dOnc/LkSXbs2EFwcLBp25ycHLOfkzf2BdevaeC2QSU1NRUvLy+KFi1qWla0aFE8PT05efIkqampVKhQwWybxx57jMzMTFJTU82OI9cp+Mgt/vrrL5YtW8bo0aOpW7euafmhQ4fo3r07Xbp0ASA5OZmnn34a+N9fQnD9r6GKFSvyzTffmJalp6eTmppqmsdxO/e7nTycfHx88PPzY+3atWZhF67/sG/UqBFjx4612vEOHjxIWFgYnTp1Ii0tjcWLF9OvXz927Nhx2/UdHBxMX+/du5dRo0axZMkSqlWrBlwfOjt69KhpnbS0NK5evYq7uztwfc7RzX8cyMPPx8eHgIAA4uPjqVOnzh3XK1u2LK1ateKDDz4wLTtz5gz382hMHx8fLly4QHp6uin8pKWlceHCBUqVKoWPjw/r16832+b48eO4urri4eFh8fHsgYa65BYJCQk4ODgQERFB2bJlTf8aNmyIn58fX331FfXr12fs2LFcunSJs2fPMn36dNP2jRo1IiMjgzlz5nDt2jUuX77MoEGD6Nevn9kvk7+73+3k4fXee++xfPlypk+fzoULFzAajezfv58ePXpQtWpVmjRpYrVjxcfHM3DgQFJTUylatChFixalcOHCuLq6UqhQIeD6L5TbSUtLw9HRETc3NwD27NnDggULzCaQ5uTkMH78eP766y/+/PNP5s6dS5s2baxWvxQMN+bqvPfeexw9ehSj0Uh6ejqr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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = sns.barplot(penguins, x='species', y='body_mass_g', hue='sex')\n", "plt.title('Pingviinien painon keskiarvo')\n", "plt.xlabel('Pingviinin laji')\n", "plt.ylabel('Painon keskiarvo grammaa')\n", "handles, labels = ax.get_legend_handles_labels()\n", "plt.legend(handles, ['Uros', 'Naaras'], loc=(0, 0.9), ncol=2)" ] }, { "cell_type": "markdown", "id": "c9b786ec-ea3a-480b-ad33-c9caae15c74d", "metadata": {}, "source": [ "Havaintojen lukumäärät eri ryhmissä (**n-arvot**) olisi aina syytä tarkistaa. Edellisen kaavion kuuden ryhmän n-arvoja on vaikea sijoittaa kaavioon, mutta ne ovat helposti laskettavissa komennolla `penguins.groupby(['sex', 'species'])['body_mass_g'].count()`. Samassa yhteydessä voidaan laskea myös muut tunnusluvut **describe**-funktiolla kuten seuraavassa on tehty." ] }, { "cell_type": "code", "execution_count": 9, "id": "50af99d1-93a7-4bc3-aa36-c722c20f074c", "metadata": {}, "outputs": [ { "data": { "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", "
countmeanstdmin25%50%75%max
sexspecies
FemaleAdelie73.03368.835616269.3801022850.03175.003400.03550.003900.0
Chinstrap34.03527.205882285.3339122700.03362.503550.03693.754150.0
Gentoo58.04679.741379281.5782943950.04462.504700.04875.005200.0
MaleAdelie73.04043.493151346.8115533325.03800.004000.04300.004775.0
Chinstrap34.03938.970588362.1375503250.03731.253950.04100.004800.0
Gentoo61.05484.836066313.1585964750.05300.005500.05700.006300.0
\n", "
" ], "text/plain": [ " count mean std min 25% 50% \\\n", "sex species \n", "Female Adelie 73.0 3368.835616 269.380102 2850.0 3175.00 3400.0 \n", " Chinstrap 34.0 3527.205882 285.333912 2700.0 3362.50 3550.0 \n", " Gentoo 58.0 4679.741379 281.578294 3950.0 4462.50 4700.0 \n", "Male Adelie 73.0 4043.493151 346.811553 3325.0 3800.00 4000.0 \n", " Chinstrap 34.0 3938.970588 362.137550 3250.0 3731.25 3950.0 \n", " Gentoo 61.0 5484.836066 313.158596 4750.0 5300.00 5500.0 \n", "\n", " 75% max \n", "sex species \n", "Female Adelie 3550.00 3900.0 \n", " Chinstrap 3693.75 4150.0 \n", " Gentoo 4875.00 5200.0 \n", "Male Adelie 4300.00 4775.0 \n", " Chinstrap 4100.00 4800.0 \n", " Gentoo 5700.00 6300.0 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "penguins.groupby(['sex', 'species'])['body_mass_g'].describe()" ] }, { "cell_type": "markdown", "id": "b3122911", "metadata": {}, "source": [ "## Catplot\n", "\n", "Seabornin **catplot**-funktio on oikotie usean kaavion yhdistelmiin kategoristen muuttujien määrittämissä ryhmissä. Lisätietoa https://seaborn.pydata.org/generated/seaborn.catplot.html.\n", "\n", "Seuraavassa edellinen kaavio on toteutettu **catplot**-funktiolla. Kaaviolaji määritetään parametrina `kind='bar`.\n", "\n", "**catplot** palauttaa **Facetgrid**-luokan olion, jolla on omat funktionsa otsikointien ym. ominaisuuksien muotoiluun. Esimerkissä olio sijoitetaan **g**-nimiseen muuttujaan. Lisätietoa https://seaborn.pydata.org/generated/seaborn.FacetGrid.html.\n", "\n", "Yksittäisiin kaavioihin voidaan viitata rivi-ja sarakenumeroiden avulla, esimerkiksi `g.axes[0, 0]`. Rivinumero on pakollinen vaikka kuvia olisi vain yhdellä rivillä kuten tässä esimerkissä." ] }, { "cell_type": "code", "execution_count": 10, "id": "8c6e28ea", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Naaras')" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4MAAAF7CAYAAABoyV6nAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAXaJJREFUeJzt3XlcVPXi//E3DCAoCpi45JqhlAqJC7iliVvmgiHVvZnlvlGau143UHHJfcU9MykLd3PJX4vldd9KrdxyTVNU1ABBYJjfH36Z66QmKDLAvJ6Ph48HM+dzzvmczznzcd5zPuccO5PJZBIAAAAAwKbYW7sCAAAAAIDsRxgEAAAAABtEGAQAAAAAG0QYBAAAAAAbRBgEAAAAABtEGAQAAAAAG0QYBAAAAAAbRBgEAAAAABtEGAQASSaTydpVAAAAyFaEQcCGtW/fXpUqVdKRI0ceOD0wMFBDhgzJ1DKHDBmiwMDArKjeU/P37YqMjNTixYuzbf179uyRt7e39uzZk2fWtXr1anl7e+uPP/54aBlvb2/NmjXrqdbDWrJznz6uWbNmydvb2/y6ffv2at++vfl1VuyfjBwHj5onN/QhuaGOAJARDtauAADrMhqNGjp0qFavXi0nJydrVydbzJ49W66urubX06dP1/vvv2/FGtmGL774QsWLF7d2NZ6KypUr64svvpCXl5e1q/JQb7zxhl5++WVrV+M+r7zyir744gsVLVpUktSrVy+9++67Vq4VANgGwiBg4woWLKiTJ09qzpw56tu3r7Wrky0qVapk7SrYpKpVq1q7Ck+Nq6trjt++4sWL58gwXrhwYRUuXNj8ukyZMlasDQDYFoaJAjbuxRdfVJs2bbRo0SIdPXr0H8sajUZFRUWpVatW8vX11SuvvKLJkyfrzp07D53n119/VY0aNdS5c2clJydLko4dO6b3339ftWrVUuXKlfXyyy9r7NixSkpKMs/n7e2tqKgoDRs2TP7+/vLz81Pv3r117dq1h67rjz/+kLe3tzZu3KgePXropZdeUoMGDTRr1iylpaWZy907TDR92Nzs2bPNf/99ON29dUofRpe+rtWrV1uUedDwsRUrVqhZs2by9fXVO++8o0uXLt237EuXLqlfv37y9/fXSy+9pPfee0+//vrrfdu2efNm9e7dW35+fqpZs6aGDRumhISEh7bJ3yUnJ6tTp07y9/fXL7/8Yn4/OjpaLVq0UJUqVfTKK69o1qxZSk1NNU+PjY3VgAEDVLduXfn4+CgoKEhr16596Hr++usvBQUFKTAw0Dz87+/DEDN6HMyePVtt27ZV9erVNXfuXL344ov65JNP7lufj4+PFi1aJEm6c+eO5syZo1dffVU+Pj5q2rSpFixYYHEcPMidO3f00UcfqUGDBqpSpYpatWqlTZs2WZQJDAzUuHHj9N5776latWoaOXJkhoaJ/vLLL3rvvfdUvXp1+fn5qUOHDvr5558tykRHRys4OFhVq1aVr6+vgoKC7lv/vn371LlzZ9WsWVNVqlRRYGCgxTGefqx8/PHHat68ufz9/bV69eqHHtcPk5H9kxGP2qZHDRMNDAzUzJkzNXHiRNWpU0e+vr7q3Lmzzpw584/r9fb21ueff64hQ4aoevXq8vf3N9d/4sSJqlWrlgICAjRs2DCLPuxBw2Uf1XaP28/FxsYqPDxcDRs2VJUqVeTv76/Q0FCLYbbt27fXsGHDtGDBAr3yyivy8fHRv/71r/uOHQB4HIRBABo2bJgKFy6soUOHmr/IPMjIkSM1btw4BQYGKjIyUu3atdPy5cvVq1evB96A5ffff1fnzp3l6+uruXPnysnJSTExMWrXrp0SExM1YcIELVy4UM2bN9enn36qpUuXWsw/bdo0paWlaerUqRo0aJC2bdumcePGPXJ7wsLC5OrqqlmzZqlNmzaaO3euPvrooweW/eKLLyRJISEh5r+z0vLlyzVq1Ci9/PLLmjt3rl566SWNGDHCokxsbKz+9a9/6ZdfftGIESM0ZcoUpaWlqV27dvr9998tyo4aNUolS5bU3Llz1aVLF61atUrz5s3LUF1SU1PVt29fHTlyREuWLFHlypUlSfPnz9eIESNUu3ZtzZs3T+3atdPChQs1cuRI87wDBw7UqVOnFB4ergULFqhSpUoaPHjwA8NPQkKCunbtqr/++kuffPKJSpUqdV+ZzBwHkZGRatasmaZOnapGjRopICDgvoD09ddfKzU1Va1atZLJZFKPHj20aNEihYSEaN68eXr11Vc1ffp0jRo16qHtYzKZFBoaqhUrVqhjx46KjIyUn5+f+vbte1/wjYqKMoeGoKCgRzW94uPj1aVLF3l4eGjmzJmaNm2aEhMT1blzZ8XFxZmXOXLkSDVq1Ejz58/XpEmT5OjoqIEDB5p/QDh27Jg6dOggd3d3TZs2TZGRkapWrZpmz56tjRs3Wqxz2rRp6ty5s8aOHatatWo9so73ysz++ScZ2aaMWLZsmU6fPq3x48dr7NixOnr0aIauZ548ebKcnJw0e/ZsBQUF6dNPP1WbNm30559/atKkSfrXv/6llStX6tNPP81wXf7ucfs5k8mk7t27a8eOHerfv78WL16sXr16aefOnRafPenu8f3tt99q+PDhmjp1qq5du6bevXvLaDQ+dr0BQGKYKABJhQoVUnh4uHr27PnQ4aKnTp3SypUr9eGHH6pnz56SpLp166po0aIaNGiQfvzxRzVo0MBc/sKFC+rQoYO8vb01d+5c5cuXT5J04sQJvfjii5oxY4b5ur06depo165d2rdvn3r06GFeRsWKFTV+/Hjz68OHD2vLli2P3J5KlSpp8uTJkqT69evr9u3b5tBaqFAhi7LpQ/uKFy+e5cP8TCaT5s6dq2bNmmn48OGSpHr16ik+Pl4rVqwwl/vkk0908+ZNff755ypZsqS53q+99ppmzJihmTNnmss2aNBAgwcPliTVrl1bO3bs0LZt29S/f/9/rEtaWpqGDBmiPXv2aMmSJapSpYokKS4uTpGRkXrrrbcs6uju7q7hw4erY8eOqlChgvbu3atevXqpcePGkqSAgAC5u7vLYDBYrOfOnTvq2bOnLl++rOXLl6t06dIPrE9mjgNfX19169bN/DooKEhDhgzRH3/8YQ6aX331lWrVqqVixYrphx9+0M6dOzVp0iS1bt1a0t1j1dnZWTNmzNB77733wGv7du7cqe3bt2vatGl67bXXJEkvv/yyEhMTNXnyZLVs2VIODnf/2yxatKiGDBkie/u7v6k+6sYxp06dUmxsrNq3b6/q1atLksqXL68VK1YoPj5eBQsW1IULF9SpUyeFhoaa5ytVqpSCg4N18OBBPfvsszp27Jjq1KmjSZMmmdddt25dbdu2Tfv27VOrVq3M8zZt2lQhISH/WK+Hycz++ScZ2aaMKFSokObOnWs+3s6fP69Zs2bpxo0b8vDweOh8zz//vEaPHi1JqlmzplauXKmUlBRNnjxZDg4Oevnll/Xdd9/p4MGDGarHg7bvcfu5mJgYubi4aPDgwapRo4aku5+rP/74w6J/kO7+kLN48WLzshISEjR48GD99ttv5s8yADwOwiAASXeHYrVu3VqLFi1S06ZNzWeN0u3du1eSLL5sSlKLFi00dOhQ7dmzxxwGExIS1KFDB129elVRUVFydnY2l69Xr57q1aunlJQUnTlzRmfPntXx48cVGxsrd3d3i2X/PZwVL15ciYmJj9yW9ACQrlmzZlq2bJl++ukn1a9f/5HzZ5XTp0/r+vXratSokcX7zZs3t/iyt2vXLr344osqVqyYeWimvb296tevr/Xr11vM+6A2uXjx4iPrMnnyZB09elS9evWSr6+v+f1Dhw4pMTFRgYGBFsNC04fp7dixQxUqVFBAQIBmzZqlY8eOqUGDBqpfv745lN5r0KBBOnr0qCIiIh4aBKXMHQcVK1a0eN20aVOFh4dr06ZN6tatm65evaq9e/eafzjYu3evDAaDOdCla926tWbMmKE9e/Y8MAzu2rVLdnZ2atCgwX1tsX79ep08eVIvvviipLshIz2MZUSFChVUuHBh9ezZU82bN1eDBg1Uu3ZtDRo0yFwm/UxXXFyczp49q7Nnz2rXrl2SpJSUFElSmzZt1KZNG925c0fnz5/XuXPn9Msvv8hoNJrLPKzdMiMz++efZGSbMsLHx8fih4f0ax8TExP/MQz6+fmZ/3ZwcJCHh4eqVKliDvWS5O7ubj47mxlP2s8VK1ZMy5Ytk3R3mPi5c+f0+++/6+DBg/e1jZeXl8VNr4oVK2befgB4EoRBAGbDhw/Xrl27NGTIEK1atcpi2q1btyRJnp6eFu+nf8G698vUzZs39dxzzyk+Pl4fffSRZs+ebZ6WPuwzKipKt2/fVokSJeTr62v+Rf1eLi4uFq/t7e0z9DzA9LsSpku/OcVff/31yHmzUnqb3XtzDOn+Nrx586bOnTt3XwBPd+8Xvsdtk9OnT8vf31/Lli3TW2+9Zf4yffPmTUmyOPN2r5iYGEl3hxzOmzdPmzdv1pYtW2Rvb686deooLCzMIvRduXJFVapU0Zw5c9S8eXMVKFDggcvNzHFQpEgRi9cFChRQ48aNzWFw48aNypcvn5o0aSLpbrt7eHhYfOGX/tfuD/vif/PmTZlMJlWrVu2hbZEeBv9ep0cpUKCAoqKiFBkZqU2bNmnFihVycXFR69atNWzYMOXLl0/nz5/XyJEjtXv3bjk4OKh8+fLm69TS93FSUpLGjBmjdevWKTU1VaVKlZKfn58cHBzuOw4yW8d7ZWb//JOMbFNGPOi4T6/nP7k3QD1sWY8rK/q59evXa+rUqfrzzz/l7u6uF154wSJUPqzOGd1+AHgUwiAAMzc3N4WFhSk0NFSRkZH3TZOkq1evWlwDlpKSct9QLXd3dy1evFgbN27UiBEjtHXrVjVt2lSStGDBAi1dulRhYWFq1qyZChYsKEmPPZztQdIDTrrr169Lkp555pkMzW9nZyfp7g1z0s9G/P0mLfeWudft27fNf6e3Sfr6H1a/ggULyt/f3+Is0b2y4pEf6deNNW/eXGFhYebrDNOHzU6ePFnlypW7b770QFGwYEENHDhQAwcO1OnTp/Xtt99q7ty5Cg8PN9+0RfrfYzvatGmjadOmmYee/t2THgdBQUHq0qWLzp49q40bN6px48bm4Onm5qYbN24oNTXVIhCmB9uHnUkqWLCg8ufPbz5b83dly5bNUN0epnz58po0aZKMRqMOHz6sdevW6fPPP1epUqXUpUsXdevWTY6Ojvryyy9VqVIlOTg46NSpUxZnhyMiIvT1119r+vTpqlOnjvLnzy/p7pDhrJQVn9O0tLQMbVNO9E+f63RP2s/t379fgwcP1jvvvKPOnTubf6D56KOPdODAgae1aQBggRvIALDQuHFjtWzZUgsWLFBsbKz5fX9/f0nShg0bLMpv3LhRRqPRfB2UdPcsSIECBfTGG2/Iz89Po0ePNp+VO3DggLy8vBQSEmL+gnTlyhWdOHEiy37l/u677yxef/3113JxcdFLL730wPJ/H+6Xfjbhzz//NL/392uK0stcvnzZ/F5KSooOHz5sfl2uXDmVKFHivuscv//+e4vX/v7+OnPmjJ577jn5+PiY/61fv17R0dH3XZf3OIoUKaJnnnlG/fr10/fff2++ActLL70kR0dHXblyxWLdjo6OmjJliv744w9dvHhRDRo0MG9H+fLl1bVrV9WpU8di+9PX4+XlpY4dOyoqKkqHDh16YH2e9DioU6eOPD099emnn+rw4cMWN3Hx9/eX0Wi87yYz6QHk3mP1Xv7+/rp9+7ZMJpNFW6Q/euXeoaOZtWXLFtWqVUtXr16VwWCQn5+fwsLCVKhQIV2+fFk3btzQmTNnFBISIl9fX3OI/fHHHyX97wzQgQMHFBAQoMaNG5uD4NGjRxUbG5ulZ4my4nOa0W3KaVxdXe87rh90TeGT9nOHDh1SWlqaevfubQ6CRqNRO3fulJRz2wdA3sKZQQD3GTFihHbv3m3xGAcvLy+9/vrrmj17tpKSkhQQEKDffvtNs2fPVkBAwAMfZm1nZ6fw8HAFBwdr4sSJioiIMN9xb8GCBapatarOnTun+fPnKzk5Ocuuf9myZYuKFCmiBg0aaO/evYqKilLfvn3NX57/rlChQjp06JD27dunGjVqqEGDBho/frxGjBihrl276vLly5o9e7bFkEc3Nzf5+flp+fLlKlu2rDw8PPTpp58qKSnJvB47OzsNGDBA/fv31/Dhw/Xqq6/qp59+0ueff26x/g4dOmjdunXq0KGDOnXqJA8PD23atElffvmlhg4dmiVtku6tt97SmjVrNHbsWNWpU0ceHh7q0qWLZsyYofj4eAUEBOjKlSuaMWOG7Ozs9MILL6hgwYIqXry4xo4dq/j4eJUpU0ZHjx7VDz/8oO7duz9wPaGhodq4caOGDx+uNWvW3Hd280mPA4PBoFatWumTTz6Rp6en6tSpY55Wv359BQQEaNSoUYqJiVGlSpW0d+9eLVy4UK+//vpDHwzfoEED1axZU7169VKvXr30/PPP6/Dhw5o1a5bq1at333DfzKhWrZrS0tIUGhqqbt26qUCBAtq8ebPi4uLUtGlTPfPMMypZsqSioqJUvHhxFSpUSP/973/Nj9BIbxNfX19t3rxZn3/+uZ5//nkdO3ZMkZGRsrOzy9Lrx7Lic5rRbcppXnnlFW3cuFG+vr567rnntGbNGp07d+6h5R+3n0u/dnf06NFq27at/vrrLy1fvlzHjh2TdPds5IOGuQJAViIMAriPu7u7wsLC9P7771u8HxERobJly2rVqlVavHixihYtqvbt2ys0NPShN9Pw9vbWu+++qyVLlqhly5bq3r27bty4oWXLlmnOnDkqUaKEgoKCZGdnp/nz5+vWrVvmIamPq0+fPtq7d6+++OILlShRQiNHjtS///3vh5bv0aOH5s6dq65du2rTpk167rnnNHHiREVGRqpbt256/vnnNWbMGI0ZM8ZivgkTJmjMmDEaMWKEXF1dFRISIj8/P0VHR5vLtGzZUvb29po7d67WrVunihUravTo0erXr5+5TLFixbRixQpNmTJFYWFhunPnjsqVK6eIiIgsHT4r/e+La9u2bTV+/HhNnDhRH374oTw9PfXZZ59p0aJFcnNzU+3atdWvXz/zWY3Zs2dr6tSpmjFjhm7cuKESJUro/ffff+i1hs7Ozho5cqS6d++uefPmqXfv3hbTs+I4CAoK0pIlS9SiRQuLs6fpy5g5c6aWLVum2NhYlSpVSn379lXHjh0fujx7e3stWLBAM2bM0Pz583X9+nUVK1ZMHTp0sLgb5uMoWrSoFi1apBkzZmjYsGFKTExUhQoVNGvWLPNjH+bOnauIiAgNGTJETk5O8vLyUmRkpMaNG6f9+/erffv2GjJkiFJSUjR9+nQlJyerVKlS6tmzp06dOqXvvvsuyx41kFWf04xsU04zdOhQpaamatKkSXJwcNBrr71m/kHnYR6nnwsICNDIkSP18ccfm3/ACggI0OzZsxUaGqoDBw5Y3KEZAJ4GO1NmruAGgBzsjz/+UKNGjTR+/HgFBwdbuzoAMuDzzz9XWFiYdu3a9URnXwEAmceZQQAAkO1MJpM2bNigjRs3qlChQk88IgAAkHmEQQAAkO0uXbqkMWPGyNnZWcOHD8+SGyUBADKHYaIAAAAAYIN4tAQAAAAA2CDCIAAAAADYIMIgAAAAANggwiAAAAAA2CDCIAAAAADYIMIgAAAAANggwiAAAAAA2CDCIAAAAADYIMIgAAAAANggwiAAAAAA2CDCIAAAAADYIMIgAAAAANggwiAAAAAA2CDCIAAAAADYIMIgAAAAANggwiAAAAAA2CDCIGBl7du3V/v27R86PTAwUEOGDMnGGgGAbWjfvr0qVaqkI0eOPHA6/S+AvI4wCAAAbJbRaNTQoUOVnJxs7aoAQLYjDAIAAJtVsGBBnTx5UnPmzLF2VQAg2xEGgVwkMDBQ48aN03vvvadq1app5MiRkqSYmBgNHTpUDRo0kK+vr0JCQvTtt99azLtz50699dZb8vPzU82aNdWrVy+dPn3aGpsBADnGiy++qDZt2mjRokU6evToQ8slJSVpypQpatq0qapUqaJq1aqpY8eO+u233yzKRUdHKzg4WFWrVpWvr6+CgoK0adMm8/TVq1erUqVKio6OVr169VS/fn2dPHlSRqNRCxYsUMuWLeXr66uqVavqX//6l3bt2mWe986dOwoPD1f9+vVVpUoVvfrqq1qyZEnWNwoAm0EYBHKZqKgoeXt7a9asWQoKCtK1a9cUEhKivXv3qm/fvpo1a5ZKliyp0NBQrV+/XpJ04cIF9ezZU5UrV1ZkZKTGjh2r06dPq1u3bkpLS7PyFgGAdQ0bNkyFCxf+x+GigwYN0sqVK9WtWzctWbJEQ4YM0YkTJ9S3b1+ZTCZJd/vnkSNHqlGjRpo/f74mTZokR0dHDRw4UJcuXTIvy2g0at68eRo7dqw+/PBDeXl5afLkyZozZ47eeustLVq0SKNHj9aNGzfUp08f3b59W5IUERGhH374QYMHD9bixYvVqFEjTZw4UatXr376jQQgT3KwdgUAZE7RokU1ZMgQ2dvf/S1n0qRJio2N1ebNm1W6dGlJUoMGDdShQwd99NFHatmypQ4fPqykpCR1795dxYoVkySVKFFC3377rW7fvi1XV1erbQ8AWFuhQoUUHh6unj17as6cOerbt6/F9OTkZCUkJGjEiBF67bXXJEn+/v5KSEjQhAkTdPXqVRUtWlQXLlxQp06dFBoaap63VKlSCg4O1sGDB/Xss8+a3+/Ro4deeeUV8+uYmBj17dvX4oZizs7O+uCDD3T8+HH5+flp7969qlOnjlq0aCFJCggIUP78+eXh4fE0mgWADSAMArmAnZ2d+e/nn3/eHAQlae/evfLz8zMHwXStW7fW0KFDdfr0ab300kvKly+fQkJC9Nprr6lBgwaqUaOGfH19s20bACAnCwwMVOvWrbVo0SI1bdpUlStXNk9zcnLS4sWLJd0NbefOndPp06f1/fffS5JSUlIkyXzn0bi4OJ09e1Znz541D/NML5OuYsWKFq+nTJkiSYqNjdW5c+d05swZfffddxbzBgQEaMWKFbpy5YoaNmyoBg0aWARPAMgswiBgZfnz59fNmzcfOj05OVkuLi7m10WKFLGYfuvWLZUqVeq++dLL/fXXX/Ly8tLy5cu1YMECffnll1q6dKkKFSqkt99+W3369LEIlwBgq4YPH65du3ZpyJAhWrVqlcW07du3a9y4cTp9+rQKFCggb29vFShQQJLMw0TPnz+vkSNHavfu3XJwcFD58uXl7e1tUSbdM888Y/H6yJEjCg8P15EjR+Ts7CwvLy+VLFnSYt5hw4apePHiWr9+vcLDwyVJfn5+GjlypCpVqpTFrQHAFvANELCyIkWKKCYm5oHTkpOTFRsbe18AvJebm5uuXbt23/tXr16VJPPwIV9fX82ePVt79uzR0qVLVbduXc2bN09btmzJgq0AgNzPzc1NYWFhOnHihCIjI83vnz9/XqGhoXrhhRf0//7f/9PBgwf1+eefq2HDhuYyaWlp6tatm65fv64vv/xSP/30k9avX6/u3bs/cr3x8fHq0qWL8ufPr6+++kqHDh3SqlWr1LZtW4tyTk5O6tmzpzZv3qzvv/9eI0eO1IULF9S/f/+sawQANoUwCFiZv7+/Ll26pMOHD9837ZtvvpHRaFStWrUeOn/NmjV16NAhXbhwweL99evXy9PTU2XLltXSpUsVGBio5ORkOTk5qXbt2hozZowk6c8//8zaDQKAXKxx48Zq2bKlFixYoNjYWEnS0aNHdefOHXXv3l1lypQxl92+fbuku2fubty4oTNnzigkJES+vr5ycLg7+OrHH3+UpH+8Wdfp06d18+ZNvfvuu6pQoYJ5tMa98yYlJalZs2bmu4c+++yzateunVq0aKHLly9ncSsAsBUMEwWs7LXXXtMnn3yirl27qnv37qpcubLS0tJ08OBBLVq0SC1atFC1atUeOn/Hjh21fv16dezYUe+//748PDy0du1a7d69W+PGjZO9vb1q1aqlyZMnKzQ0VO+8844MBoNWrFghJycni1+2AQDSiBEjtHv3bvOoi8qVK8vBwUGTJk1Sp06dlJycrNWrV2vbtm2SpNu3b6t06dIqWbKkoqKiVLx4cRUqVEj//e9/9cknn0iSEhMTH7q+5557Tq6urpo3b54cHBzk4OCgr7/+WitXrjTP6+zsrMqVK2v27NlydHSUt7e3zpw5ozVr1qhZs2ZPt0EA5FmcGQSszNHRUcuXL9dbb72l6Ohode/eXaGhofrmm2/Ut29fTZ48+R/n9/T01Oeff64qVaooIiJCffr00Z9//qm5c+eahxi98MILmjdvnuLj49WvXz+9//77unnzppYsWaLy5ctnx2YCQK7h7u6usLAw8+uyZctqypQpunLlinr27Gl+xuunn34qOzs77d+/X5I0d+5cFStWTEOGDNGHH36on376SZGRkSpfvry5zIMULFhQc+fOlclkUp8+fTRo0CBdunRJy5cvV4ECBczzjh49WsHBwVqyZIk6deqkuXPnKiQkxKKuAJAZdqa/X9EMAAAAAMjzODMIAAAAADaIMAgAAAAANogwCAAAAAA2iDAIAAAAADaIMAgAAAAANogwCAAAAAA2iDB4D5PJJKPRKJ62AQA5D300AABZizB4j7S0NP30009KS0uzdlUAAH9DHw0AQNYiDAIAAACADSIMAgAAAIANIgwCAAAAgA0iDAIAAACADSIMAgAAAIANIgwCAAAAgA0iDAIAAACADSIMAgAAAIANIgwCAAAAgA0iDAIAAACADSIMAgAAAIANIgwCQA4xZ84cNWnSRHPmzLF2VQAAgA0gDAJADpCUlKS1a9cqLS1Na9euVVJSkrWrBAAA8jjCIADkAKmpqUpLS5MkpaWlKTU11co1AgAAeR1hEAAAAABsEGEQAAAAAGwQYRAAspApzWiT6wYAALmPg7UrAAB5iZ29QddWD1HKtdOZmi8hOc3i9eWlHVTAKeO/1zkWKa8iwRMytU4AAGDbCIMAkMVSrp1WyuXfMjVPaqqdJM//vY45oRQHUxbXDAAA4H8YJgoAOYDBziQ73Q1/9jLJYEcQBAAATxdhEABygHwGqXHJRNnLpEYlE5XPYO0aAQCAvI5hogCQQ7ztFa+3veKtXQ0AAGAjODMIAAAAADaIMAgAAAAANogwCAAAAAA2iDAIAAAAADaIMAgAAAAANogwCAAAAAA2iDAIAAAAADaIMAgAAAAANogwCAAAAAA2iDAIAAAAADaIMAgAAAAANogwCAAAAAA2iDAIAAAAADbIKmFw06ZNqlSpkvz8/Mz/Bg4cKEn6+eef9cYbb8jPz0+BgYGKjo62mHfNmjVq0qSJqlatquDgYB06dMg8zWg0auLEiapTp478/PzUs2dPxcTEZOu2AQAAAEBuYJUweOTIEQUFBenQoUPmf5MmTdKtW7fUrVs3tWnTRvv27VNERITGjx+vw4cPS5L27NmjMWPGaMKECdq3b59at26tnj17KjExUZIUGRmpHTt2aNWqVdq+fbucnZ01fPhwa2wiAAAAAORoVguDVapUue/9rVu3yt3dXe3atZODg4Nq166tVq1aKSoqSpIUHR2tFi1aqHr16nJ0dFSHDh3k4eGhTZs2mad37dpVJUqUkKurq4YNG6Yff/xRFy5cyNbtAwAAAICcLtvDYFpamn755Rdt27ZNDRs2VP369TVixAjdunVLJ0+eVMWKFS3Ke3l56dixY5KkU6dOPXR6XFycLl++bDG9SJEicnNz0/Hjx5/+hgEAAABALuKQ3SuMjY1VpUqV1KxZM82cOVM3btzQ4MGDNXDgQHl6esrFxcWivLOzs27fvi1JSkhIeOj0hIQESVL+/Pnvm54+LaOMRmNmNwsAJEkGg8Gq688t/deTtFNu2UYAyK2s/X8Zsk+2h8EiRYqYh31KkouLiwYOHKg333xTwcHBSkpKsiiflJSkAgUKmMs+aLqHh4c5JKZfP/ig+TPqyJEjmSoPANLdPqpSpUpWrcPx48fv6wdzourVqz/2vPTRAPB0PUkfjdwl28PgsWPH9NVXX6l///6ys7OTJCUnJ8ve3l6+vr765JNPLMqfOnVKFSpUkCRVqFBBJ0+evG96/fr15ebmpmLFilkMJb169apu3rx539DSR/Hx8eEXEQC5kre3t7Wr8NTRRwMAkDWyPQy6u7srKipKbm5u6tixo2JiYjRp0iS9/vrratasmaZMmaKlS5eqXbt2OnDggDZs2KC5c+dKkkJCQhQaGqrmzZurevXqioqK0vXr19WkSRNJUnBwsCIjI+Xj4yMPDw+NGzdO/v7+KlOmTKbqaDAY+KIBIFeyhb6LPhoAgKyR7WGwePHimj9/vqZOnarIyEjly5dPLVq00MCBA5UvXz4tWbJEERERmjlzpgoXLqzhw4erVq1akqTatWtr1KhRCgsL05UrV+Tl5aWFCxfK3d1dkhQaGqrU1FS1a9dOCQkJCggI0PTp07N7EwEAAAAgx7MzmUwma1cipzAajfrpp59UtWpVfnUG8Nj+XPCmUi7/lq3rdCz+okp0+zJb15nd6KMBAMhaVnnOIAAAAADAugiDAAAAAGCDCIMAAAAAYIMIgwAAAABggwiDAAAAAGCDCIMAAAAAYIMIgwAAAMAjzJkzR02aNNGcOXOsXRUgyxAGAQAAgH+QlJSktWvXKi0tTWvXrlVSUpK1qwRkCcIgAAAA8A9SU1OVlpYmSUpLS1NqaqqVawRkDcIgAAAAANggwiAAAABshinNaFPrBf6Jg7UrAAAAAGQXO3uDrq0eopRrpzM8T0JymsXry0s7qIBTxs+pOBYpryLBEzJcHsguhEEAAADYlJRrp5Vy+bcMl09NtZPk+b/XMSeU4mB6CjUDshfDRAEAAADABhEGAQAAgH9gsDPJTnfPBNrLJIMdZwWRNxAGAQAAgH+QzyA1Lpkoe5nUqGSi8hmsXSMga3DNIAAAAPAIb3vF622veGtXA8hSnBkEAAAAABtEGAQAAAAAG0QYBAAAAAAbRBgEAAAAABtEGAQAAAAAG0QYBAAAAAAbRBgEAAAAABtEGAQAAAAAG0QYBAAAAAAbRBgEAAAAABtEGAQAAAAAG0QYBAAAAAAbRBgEAAAAABtEGAQAAAAAG0QYBAAAAAAbRBgEAAAAABtEGLSSOXPmqEmTJpozZ45NrRsAAABAzkAYtIKkpCStXbtWaWlpWrt2rZKSkmxi3RJBFAAAAMgpCINWkJqaqrS0NElSWlqaUlNTbWLd1g6iAAAAAP6HMIhsY80gCgAAAMASYRAAAAAAbBBhEAAAAABskFXDoNFoVPv27TVkyBDzez///LPeeOMN+fn5KTAwUNHR0RbzrFmzRk2aNFHVqlUVHBysQ4cOWSxv4sSJqlOnjvz8/NSzZ0/FxMRk2/YAtoSbAQEAAORuVg2Ds2fP1v79+82vb926pW7duqlNmzbat2+fIiIiNH78eB0+fFiStGfPHo0ZM0YTJkzQvn371Lp1a/Xs2VOJiYmSpMjISO3YsUOrVq3S9u3b5ezsrOHDh1tl24C8jJsBAQAA5H5WC4O7du3S1q1b1bRpU/N7W7dulbu7u9q1aycHBwfVrl1brVq1UlRUlCQpOjpaLVq0UPXq1eXo6KgOHTrIw8NDmzZtMk/v2rWrSpQoIVdXVw0bNkw//vijLly4YJVtfNpMaUarrNdopfVae934H24GBAAAkPs5WGOl169f17BhwzR37lwtXbrU/P7JkydVsWJFi7JeXl5auXKlJOnUqVNq27btfdOPHTumuLg4Xb582WL+IkWKyM3NTcePH1fp0qUzXD+jMROBw85OBnvrZGo7e4OurR6ilGunMzxPQnKaxevLSzuogFPG6+/sVU8egb0V/nW4zt44m+H5JCntjuW6Q1eFyj5fxtddzqOcRjUblbn9g6fi7/vAaDSyX/6PwWCw6vpzy354knbKLdsIIGeyZj+dW/ova/9fhuyT7WEwLS1NAwcOVMeOHfXCCy9YTEtISJCLi4vFe87Ozrp9+/YjpyckJEiS8ufPf9/09GkZdeTIkQyVc3FxUaVKlTT8s+06E3Mrw8tPS7EcUtc1covsHZ0zVcc63s8qtHk1pVw7rZTLv2V4vtRUO0me/3sdc0IpDqYMz+/wzHOSpLM3zurE1RMZnk+SlCw563/beeraKckpc4uQpOPHj5uHBsM6/t7+R44cue+zaYvS+wRryi2fj+rVqz/2vBntowHg76zdT9tCH43cJdvD4Pz58+Xk5KT27dvfN83FxUVxcXEW7yUlJalAgQLm6X+/NikpKUkeHh7mL6J//4DdO39G+fj4ZOoXkTMxt3TsYmyGy9ulJsvtntcnL92UySFzqaicZ6FMlc9LvL29rV0FmxcfH2/x2sfHR66urlaqDe5lC5+PzPbRAJBT2EIfjdwl28PgunXrFBMToxo1akiSOdx98803GjRokHbs2GFR/tSpU6pQoYIkqUKFCjp58uR90+vXry83NzcVK1ZMp06dMg8VvXr1qm7evHnf0NNHMRgMfNHIwdg31vf3fcBnJuewhf3A8QYgt6LvQk6T7Re7bdmyRQcPHtT+/fu1f/9+tWzZUi1bttT+/fvVpEkTXbt2TUuXLlVKSop2796tDRs2mK8TDAkJ0YYNG7R7926lpKRo6dKlun79upo0aSJJCg4OVmRkpC5cuKD4+HiNGzdO/v7+KlOmTHZvJpBrcEMgAACQF9y6dUthYWFq0KCBqlatqnr16mnw4MG6fPnyU1lfly5dNG/evKey7OxilRvIPIyHh4eWLFmiiIgIzZw5U4ULF9bw4cNVq1YtSVLt2rU1atQohYWF6cqVK/Ly8tLChQvl7u4uSQoNDVVqaqratWunhIQEBQQEaPr06dbbIFiyl0wyyU52MtmZrPxgE6Qz2BsyfUOgJ70ZkPS/GwIBAABkhb59+6pgwYJauXKlPD09de3aNUVERKhjx47asGGDHByyNvosWrQoS5dnDVYPgxMmTLB47ePjoxUrVjy0fFBQkIKCgh44zdHRUQMGDNCAAQOytI55icHOJLv/i2T2Mslgl/GbxzwxB8lY3ijDGYOMzxlzwNGHdJm+IVAW3QwIAAAgqxw4cEARERHy9Lx7s8QiRYroP//5j6ZMmaK//vpLN27c0EcffaTjx48rNjZWpUqV0sCBA9WwYUNJ0nfffacFCxbo3Llzun37tnx8fDR27FiVK1dOq1ev1vLly+Xu7q7Dhw9r1KhR+vLLL+Xv768PPvjAmpv9RDg3YwUme3uZZHf3b9nJlI2PpshnkBqXTJS9TGpUMlH5snnoeqpvqu4E3VGqL8+lAwAAQNZp0aKFeRThpk2bdPHiRXl6emrChAkqXLiwPvjgA1WsWFH/7//9P+3fv1/16tVTWFiYJOny5cvq06ePunXrpl27dmnbtm0ymUyaM2eOefm//PKLWrVqpZ07d5ovU8vtODdjDfYOSvZ8QU5XjynZ8wXJPnt3w9te8XrbK/7RBQEAAIBcYuzYsQoICNCmTZs0cuRIxcXFqUyZMvrggw/UunVrzZ8/X8WKFZPJZNLFixdVqFAhXblyRZJUuHBhbdy4UWXKlFF8fLwuX74sDw8P83Tp7ijEoKAg2VvpGeNPA2HQShJL+yuxtL+1qwEAAADkCfb29uZLykwmk37//XetW7dOgwYNkqenp+Lj49WrVy9dvXpVzz//vAoXLiyT6e4lU46Ojvrqq6+0YsUK2dnZqWLFioqPj7e4ztDT0zNPBUGJYaIAHsf/3QxIEjcDAgAAVrd9+3b5+fnp5s2bkiQ7Ozt5eXmpf//+qlSpkg4cOKA+ffqob9++2r17t6KiotSyZUvz/Js3b9by5cv16aef6ocfftDChQtVqVIli3XY2dll5yZlC77CAci8/7sZkMnOxM2AAACA1dWsWVPPPPOMhg4dquPHjyslJUXx8fFav369zp49q8aNG8toNMrFxUXS3WeVp18PmJycrLi4ONnb28vZ2Vkmk0k//vij1q5dq5SUFGtu1lPHVzgAjyXVN5UbAQEAgBzB2dlZn332mWbPnq2ePXvq+vXrcnR0VNWqVfXxxx/rhRde0KBBgzRw4EAlJiaqePHievPNNzVp0iSdOHFCr7/+ug4cOKAWLVrIYDCofPnyeu+99xQVFaXk5GRrb95TQxgEAAAAkOsVLVpUo0ePfuj0zp07q3Pnzhbvvffee+a/P/roo/vm6d27tyQpODhYwcHBFtM+/fTTJ6lujsAwUQAAAACwQYRBAAAAALBBhEEAAAAAsEGEQQAAAACwQYRBAAAAALBBhEEAAIA8Zs6cOWrSpIn5OWoA8CCEQQAAgDwkKSlJa9euVVpamtauXaukpCRrVwlADkUYBAAAyENSU1OVlpYmSUpLS1NqaqqVawQgpyIMAgAAAIANIgwCAAAAyDTj/52BzqvrswUO1q4AAAD4nzlz5mjt2rVq06aNQkNDrV0dWJkxzSiDvcHm1o3cwWBvr+GfbdeZmFtPfV3PFXXT2LdfztQ8I0eO1IYNGyTdHT6dkpIiFxcX8/SFCxeqRo0aWVrP3IYwCADA31grkP39xh+dO3eWs7Nztq0fOY/B3qDwr8N19sbZDM+Tdsfy7EnoqlDZ58vcYLByHuU0qtmoTM0D23Qm5paOXYy1djUeaPTo0Ro9erQkafXq1Zo9e7a+++47K9cqZyEMAgBwD2sGMm78gQc5e+OsTlw9kfEZkiVn/e+YPXXtlOT0FCoG5GLHjx/X5MmT9fPPP8vZ2VmBgYHq37+/ChYsqNWrV2v58uVyd3fX4cOHNWrUKDVp0kTjx4/X5s2b5eLiotdff13r16/X+PHjFRAQoGvXrmnChAnatWuX7OzsFBgYqEGDBsnV1VV79uzRoEGDVKNGDf3www/q1q2bGjZsqLCwMJ04cUKurq7y9/fXiBEj5OrqquTkZEVGRmr9+vWKi4vTSy+9pOHDh6ts2bKSJG9vbw0fPlzLly9XTEyMvL29FR4eLm9v70y3A9cMAgBwDwIZAORtN27c0LvvvisvLy/9+OOPWrVqlc6cOaNBgwaZy/zyyy9q1aqVdu7cqSZNmmjcuHE6cuSI1q1bp02bNunSpUu6ePGipLv/V/Tq1Uv29vb6+uuvtWHDBsXExGjkyJHm5V2+fFnly5fXrl279Pbbbys8PFy1a9fW3r17tWrVKv3666+Kjo6WJE2bNk3btm3T0qVLtX37dr300kvq1KmT7ty5Y17exo0btXz5cv34449ycXHRRx999FhtQRgEAAAAYDO+/fZbOTo6asCAAXJ2dpanp6dGjBih7777TlevXpUkOTo6KigoSE5OTjIYDFq/fr369u2rEiVKqECBAho5cqQMhrvX1B49elS//PKLRo0aJVdXV3l4eGjw4MHauHGjbty4YV5vSEiIHB0d5erqqnz58mn79u3asmWL7O3ttW7dOnXs2FEmk0krVqxQv379VLp0aeXLl0+hoaFKSUnRtm3bzMtq3769PD09VbBgQTVv3lxnz559rLZgmCgAAJDEzWvyDHvJJJPsZCeTnYmf/oG/uX79up599llzmJOkUqVKSZL5bJ+np6fs7e9+eG7evKnExESVLFnSXD499EnSH3/8IaPRqAYNGlisx8nJSRcuXDC/Llq0qPnv6dOna9asWZo2bZr69eunatWqKSwsTIULF9bt27fVp08f8/olKSUlxVw3SSpSpIj5bwcHB5lMpsdqC8IgAADg5jV5iYNkLG+U4YxBxueMfNsD/qZkyZK6dOmSjEajORCeP39e0t0QePr0adnZ2ZnLP/PMM3J2dtalS5dUvnx5SdLt27fNZ/2KFy8uZ2dn7dmzx7y85ORkXbhwQWXLltWBAwckybzMtLQ0/frrr/rggw/0n//8R3/++afGjx+vIUOGKDo6Wvny5dOSJUtUtWpVcx1Onz6tYsWKZXlb0D0AAPIsY1qaDPbWOS1izXU/Dq6VzFtSfVOV6ss+xNP3XFG3XLeeBg0aaMKECZo8ebL69OmjuLg4RUREqFatWhZn/9LZ29srJCREs2bNUoUKFVSoUCGNHz9eRqNRkuTr66uyZctqwoQJ+vDDD2UwGDRhwgR9++23+uabbx64vLFjx8rf31+DBg1S4cKFlS9fPnl4eJjXNWXKFE2aNElFixbVunXrNGzYMK1cuVKVKlXKsnaQCIMAgDzscZ6BlZaSZPG6a+QW2Ttm7gxZ1XJFNaB19UzNk5VMaUbZ8Xw4AE+ZMS0t08/+e9L1ZcWPbAULFtTHH3+sCRMmmId2NmrUyOIGMn/Xv39/jRkzRq+99poKFCigt956S/b29nJ0dJSDg4Pmz5+viRMnqmnTprpz5458fX318ccfK1++fA9c3vTp0zVmzBjVq1dPaWlpqlmzpsaMGSNJGjx4sGbNmqW3335bN2/eVOnSpTVz5swsD4ISYRAAkMdl9hlYdqnJuvf355OXbsrkkLn78pfzLCQ7e4OurR6ilGunMzxfQrLl8+EuL+2gAk6Z++KTr7Sf3JoNkjWiIA8pB2xLdo9+eJL1BQcHKzg42Py6QoUKWrx4cYbKSnfvLjp06FCNHz9ekhQfH6+ZM2eqcOHCku4OFZ02bdoDlxcQEKDjx49bvPf8889r6dKlDyyfL18+DRgwQAMGDHjg9L8v60H1zSjCIAAAT0nKtdNKufxbhsunptpJ8vzf65gTSnHI3E0BHJ55zioPKuch5QDysiVLlqhQoUIKDw+XnZ2dZs6cqeeee07lypWzdtWeCGEQAIA8iAeVA0DWCQsLU3h4uBo0aCCj0ajq1atrwYIF1q7WEyMMAgBwD5O9ffpN+WWSnUy56CYwAICno1ixYpo7d661q5Hl+B8OAIB72Tso2fMFmWSnZM8XJHsb+d30/55NJ4ln0wGAjbCR/+EAAMi4xNL+Siztb+1qZC+eTQcANoeuHgCAHMJgZzIPT7WXSQa7zN085knxbDoAsC0MAgEAIIfIZ5Aal0yUvUxqVDJR+XhKAwDgKeLMIAAAOcjbXvF62yve2tUAANgAzgwCAAAAyDRTmjFPr88WcGYQAAAAQKbZ2Rt0bfUQpVw7/dTX5VikvIoET3jq67E1hEEAAAAAjyXl2mmlXP7N2tV4IG9vb+XLl08Gg0Emk0mOjo6qUaOGRo4cqRIlSkiSWrRooe7du6t169ZWrq11PFYYTE1N1bVr15SWlmbx/rPPPpsllQIAAACAJ7Vw4UIFBARIkuLj4zVgwAANHDhQy5cvlyRt3LjRmtWzukxfM7hy5UpVr15dDRs2VKNGjdSoUSMFBgaqUaNGGV7Grl279MYbb6hatWqqW7euxowZo6SkJEnSzz//rDfeeEN+fn4KDAxUdHS0xbxr1qxRkyZNVLVqVQUHB+vQoUPmaUajURMnTlSdOnXk5+ennj17KiYmJrObCAAAACCPcXV11ZtvvqmjR4+a3wsMDNTq1aslSfv27VNwcLBq1KihJk2aKCIiQqmpdx+3ExsbqwEDBqhmzZoKCAhQ3759devWLUnSxYsX9eGHH6p27dqqW7eu+vfvb5FBfvnlF7Vv3141a9ZU06ZNtXTpUplM2fvooIfJdBicPn26BgwYoK1bt+qbb77RN998o2+//VbffPNNhuaPjY1V9+7d9e9//1v79+/XmjVrtHfvXi1YsEC3bt1St27d1KZNG+3bt08REREaP368Dh8+LEnas2ePxowZowkTJmjfvn1q3bq1evbsqcTERElSZGSkduzYoVWrVmn79u1ydnbW8OHDM7uJAAAAAPKYW7duaePGjWratOkDpw8aNEjt27fX/v379fHHH2vLli369ttvJUl9+vRRfHy8tm7dqm+//VZ//fWXwsPDlZKSok6dOslgMGjr1q3avHmzJKlHjx5KTU3VlStX9N577+nVV1/Vzp07NXfuXH322Wf64osvsm27/0mmh4kmJyerXbt2srd/vBuRFi5cWDt37pSrq6tMJpNu3rypO3fuqHDhwtq6davc3d3Vrl07SVLt2rXVqlUrRUVFydfXV9HR0WrRooWqV68uSerQoYO++OILbdq0SW3btlV0dLQGDBhgHgM8bNgw1atXTxcuXFDp0qUfq74AAAAAcqcePXrIYDAoLS1NCQkJKliwoObPn//Asvny5dPmzZvl7u6umjVr6ocffpC9vb0uXryovXv3asuWLfLw8JAkTZgwQTdv3tT+/ft14cIFrVq1Sq6urpKk8PBw+fv76+jRo9q3b5+ef/55c77x8vJS586dtXz5cv3rX//Knkb4B5kOg61b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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "g = sns.catplot(penguins, x='species', y='body_mass_g', col='sex', hue='island', kind='bar', height=4)\n", "\n", "g.fig.subplots_adjust(top=0.85)\n", "g.fig.suptitle(\"Nokan pituuden keskiarvo eri saarilla lajin mukaan\")\n", "g.set_axis_labels('', 'mm')\n", "g.legend.set_title('Saari')\n", "g.axes[0, 0].set_title('Uros')\n", "g.axes[0, 1].set_title('Naaras')" ] }, { "cell_type": "markdown", "id": "0b853431", "metadata": {}, "source": [ "Seuraavassa vielä n-arvot ja samalla muut tunnusluvut taulukkona." ] }, { "cell_type": "code", "execution_count": 11, "id": "bcdb5319-d72d-40a6-8f99-6540720278ba", "metadata": {}, "outputs": [ { "data": { "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", " \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", "
countmeanstdmin25%50%75%max
sexislandspecies
FemaleBiscoeAdelie22.0187.1818186.744567172.0184.25187.0191.75199.0
Gentoo58.0212.7068973.897856203.0210.00212.0215.00222.0
DreamAdelie27.0187.8518525.510156178.0185.00188.0191.00202.0
Chinstrap34.0191.7352945.754096178.0187.25192.0195.75202.0
TorgersenAdelie24.0188.2916674.638958176.0186.00189.0191.00196.0
MaleBiscoeAdelie22.0190.4090916.463517180.0185.75191.0194.75203.0
Gentoo61.0221.5409845.673252208.0218.00221.0225.00231.0
DreamAdelie28.0191.9285716.803749178.0188.50190.5196.00208.0
Chinstrap34.0199.9117655.976558187.0196.00200.5203.00212.0
TorgersenAdelie23.0194.9130435.915412181.0192.00195.0198.00210.0
\n", "
" ], "text/plain": [ " count mean std min 25% 50% \\\n", "sex island species \n", "Female Biscoe Adelie 22.0 187.181818 6.744567 172.0 184.25 187.0 \n", " Gentoo 58.0 212.706897 3.897856 203.0 210.00 212.0 \n", " Dream Adelie 27.0 187.851852 5.510156 178.0 185.00 188.0 \n", " Chinstrap 34.0 191.735294 5.754096 178.0 187.25 192.0 \n", " Torgersen Adelie 24.0 188.291667 4.638958 176.0 186.00 189.0 \n", "Male Biscoe Adelie 22.0 190.409091 6.463517 180.0 185.75 191.0 \n", " Gentoo 61.0 221.540984 5.673252 208.0 218.00 221.0 \n", " Dream Adelie 28.0 191.928571 6.803749 178.0 188.50 190.5 \n", " Chinstrap 34.0 199.911765 5.976558 187.0 196.00 200.5 \n", " Torgersen Adelie 23.0 194.913043 5.915412 181.0 192.00 195.0 \n", "\n", " 75% max \n", "sex island species \n", "Female Biscoe Adelie 191.75 199.0 \n", " Gentoo 215.00 222.0 \n", " Dream Adelie 191.00 202.0 \n", " Chinstrap 195.75 202.0 \n", " Torgersen Adelie 191.00 196.0 \n", "Male Biscoe Adelie 194.75 203.0 \n", " Gentoo 225.00 231.0 \n", " Dream Adelie 196.00 208.0 \n", " Chinstrap 203.00 212.0 \n", " Torgersen Adelie 198.00 210.0 " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "penguins.groupby(['sex', 'island', 'species'])['flipper_length_mm'].describe()" ] }, { "cell_type": "markdown", "id": "798a2229-8ef4-4ee1-8e06-f4e8e513f102", "metadata": {}, "source": [ "### Muuta huomioitavaa\n", "\n", "### Keskiarvon sijasta muita tunnuslukuja\n", "\n", "**barplot**in **estimator**-paramterilla voit vaihtaa laskettavaksi keskiarvon sijasta jonkin muun tunnusluvun, esimerkiksi `estimator='sum'`.\n", "\n", "#### Fontit\n", "\n", "Tekstiä lisäävät funktiot (**plt.title**, **plt.xlabel**, **plt.xticks** jne.) tunnistavat tekstiin liittyviä parametreja https://matplotlib.org/stable/api/text_api.html#matplotlib.text.Text kuten esimerkiksi **fontsize** ja **fontstyle**.\n", "\n", "Jos haluat tehdä kerralla koko muistiota koskevia fonttimuutoksia, niin katso [matplotlib7.ipynb](https://github.com/taanila/kaaviot/blob/master/matplotlib7.ipynb).\n", "\n", "#### Värit\n", "\n", "Kaavion väripaletin voit vaihtaa antamalla kaavionluonti-komennossa arvo **palette**-parametrille. Esimerkiksi `palette='Set1'` muuttaa paletiksi **Set1** tai `palette=['green', 'red']` muuntaa kahdenvärisiä pylväitä sisältävän kaavion pylväät vihreiksi ja punaisiksi.\n", "\n", "Jos haluat käyttää kaikissa muistion kaavioissa samaa vaihtoehtoista palettia, niin käytä **sns.set_palette**-funktiota, esimerkiksi `sns.set_palette('Set1')`.\n", "\n", "- Värejä https://matplotlib.org/stable/gallery/color/named_colors.html.\n", "- Paletteja https://matplotlib.org/stable/gallery/color/colormap_reference.html.\n", "\n", "#### Kuvion koko\n", "\n", "Kuvion (**Figure**) oletuskoko on 6.4 x 4.8. Jos haluat vaihtaa koon, niin luo kuvio ennen kaavion luontia, esimerkiksi `plt.figure(figsize=(4, 3))`. Funktiolla **catplot** luotavan kaavion kokoa voit säätää **height**-parametrilla." ] }, { "cell_type": "markdown", "id": "b429d508-2140-48df-a87f-05345cdf8fd8", "metadata": {}, "source": [ "### Lisätietoa\n", "\n", "https://tilastoapu.wordpress.com/python" ] } ], "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.9" } }, "nbformat": 4, "nbformat_minor": 5 }