{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Päivitetty 2025-05-14 / Aki Taanila\n" ] } ], "source": [ "from datetime import datetime\n", "print(f'Päivitetty {datetime.now().date()} / Aki Taanila')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Luokiteltu jakauma\n", "\n", "Määrällisen muuttujan jakaumaan tutustun luokitellun jakauman avulla. Luokitellun jakauman voin esittää frekvenssitaulukkona tai histogrammina." ] }, { "cell_type": "code", "execution_count": 2, "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": "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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
...................................................
777812213.00.0159844.0434NaN1.01.0NaN
787913311.02.0163813.02121.0NaNNaNNaN
798012712.07.0261234.03331.0NaN1.0NaN
808113522.016.0280834.0333NaNNaNNaNNaN
818223523.015.0218334.04341.0NaNNaNNaN
\n", "

82 rows × 16 columns

\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", "77 78 1 22 1 3.0 0.0 1598 4 4.0 4 \n", "78 79 1 33 1 1.0 2.0 1638 1 3.0 2 \n", "79 80 1 27 1 2.0 7.0 2612 3 4.0 3 \n", "80 81 1 35 2 2.0 16.0 2808 3 4.0 3 \n", "81 82 2 35 2 3.0 15.0 2183 3 4.0 4 \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 \n", ".. ... ... ... ... ... ... \n", "77 3 4 NaN 1.0 1.0 NaN \n", "78 1 2 1.0 NaN NaN NaN \n", "79 3 3 1.0 NaN 1.0 NaN \n", "80 3 3 NaN NaN NaN NaN \n", "81 3 4 1.0 NaN NaN NaN \n", "\n", "[82 rows x 16 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_excel('https://taanila.fi/data1.xlsx')\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Histplot**-funktio tuottaa histogrammi-kaavioon luokituksen, jossa luokat sisältävät alarajan, mutta eivät ylärajaa.\n", "\n", "Jos haluan **cut**-funktion tuottamien luokkien olevan yhdenmukaisia histogrammin kanssa, niin käytän cut-funktion yhteydessä parametria `right=False`. Tämänkin jälkeen voi tulla eroa viimeisen luokan ylärajan kohdalla, joka histogrammissa sisältyy luokkaan." ] }, { "cell_type": "code", "execution_count": 4, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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ötervlomaosakuntosahierojapalkkaluokka
0113811.022.0358733.0333NaNNaNNaNNaN[3000, 4000)
1212922.010.0296315.0213NaNNaNNaNNaN[2000, 3000)
2313011.07.0198934.01131.0NaNNaNNaN[1000, 2000)
3413621.014.0214433.03331.0NaNNaNNaN[2000, 3000)
4512412.04.0218323.02121.0NaNNaNNaN[2000, 3000)
......................................................
777812213.00.0159844.0434NaN1.01.0NaN[1000, 2000)
787913311.02.0163813.02121.0NaNNaNNaN[1000, 2000)
798012712.07.0261234.03331.0NaN1.0NaN[2000, 3000)
808113522.016.0280834.0333NaNNaNNaNNaN[2000, 3000)
818223523.015.0218334.04341.0NaNNaNNaN[2000, 3000)
\n", "

82 rows × 17 columns

\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", "77 78 1 22 1 3.0 0.0 1598 4 4.0 4 \n", "78 79 1 33 1 1.0 2.0 1638 1 3.0 2 \n", "79 80 1 27 1 2.0 7.0 2612 3 4.0 3 \n", "80 81 1 35 2 2.0 16.0 2808 3 4.0 3 \n", "81 82 2 35 2 3.0 15.0 2183 3 4.0 4 \n", "\n", " palkkat työteht työterv lomaosa kuntosa hieroja palkkaluokka \n", "0 3 3 NaN NaN NaN NaN [3000, 4000) \n", "1 1 3 NaN NaN NaN NaN [2000, 3000) \n", "2 1 3 1.0 NaN NaN NaN [1000, 2000) \n", "3 3 3 1.0 NaN NaN NaN [2000, 3000) \n", "4 1 2 1.0 NaN NaN NaN [2000, 3000) \n", ".. ... ... ... ... ... ... ... \n", "77 3 4 NaN 1.0 1.0 NaN [1000, 2000) \n", "78 1 2 1.0 NaN NaN NaN [1000, 2000) \n", "79 3 3 1.0 NaN 1.0 NaN [2000, 3000) \n", "80 3 3 NaN NaN NaN NaN [2000, 3000) \n", "81 3 4 1.0 NaN NaN NaN [2000, 3000) \n", "\n", "[82 rows x 17 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Määrittelen luokkarajat palkan luokittelemiseksi \n", "bins = [1000, 2000, 3000, 4000, 7000]\n", "\n", "# Lisään dataan palkkaluokka-sarakkeen\n", "df['palkkaluokka'] = pd.cut(df['palkka'], bins=bins, right=False)\n", "\n", "# Datassa on nyt viimeisimpänä muuttujana palkkaluokka\n", "df" ] }, { "cell_type": "code", "execution_count": 5, "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", "
f%
palkkaluokka  
[1000, 2000)1923.2 %
[2000, 3000)5061.0 %
[3000, 4000)89.8 %
[4000, 7000)56.1 %
Yhteensä82100.0 %
\n" ], "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Palkkaluokkiin kuuluvien frekvenssit\n", "df1 = pd.crosstab(df['palkkaluokka'], 'f')\n", "\n", "# Häiritsevän otsikon poistaminen\n", "df1.columns.name = ''\n", "\n", "# Prosentit\n", "n = df1['f'].sum()\n", "df1['%'] = df1['f']/n*100\n", "\n", "# Yhteensä-rivi\n", "df1.loc['Yhteensä'] = df1.sum()\n", "\n", "# Tyylimäärittely: f-sarake ilman desimaaleja, %-sarakkeeseen yksi desimaali \n", "df1.style.format({'f':'{:.0f}', '%':'{:.1f} %'})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Histogrammi\n", "\n", "Histogrammi on nopein keino luokitellun jakauman tarkasteluun. Histogrammia varten ei tarvitse erikseen laskea luokiteltua jakaumaa taulukkona." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Lukumäärä, n = 82')" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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NGTIEN1www1hLw4AAOBsIX9U9B//8R+65557dOLECa1atUrffPON5s6dq65duzqeY+/evZo+fbr27Nmj+Ph4de/eXePHj1fTpk21a9cuPfHEEyoqKlKTJk103333adCgQaGWCQAA6qGQj7ikp6dr7ty5mjNnjpKTk7Vq1aqQQktVVZX+8Ic/yOfz6X/+53+0atUqlZSUaMKECSotLVV2drb69eunrVu3asqUKZo2bZp2794dapkAAKAecnzE5a9//WvQ4/bt22vz5s2aM2eO4uJOT/PAAw9cdJ5Dhw6pdevWGjVqlDwejxo0aKA777xT48aN09q1a5WcnKzBgwdLkrp166asrCwtXLhQbdu2DeV1AQCAeshxcNmyZcs5yzIyMrR9+3ZJOu/9i77vl7/8pebOnRu07J133lGbNm1UWFiotLS0oLGUlBTl5+c7LbOW3+8P+TlO5gv3vPVRIBCQx+ORjJEx0a7GAt81KRAIRLmQ2Md+6By9co5eORfJXjmd03FweeONN35wMedjjNHMmTP13nvvacGCBXr99dfl9XqD1klISFBFRUXIcxcUFISrzEsyb33i9XqVnp6uispKlZeXR7ucmFfR6HToLywsVGVlZZSrsQP7oXP0yjl65Vw0e/Wjr5x7tn79+jmep7y8XA8//LD27NmjBQsWqFWrVvJ6vSorKwtar6qqSomJiaGWqYyMjNO/9YeJ3+9XQUFB2Oetj84cOWjk9SopiUMuF9Pou7Cempoqtzssd+Got9gPnaNXztEr5yLZqzNzX8yPvnJuaWmpKisr1aFDB8fB5cCBA7r33nvVsmVL5efnq2nTppKktLQ0ffjhh0HrFhUVKTU1NdQy5fF4IvIGjNS89ZLLJYefIP60fdckt9vNe8sh9kPn6JVz9Mq5aPbqR1851xijV155RSUlJY6eX1paqmHDhqlr166aMmVK0G+YvXr10owZMzR//nwNHjxY27dv18qVKzV79uxQywQAAPXQjz4u7XK5dM8992jFihWO1l+6dKkOHTqkt99+Wx06dJDP56v906RJE82bN09r1qxRly5dlJubq9zc3JC+bg0AAOqvkI+41OXzzz93/K2iESNGaMSIEecdz8jIUF5eXjjKAgAA9UzIwWXo0KFBIaWmpkb79u3TbbfdFtbCYlF8fHy0SwAA4Cct5ODSpUuXoMdut1vDhw/X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/H6/ampq5Pf7wzr3mfnO/Dt+PjEXXE6ePCmv1xu07MzjioqKiwaXMwHj73//e0Tq65IsKTkiU9cjxdq5s5heOUa/nKNXoYmXFN5/XOoveuVMuXbu3BnRLZz5d/x8Yi64NGrUSJWVlUHLzjxOTEy86PPj4uKUkZEht9stF8kZAAArGGMUCAQUF3fhaBJzwSU1NVUlJSU6duyYmjVrJkn67LPPdMUVV+iyyy676PPdbrcaNGgQ6TIBAEAUxNzJub/4xS/UoUMHTZ06VeXl5friiy80e/ZsDRw4MNqlAQCAKHOZi50FEwXHjh3T448/ri1btsjtdqtfv3568MEHw3qyLQAAsE9MBhcAAIC6xNxHRQAAAOdDcAEAANYguAAAAGsQXAAAgDV+0sGluLhYvXr10pYtW2qX7dq1S4MGDZLP51NmZqYWL14c9Jxly5apV69eateunfr376+PP/64dszv92v69Om64YYb5PP5dN999+nrr7++ZK8nEvbu3asRI0aoc+fO6t69u8aNG6fi4mJJ9KoumzZt0qBBg9S+fXt1795dkydPVlVVlST6VRe/36+hQ4dq/Pjxtcvo07neeustpaeny+fz1f7JycmRRL++r6SkROPGjVOXLl3UqVMn3X///bWviV79f2+++WbQ+8nn8+m6667TddddJynGe2V+orZt22Z+85vfmLS0NLN582ZjjDElJSWmc+fOZsGCBaampsZs3LjR+Hw+s2vXLmOMMZs3bzY+n89s27bNVFdXm1dffdV06dLFVFRUGGOMef75501WVpY5dOiQKSsrM2PGjDH33ntv1F7jj1VZWWm6d+9unnvuOfPtt9+a4uJic++995qRI0fSqzocP37cZGRkmCVLlhi/32+OHDli+vbta5577jn6dR4zZ840rVu3Ng899JAxhn3wfJ588kkzfvz4c5bTr3MNGTLEjBo1ypSWlpqysjLzwAMPmOzsbHp1EYcPHzbdu3c3y5cvj/le/SSDy9KlS82vf/1rs3r16qDgsmjRItO7d++gdR999FEzbtw4Y4wxY8eONbm5uUHjv/3tb01+fr4xxphf/epX5s0336wdO3r0qGnVqpU5cOBAJF9OxHz22WfmnnvuMadOnapd9u6775r27dvTq/MoKyszxhgTCATMvn37TK9evcwbb7xBv+qwceNG06dPHzN69Oja4EKf6jZ48GCzYMGCc5bTr2AFBQUmIyOjdj80xpgTJ06YTz/9lF5dQCAQMEOHDjUTJ040xsT+++on+VFRjx499N///d/q06dP0PLCwkKlpaUFLUtJSdHevXslSUVFRecdLysr0+HDh4PGmzVrpsaNG2vfvn0ReiWR9ctf/lJz584NuvDfO++8ozZt2tCr80hKSpIk9ezZU1lZWWrevLn69+9Pv77n+PHjmjhxop5++umgm6rSp3MFAgHt2bNH77//vm688Ub96le/0iOPPKLS0lL69T27d+9WSkqKFi1apF69eqlHjx6aPn26mjdvTq8uYMWKFSoqKqr9yDbWe/WTDC7Nmzev8yZOdd2ZOiEhQRUVFRcdP3nypKTTN4n8/viZMZsZY/Tss8/qvffe08SJE+nVRaxdu1YbNmyQ2+3W6NGj6ddZAoGAcnJyNGLECLVu3TpojD6dq7i4WOnp6br55pv11ltvKS8vT/v371dOTg79+p7S0lLt27dP+/fv17Jly7R8+XIdOXJEDz30EL06j0AgoBdffFF//OMfa3/xivVe/SSDy/l4vd7aEynPqKqqqr0r9YXGz/xP/P6drc9+vq3Ky8s1evRorVy5UgsWLFCrVq3o1UUkJCSoRYsWysnJ0QcffEC/zjJnzhw1aNBAQ4cOPWeMPp2rWbNmWrhwoQYOHCiv16uWLVsqJydHGzZskDGGfp3lzA12J06cqKSkJDVr1kxjxozR+vXr6dV5bNmyRV9//XXQ/QBjfT8kuJwlLS1NhYWFQcuKioqUmpoq6fSdq8833rhxY7Vo0UJFRUW1Y0ePHlVJSck5h9RscuDAAQ0YMEDl5eXKz89Xq1atJNGruuzYsUO//e1vVV1dXbusurpa8fHxSklJoV/fWbFihT766CN17NhRHTt21KpVq7Rq1Sp17NiR91Ud9u7dq3//93+XOevuLNXV1XK73Wrbti39OktKSooCgYBqampqlwUCAUnStddeS6/q8M4776hXr15BR0hifj8My5kyFjv75Nzi4mLTsWNH8+qrr5rq6mqzadMm4/P5zKZNm4wxpvbM6k2bNtWeSd2pUydz4sQJY4wxzz77rOnbt685cOBA7ZnUQ4YMidZL+9FKSkrMr3/9azN+/Hjj9/uDxujVucrLy03Pnj3N1KlTzbfffmu+/PJLM3DgQPPYY4/Rrwt46KGHak/OpU/n+uqrr0y7du3Myy+/bGpqaszBgwfNHXfcYSZMmEC/vqe6utr06tXL/OlPfzLl5eXm+PHj5q677jKjRo2iV+fRt29fs2jRoqBlsd4rgstZwcUYY3bv3m3uvPNO4/P5zE033WSWLFkStP7y5cvNzTffbNq1a2cGDhxodu7cWTtWXV1tZsyYYf7pn/7JtG/f3tx3333m2LFjl+y1hNu8efNMWlqauf766027du2C/hhDr+pSWFhoRowYYTp27GhuvPFG88wzz5hvv/3WGEO/zufs4GIMfarLli1banvStWtXM3nyZFNVVWWMoV/fd/jwYTNmzBjTvXt307FjRzNu3DhTWlpqjKFXdWnXrp15//33z1key73i7tAAAMAanOMCAACsQXABAADWILgAAABrEFwAAIA1CC4AAMAaBBcAAGANggsAALAGwQUAAFiD4AIgojIzM5WRkSGfzyefz6d27dqpR48emj59eu19ZC6kVatW2rJlS+1cS5cuveh6AOqvuGgXAKD+mzRpkvr371/7eN++fRo+fLi8Xq9Gjx4dxcoA2IYjLgAuuVatWqlTp076+9//riNHjmjMmDHKzMzU9ddfr5tuukn5+fkXneODDz5Qhw4d9Pbbb58ztnTpUnXq1Elbt26VJP3tb3/T73//e3Xr1k3XX3+9hgwZov3794f7ZQG4BAguAC6pmpoabdmyRZs3b1b37t2Vm5ur+Ph4rV69Wjt27NCQIUM0efJknTx58rxzrF+/Xn/5y1/0zDPP6JZbbgkaW7x4sWbMmKF58+apU6dOOnz4sP71X/9V2dnZ2rRpk95//30ZY/TCCy9E+qUCiAA+KgIQcZMmTdLUqVNrH19xxRUaMWKEhgwZot69eysxMVHx8fE6dOiQEhMTVVVVpdLSUiUmJp4z1/r167Vu3To99dRT6tmzZ9DY4sWLtWrVKi1atEgZGRmSpKZNm2r16tW66qqrVF5ersOHD6tJkyY6cuRIZF80gIgguACIuMceeyzoHJezffHFF3rqqae0f/9+/eIXv9DPf/5zSTrvibubNm1SmzZttGzZMvXp0ydobMeOHUpJSdGSJUvUtm1bSVJ8fLxWrVqlvLw8uVwupaWlqby8XHFx/PUH2IiPigBETU1NjUaOHKnbb79dW7Zs0aJFizRs2LALPmfs2LGaNWuWPv74Y+Xl5QWNPf7443rqqae0ZMkSbdiwQZL09ttva8GCBXrjjTe0fv16vfLKK0pPT4/YawIQWQQXAFFTU1OjqqoqJSQkyOVy6dChQ5oxY0btWF3i4+PVokULPfzww5o+fboOHDgQNJaenq7s7GxNnDhRpaWlKisrk9vtVkJCgowx2rBhg5YvX37e+QHENoILgKhp1KiRpk6dqhdeeEE+n0933XWXunfvrmbNmunTTz+94HMHDBigTp066aGHHjrnY6X77rtPTZs21aRJk/S73/1ON9xwg2699VZ17dpVL774ooYNG6bPP/9c1dXVkXx5ACLAZYwx0S4CAADACY64AAAAaxBcAACANQguAADAGgQXAABgDYILAACwBsEFAABYg+ACAACsQXABAADWILgAAABrEFwAAIA1CC4AAMAa/w8cKnlOvCnDPQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Käytän histogrammissa edellä määriteltyjä luokkarajoja\n", "sns.histplot(df['palkka'], bins=bins)\n", "\n", "# Havaintojen lukumäärä\n", "n = df['palkka'].count()\n", "\n", "plt.xlabel('Palkka')\n", "plt.ylabel(f'Lukumäärä, n = {n}')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, '%, n = 82')" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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eWd0qgQAAFArgsvnn3+urKwsSZLX69XAgQNb5vr06aO//e1vka8OAADgDI5fKuratav27NmjXbt2KRgMavv27S1z7733njp37hyVAgEAAJq16u3Q48aNUzAYVO/evbV69Wpt2LBBjY2NWr9+vSZPnhzNOgEAAJwHlzvvvFPp6enav3+/Bg4cqMbGRj333HP67LPPNH36dI0YMSKadQIAALTu7dBpaWlKS0uTJPn9fhUWFkalKAAAgHNxfI0LAACA2wguAADAGgQXAABgjVYHl8OHD5/zZwAAgGhrdXC54447Wn7+/ve/H9FiAAAALqTVwcUYc86fAQAAoq3VwcXj8ZzzZwAAgGjj4lwAAGANggsAALAG17gAAABrtDq4/OQnP2n5+f77749oMQAAABfS6uDywAMPtPycn58f0WIAAAAuhGtcAACANQguAADAGgQXAABgDYILAACwRlxrb1BeXq558+Zp//79CoVCYXNvvvlmxAoDAAD4slYHl8cee0x+v1/5+fmKi2v1zQEAAP5urU4e+/bt06ZNm5ScnByNegAAAM6r1de4fPOb31RjY2M0agEAALigVp9xGTNmjCZMmKB77rlHnTt3Dpvr3bu3ozW2bNmip556Sp988on8fr9uv/12FRQUKCEhQbt379bMmTNVUVGhjh07avz48Ro5cmRrywQAAO1Qq4PLzJkzJUkffPBB2LjH49H//M//XPT2lZWVeuCBB/T4449r2LBhOnr0qO677z698MILGjdunPLz8zVx4kSNGjVK27dv14QJE5SRkaEePXq0tlQAANDOtDq47N279yvtsFOnTtq8ebOSk5NljFFVVZVOnDihTp06qbS0VCkpKRo9erQkqX///srJydGSJUsILgAAoPXBJRKaL+wdNGiQjhw5ol69emn48OF65plnlJ6eHrZtamqqSkpKWr2PYDAYkVq/vF6k122PQqGQfD6fZIz4AnEHTjfpyx8vgLNxHDpHr5yjV85Fs1dO13T1/cylpaWqrq7W5MmTNXHiRHXt2lV+vz9sm4SEBNXV1bV67bKyskiV2Sbrtid+v1+ZmZmqq69XbW2t2+XEvLpEj6RTn5FUX1/vcjV24Dh0jl45R6+cc7NXrgaXhIQEJSQkqKCgQCNHjtTYsWNVU1MTtk1DQ4OSkpJavXYgEDj1rD9CgsGgysrKIr5ue9R85iDR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de8A0AqX+eMVChn5fD63S4l5Pp9PmZmZbpdhBXrlnM/nU2a3bq7WQHABYI2kS+Lk9Xr03JvlOlhV73Y5Ma+urk6JiYlul2EFeuXMP6T49dAtaQoGg67VQHABYJ2DVfXaf+y422XENGOk2tpaJScbeTxuVxPb6JVduMYFAABYg+ACAACsQXABAADWILgAAABrEFwAAIA1CC4AAMAaBBcAAGANggsAALAGwQUAAFiD4AIAAKxBcAEAANYguAAAAGsQXAAAgDUILgAAwBoEFwAAYA2CCwAAsAbBBQAAWIPgAgAArEFwAQAA1iC4AAAAaxBcAACANQguAADAGgQXAABgDYILAACwBsEFAABYg+ACAACsQXABAADWILgAAABrxGRwOXbsmB588EH16tVLffv21axZs3Ty5Em3ywIAAC6LyeAyadIkJSYm6p133lFJSYm2bNmioqIit8sCAAAui7ng8pe//EV//OMfVVBQIL/fryuvvFIPPviglixZ4nZpAADAZXFuF/Bl5eXlSklJUdeuXVvGrr32Wh06dEj/+7//q2984xsXvL0xRpLU2Ngon88XsbpCoZAk6aqUSxTnMRFbtz26/NI4BYNBeuUQ/XKOXrWCMapP9sifkCB5PG5XE9volWNXXHaJgsGgmpqaFAwGI7p283rN/46fT8wFl+PHj8vv94eNNf9eV1d30eDSHDA++uijqNTXN0VSSlSWbkcqtWtXJb1yjH45R69aJ15SZP9xab/olTO12rVrV1T30Pzv+PnEXHBJTExUfX192Fjz70lJSRe9fVxcnAKBgLxerzwkZwAArGCMUSgUUlzchaNJzAWXtLQ0VVVV6ejRo+rcubMk6ZNPPtHll1+uSy+99KK393q96tChQ7TLBAAALoi5i3Ovvvpqffvb39bs2bNVW1urTz/9VAsWLNCIESPcLg0AALjMYy52FYwLjh49qieffFLbtm2T1+vVsGHDNHny5IhebAsAAOwTk8EFAADgXGLupSIAAIDzIbgAAABrEFwAAIA1CC4AAMAaX+vgUllZqezsbG3btq1lbPfu3Ro5cqSysrI0ePBgLVu2LOw2K1euVHZ2tnr27Knhw4frgw8+aJkLBoOaO3eubrzxRmVlZWn8+PH67LPP2uz+RMPevXuVl5enPn36aMCAAZoyZYoqKysl0atz2bJli0aOHKkbbrhBAwYM0IwZM9TQ0CCJfp1LMBjU2LFj9cgjj7SM0aezrVu3TpmZmcrKymr5r6CgQBL9+rKqqipNmTJFffv2Ve/evfXggw+23Cd69X9effXVsMdTVlaWunfvru7du0uK8V6Zr6kdO3aYW2+91aSnp5utW7caY4ypqqoyffr0MYsXLzZNTU1m8+bNJisry+zevdsYY8zWrVtNVlaW2bFjh2lsbDQvvvii6du3r6mrqzPGGPPcc8+ZnJwcc+jQIVNTU2MmTZpk7r//ftfu41dVX19vBgwYYH71q1+ZEydOmMrKSnP//febBx54gF6dw7Fjx0wgEDDLly83wWDQHDlyxAwdOtT86le/ol/n8cwzz5jrrrvOTJ061RjDMXg+P//5z80jjzxy1jj9OtuYMWPMhAkTTHV1tampqTH/8i//YvLz8+nVRRw+fNgMGDDArFq1KuZ79bUMLitWrDA33XSTee2118KCy9KlS81tt90Wtu1jjz1mpkyZYowx5uGHHzaFhYVh87fffrspKSkxxhjz3e9+17z66qstc59//rnJyMgwBw4ciObdiZpPPvnE3HfffebkyZMtY2+88Ya54YYb6NV51NTUGGOMCYVCZt++fSY7O9u88sor9OscNm/ebO644w4zceLEluBCn85t9OjRZvHixWeN069wZWVlJhAItByHxhjzxRdfmI8//pheXUAoFDJjx44106dPN8bE/uPqa/lS0cCBA/WHP/xBd9xxR9h4eXm50tPTw8ZSU1O1d+9eSVJFRcV552tqanT48OGw+c6dO+uyyy7Tvn37onRPouuaa67RwoULwz747/XXX1e3bt3o1XkkJydLkgYNGqScnBx16dJFw4cPp19fcuzYMU2fPl2//OUvw75UlT6dLRQK6cMPP9Tbb7+tm2++Wd/97nf16KOPqrq6mn59yZ49e5SamqqlS5cqOztbAwcO1Ny5c9WlSxd6dQGrV69WRUVFy0u2sd6rr2Vw6dKlyzm/xOlc30ydkJCgurq6i84fP35c0qkvifzyfPOczYwxevrpp/XWW29p+vTp9OoiSktLtWnTJnm9Xk2cOJF+nSEUCqmgoEB5eXm67rrrwubo09kqKyuVmZmpIUOGaN26dSouLtb+/ftVUFBAv76kurpa+/bt0/79+7Vy5UqtWrVKR44c0dSpU+nVeYRCIf3mN7/RT37yk5YnXrHeq69l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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Histogrammi, jossa y-akselilla prosentit\n", "sns.histplot(df['palkka'], bins=bins, stat='percent')\n", "\n", "# Havaintojen lukumäärä\n", "n = df['palkka'].count()\n", "\n", "plt.xlabel('Palkka')\n", "plt.ylabel(f'%, n = {n}')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Lisätietoa\n", "\n", "\n", "* https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.cut.html\n", "* https://seaborn.pydata.org/generated/seaborn.histplot.html\n", " \n", "Data-analytiikka Pythonilla 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.2" } }, "nbformat": 4, "nbformat_minor": 4 }