{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Päivitetty 2023-12-08 / Aki Taanila\n" ] } ], "source": [ "from datetime import datetime\n", "print(f'Päivitetty {datetime.now().date()} / Aki Taanila')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Matplotlib - osa 3\n", "## Histogrammi\n", "\n", "Tämä on jatkoa sarjan kahdelle edelliselle osalle:\n", "\n", "* https://nbviewer.jupyter.org/github/taanila/kaaviot/blob/master/matplotlib1.ipynb\n", "* https://nbviewer.jupyter.org/github/taanila/kaaviot/blob/master/matplotlib2.ipynb\n", "\n", "**Seaborn** on matplotlibin päälle rakennettu paketti, joka tekee monista vaikeista asioista helppoja. Tässä muistiossa käytän histogrammien tekemiseen seaborn-kirjastoa.\n", "\n", "Käytän seuraavissa akselin jakoviivojen (ticks) sijoittelun ja ulkoasun tuunausta **matplotlib.ticker**-paketin toiminnoilla vaikka ilman tätäkin saa ihan riittävän hyvät kaaviot." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import matplotlib.ticker as ticker # Arvoakselien tuunaukseen\n", "sns.set_style('whitegrid')" ] }, { "cell_type": "code", "execution_count": 3, "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", "
nrosukupikäperhekoulutuspalveluvpalkkajohtotyötovtyöymppalkkattyötehttyötervlomaosakuntosahieroja
0113811.022.0358733.0333NaNNaNNaNNaN
1212922.010.0296315.0213NaNNaNNaNNaN
2313011.07.0198934.01131.0NaNNaNNaN
3413621.014.0214433.03331.0NaNNaNNaN
4512412.04.0218323.02121.0NaNNaNNaN
\n", "
" ], "text/plain": [ " nro sukup ikä perhe koulutus palveluv palkka johto työtov työymp \\\n", "0 1 1 38 1 1.0 22.0 3587 3 3.0 3 \n", "1 2 1 29 2 2.0 10.0 2963 1 5.0 2 \n", "2 3 1 30 1 1.0 7.0 1989 3 4.0 1 \n", "3 4 1 36 2 1.0 14.0 2144 3 3.0 3 \n", "4 5 1 24 1 2.0 4.0 2183 2 3.0 2 \n", "\n", " palkkat työteht työterv lomaosa kuntosa hieroja \n", "0 3 3 NaN NaN NaN NaN \n", "1 1 3 NaN NaN NaN NaN \n", "2 1 3 1.0 NaN NaN NaN \n", "3 3 3 1.0 NaN NaN NaN \n", "4 1 2 1.0 NaN NaN NaN " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_excel('https://taanila.fi/data1.xlsx')\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Histogrammi\n", "\n", "Histogrammia käytetään määrällisen muuttujan luokitellun jakauman esittämiseen. Histogrammissa pylväät ovat kiinni toisissaan. Käytän seuraavassa seabornin **histplot**-funktiota. \n", "\n", "Seuraavassa tallennan kaavion muuttujan **ax1** arvoksi, jotta voin viitata kaavioon käyttäessäni **set_major_locator**-toimintoa." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi4AAAHBCAYAAABOsDAVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAm1UlEQVR4nO3dfVRVdb7H8c8BVA6iIqNXF452G1EMwaQUTbvTGkZ0pnS0THNd86rlw1LT6iaKD2nq5WrLSU0tH3J6MGicfCivaGVqVjMZ4UNGjqB2M68yUoqgIAgc9v3DZDyKxBGO+/zo/VrLJWcfzj7f7RZ4s/d5cFiWZQkAAMAAfnYPAAAAUF2ECwAAMAbhAgAAjEG4AAAAYxAuAADAGIQLAAAwBuECAACMQbgAAABjEC4AAMAYhAuACsuWLVNERIQkadOmTYqIiNDJkyervM2wYcM0bNiw6z6u7PrqupnbAPh5CLB7AABmmz17dqUfV7UMAG4W4QKgRsLDwyv9uKplAHCzOFUEoFrOnz+v/v37Ky4uruL0UW5urubMmaPf/OY3ioqKUmxsrCZMmOB2euna0z7Vuc21Pv30U0VFRWnatGm68r6w6enpevzxx9W1a1dFRUUpLi5Oy5YtU3l5uSTp5MmTioiI0KZNm9zWlZiYqLi4OLf5Zs2apRUrVujf/u3fdOedd2r06NE6c+aMNm7cqPj4eMXExGjEiBFuM7pcLq1evVp9+/ZVp06d1LlzZw0ZMkR79uypwb8ygJ/CERcAP6mwsFCjR4/W+fPntXbtWv3yl7+UZVkaO3asTp8+rWeeeUZhYWHKzMzUkiVLNGvWLL366qvXrefKbfLz8/XMM8+oefPmOnz4sF588cUb3iY9PV1PPPGEHnjgASUlJcnhcCgzM1MjRozQ7373Oy1evFiWZWnz5s1avny5/vVf/1X9+vXzaPu2bt2qyMhIJSUlKTs7W/PmzdOjjz6qwMBATZ06VXl5eUpKStLcuXO1evVqSdIf//hHvfXWW5o8ebIiIiJ0+vRpvfTSS3ryySe1e/duBQUF3dw/NoAqES4AqnTp0iWNGzdOp0+fVnJyslq3bi1J+v777xUUFKTZs2erV69ekqTY2FidOHFC69atq3Rd33//vZxOp6ZOnaouXbpIkrp166aTJ09WepuvvvpKY8eOVe/evTV//nz5+V0+SJyZmakePXpo4cKFFct69uyp3bt3Kz093eNwKS0t1fLly9WkSRNJ0ocffqi//vWv2rFjR8X2Hj58WJs3b3bblqefftrtaFJgYKAmTpyorKwsxcTEeDQDgOohXABUacqUKfr666+VlJRU8UNcklq0aKE33nhDkpSdna3vvvtO33zzjfbv36/S0tJK19WiRQutXbu2WrfJzs7W6NGjZVmWZs+eXREokjRgwAANGDBAly5d0okTJ/Tdd9/p0KFDcrlcN7zvqrRt27YiWiSpefPmCg0NddvekJAQXbhwoeLyCy+8IOnyqa/vvvtO3377rXbt2iVJNzUDgOohXABUKScnR1FRUXrppZf0+9//Xg0bNqy47n/+53+0aNEi/eMf/1BISIg6dOigwMDAKtdX3ducPHlS9957r9LS0rRs2TJNmzat4rri4mLNmzdPmzdvVllZmX75y18qJiZGAQEBFY+B8URwcPB1y5xOZ5W3ycjI0Jw5c5SRkaHAwECFh4erVatWknRTMwCoHh6cC6BKy5cv1/PPP68ffvhBixcvrli+d+9eTZ06VfHx8fr444+VlpamN954Q507d77hujy5Tbt27bRq1So9/vjjevPNN/XVV19VXJeUlKQPPvhAS5Ys0f79+7Vjxw4tXLhQAQH//F3M4XBIuvwg2qtdvHjxJv8l/qmgoECjRo1SUFCQUlNTdeDAAW3cuFEDBw6s8boBVI1wAVClZs2aKTw8XCNHjlRKSooOHDggSTpw4IDKy8s1adIktWzZUtLlSPjss88kqeLZPVfz5DZNmzZVQECAxo0bp7CwMM2YMaPiFMy+ffvUrVs39erVq+JBsF9//bVyc3Mr1nHlKMrp06cr1llaWuoWQDfrf//3f5WXl6f/+I//ULt27SpOY33yySc33HYAtYNTRQCqZcKECdq6datmzpypd955R506dZIkzZ07VwMHDtT58+eVnJyszMxMSZePbFx7CuZmbhMYGKhnn31WY8aM0SuvvKLx48erU6dOeu+99/TnP/9Zbdu2VWZmplasWCGHw6GioiJJUpMmTRQTE6Pk5GTddtttatq0qd58800VFxfX+Bk/t99+u4KDg7Vy5UoFBAQoICBAH3zwgTZs2CBJFTMAqH0ccQFQLYGBgZo1a5aOHTumlStXqlu3bpo1a5YOHDig0aNHa/78+QoLC9Py5cslXT4qcq2buY0k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kk6ePKmEhAQ98MADOnfunHr37q0XXnhB69at89qQAAAAkgfhcvr0aUlSaGio/Pz8FBYWpm+++UaSFB4erpycHO9MCAAA8KNqh8vKlSslSREREXrxxRclSb/4xS/08ccfKy0tjRelAwAAXlftcElNTZUkJSQkaMeOHfrhhx80adIkjR8/XiNGjNBjjz3mtSEBAACkm3hWUdu2bbV161ZJl58a/dFHH6mwsJB3hwYAAF7ncbhI0v/93/+5PR26tLRUH3/8sUaMGFGbswEAALipdrjs27dPd999t1atWqXFixdf93L/d955J+ECAAC8qtqPcRk1apQkKSUlRUuXLtWKFSs0aNAgff7557r//vsVExPjtSEBAAAkD8LlwIEDkqQLFy6od+/e6tChg77++muFhIRoxowZev/99702JABIUhNnPZWXWz/9iQar69sH1FS1TxU999xzeu655/Qv//IvKigoUIsWLXTy5ElZlqXQ0FCdP3/em3MCgBo2CJCfn0PLdh3VqXNFdo9T61o1dWpiXDu7xwB8WrXD5coDcbt27apJkyZpyZIlioyM1KJFi9SgQQO1aNHCa0MCwNVOnSvS8bOFdo8BwAbVPlU0Z84cSVJiYqJuu+02lZWVafr06dqxY4f+8pe/aPr06V4bEgAAQLqJp0MHBwdr9uzZki6//P97771X60MBAABUxuNwycvL01tvvaVTp06pvLzc7br58+fX2mAAAADX8jhcnnrqKf3jH/9Q586d5edX7TNNAAAANeZxuBw8eFAfffSRQkJCvDAOAADAjXl8yKRNmzYqLS31xiwAAABV8viIy6xZszRmzBgNGDBATZo0cbtuwIABtTUXAADAdTwOlw0bNujIkSN67bXX3B7j4nA4CBcAAOBVHofL+++/r82bNys8PNwb8wAAANyQx49xadq0qdq0aeONWQAAAKrkcbhMmjRJ06ZN09///nedOnVK2dnZFX88lZubq/j4eKWlpVUsO3jwoAYNGqSYmBjFxcVp/fr1Hq8XAADUTR6fKkpMTJQkbd26VQ6HQ9Ll9zFyOBw6fPhwtdezb98+JSYm6sSJExXL8vPzNWbMGE2aNEmPPPKI0tPTNWHCBEVERKhTp06ejgoAAOoYj8Nl586dNb7Td955R0uXLlVCQoKefvrpiuXbt29XSEiIhg4dKkm655571K9fP6WkpBAu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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax1 = sns.histplot(data=df, x='ikä')\n", "\n", "plt.title('Ikäjakauma')\n", "plt.ylabel('Lukumäärä')\n", "plt.grid(axis = 'x')\n", "\n", "# Tuunaan y-akselin näyttämään arvot viiden välein\n", "ax1.yaxis.set_major_locator(ticker.MultipleLocator(5))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Seuraavassa viimeistellympi histogrammi, jossa määrään käytettäväksi kuutta luokkaa (**bins = 6**).\n", "\n", "Lukumäärien sijasta arvoakselilla on prosentit (`stat='percent'`)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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555T5cqV1bp1a6Wlpemll14qtjGWplI/4RkAANypTZs2atOmzV3XJycnW7+3s7PTiBEjNGLEiEI9x4QJE/I8dnNz09y5cwtXaDnEzA8AADAUwg8AADAUwg8AADAUwg8AoER8+umn8vX1zfPl4+MjHx+ffNubzWbNnj1bHTp0kK+vr4KDg7Vx48a79r9x40a1b99e/v7+euedd/KsGzx4sHbv3l2k40H5xQnPAIAS8Ze//EV/+ctfrI8vXLigXr16KTIyMt/2S5cu1SeffKLFixerbt262rZtm0aMGCEfH598P4IdHR2d52ad3bp1s96s08PDQ08//XSxjQ3lC+EHAFDiLBaLIiMj9cc//lHdu3fPt02/fv3Uq1cvubq6Kjc3VxkZGXJxcZGzs3O+7Qu6Wec///nPYhnHbWazRfb2dsX6HBVFWdhXhB8AQIlbt26dvv/+e82ZM+eubezt7eXq6qqdO3dq6NChslgsGjdunH73u9/l2740b9Zpb2+n2V+e1LlL2cX6POXdI9Vd9HJAo9Iug/ADAChZZrNZ77//voYPHy53d/d7tvf391dKSor279+vESNGqGbNmnr22WfvaFfaN+s8dylbP168VuT9ouhxwjMAoETt3btXP//8s3r37m1TeycnJzk6Ourpp59W9+7dtX79epu2M9rNOmE7wg8AoERt3rxZQUFBcnV1LbBdXFyc4uLi8izLzc213oqhIEa8WSdsR/gBAJSoAwcOqFWrVvds5+fnp+XLl2v//v0ym8368ssvtXHjRoWEhBS4nVFv1gnbEX4AACXq7Nmzdz1p+bc36wwMDNSECRM0YcIEtWrVSu+9955mz56tFi1aFNi/UW/WCdtxwjMAoET99oac91rXu3dvm88Nus2oN+uE7Zj5AQAAhkL4AQAAhkL4AQAAhkL4AQAAhkL4AQDcoZpLJZnNlns3BMohPu0FALiDW2VH7ldlo+aPeqivP9cOKk8IPwCAu+J+VfdWx8OltEtAIXHYCwAAGArhBwAAGArhBwAAGArhBwAAGArhBwAAGArhBwAAGArhBwAAGArhBwAAGArhBwAAGArhBwAAGArhBwAAGArhBwAAGArhBwAAGArhBwAAGArhBwAAGArhBwAAGArhBwAAGArhBwAAGEqZCz8bN25U48aN5evra/2KjIzMt+2FCxfUt29f+fr6qn///kpPT7euW79+vcaMGVNSZQMAgHKizIWflJQUde/eXcnJydavN998M9+2H330kWrXrq1du3bpoYce0sKFCyVJWVlZmjt3rkaPHl2ClQMAgPKgTIYfHx8fm9o6OjpKkiwWiyTJwcFBkvTOO++oX79+euihh4qnSAAAUG45lnYBv2U2m3X06FG5uLho/vz5MplM6tChgyIiIlStWrU72g8YMEARERHq2LGjmjZtqkGDBik1NVVHjhzRuHHjHqgWk8n0QNvfze2A9t+8Bhuwr2zHvrId+8p27Cvbsa9sUxy/YwvTZ5kKPxkZGWrcuLE6deqkWbNm6dKlSxozZowiIyM1b968O9rXqFHDeqhL+nUGaOTIkZowYYI2bdqkDz/8UE5OToqIiJCfn1+haklJSXnQ4dzBxcVFjRs31vXr15WVlVXk/VckOTlu//03h311D+wr27GvbMe+sh37ynbXXe0kScePH1d2dnap1VGmwk+NGjW0dOlS62MXFxdFRkbqueeeU1ZWltzd3Qvcfs2aNfLy8tLvf/97DRw4UBs2bND58+cVHh6uHTt2yM7OzuZamjZtap2lKWqurq5yd+fPg4I4O7v8919nubsXzyxcRcG+sh37ynbsK9uxr2zn6uoqSfL29i7yvk0mk80TF2Uq/KSmpmrDhg167bXXrEElNzdX9vb2cnJyKnDbzMxMLVy4UEuXLtUPP/wgV1dX1alTRzVq1NAvv/yiS5cuydPT0+ZaHBwcii38SFIhcpjhsa9sx76yHfvKduwr27GvbFOcv19tUabCj4eHh5YuXapq1aopNDRUP//8s95880399a9/vWf4eeuttzR48GBVrVpVjzzyiK5cuaKffvpJ58+fV7Vq1eTh4VEygwAAAGVamQo/Dz/8sD744AO99dZbev/991W5cmV17dr1rtf5uS0lJUWnT5/W5MmTJf16+GzMmDHq27evnJ2dFRcXJ3v7MvfBNgAAUArKVPiRJH9/fy1fvrxQ2zRt2lSLFy/Os6xfv37q169fUZYGAAAqAKZDAACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoRB+AACAoZS58HPx4kWNGDFCfn5+euqppxQTE6Nbt27l2/bChQvq27evfH191b9/f6Wnp1vXrV+/XmPGjCmpsgEAQDlR5sLPqFGj5Orqqh07dmj16tXavXu3Fi5cmG/bjz76SLVr19auXbv00EMPWdtlZWVp7ty5Gj16dMkVDgAAyoUyFX5++ukn7du3T5GRkXJxcdGjjz6qESNGaOnSpfm2d3R0lCRZLBZJkoODgyTpnXfeUb9+/fTQQw+VTOEAAKDcKFPh5+TJk/Lw8FCtWrWsyxo0aKC0tDRduXLljvYDBgzQpUuX1LFjR2VlZWnQoEFKTU3VkSNH1Ldv35IsHQAAlBOOpV3Ab127dk0uLi55lt1+fP36dVWtWjXPuho1auQ5JGaxWDRy5EhNmDBBmzZt0ocffignJydFRETIz8/PphpuzyLl5uZaZ5KKkoODg+p6OMvRzlLkfVckD1epJJPJxL6yAfvKduwr27GvbMe+sl2das4ymUwymUxF3vftPm//Hi9ImQo/rq6uys7OzrPs9mM3N7d7br9mzRp5eXnp97//vQYOHKgNGzbo/PnzCg8P144dO2RnZ3fPPsxmsyTpu+++u48R2OYpD0kexdZ9BXFRhw5dZF/ZhH1lO/aV7dhXtmNf2e6qDh06VKzPcPv3eEHKVPhp1KiRLl++rPT0dNWoUUOSdOrUKT388MOqUqVKgdtmZmZq4cKFWrp0qX744Qe5urqqTp06qlGjhn755RddunRJnp6e96zB0dFRTZs2lb29vU1hCQAAlD6LxSKz2Ww9H7ggZSr81K9fXy1bttS0adM0ZcoUXbp0SXPmzFHv3r3vue1bb72lwYMHq2rVqnrkkUd05coV/fTTTzp//ryqVasmDw8Pm2qwt7eXk5PTA44EAACUVWUq/EjSrFmzNGXKFP3pT3+Svb29evTooREjRhS4TUpKik6fPq3JkydL+vVcoDFjxqhv375ydnZWXFyc7O3L1LndAACglNhZbDkzCAAAoIJgOgQAABgK4QcAABgK4QcAABgK4QcAABgK4QcAABgK4acYpKamKjQ0VP7+/mrbtq1Gjx6tjIwMSdLhw4cVEhIiX19fBQQEaNWqVaVcLW7bvXu3QkJC1KJFC7Vt21bR0dHKycmRxOtWHphMJvXv319jx461LuN1K7s2btyoxo0by9fX1/oVGRkpidetLLt8+bJGjx6tp556Sq1atdKIESP0888/Sypnr5sFRSo7O9vStm1byzvvvGO5ceOGJSMjwzJ06FDLiy++aLl8+bLF39/fsmTJEsvNmzctu3btsvj6+loOHz5c2mUb3sWLFy1Nmza1JCYmWkwmk+XChQuWbt26Wd555x1et3Li7bfftjzxxBOWMWPGWCwWC69bGRcXF2cZO3bsHct53cq2559/3hIWFmbJzMy0XL161TJy5EjLsGHDyt3rxsxPEUtLS9MTTzyhsLAwOTk5qXr16urTp4/279+vLVu2yMPDQ/369ZOjo6OefvppBQcHa+nSpaVdtuF5enpq165d6tmzp+zs7HT58mXduHFDnp6evG7lwO7du7Vlyxb9+c9/ti7jdSvbUlJS5OPjc8dyXrey69tvv9Xhw4cVFxenqlWryt3dXdHR0YqIiCh3rxvhp4g9/vjjmj9/fp47wm/evFlNmjTRyZMn5eXllad9w4YNlZqaWtJlIh/u7u6SpA4dOig4OFg1a9ZUz549ed3KuIsXL2r8+PGaMWOGXFxcrMt53cous9mso0eP6quvvlLHjh31zDPPKCoqSpmZmbxuZdiRI0fUsGFDrVy5UkFBQWrXrp2mT5+umjVrlrvXjfBTjCwWi2bOnKlt27Zp/PjxunbtWp4fzpLk7Oys69evl1KFyM+WLVu0fft22dvbKzw8nNetDDObzYqMjFRoaKieeOKJPOt43cqujIwMNW7cWJ06ddLGjRu1fPly/fjjj4qMjOR1K8MyMzN1/Phx/fjjj1q7dq0++eQTXbhwQWPGjCl3rxvhp5hkZWUpPDxc69ev15IlS+Tt7S0XFxfrCbS35eTkyM3NrZSqRH6cnZ1Vq1YtRUZGaseOHbxuZdgHH3wgJycn9e/f/451vG5lV40aNbR06VL17t1bLi4uqlOnjiIjI7V9+3ZZLBZetzLq9k2/x48fL3d3d9WoUUOjRo3S119/Xe5eN8JPMThz5ox69eqlrKwsrV69Wt7e3pIkLy8vnTx5Mk/b77//Xo0aNSqNMvEbBw8eVOfOnZWbm2tdlpubq0qVKqlhw4a8bmXUunXrtG/fPvn5+cnPz08bNmzQhg0b5Ofnx/utDEtNTVVCQoIsv7m1ZG5uruzt7dWsWTNetzKqYcOGMpvNunnzpnWZ2WyWJP3hD38oV68b4aeIZWZmauDAgWrRooU+/PBDeXp6WtcFBQUpPT1dCxcu1M2bN7Vnzx6tX79evXr1KsWKIUne3t7KycnRjBkzlJubq3Pnzmn69Onq3bu3OnXqxOtWRv3rX//SwYMHlZSUpKSkJHXr1k3dunVTUlIS77cyzMPDQ0uXLtX8+fN169YtpaWl6c0339Rf//pX3m9lWJs2bfToo4/q9ddf17Vr15SRkaGZM2cqMDBQ3bp1K1evG3d1L2L//Oc/FRcXJxcXF9nZ2eVZl5ycrJSUFMXExOjEiRPy9PTUiBEj1LNnz1KqFr/1/fffa9q0aUpJSVGVKlUUHBxs/dQer1v5cPsaP3FxcZLE61aG7du3T2+99ZZOnDihypUrq2vXroqMjFTlypV53cqwCxcuKC4uTvv379eNGzcUEBCg8ePHq2rVquXqdSP8AAAAQ+GwFwAAMBTCDwAAMBTCDwAAMBTCDwAAMBTCDwAAMBTCDwAAMBTCDwAAMBTCD4AKJS0tTb6+vkpLS5O3t7f27t17z3Zz587VkCFDSrhSAKWFixwCqLC8vb21aNEiPfXUU6VdCoAyhJkfABXK2bNn5e3trbNnz+ZZvmbNGrVq1Ur79++XJH355Zfq27evnn76aT355JN6/vnn9eOPP5ZCxQBKGuEHQIW3atUqvfnmm1qwYIFatWql8+fP65VXXtGwYcO0e/duffXVV7JYLHrvvfdKu1QAJcCxtAsAgOK0atUqbdiwQStXrlTTpk0lSZ6envrss89Ut25dZWVl6fz586pevbouXLhQytUCKAmEHwAV2sGDB9WwYUMlJiaqWbNmkqRKlSppw4YNWr58uezs7OTl5aWsrCw5OvIjETAC3ukAKrQpU6bI09NTzz33nP70pz/pmWee0aZNm7RkyRItW7ZM9erVkyRFR0frxIkTpVwtgJLAOT8AKrRKlSqpcePGGjZsmMaPH6/MzExdvXpV9vb2cnZ2lsVi0fbt2/XJJ5/o5s2bpV0ugBJA+AFgCC+99JI8PT01efJk/fWvf1WbNm3UrVs3tW7dWnPmzNELL7ygH374Qbm5uaVdKoBixnV+AACAoTDzAwAADIXwAwAADIXwAwAADIXwAwAADIXwAwAADIXwAwAADIXwAwAADIXwAwAADIXwAwAADIXwAwAADIXwAwAADIXwAwAADOX/Ax9rWkfB2PukAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax2 = sns.histplot(data=df, x='ikä', bins=6, stat='percent')\n", "\n", "plt.title('Ikäjakauma')\n", "n = df['ikä'].count() # Ikään liittyvien havaintojen lukumäärä\n", "plt.ylabel(f'%, n = {str(n)}')\n", "plt.grid(axis='x')\n", "plt.ylim(0, 35)\n", "\n", "for bar_container in ax2.containers:\n", " ax2.bar_label(bar_container, padding=2, fmt='{:.1f} %')\n", "\n", "ax2.yaxis.set_major_locator(ticker.MultipleLocator(5))\n", "# %-merkit y-akselin lukujen perään\n", "ax2.yaxis.set_major_formatter(ticker.FuncFormatter('{:.0f} %'.format))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Voin määrittää luokkarajat itse. Tarvittaessa voin käyttää myös epätasavälisiä luokkia. \n", "* Havainnollisuuden parantamiseksi asetan x-akselin jakoviivat luokkarajojen kohdille (**plt.xticks(bins)**).\n", "* Huomaa, että epätasavälistä luokittelua käytettäessä pylvään leveys riippuu luokan leveydestä." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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MplMbXaoJo8OdRkZGTH8EBER6YhHj5fR5JSVej/h+YcffsC5c+eQlpaGtLQ0DB48GIMHD1Zd9eXp6Ync3Fxs2rQJDx48wKlTp5CSkoLhw4fX2G9lZSUiIiIQHBwMALCyskJ2djbKysqQnp7OO70SERERgEZ4h+dWrVohNjYW4eHhWL16NSwsLBAUFISePXvWuF1cXBz69u0LKysrAICHhwdSU1PRp08fdOzYEdHR0fVQPRERETV2vMPzPygUCmRkZMDBwYGHvYiIiHREbf5+88GmREREJCoMP0RERCQqDD9EREQkKgw/REREJCoMP0RERCQqDD9EREQkKgw/REREJCoMP0RERCQqDD9EREQkKgw/REREJCoMP0RERCQqDD9EREQkKgw/REREJCoMP0RERCQqDD9EREQkKgw/REREJCoMP0RERCQqDD9EREQkKgw/REREJCoMP0RERCQqDD9EREQkKgw/REREJCoMP0RERCQqDD9EREQkKgw/REREJCoMP0RERCQqDD9EREQkKgw/REREJCoMP0RERCQqDD9EREQkKgw/REREJCoMP0RERCQqDD9EREQkKgw/REREJCoMP6SxkydPYuTIkXB0dISbmxvCwsJQXl5epd3ff/8NV1dXJCcna9Tv4sWLMXfu3BrbREVFoXv37njzzTdx8OBB1fJ79+5h4MCByM/Pr91giIhItBh+SCP5+fmYMmUK/vWvfyEtLQ07d+7E6dOnERMTo9ZOqVRi1qxZKCgoeGqfBQUFmDVrFuLi4mpsd+3aNSQkJGDPnj0ICgrCwoULVetWrlyJ8ePHw8LC4pnGRURE4tMg4edpMwgLFiyATCaDXC5XfX377bfV9nX69Gl4enrCyckJgYGBUCqVqnXBwcFISkrS+njEwMLCAidOnMCwYcOgp6eHu3fv4v79+1VCxxdffIG2bduiXbt2NfZXUlKCd955By1atED//v1rbKuv/79fU0EQVK8vXLiAixcvYuTIkc84KiIiEqN6Dz+azCBkZWUhLCwM6enpqq/Ro0dX219UVBTGjh2L1NRUnDp1CseOHQMAZGZm4vr16xg2bFi9jEsMzMzMAAB9+/aFl5cXWrdurbZ/T506he+//x4LFix4al/NmjXD999/j5CQEJiYmNTY9pVXXoGvry+GDRuGZcuWYfHixRAEAWFhYQgJCYGent7zDYyIiESl3sPP02YQKioqcPnyZchkMo36MzAwAPBwRkAQBEgkEiiVSixevJh/GLXkwIEDOHLkCPT19eHv7w8AyMvLw/z58xEdHQ1TU9On9mFgYABLS0uN39Pf3x/Hjx/H/v370bdvX2zbtg0ymQzm5uaYMGEChg4ditWrVz/zmIiISDwMGuJNH59BuH37NpydnVUzCNnZ2aisrMTq1atx9uxZNG/eHMOHD8fEiRPVDn88EhAQgIULF2Lt2rUYNGgQXF1d8c0338DR0RF2dnbPXKNCoXjmbZs6Q0NDWFpa4tNPP4W3tzfy8/MREBCAMWPG4LXXXoNCoYAgCFAqlRrtR0EQAGi+z+/evYstW7bgm2++QVBQEJydnTF+/HiMHDkS3bp1Q58+fZ5rfEREpHtq83e7QcLPIwcOHEBhYSFmzZoFf39/bNiwAUVFRXBxcYGPjw9WrFiBixcvws/PD/r6+pg4cWKVPpycnJCSkqJ6nZeXh4SEBCQmJiI6OhpHjx5Fu3btEBoaijZt2mhcW1ZWVp2Msam4fPky1q9fj6VLl6pm27Kzs2FgYIAzZ87g9OnTSE9Px+effw4AKCsrQ2hoKHbs2IGAgIAa+350pVZGRoZGtcTExOCdd97B1atX8euvv8LR0RG//fYbWrdujZ9//hnNmzd/9oESEVGT16Dhx9jYGMbGxggICMDIkSNRWFgINzc3uLm5qdp069YN48aNw969e6sNP/8UFRUFPz8/pKWl4fDhw0hKSkJsbCwiIyOxcuVKjWuzt7eHRCJ5pnE1RTY2Nli3bh1+/PFHfPLJJ7hz5w4iIiIwYsQIeHh44Pz582rtPTw84Ofnh/fee++pfT865Ong4PDUtufPn8f9+/cxbdo0AICdnR3u3bsHOzs73Lp1C97e3hr1Q0RETYtCodB44qLew8+5c+cwf/58fPfddzAyMgLw8DwfQ0NDSKVSHDp0CLm5ufD29lZtU1FRAWNj46f2nZaWhtzcXAwYMAAxMTGwtbWFkZERZDKZ2uyQJiQSCcPPY1q0aIGNGzdiyZIleOONN9C8eXN4eXnBz8+v2v2kp6cHfX191bq0tDRMmjQJ33//Pdq3b1+lLYCn7m+FQoHIyEhERkaq2s6aNQuzZs1CfHw8BgwYgLfffpvneRERUY3qPfzY2dmhvLwcy5cvx8yZM3Hnzh0sXboUI0aMgJGREQRBQEREBDp27IiePXsiIyMDW7Zswbx582rst7KyEhEREVi+fDkAwMrKCrt370ZZWRnS09PRoUOH+hhek2ZtbY3Y2FiN2v70009qr52dnZGenl5t28jISI36lEgk2LZtW5Wadu3apdH2REREQAOEH1NTU2zYsAFLliyBm5ub2gwCAHh6emLevHlYuHAhbt++DUtLS0yfPh1Dhgypsd+4uDj07dsXVlZWAB4edklNTUWfPn3QsWNHREdHa3toREREpAP0hEeX2hCAh4dWMjIy4ODgwMNeREREOqI2f7/5eAsiIiISFYYfIiIiEhWGH3oqpVL3jozqYs1ERFQ/GvQ+P6Qb9PX1sOanK/iroKyhS9HIi62kmO5u09BlEBFRI8XwQxr5q6AMf+SVNHQZREREz42HvYiIiEhUGH6IiIhIVBh+iIiISFQYfoiIiEhUGH6IiIhIVBh+iIiISFQYfoiIiEhUGH6IiIhIVBh+iIiISFQYfoiIiEhUGH6IiIhIVBh+iIiISFQYfoiIiEhUGH6IiIhIVBh+iIiISFQYfoiIiEhUGH6IiIhIVBh+iIiISFQYfoiIiEhUGH6IiIhIVBh+iIiISFQYfoiIiEhUGH6IiIhIVBh+iIiISFQYfoiIiEhUGH6IiIhIVBh+iIiISFQYfoiIiEhUGH6IiIhIVBh+iIiISFQYfoiIiEhUGiT8nDx5EiNHjoSjoyPc3NwQFhaG8vJy1frz589j5MiRkMvlcHd3x/bt25/Y1+nTp+Hp6QknJycEBgZCqVSq1gUHByMpKUmrYyEiIiLdUu/hJz8/H1OmTMG//vUvpKWlYefOnTh9+jRiYmIAAIWFhZg8eTKGDh2KM2fOIDw8HBEREcjMzKy2v6ioKIwdOxapqak4deoUjh07BgDIzMzE9evXMWzYsHobGxERETV+BvX9hhYWFjhx4gTMzMwgCALu3r2L+/fvw8LCAgBw4MABmJubY8yYMQCAXr16wcvLC1u3bkW3bt2q9Gdg8HAIgiBAEARIJBIolUosXrwYYWFh0NPTq7/BERERUaPXIIe9zMzMAAB9+/aFl5cXWrdurZqhuXLlCmxtbdXaW1tbIzs7u9q+AgICsG3bNrzzzjtwd3eHq6srEhIS4OjoCDs7O+0OhIiIiHROvc/8PO7AgQMoLCzErFmz4O/vjw0bNqCkpARSqVStnbGxMUpLS6vtw8nJCSkpKarXeXl5SEhIQGJiIqKjo3H06FG0a9cOoaGhaNOmjca1KRSKZxtUEySRSAAAgtDAhdQS/xsSEYlHbT7zGzT8GBsbw9jYGAEBARg5ciQKCwshlUpRVFSk1q68vBympqYa9RkVFQU/Pz+kpaXh8OHDSEpKQmxsLCIjI7Fy5UqNa8vKyqrVWJoqqVSKLl26oLS0FMXFxQ1djkZKTR4e6rx06RLKysoauBoiImps6j38nDt3DvPnz8d3330HIyMjAEBFRQUMDQ0hlUpha2uL48ePq21z9epV2NjYPLXvtLQ05ObmYsCAAYiJiYGtrS2MjIwgk8nUZoc0YW9vr5rxIMDExARmZrox9WNiYgIAPOxJRCQiCoVC44mLeg8/dnZ2KC8vx/LlyzFz5kzcuXMHS5cuxYgRI2BkZARPT08sW7YMmzZtwpgxY3D27FmkpKRg7dq1NfZbWVmJiIgILF++HABgZWWF3bt3o6ysDOnp6ejQoUOt6pRIJAw//6Br547zvx8REVWn3sOPqakpNmzYgCVLlsDNzQ3NmzeHl5cX/Pz8AACtWrVCbGwswsPDsXr1alhYWCAoKAg9e/assd+4uDj07dsXVlZWAAAPDw+kpqaiT58+6NixI6Kjo7U9NCIiItIBeoKga6exapdCoUBGRgYcHBw4c/CYuUmZ+COvpKHL0IjVC6aIHF71tghERNR01ebvNx9vQURERKLC8ENERESiwvBDREREosLwQ0RERKLC8ENERESiwvBDREREosLwQ0RERKLC8ENERESiwvBDREREosLwQ01adnY2fH194eLiAjc3N8yePRv5+flq68eNGwe5XA5XV1dERESgsrKy2r7Ky8sREhICNzc3dO/eHePGjUN2dvYT3zsqKgrdu3fHm2++iYMHD6qW37t3DwMHDlSrg4iI6g/DDzVZ5eXlmDhxIuRyOY4dO4Y9e/bg7t27mD9/PgAgPz8f48ePh6urK06fPo1t27bh559/xubNm6vtb82aNfjjjz/w/fff4/jx4+jcuTM++uijatteu3YNCQkJ2LNnD4KCgrBw4ULVupUrV2L8+PGwsLCo8zETEdHTMfxQk5WTk4POnTvDz88PRkZGaNWqFUaPHo0zZ84AAHbt2gUrKytMmTIFhoaGeOmllxAbG4sBAwZU29+1a9cgCAIePQ5PX18fUqm02rb6+v/7pyUIgur1hQsXcPHiRYwcObIuh0pERLVQ7091J6ovr776KjZs2KC2bP/+/ejatSsAIDMzE7a2tggJCcGPP/4IqVSK4cOHY8qUKdX298EHH2D69Ono2bMnJBIJWrVqhS1btlTb9pVXXoGvry+GDRsGMzMzLF68GIIgICwsDCEhIdDT06vbwRIRkcY480OiIAgCVq5cidTUVAQGBgIACgsLkZycjG7duuHnn3/G559/jm+//RZff/11tX0oFAr0798fR44cwenTp/HWW29h2rRpuH//frXt/f39cfz4cezfvx99+/bFtm3bIJPJYG5ujgkTJmDo0KFYvXq11sZMRETVY/ihJq+4uBj+/v5ISUlBfHw87OzsAABGRkawt7fHiBEjYGhoiM6dO+P999/Hvn37qvTx4MEDfPzxxxg2bBjatGkDMzMzBAcH4/bt2zh+/PhTaygoKEBcXBxmzJiByMhIuLi4YNu2bTh48CCOHDlS52MmIqInY/ihJu3GjRsYPnw4iouLsWPHDlXwAYBOnTqhoqJCrb1SqVSd0/O40tJSFBYWqrWXSCTQ09ODoaHhU+uIjo7Ghx9+CDMzM1y5cgVdu3aFkZERbG1tcfny5ecYIRER1RbDDzVZhYWFGDduHBwdHbFx48YqV1cNHz4cly9fxldffQWFQoFLly4hPj4eQ4YMqdJXy5Yt4eTkhOjoaOTl5eH+/ftYtmwZWrVqBScnpxrryMjIQE5ODgYPHgwA6NixI9LT01FWVoaLFy+iY8eOdTdoIiJ6KoYfarKSk5ORk5ODffv2wcnJCXK5XPUFPJz5iY+Px88//4yePXti4sSJ8Pb2ho+PDwAgLS0NcrkcOTk5AIDVq1fDysoK7777Lt544w1cu3YNGzduhImJyRNrUCgUWLJkCYKDg1XLZs2ahR9//BFvvPEGnJ2d4eHhocW9QERE/6QnVDfHL2IKhQIZGRlwcHCARCJp6HIajblJmfgjr6Shy9CI1QumiBzeraHLICKielSbv9+c+SEiIiJRYfghIiIiUWH4ISIiIlFh+CEiIiJRYfghIiIiUWH4oSanpdQQSqXuXcSoizUTEekiPtiUmhzTZgbQ19fDmp+u4K+CsoYuRyMvtpJiurtNQ5dBRCQKDD/UZP1VUKYz9yYiIqL6w8NeREREJCoMP0RERCQqDD9EREQkKgw/REREJCoMP0RERCQqDD9EREQkKgw/REREJCoMP0RERCQqDD9EREQkKg0SfrKzs+Hr6wsXFxe4ublh9uzZyM/PV61fsGABZDIZ5HK56uvbb7+ttq/Tp0/D09MTTk5OCAwMhFKpVK0LDg5GUlKS1sdDREREuqPew095eTkmTpwIuVyOY8eOYc+ePbh79y7mz5+vapOVlYWwsDCkp6ervkaPHl1tf1FRURg7dixSU1Nx6tQpHDt2DACQmZmJ69evY9iwYfUyLiIiItIN9R5+cnJy0LlzZ/j5+cHIyAitWrXC6NGjcebMGQBARUUFLl++DJlMplF/BgYPH08mCAIEQYBEIoFSqcTixYsREhICPT09rY2FiIiIdE+9h59XX30VGzZsgEQiUS3bv38/unbtCuDhIbHKykqsXr0arq6u6N+/P2JiYtQOZz0uICAA27ZtwzvvvAN3d3e4uroiISEBjo6OsLOzq5cxERERke5o0Ke6C4KAzz77DKmpqYiPjwcAFBUVwcXFBT4+PlixYgUuXrwIPz8/6OvrY+LEiVX6cHJyQkpKiup1Xl4eEhISkJiYiOjoaBw9ehTt2rVDaGgo2rRpo3FtCoXi+QfYRDwKqoLQwIU8A12rmb93RETPpjafnw0WfoqLizFv3jxcuHAB8fHxqlkaNzc3uLm5qdp169YN48aNw969e6sNP/8UFRUFPz8/pKWl4fDhw0hKSkJsbCwiIyOxcuVKjevLysqq/aCaIKlUii5duqC0tBTFxcUNXY5GystN//u9XGdqLjV5eHj20qVLKCsra+BqiIiatgYJPzdu3MCkSZPQvn177NixAxYWFqp1hw4dQm5uLry9vVXLKioqYGxs/NR+09LSkJubiwEDBiAmJga2trYwMjKCTCZTmx3ShL29vdqhObEzMTGBmZluTKMYG0v/+90YZma6MZNiYmICADxUS0T0jBQKhcYTF/UefgoLCzFu3Dj07NkT4eHh0NdXP+1IEARERESgY8eO6NmzJzIyMrBlyxbMmzevxn4rKysRERGB5cuXAwCsrKywe/dulJWVIT09HR06dKhVnRKJRGvhJzs7G0uXLsWFCxdgaGgINzc3zJ07VxUCt27dis2bN+POnTto3bo1xo4di/fff7/avu7fv4/o6Gjs378fJSUlePXVVzFz5kz07Nmz2vZRUVHYvn07zMzMMH/+fHh6egIA7t27B29vb8THx6uF0cfp4rnjulYzAzcRkfbVe/hJTk5GTk4O9u3bhx9++EFtXXp6Ojw9PTFv3jwsXLgQt2/fhqWlJaZPn44hQ4bU2G9cXBz69u0LKysrAICHhwdSU1PRp08fdOzYEdHR0doaUq08utR/1KhRWL9+PUpKSjBnzhzMnz8f69atw08//YRVq1YhNjYWMpkMmZmZeP/992FtbV1toImOjsa5c+fw7bff4v/+7/+QlJSEDz/8EHv37kX79u3V2l67dg0JCQn44Ycf8OuvvyIkJEQVflauXInx48c/MfgQERE1FfUefnx9feHr61tjG29vb7XDXpr2+zh9fX1EREQgIiKi1jVq0+OX+kskEhgZGWH06NGYPXs2AMDd3R0//fQTzMzMUFlZiYKCAujp6aFFixbV9nf//n34+/ujXbt2AIBRo0YhOjoaFy5cqBJ+Hp9lEwRB9frChQu4ePEiQkJCtDFkIiKiRqVBr/YSo0eX+j/u8Uv9AcDMzAzXr1/H4MGDoVAo4Ovriy5dulTb36JFi9Renzx5EkVFRejcuXOVtq+88gp8fX0xbNgwmJmZYfHixRAEAWFhYbwnEhERiQbDTwOq7lL/R15++WWcP38e2dnZmDZtGiwsLDB58uQa+8vIyMCMGTPw0Ucf4eWXX662jb+/P/z9/VWvv/32W8hkMpibm2PChAnIy8uDu7u7WhsiIqKmhA82bSDFxcXw9/dHSkqK2qX+jxgaGsLQ0BD29vYYO3Ys9uzZU2N/27dvh6+vLz788EP4+flpVENBQQHi4uIwY8YMREZGwsXFBdu2bcPBgwdx5MiRZx4bERFRY8bw0wBu3LiB4cOHo7i4GDt27FALPps2bcKMGTPU2ldUVKBly5bV9qVQKBASEoLly5fjiy++eOr5VI+Ljo7Ghx9+CDMzM1y5cgVdu3aFkZERbG1tcfny5WcaGxERUWPH8FPPHl3q7+joiI0bN1a5usrZ2RmHDh3C3r17oVQqcfbsWWzZsgX/+te/qu0vIiICR44cQVJSElxdXTWuIyMjAzk5ORg8eDAAoGPHjkhPT0dZWRkuXryIjh07PvsgiYiIGjGGn3r2+KX+Tk5OkMvlqi8AkMlkWL16NdatWwdnZ2csXLgQgYGBGDhwIICHN3KUy+XIyclBfn4+tm7ditzcXAwePFitr+++++6JNSgUCixZsgTBwcGqZbNmzcKPP/6IN954A87OzvDw8NDujiAiImogeoKga08/0i6FQoGMjAw4ODjwhnOPmZuUiT/yShq6DI24drKE/1s2OlWz1QumiBzeraHLICLSWbX5+82ZHyIiIhIVhh8iIiISFYYfIiIiEhWGHyIiIhIVhh8iIiISFYafeqZU8uI6IiKihlSrZ3tlZWXh3LlzkMlkcHJyUlsXExPz1GdPEaCvr4c1P13BXwVlDV2KRhxeNoe3S4eGLoOIiKjOaBx+9u/fj9mzZ6NTp06Ijo7G0KFDERYWplq/bt06hh8N/VVQpjP3n2lvLm3oEoiIiOqUxoe91q5di88++wzJycnYtWsXTpw4gaioKNV63iuRiIiIdIHG4eevv/7Cm2++CQDo1KkTNmzYgKSkJOzdu1drxRERERHVNY3DT8uWLfH777+rXr/yyiuIiIhAcHAwsrOzoaenp5UCiYiIiOqSxuFn2LBhmDx5Mnbt2qVa5u7ujg8++AA+Pj6oqKjQRn1EREREdUrjE579/PxgamqKmzdvVlluYmKCtWvX1nlxRERERHWtVpe6jx8/vtrlvr6+8PX1rYt6iIiIiLSqVuHn7NmzaNasGWQyGU6cOIHExEQYGhri3XffRd++fbVVIxEREVGd0ficn8TERIwfPx4+Pj7YtGkT/Pz80LJlS7Ro0QIzZ87E999/r806iYiIiOqExjM/mzZtwpYtWwAA//73v7Fu3TrVbM+AAQMQFhaGQYMGaadKIiIiojqicfi5c+cO5HI5AEBfXx+9e/dWrXNxccF//vOfuq+OiIiIqI5pfNirTZs2yMzMREZGBhQKBc6cOaNad/z4cVhaWmqlQCIiIqK6VKtL3ceNGweFQoHu3btj9+7d+OGHH1BRUYF9+/Zh1qxZ2qyTiIiIqE5oHH4GDRoEW1tb/PHHH+jduzcqKiqwZs0a/P333wgMDMSIESO0WScRERFRnajVpe42NjawsbEBAEilUgQFBWmlKCIiIiJt0ficHyIiIqKmgOGHiIiIRIXhh4iIiESl1uHn1q1b1f5MREREpAtqHX4GDhyo+vndd9+t02KIiIiItK3W4UcQhGp/JiIiItIFtQ4/enp61f5MREREpAt4wjMRERGJSoOEn+zsbPj6+sLFxQVubm6YPXs28vPzVevPnz+PkSNHQi6Xw93dHdu3b39iX6dPn4anpyecnJwQGBgIpVKpWhccHIykpCStjoWIiIh0S72f81NeXo6JEydCLpfj2LFj2LNnD+7evYv58+cDAAoLCzF58mQMHToUZ86cQXh4OCIiIpCZmVltf1FRURg7dixSU1Nx6tQpHDt2DACQmZmJ69evY9iwYbWukYiIiJquWoefDz/8UPXzpEmTav2GOTk56Ny5M/z8/GBkZIRWrVph9OjRqqfEHzhwAObm5hgzZgwMDAzQq1cveHl5YevWrdX2Z2Dw8AkdgiBAEARIJBIolUosXrwYISEhPC+JiIiI1NTq2V4AMGXKFNXPkydPrvUbvvrqq9iwYYPasv3796Nr164AgCtXrsDW1lZtvbW1NXbs2FFtfwEBAVi4cCHWrl2LQYMGwdXVFd988w0cHR1hZ2dX6/oeUSgUz7xtTSQSCQBAFy+UY83ap63fOyKipq42n5+1Dj91SRAEfPbZZ0hNTUV8fDwAoKSkBFKpVK2dsbExSktLq+3DyckJKSkpqtd5eXlISEhAYmIioqOjcfToUbRr1w6hoaFo06aNxrVlZWU9w4hqJpVK0aVLF5SWlqK4uLjO+9eG8nLT/34vZ81aVGrycIby0qVLKCsra+BqiIiatgYLP8XFxZg3bx4uXLiA+Ph41SyNVCpFUVGRWtvy8nKYmppq1G9UVBT8/PyQlpaGw4cPIykpCbGxsYiMjMTKlSs1rs/e3l41S1PXTExMYGamG1MSxsbS/343hpmZbsxK6GLNJiYmAPBcs5VERGKmUCg0nrhokPBz48YNTJo0Ce3bt8eOHTtgYWGhWmdra4vjx4+rtb969SpsbGye2m9aWhpyc3MxYMAAxMTEwNbWFkZGRpDJZGqzQ5qQSCRaCz8AoIunIrFm7dPm7xwRET1U75e6FxYWYty4cXB0dMTGjRvVgg8AeHp6Ijc3F5s2bcKDBw9w6tQppKSkYPjw4TX2W1lZiYiICAQHBwMArKyskJ2djbKyMqSnp6NDhw5aGxMRERHpjlrP/Fy5cgVRUVH4448/1O6pAwA//vjjU7dPTk5GTk4O9u3bhx9++EFtXXp6Olq1aoXY2FiEh4dj9erVsLCwQFBQEHr27Fljv3Fxcejbty+srKwAAB4eHkhNTUWfPn3QsWNHREdH126gRERE1CTVOvyEhIRAKpVi8uTJqsvMa8PX1xe+vr41trG3t0diYmKt+32cvr4+IiIiEBERUesaiYiIqOmqdXq5dOkSjhw5AjMzM23UQ0RERKRVtT7n5//+7/9QUVGhjVqIiIiItK7WMz/vv/8+/Pz8MHbsWFhaWqqt6969e50VRkRERKQNtQ4/ixcvBvDw5OTH6enp4eLFi3VTFREREZGW1Dr8ZGdna6MOIiIionpR7/f5ISIiImpIDD9EREQkKgw/REREJCoMP0RERCQqDD9EREQkKnUWfuRyOT744ANs3ry5rrokIiIiqnO1fzjXEyxatAheXl7IyMioqy6JiIiI6lydzfx4eXkBABwcHOqqSyIiIqI691wzP8eOHcPly5fRoUMHeHh41FVNRERERFrzzOFnzZo1OHDgAGxtbZGUlIRjx45h4cKFdVgaERERUd3TOPzcvXsX5ubmqtepqanYuXMnDAwMUFZWhn79+jH8EBERUaOn8Tk/Y8aMwY4dO1SvLSws8PXXX+PEiRPYuHEj2rdvr5UCiYiIiOqSxuEnMTERv/32G/79738jOzsbYWFh+PXXX7F48WL89ttviI6O1madRERERHVC48NezZs3R0hICC5cuIDQ0FDY29tjyZIlMDU11WZ9RERERHWq1pe6d+3aFQkJCejUqRO8vb2xd+9ebdRFREREpBUah59Dhw6hd+/e6Nu3L44dO4bRo0djy5YtOHHiBCZMmIA///xTm3USERER1QmND3stWbIEixYtglKpRHh4OPbt24dWrVph8eLFyMjIwJw5c5CYmKjNWomIiIiem8bhp7i4GN26dYNSqURRUZHaOgcHB3zzzTd1XhwRERFRXdM4/IwYMQKenp7Q19eHr69vlfX6+nxAPBERETV+Goef2bNnY/jw4ZBIJLCystJiSURERETaU6vHW3Tq1ElbdRARERHVCx6rIiIiIlFh+CEiIiJRYfghIiIiUWH4ISIiIlFh+CEiIiJRYfghIiIiUWH4ISIiIlFh+CEiIiJRYfghIiIiUWH4ISIiIlFp0PCTn58PT09P/PLLL2rLFyxYAJlMBrlcrvr69ttvq+3j9OnT8PT0hJOTEwIDA6FUKlXrgoODkZSUpNUxEBERkW5psPBz9uxZjB49Gjdu3KiyLisrC2FhYUhPT1d9jR49utp+oqKiMHbsWKSmpuLUqVM4duwYACAzMxPXr1/HsGHDtDoOIiIi0i0NEn527tyJWbNm4ZNPPqmyrqKiApcvX4ZMJtOoLwODh89mFQQBgiBAIpFAqVRi8eLFCAkJgZ6eXp3WTkRERLqtVk91ryu9e/eGl5cXDAwMqgSg7OxsVFZWYvXq1Th79iyaN2+O4cOHY+LEidDXr5rVAgICsHDhQqxduxaDBg2Cq6srvvnmGzg6OsLOzu6Za1QoFM+8bU0kEgkAQBC00r1WsWbt09bvHRFRU1ebz88GCT+tW7d+4rqioiK4uLjAx8cHK1aswMWLF+Hn5wd9fX1MnDixSnsnJyekpKSoXufl5SEhIQGJiYmIjo7G0aNH0a5dO4SGhqJNmzYa15iVlVW7QWlAKpWiS5cuKC0tRXFxcZ33rw3l5ab//V7OmrWo1OThDOWlS5dQVlbWwNUQETVtDRJ+auLm5gY3NzfV627dumHcuHHYu3dvteHnn6KiouDn54e0tDQcPnwYSUlJiI2NRWRkJFauXKlxHfb29qpZmrpmYmICMzPdmJIwNpb+97sxzMx0Y1ZCF2s2MTEBgOearSQiEjOFQqHxxEWjCz+HDh1Cbm4uvL29VcsqKipgbGz81G3T0tKQm5uLAQMGICYmBra2tjAyMoJMJlObHdKERCLRWvgBAF08FYk1a582f+eIiOihRnefH0EQEBERgZMnT0IQBKSnp2PLli1PvNrrkcrKSkRERCA4OBgAYGVlhezsbJSVlSE9PR0dOnSoj/KJiIiokWt0Mz+enp6YN28eFi5ciNu3b8PS0hLTp0/HkCFDatwuLi4Offv2hZWVFQDAw8MDqamp6NOnDzp27Ijo6Oh6qJ6IiIgauwYPP5cuXaqyzNvbW+2wlyZ8fX3VXuvr6yMiIgIRERHPVR8RERE1LY3usBcRERGRNjH8EBERkagw/BAREZGoMPwQERGRqDD8EBERkagw/BAREZGoMPwQERGRqDD8EBERkagw/BAREZGoMPwQERGRqDD8EBERkagw/BAREZGoMPwQERGRqDD8EBERkagw/BAREZGoMPwQERGRqDD8EBERkagw/BAREZGoMPwQERGRqDD8EBERkagw/BAREZGoMPwQERGRqDD8EBERkagw/BAREZGoMPwQERGRqDD8EBERkagw/BAREZGoMPwQERGRqDD8EInUtWvXMGHCBDg7O6Nfv3748ssvoVQqn9h+8+bNcHd3h6OjI7y8vLB///4ntt27dy/69OkDFxcXrFq1Sm3dhAkTcPLkyTobBxFRbTH8EIlQSUkJJk6ciHbt2uHIkSPYunUr9u7di7Vr11bb/vDhw1i/fj02bNiAc+fO4aOPPsKMGTNw8+bNatuHhYUhNDQUKSkp2LRpE65duwYA2LdvH8zNzdGrVy+tjY2I6GkYfohE6OzZs8jLy0NISAhMTEzw4osvYurUqUhISIAgCFXaX79+HYIgqL4kEgkMDQ1hYGBQbf8SiUStH4lEgpKSEnzxxReYO3eu1sZFRKSJ6j+5iKhJUyqVMDQ0hKGhoWqZnp4ecnNzce/ePbRs2VKt/aBBg5CcnIyBAwdCIpFAT08Py5YtQ9u2bavtf+HChYiMjERZWRmmTp0KKysrLF26FKNHj0br1q21OjYioqdh+CESIUdHRxgbG2P58uXw8/NDfn4+Nm7cCAAoLy+vEn4ePHiAzp07Izw8HJ07d0ZKSgoCAwPRqVMn2NnZVenfw8MDHh4eqtdXrlxBWloatmzZguDgYJw/fx42NjZYuHAhmjdvrt3BEhH9Aw97EYlQixYt8NVXX+H8+fPo168fZsyYgaFDh6rW/VNYWBhsbGzQrVs3GBkZYfjw4XBwcMDOnTs1er+wsDAEBQUhOTkZ//nPf7B7926YmJhg/fr1dTksIiKNMPwQiVBFRQUqKyuxZcsW/PLLL9i+fTv09fVhbW0NqVRapX1OTg4qKirUlhkYGKgdNnuS3bt3w8rKCq+//jouX76MLl26QE9PDzKZDJcvX66zMRERaYrhh0ikJkyYgB07dkAQBPz6669Yt24dxo0bV21bd3d3xMfH48KFC1Aqlfjhhx/wyy+/YODAgTW+R1FRETZs2IBPP/0UAGBlZYWsrCw8ePAAGRkZ6NChQ52Pi4joaRo0/OTn58PT0xO//PKL2vLz589j5MiRkMvlcHd3x/bt25/Yx+nTp+Hp6QknJycEBgaq3ackODgYSUlJWqufSFcZGRlh7dq1SEhIgKOjI2bMmIFJkyZh1KhRqjZyuRzfffcdAOCjjz7CmDFjMH36dHTv3h0xMTH44osv8Nprr9X4PqtWrcL48eNhbm4OABg1ahSaNWuGnj17IicnB1OnTtXaGImInqTBTng+e/Ys5s6dixs3bqgtLywsxOTJk+Hv74/Ro0fjzJkz8PPzg52dHbp161aln6ioKIwdOxZDhgzBe++9h2PHjuGNN95AZmYmrl+/jkWLFtXXkIh0Svfu3ZGcnPzE9enp6aqfDQwMMH36dEyfPr1W7xEUFKT22tTUFOvWratdoUREdaxBZn527tyJWbNm4ZNPPqmy7sCBAzA3N8eYMWNgYGCAXr16wcvLC1u3bq22r0f3GXn8/iNKpRKLFy9GSEgI9PT0tDoWIiIi0i0NMvPTu3dveHl5wcDAoEoAunLlCmxtbdWWWVtbY8eOHdX2FRAQgIULF2Lt2rUYNGgQXF1d8c0338DR0bHaS3A1pVAonnnbmkgkEgBANfeRa/RYs/Zp6/eOiKipq83nZ4OEn5puclZSUlLlahNjY2OUlpZW297JyQkpKSmq13l5eUhISEBiYiKio6Nx9OhRtGvXDqGhoWjTpo3GNWZlZWncVlNSqRRdunRBaWkpiouL67x/bSgvN/3v93LWrEWlJg9nKC9duoSysrIGroaIqGlrdDc5lEqlKCoqUltWXl4OU1NTjbaPioqCn58f0tLScPjwYSQlJSE2NhaRkZFYuXKlxnXY29urZmnqmomJCczMdGNKwthY+t/vxjAz041ZCV2s2cTEBACea7aSiEjMFAqFxhMXjS782Nra4vjx42rLrl69Chsbm6dum5aWhtzcXAwYMAAxMTGwtbWFkZERZDKZ2uyQJiQSidbCDwDo4qlIrFn7tPk7R0REDzW6+/x4enoiNzcXmzZtwoMHD3Dq1CmkpKRg+PDhNW5XWVmJiIgIBAcHA3h4P5Hs7GyUlZUhPT2d9xOhRq2l1BBKpW7MBuo67mcianQzP61atUJsbCzCw8OxevVqWFhYICgoCD179qxxu7i4OPTt2xdWVlYAHj5bKDU1FX369EHHjh0RHR1dD9UTPRvTZgbQ19fDmp+u4K8CnvOjLS+2kmK6+9NnkYmoaWvw8HPp0qUqy+zt7ZGYmFirfnx9fdVe6+vrIyIiAhEREc9VH1F9+qugDH/klTR0GURETVqjO+xFREREpE0MP0RERCQqDD9EREQkKgw/REREJCoMP0RERCQqDD9EREQkKgw/REREJCoMP0RERCQqDD9EREQkKgw/REREJCoMP0RERCQqDD9EREQkKgw/REREJCoMP0RERCQqDD9EREQkKgw/REREJCoMP0REVG/u3r2L2bNno0ePHujevTumTZuGv//++6nb7d+/H2+99VaNbfbu3Ys+ffrAxcUFq1atUls3YcIEnDx58rlqp6aD4YeIiOrN9OnTUVpaioMHDyI1NRUSiQTBwcFPbP/gwQN89dVX+PTTTyEIQo19h4WFITQ0FCkpKdi0aROuXbsGANi3bx/Mzc3Rq1evOh0L6S6Dhi6AiIjE4ddff8X58+dx4sQJmJmZAXgYWO7cufPEbT744AM0a9YMkyZNwnfffVdj/xKJRC0gSSQSlJSU4IsvvsDXX39dN4OgJoHhh4iI6kVmZiasra2xbds2JCQkoKysDH369MGcOXOeuM2yZcvQtm1bJCcnP7X/hQsXIjIyEmVlZZg6dSqsrKywdOlSjB49Gq1bt67LoZCO42EvIiKqF4WFhbh06RL++OMP7Ny5E7t27cLt27drDD9t27bVuH8PDw8cPHgQx44dw+TJk3HlyhWkpaVhxIgRCA4OxrvvvouZM2eiqKioLoZDOozhh4iI6oWRkREAIDAwEGZmZrC0tMSMGTNw+PBhlJSU1Pn7hYWFISgoCMnJyfjPf/6D3bt3w8TEBOvXr6/z9yLdwvBDRET1wtraGkqlEg8ePFAtUyqVAPDUk5lra/fu3bCyssLrr7+Oy5cvo0uXLtDT04NMJsPly5fr9L1I9zD8EBFRvXB1dcXLL7+M+fPno6SkBPn5+Vi5ciU8PDxUJ0DXhaKiImzYsAGffvopAMDKygpZWVl48OABMjIy0KFDhzp7L9JNDD9ERFQvDA0NERcXB4lEgv79+6N///5o27YtlixZomojl8ufelXX06xatQrjx4+Hubk5AGDUqFFo1qwZevbsiZycHEydOvW5+ifdx6u9iIio3rRp0wYrV6584vr09PRqlw8bNgzDhg3T6D2CgoLUXpuammLdunWaF0lNHmd+iIiISFQYfoiIiEhUGH6IiIhIVBh+iIiISFQYfohINFpKDaFU1u39ZIiodhrDv0Fe7UVEomHazAD6+npY89MV/FVQ1tDlEInOi62kmO5u09BlMPwQkfj8VVCGP/Lq/nEKRKQbeNiLiIiIRIXhh4iIiESF4YeIiIhEpdGFn71796JLly6Qy+Wqr4CAgGrb3r59G97e3pDL5fDx8UFubq5qXUpKCubMmVNfZRMREZGOaHThJysrC0OGDEF6errqa9myZdW23bx5M9q1a4cTJ07ghRdewKZNmwAAxcXFWLduHWbPnl2PlRMREZEuaJThRyaTadTWwODhxWqC8PCeARKJBMDDJ/qOGTMGL7zwgnaKJCIiIp3VqMKPUqnEhQsX8PPPP+PNN9/EG2+8geDgYBQWFlbbfuzYsSgoKMCbb76J4uJijB8/HtnZ2cjMzIS3t3c9V09ERES6oFHd5yc/Px9dunRB//79sXr1ahQUFGDOnDkICAhATExMlfaWlpaqQ13Awxmgjz76CEFBQdi3bx82btwIIyMjzJo1C87OzrWqRaFQPO9wqvVodkpo+Btc1hprrh+6WLMu4n4majja+Btbmz4bVfixtLTE1q1bVa+lUikCAgIwatQoFBcXw8zMrMbtk5OTYWtri5deegnjxo3Dnj17cOvWLfj7++Po0aPQ09PTuJasrKxnHseTSKVSdOnSBaWlpSguLq7z/rWhvNz0v9/LWbMW6WLNuoj7mahhlZo8/Dt86dIllJU13F3WG1X4yc7Oxp49ezBz5kxVUKmoqIC+vj6MjIxq3LawsBCbNm3C1q1b8fvvv8PExATt27eHpaUl7ty5g4KCAlhYWGhci729vWqWpq6ZmJjAzEw3/rfT2Fj63+/GMDPTzmxYXWPN9CTcz0QNy8TEBABgZ2dX530rFAqNJy4aVfgxNzfH1q1b0bJlS/j6+uLvv//GsmXL8N577z01/KxYsQITJkxAixYt8OKLL+LevXv4888/cevWLbRs2RLm5ua1qkUikWgt/ABALSahGg3WXD90sWZdxP1M1HC0+fdVE40q/LRt2xbr16/HihUr8OWXX6JZs2YYNGjQE+/z80hWVhauX7+O0NBQAA8Pn82ZMwfe3t4wNjZGZGQk9PUb1bndRERE1EAaVfgBABcXFyQmJtZqG3t7e8TFxaktGzNmDMaMGVOXpREREVETwOkQIiIiEhWGHyIiIhIVhh8iIiISFYYfIiIiEhWGHyIiIhIVhh8iIiISFYYfIiIiEhWGHyIiIhIVhh8iIiISFYYfIiIiEhWGHyIiIhIVhh8iIiISFYYfIiIiEhWGHyIiIhIVhh8iIiISFYYfIiIiEhWGHyIiIhIVhh8iIiISFYYfIiIiEhWGHyIiIhIVhh8iIiISFYYfIiIiEhWGHyIiIhIVhh8iIiISFYYfIiIiEhWGHyIiIhIVhh8iIiISFYYfIiIiEhWGHyIiIhIVhh8iIiISFYYfIiIiEhWGHyIiIhIVhh8iIiISFYYfIiIiEhWGHyIiIhIVhh8iIiISlUYXfvLy8jBt2jQ4OzujR48eCA8PR2VlZbVtb9++DW9vb8jlcvj4+CA3N1e1LiUlBXPmzKmvsomIiEhHNLrwM2PGDJiYmODo0aPYsWMHTp48iU2bNlXbdvPmzWjXrh1OnDiBF154QdWuuLgY69atw+zZs+uvcCIiItIJjSr8/Pnnnzh9+jQCAgIglUrx8ssvY9q0adi6dWu17Q0MDAAAgiAAACQSCQBg1apVGDNmDF544YX6KZyIiIh0RqMKP1euXIG5uTnatGmjWtapUyfk5OTg3r17VdqPHTsWBQUFePPNN1FcXIzx48cjOzsbmZmZ8Pb2rs/SiYiISEcYNHQBjyspKYFUKlVb9uh1aWkpWrRoobbO0tJS7ZCYIAj46KOPEBQUhH379mHjxo0wMjLCrFmz4OzsrFENj2aRKioqVDNJdUkikaCDuTEM9IQ671sb2jY3hEKhYM1apos16yLuZ6KG1b6lMRQKBRQKRZ33/ajPR3/Ha9Kowo+JiQnKysrUlj16bWpq+tTtk5OTYWtri5deegnjxo3Dnj17cOvWLfj7++Po0aPQ09N7ah9KpRIA8Ntvvz3DCDTTwxyAuda6r2N5yMjIY81ap4s16yLuZ6KGVYSMjAytvsOjv+M1aVThx8bGBnfv3kVubi4sLS0BANeuXUPbtm3RvHnzGrctLCzEpk2bsHXrVvz+++8wMTFB+/btYWlpiTt37qCgoAAWFhZPrcHAwAD29vbQ19fXKCwRERFRwxMEAUqlUnU+cE0aVfixsrKCk5MTlixZgkWLFqGgoABr167FiBEjnrrtihUrMGHCBLRo0QIvvvgi7t27hz///BO3bt1Cy5YtYW5urlEN+vr6MDIyes6REBERUWPVqMIPAKxevRqLFi3CW2+9BX19fQwdOhTTpk2rcZusrCxcv34doaGhAB6eCzRnzhx4e3vD2NgYkZGR0NdvVOd2ExERUQPREzQ5M4iIiIioieB0CBEREYkKww8RERGJCsMPERERiQrDDxEREYkKww8RERGJCsPPc8rPz4enpyd++eUX1bIFCxZAJpNBLpervr799lvV+p07d8LT0xMODg4YNmwY0tPTVesUCgWWLl0KV1dXyOVyTJ06FX///Xed1JqdnQ1fX1+4uLjAzc0Ns2fPRn5+PgDg/PnzGDlyJORyOdzd3bF9+3a1bRtjzY11P588eRIjR46Eo6Mj3NzcEBYWhvLycgCNdz/rMoVCAR8fH8ydO1e1jPuZSPvu3r2L2bNno0ePHujevTumTZum+rfSWD+fVQR6ZmlpaYKHh4dga2srnDp1SrX8vffeE5KTk6vd5tSpU4JcLhfS0tKEiooK4euvvxZ69OghlJaWCoIgCGvWrBG8vLyEnJwcoaioSJgxY4YwadKk5661rKxMcHNzE1atWiXcv39fyM/PFyZNmiRMmTJFuHv3ruDi4iLEx8cLDx48EE6cOCHI5XLh/PnzjbZmQWic+zkvL0+wt7cXkpKSBIVCIdy+fVsYPHiwsGrVqka7n3XdZ599JnTu3FmYM2eOIAgC9zNRPXn//fcFPz8/obCwUCgqKhI++ugjYfLkyYIgNM7P58cx/Dyj5ORkoV+/fsL333+vFn7u378vdO3aVbh8+XK1282cOVMICgpSW/bOO+8IO3bsEARBEN544w3hu+++U627c+eOYGdnJ9y4ceO56r127ZowYcIEobKyUrXs0KFDgqOjo7Bt2zbh7bffVmsfEhIizJ49u9HW3Fj3syAIQlFRkSAIgqBUKoVLly4Jnp6eQlxcXKPdz7rsxIkTwsCBAwV/f39V+OF+JtK+rKwswd7eXvV5JwiCUFBQIFy+fLlRfz4/wsNez6h37944ePAgBg4cqLY8OzsblZWVWL16NVxdXdG/f3/ExMSoHrR29epV2Nraqm1jbW2N7OxsFBUV4datW2rrLS0t0bJlS1y6dOm56n311VexYcMGtSfV79+/H127dsWVK1eeWFNjrbmx7mcAMDMzAwD07dsXXl5eaN26NYYNG9Zo97OuysvLQ2BgIJYvXw6pVKpazv1MpH2ZmZmwtrbGtm3b4Onpid69e2Pp0qVo3bp1o/58foTh5xm1bt262oenFRUVwcXFBT4+Pjh8+DCWLVuGuLg4xMbGAgBKSkrUPqgBwNjYGKWlpSgpKQHw8On2/1z/aF1dEAQBK1euRGpqKgIDA2usqbHWrAv7+cCBAzhy5Aj09fXh7++vE/tZVyiVSgQEBMDX1xedO3dWW8f9TKR9hYWFuHTpEv744w/s3LkTu3btwu3btzFnzhyd+Hxm+Kljbm5u2LJlC1xcXGBoaIhu3bph3Lhx2Lt3LwBAKpWqTn59pLy8HKampqpfhrKysmrX14Xi4mL4+/sjJSUF8fHxsLOzq7GmxlpzY9/PwMN/rG3atEFAQACOHj3a6PezLlm/fj2MjIzg4+NTZR33M5H2PXoAeGBgIMzMzGBpaYkZM2bg8OHDcHBwaPSfzww/dezQoUNITExUW1ZRUQFjY2MAgI2NDa5cuaK2/urVq7CxsUHLli3Rpk0bXL16VbXuzp07uHv3bpUpwmdx48YNDB8+HMXFxdixYwfs7OwAALa2tk+sqbHW3Fj387lz5/DOO++goqJCrS5DQ0NYW1s32v2sa3bv3o3Tp0/D2dkZzs7O2LNnD/bs2QNnZ+dG/ftM1FRYW1tDqVTiwYMHqmWPDmsdPHiwUX4+q6mzs4dE7PETng8cOCB069ZNOHHihKBUKoVz584JPXr0EHbt2iUIgqC68uTkyZOqs9y7d+8uFBQUCIIgCCtXrhQGDx4s3LhxQ3WW+/vvv//cNd69e1fo16+fMHfuXEGhUKity8/PF5ydnYWvv/5aqKioEE6ePKmqsbHW3Fj3c3FxsdC3b19hyZIlwv3794WbN28KI0aMEBYsWNBo93NTMGfOHNUJz9zPRNpXUVEheHp6CtOnTxeKi4uFvLw8YezYsYKfn1+j/Xx+HMNPHfjnpe4JCQnC22+/Lbz++uvCW2+9JcTHx6u137Vrl9C/f3/BwcFBGDFihJCRkaFaV1FRISxbtkzo06eP4OjoKEydOlXIzc197hpjY2MFW1tb4fXXXxccHBzUvgRBEDIzM4XRo0cLcrlceOutt4SkpKRGX3Nj3M+CIAhXrlwRfH19BWdnZ+HNN98UVqxYIdy/f18QhMa5n5uCx8OPIHA/E9WHW7duCTNmzBDc3NwEZ2dnYfbs2UJhYaEgCI338/kRPUEQhLqbRyIiIiJq3HjODxEREYkKww8RERGJCsMPERERiQrDDxEREYkKww8RERGJCsMPERERiQrDDxEREYkKww8RNWk+Pj5Ys2YNAGDu3LmYO3fuU9sRUdPG8ENERESiwvBDRI3ezZs3YWdnh7i4OLi5ucHJyQkBAQEoLi5GRUUFli5digEDBkAul6NXr14ICwvD025e/9dff+Gtt97CkiVLqrT97bff0LNnT2zatAkAcO3aNUyZMgX9+vVDt27dMHDgQKSmpmpruESkZQw/RKQzDhw4gJSUFPzwww/4888/ERoais2bN+Po0aPYvHkz0tPTsXbtWiQmJuLUqVNP7Of//b//Bx8fHwwZMgTz58+Hnp6eat2vv/6KDz74ADNnzsT48eMBANOnT4etrS0OHjyItLQ09O7dGwsXLtTyaIlIWwwaugAiIk3NmzcPFhYWAAB/f39MnToVc+bMwXvvvYcXXngBf//9N8rLy2Fqaorbt29X28dff/0FHx8f9OvXD/7+/mrrLly4gC1btmDy5MkYOXKkavn69evRpk0bCIKAv/76Cy1atHhi/0TU+DH8EJHO6Nixo+rndu3aoaKiAg8ePEBYWBjOnDmDtm3bokuXLhAEAUqlsto+0tLS4Obmhh9//BGffPIJWrZsqVp34sQJyOVy7NmzB+PGjYORkREAIDs7G9OmTcOdO3fQqVMnWFhYPPWwGhE1XjzsRUQ64/HZlps3b0IqlSI4OBhSqRTHjh1DSkoKIiIinhh8AGDgwIFYv3492rVrh9DQULV148ePx9q1a1FUVKS68uv27dv4+OOP8cknn+DUqVPYunUrBg8erJ0BElG9YPghIp2xfPlyFBcX4/bt21i9ejWGDBmC4uJiNGvWDPr6+iguLkZUVBSKi4vx4MGDavswNDSERCJBREQEDh06hL1796qtMzU1RXh4OGJjY3Hu3DmUlJRAoVBAKpUCAK5evYovvvgCAFBRUaH9QRNRnWP4ISKd0aFDBwwePBjvvvsu5HI55s+fj6CgIGRnZ8PFxQXvvPMOiouL0adPH1y+fLnGvjp16oTp06cjNDS0yvk7vXr1wsiRIzFnzhy0bdsWs2fPRkBAAJycnPDxxx9j+PDhMDQ0fOp7EFHjpCfwwDURNXI3b97EW2+9hR9//BEvvfRSQ5dDRDqOMz9EREQkKgw/REREJCo87EVERESiwpkfIiIiEhWGHyIiIhIVhh8iIiISFYYfIiIiEhWGHyIiIhIVhh8iIiISFYYfIiIiEhWGHyIiIhIVhh8iIiISlf8PNAy2VqDJb1cAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "n = df['palkka'].count()\n", "bins = [1500, 2000, 2500, 3000, 4000, 6500] # Luokkien ylärajat sisältyvät luokkaan\n", "\n", "ax3 = sns.histplot(data=df, x='palkka', bins=bins, stat='percent')\n", "\n", "plt.title('Palkkajakauma')\n", "plt.ylabel(f'%, n = {str(n)}')\n", "plt.xticks(bins)\n", "plt.grid(axis='x')\n", "plt.ylim(0, 40)\n", "\n", "for bar_container in ax3.containers:\n", " ax3.bar_label(bar_container, padding=2, fmt='{:.1f} %')\n", "\n", "ax3.yaxis.set_major_locator(ticker.MultipleLocator(5))\n", "ax3.yaxis.set_major_formatter(ticker.FuncFormatter('{:.0f} %'.format))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Lisätietoa\n", "\n", "Seuraava osa https://nbviewer.jupyter.org/github/taanila/kaaviot/blob/master/matplotlib4.ipynb käsittelee värien ja värikarttojen käyttöä" ] } ], "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.11.4" } }, "nbformat": 4, "nbformat_minor": 4 }