{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Päivitetty 2025-05-16 / Aki Taanila\n"
]
}
],
"source": [
"from datetime import datetime\n",
"print(f'Päivitetty {datetime.now().date()} / Aki Taanila')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Lukumäärä- ja prosenttiyhteenvedot\n",
"\n",
"Tämä muistio sisältää likimain kaiken mitä sinun tarvitsee tietää lukumäärien ja prosenttien laskemisesta pandas-kirjastoa käyttäen."
]
},
{
"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('white')\n",
"from matplotlib.ticker import PercentFormatter\n",
"\n",
"# Jos prosentit desimaalilukuina, niin käytän tätä akselin muotoiluun \n",
"myFmt1 = PercentFormatter(xmax=1, decimals=0, symbol=' %')\n",
"\n",
"# Jos prosentit on jo valmiiksi kerrottu sadalla, niin käytän tätä akselin muotoiluun\n",
"myFmt100 = PercentFormatter(xmax=100, decimals=0, symbol=' %')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" nro | \n",
" sukup | \n",
" ikä | \n",
" perhe | \n",
" koulutus | \n",
" palveluv | \n",
" palkka | \n",
" johto | \n",
" työtov | \n",
" työymp | \n",
" palkkat | \n",
" työteht | \n",
" työterv | \n",
" lomaosa | \n",
" kuntosa | \n",
" hieroja | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 1 | \n",
" 1 | \n",
" 38 | \n",
" 1 | \n",
" 1.0 | \n",
" 22.0 | \n",
" 3587 | \n",
" 3 | \n",
" 3.0 | \n",
" 3 | \n",
" 3 | \n",
" 3 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | 1 | \n",
" 2 | \n",
" 1 | \n",
" 29 | \n",
" 2 | \n",
" 2.0 | \n",
" 10.0 | \n",
" 2963 | \n",
" 1 | \n",
" 5.0 | \n",
" 2 | \n",
" 1 | \n",
" 3 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | 2 | \n",
" 3 | \n",
" 1 | \n",
" 30 | \n",
" 1 | \n",
" 1.0 | \n",
" 7.0 | \n",
" 1989 | \n",
" 3 | \n",
" 4.0 | \n",
" 1 | \n",
" 1 | \n",
" 3 | \n",
" 1.0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | 3 | \n",
" 4 | \n",
" 1 | \n",
" 36 | \n",
" 2 | \n",
" 1.0 | \n",
" 14.0 | \n",
" 2144 | \n",
" 3 | \n",
" 3.0 | \n",
" 3 | \n",
" 3 | \n",
" 3 | \n",
" 1.0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | 4 | \n",
" 5 | \n",
" 1 | \n",
" 24 | \n",
" 1 | \n",
" 2.0 | \n",
" 4.0 | \n",
" 2183 | \n",
" 2 | \n",
" 3.0 | \n",
" 2 | \n",
" 1 | \n",
" 2 | \n",
" 1.0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 77 | \n",
" 78 | \n",
" 1 | \n",
" 22 | \n",
" 1 | \n",
" 3.0 | \n",
" 0.0 | \n",
" 1598 | \n",
" 4 | \n",
" 4.0 | \n",
" 4 | \n",
" 3 | \n",
" 4 | \n",
" NaN | \n",
" 1.0 | \n",
" 1.0 | \n",
" NaN | \n",
"
\n",
" \n",
" | 78 | \n",
" 79 | \n",
" 1 | \n",
" 33 | \n",
" 1 | \n",
" 1.0 | \n",
" 2.0 | \n",
" 1638 | \n",
" 1 | \n",
" 3.0 | \n",
" 2 | \n",
" 1 | \n",
" 2 | \n",
" 1.0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | 79 | \n",
" 80 | \n",
" 1 | \n",
" 27 | \n",
" 1 | \n",
" 2.0 | \n",
" 7.0 | \n",
" 2612 | \n",
" 3 | \n",
" 4.0 | \n",
" 3 | \n",
" 3 | \n",
" 3 | \n",
" 1.0 | \n",
" NaN | \n",
" 1.0 | \n",
" NaN | \n",
"
\n",
" \n",
" | 80 | \n",
" 81 | \n",
" 1 | \n",
" 35 | \n",
" 2 | \n",
" 2.0 | \n",
" 16.0 | \n",
" 2808 | \n",
" 3 | \n",
" 4.0 | \n",
" 3 | \n",
" 3 | \n",
" 3 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | 81 | \n",
" 82 | \n",
" 2 | \n",
" 35 | \n",
" 2 | \n",
" 3.0 | \n",
" 15.0 | \n",
" 2183 | \n",
" 3 | \n",
" 4.0 | \n",
" 4 | \n",
" 3 | \n",
" 4 | \n",
" 1.0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
"
\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": [
"## Muuttujien tekstimuotoiset arvot\n",
"\n",
"Muuttujien mahdolliset tektimuotoiset arvot kannattaa tallentaa lista-muuttujiin. Listoja on myöhemmin helppo lisätä tulostaulukoihin."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"koulutus = ['Peruskoulu', '2. aste', 'Korkeakoulu', 'Ylempi korkeakoulu']\n",
"perhe = ['Perheetön', 'Perheellinen']\n",
"sukup = ['Mies', 'Nainen']\n",
"tyytyväisyys = ['Erittäin tyytymätön', 'Jokseenkin tyytymätön', 'Ei tyytymätön eikä tyytyväinen', \n",
" 'Jokseenkin tyytyväinen', 'Erittäin tyytyväinen']\n",
"\n",
"# Monivalintakysymyksen (mitä etuisuuksia olet käyttänyt?) vaihtoehtojen lista\n",
"monivalinnat = ['työterv', 'lomaosa', 'kuntosa', 'hieroja']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## crosstab-funktio laskee lukumäärät\n",
"\n",
"**crosstab-funktio** palauttaa dataframen. Voin helposti luoda dataframeen uuden sarakkeen, johon lasken prosentit. "
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \n",
" | \n",
" f | \n",
" % | \n",
"
\n",
" \n",
" \n",
" \n",
" | Peruskoulu | \n",
" 27 | \n",
" 33.3 | \n",
"
\n",
" \n",
" | 2. aste | \n",
" 30 | \n",
" 37.0 | \n",
"
\n",
" \n",
" | Korkeakoulu | \n",
" 22 | \n",
" 27.2 | \n",
"
\n",
" \n",
" | Ylempi korkeakoulu | \n",
" 2 | \n",
" 2.5 | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1 = pd.crosstab(df['koulutus'], 'f')\n",
"\n",
"# Korvaan riviotsikot aiemmin määritellyllä koulutus-listalla\n",
"df1.index = koulutus\n",
"\n",
"# Poistan vasemmasta yläkulmasta häiritsevän otsikon\n",
"df1.columns.name = ''\n",
"\n",
"# Lisään prosentti-sarakkeen\n",
"n = df1['f'].sum()\n",
"df1['%'] = df1['f']/n*100\n",
"\n",
"# Näytettävien desimaalien säätäminen\n",
"df1.style.format({'f':'{:.0f}', '%':'{:.1f}'})"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAoYAAAGsCAYAAABAVWa0AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAMgtJREFUeJzt3X98zXX/x/HndraZTH6UrYi6oS2/2k9DE5lqhavyo2Ss5GpR8jsmcmkXCYVGV79Eu5YuKz8LueqKL+mSaUI/Rvr2g9ka9gObYXPO+/tHH+fbijaanbbzuN9u3W6dcz4/3q/zceVxfc4ZHsYYIwAAALg9T1cvAAAAAH8OhCEAAAAkEYYAAACwEIYAAACQRBgCAADAQhgCAABAEmEIAAAAi5erF4DqxeFw6PDhw6pTp448PDxcvRwAAFABxhidOHFC/v7+8vQ8/31BwhAX5PDhw+rataurlwEAAC7C5s2bddVVV533dcIQF6ROnTqSpI0bN6pevXouXk3Vs9vt+uKLL3TjjTfKZrO5ejlVyp1nl5if+d13fneeXao58xcVFalr167O38fPhzDEBTn78bGfn5/8/PxcvJqqZ7fbddlll8nPz69a/wfiYrjz7BLzM7/7zu/Os0s1b/7yvgbGD58AAABAEmEIAAAAC2EIAAAASYQhAAAALIQhAAAAJBGGAAAAsBCGAAAAkEQYAgAAwEIYAgAAQBJhCAAAAAthCAAAAEmEIQAAACyEIQAAACQRhgAAALAQhgAAAJBEGAIAAMBCGAIAAEASYQgAAAALYQgAAABJhCEAAAAshCEuis1mc8l57Q7jkvMCAOAOvFy9AFRPCct368fjjio9Z0t/PyXdH1ql5wQAwJ0Qhrgo3+ee0J7cUlcvAwAAVCI+SgYAAIAkwhAAAAAWwhAAAACSCEMAAABYCEMAAABIIgwBAABgIQwBAAAgiTAEAACAhTAEAACAJMIQAAAAFsIQAAAAkghDAAAAWAhDAAAASCIMAQAAYCEMAQAAIIkwBAAAgIUwBAAAgKQLCMOnn35aUVFRysvLK/P8mTNndN9992no0KEyxig6OlorV66s9IWWp2fPnnrvvffO+VplrmnixImaOHFipRzrl9LS0hQUFFTpx5Uqd34AAFBzVTgMn3zySV155ZV68sknyzy/YMEC5ebmatasWfLw8Kj0BVbUunXrdNddd7ns/AAAANVdhcOwVq1amjdvnj777DO9+eabkqTt27crOTlZL7zwgurXr/+bfUpKSpSUlKTu3bsrMjJS8fHx2r9/v/P1oKAgvf3224qJiVFwcLCGDRumr776Svfff79CQ0PVt29f5/YLFizQY489phEjRigkJETR0dF6++23nceq6F2xLVu2KDw8XOvXr5ckZWVlafTo0erUqZOioqI0btw4HT58WNLPd/G6du2qcePGKSIiQq+99lqZY2VlZal79+6aMWOGjDHlzvv555/rgQceUOfOndWuXTv16dNHu3bt+s0ajTGaPHmyevbsqUOHDkmSPvroI/Xp00dhYWGKiYlRcnKyHA6HpHPfxQwKClJaWtpvjh0XF6cFCxY4Hx88eFBBQUE6ePBgue8dAACo2S7oO4bNmzfX3/72N82ZM0d79uzRxIkTNWHCBN14443n3H7evHnatGmTkpOTtWXLFgUHB2vIkCE6ffq0c5s1a9bo7bff1n/+8x/t2LFDjz32mJ555hn997//lY+Pj1555RXnths2bFBYWJg+++wz/f3vf9e0adP06aefVnj9mzdv1tixYzV37lzdeeedKi0t1ZAhQ2Sz2fThhx86Y3HYsGE6c+aMJCknJ0fNmzfXp59+qtjYWOexMjMzFRcXp7vvvluTJk2Sh4fH78576tQpPfroo4qJidHHH3+stLQ0NWvWTLNnzy6zRofDoUmTJmnPnj168803FRAQoG3btmn06NF6+OGHtX37ds2dO1dvvPGGUlJSKjw7AABAeS74h0969+6t22+/3XlXb+DAgefczhij1NRUjR07Vk2bNlWtWrU0fPhwlZaWatOmTc7tBg0apPr168vf31/XX3+9br/9drVo0UKXXXaZOnbsqKysLOe2QUFBeuihh+Tt7a3OnTsrJiZG7777boXWvXnzZg0fPlyJiYnq2rWrJCk9PV2ZmZlKTExU3bp1dfnllysxMVF79+7VV1995dy3X79+8vb2lp+fn6Sf7xTGxcWpS5cuGjlyZIXm9fb21ttvv63Y2FiVlJQoKytL9evXd94RPCshIUFbtmxRSkqKGjZsKElauXKlunfvrh49esjLy0tt2rTRI488otTU1ArNDgAAUBFeF7PT448/rnfffVejRo067zb5+fkqLi7WqFGj5On5//1ZWlpaJvZ++RG0zWZTvXr1nI89PT1l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9957r0JDQxUdHa1ly5ad9xjbt2/XbbfdpvDwcE2ePFkOh8P52pQpU7RixYpLtv4/4nyzT506VW3bti3za+Htt98+5zGq4+x79+7VQw89pMjISEVFRWnChAnKz893vl7Tr31589f06//pp5/q3nvvVVhYmKKiojRt2jSdOnXK+XpNvv7lzV7Tr32FGcAYM2jQIDNu3DhTXFxsDhw4YHr27GkWLlx4zm1nzZplRo8ebYqLi82oUaPMc889Z4wxprCw0PTo0cPk5uZW5dIrxcyZM83EiRMrtG1NmT89Pd3ceuutJjAw0Gzbts35/NGjR01kZKRZsmSJKS0tNVu3bjWhoaFm9+7d5zxO3759TUpKijl27JiJjo42mzdvNsYYs3v3bhMbG2scDkeVzHMhzje7Mcb07t3brFy5skLHqW6znzx50kRFRZmkpCRz+vRpk5+fb+Lj483QoUONMTX/2pc3vzE1+/rn5eWZdu3amRUrVhi73W4OHTpkevXqZZKSkowxNfv6lze7MTX72l8I7hhC+/fv1/bt2zV+/HjVrl1bTZs21WOPPaa33nrrnNt7ef38V2wb6y/NOfuXiiclJWngwIG64oorqmbhlejLL79U27ZtK7RtTZh/1apVeuKJJzRmzJjfvPbhhx+qfv36GjhwoLy8vNSpUyf95S9/qdCvB2OMbDabHA6Hpk+frr/97W9/ur868fdmLykp0b59+y7q10J1mD07O1s33HCDhg8fLh8fHzVo0ED9+/fXZ599JqnmX/vy5q/p179hw4baunWr+vTpIw8PDx09elSnT59Ww4YNJdXs61/e7DX92l8IwhD69ttvVb9+fQUEBDifa9GihbKzs3X8+PHfbP/AAw+ooKBA3bp1U1FRkQYPHqy9e/fqiy++0P3331+VS68UDodDX3/9tTZt2qRu3bqpS5cumjJlio4dO3bO7WvC/J07d9Z//vMf9ejR4zevffvttwoMDCzzXMuWLbV3795zHmv8+PF65513dMcddyg6Olo33XSTli5dqrCwMAUFBV2S9f8Rvzf73r17debMGc2fP1833XSTYmJi9Nprr5X5mOiXqtvszZs31+uvv+78PzOS9MEHH6hNmzaSav61L2/+mn79JcnPz0+S1LVrV/3lL39Ro0aN1KdPH0k1//r/3uzucO0rzBW3KfHnsnr1atO1a9cyz+3fv98EBgaan376qdz9HQ6HiY2NNV988YVZu3at6d27t+nfv7/57LPPLtGKK9eRI0dMbGysWbZsmSkuLjZZWVlm0KBBJj4+vkL7V/f5f/1x6qRJk8z48ePLbPPOO++YW2+9tULHy83NNT179jSFhYXmueeeM3fddZcZOnSoycnJqdR1V4Zfz/7JJ5+YuLg4k5aWZkpKSszu3btN586dz/u1il+rTrM7HA4zd+5cExERYfbu3WuMca9rf6753en6nzx50uTk5JhBgwaZv/71r8YY97n+55rdna59ebhjCF122WU6efJkmefOPq5Tp065+69cuVKBgYG65pprNGXKFL344ouaMGGCRo8e7fy49c/syiuv1FtvvaV+/fqpdu3aaty4scaPH6+PP/5YRUVF5e5f3ef/tdq1a5f5QrYknTp1qkK/FiRp9uzZGj58uNLT07V582YtW7ZMISEhmjlz5qVYbqWKiopSSkqKIiMj5e3trRtvvFEPPvig3n///QrtX11mLyoq0siRI7VmzRotWbLEeYfDXa79+eZ3l+svSb6+vgoICND48eO1ZcsWHTt2zG2u/7lmd6drXx7CELr++ut19OjRMj9d+9133+mqq65S3bp1f3ffY8eOKTk5WWPGjNGBAwd02WWXqXHjxmrbtq2OHDmigoKCS738P2zv3r16/vnny0RcSUmJPD095ePj87v71oT5fy0wMFDffvttmef+93//V9dff325+6anpys3N1d33nmn9u3bp8DAQPn4+Kht27bat2/fpVpypfnoo4+Umppa5rmSkhL5+vqWu291mf3AgQPq27evioqKtHz58jIfe7nDtf+9+Wv69f/88891xx13qKSkxPlcSUmJvL29Vbt27Rp9/cubvaZf+wtBGELXXXedwsPDNWPGDBUVFSkzM1MvvfSS+vXrV+6+c+fO1V//+lddfvnlatKkiY4fP679+/dr586dqlevnurXr3/pB/iD6tevr7feekuvv/66zpw5o+zsbD333HPq3bt3uWFYE+b/tdtuu025ublKTk5WaWmptm3bpjVr1qhv376/u9+ZM2f07LPPasqUKZJ+/nW1d+9enTx5Ujt37lSzZs2qYvl/iDFGzz77rD799FMZY7Rz506lpKSof//+v7tfdZn92LFjevDBBxUWFqZFixY5v3h/Vk2/9uXNX9Ovf1BQkE6dOqU5c+aopKREWVlZmjVrlvr16ycfH58aff3Lm72mX/sL4rIPsfGncuTIETNixAgTGRlpOnbsaGbOnGnOnDnzu/t88cUXZtCgQWWeW7JkienYsaO55ZZbzIYNGy7lkitVWlqa6d+/vwkNDTUdO3Y006ZNM6dOnfrdfWrK/Of6I1u++OIL5/vRvXt3s2LFinKPs3jx4jJ/9IPdbjcTJ0404eHhpk+fPub777+v9LX/UeeafenSpeb22283wcHBpnv37mbJkiXlHqe6zL548WITGBhogoODTUhISJl/zqrJ174i89fk62+MMd9++6156KGHTEREhOnWrZuZO3euOX36tPP1mnz9y5u9pl/7ivIwphp+CQoAAACVjo+SAQAAIIkwBAAAgIUwBAAAgCTCEAAAABbCEAAAAJIIQwAAAFgIQwAAAEgiDAHALdjtdmVmZjofnz59Wjk5OS5cEYA/I8IQAC5CdHS02rVrp9DQUIWGhiokJESdO3fWrFmz5HA4XL283xgzZoxWr17tfBwbG6utW7dK+vnveg0NDXXRyi5MZmam4uPjFRkZqU6dOmnChAk6fvz4b7bbv3+/OnTooIMHD7pglUD1RRgCwEVKTEzUzp07tXPnTu3atUuLFi3S6tWr9eKLL7p6ab9RUFBw3scRERHauXNnVS/poowdO1YtW7bUf//7X61fv17Z2dmaOXNmmW02bNigAQMG6OjRo65ZJFCNebl6AQBQUwQFBal9+/bKyMiQJMXFxalJkyZKS0uTMUZr165VVlaWnn/+ee3evVu+vr6Kjo7WuHHjVLduXRUVFWnKlCnaunWrvLy8dMMNN2jSpElq0aKFJGndunV65ZVXlJ2drWuvvVZjx45V586dnecKCQnR559/royMDF111VUaMWKEevToocmTJys9PV07d+7U119/rZKSEmVnZ2vq1Kn66quvFBMTowceeEDffPONJGnjxo167bXXtH//fhUXF6tdu3aaPn26rrvuunLfg4kTJ8rHx0eHDx9WWlqaGjZsqAcffFAPPPDAb7bNzs5Wz549z3mcoUOHatiwYb95/rvvvlN4eLiMMTLGyMPDQ7Vr13a+/uKLL2r9+vUaM2aMnnrqqXLXC+BXXPo3NQNANdWtWzezYsUK5+OSkhKzbds20759e5OSkmKMMWbQoEHm5ptvNjk5OebYsWMmPz/fREZGmpkzZ5qTJ0+aw4cPmwceeMAMGzbMGGNMUlKSefjhh83JkyfN6dOnTUJCgvO1TZs2mfDwcLN9+3Zz5swZs3HjRhMSEmL27dvnPFdkZKT5+uuvzenTp83cuXNNeHi4OXXqlPP1+fPnn3P927ZtM4GBgcYYY3766SfTtm1bs2HDBmOMMfn5+SY2NtY88cQTFXpfEhISTJs2bcwnn3xiSktLzdKlS02rVq1MTk7ORb/Xv7R48WLTpk0b06pVKxMYGGjuu+8+U1xc7Hw9JyfHOBwOk5mZaQIDA01mZmalnBdwF3yUDAAXKTExUREREYqIiFCnTp00bdo0PfTQQxo0aJBzmy5duiggIECXX365NmzYIG9vbz3xxBPy9fVVo0aNNGXKFG3cuFFHjhyRr6+v9u7dq9WrV+vQoUOaMWOGXn75ZUnSkiVLNGDAALVv3142m03dunVTdHS0UlNTneeKiYlR69at5ePjo969e6uwsFB5eXkXNFPDhg21bt06RUdHq6ioSDk5OWrQoIEOHTpU4WN06NBBUVFR8vLyUt++fWW323XgwIELWsf5eHh46NFHH1V6ero2btwoSfrb3/7mfD0gIEAeHh6Vci7AHfFRMgBcpKlTp6pPnz6/u42/v7/z3/Py8tS4cWPZbDbnc9dcc40kKSsrS/Hx8fLx8dHy5cv197//XU2bNtW4ceN0++23KysrS9u3b9fSpUud+9rtdnXs2NH5uFGjRs5/9/L6+T/vF/qDMN7e3lq7dq1SU1Pl4eGhwMBAFRUVOY9XEb9ch7e393nXkZ2drbvuuuucx3jkkUf0yCOPlHnuq6++UlJSkj777DN5eXnpsssu04QJEzRw4EBNnTpVfn5+FV4jgHMjDAHgEvrl3asmTZooOztbdrvdGYdn76Q1atRI33zzjaKjozV48GAVFhbqX//6l8aMGaNt27bpqquu0j333FMmlrKzs+Xr61up612/fr2WLFmipUuX6tprr5UkTZs2Tfv27avU80hS48aNlZ6eXuHtf/rpJ9nt9jKR6e3tLQ8PjzKxDeDi8VEyAFSRrl27SpKef/55nTp1SkeOHNEzzzyjjh07qkmTJlq2bJkmTJigvLw8+fn5yc/PT5dddpl8fHx03333KSUlRV988YUk6csvv1SfPn20du3aCp3bx8dHhYWF5318VmFhoTw9PeXr6ytjjD7++GOtXr1apaWllfAO/DHh4eGqXbu2ZsyYodOnTysvL09z5szRbbfdVuYHUABcPMIQAKpI3bp19cYbb2jfvn3q2rWrevXqpSZNmigpKUnSz38Uy7XXXquePXsqLCxMK1eu1EsvvaRatWrpjjvu0NixYzVp0iSFhYVp1KhRGjx4sOLi4ip07nvuuUcrVqxQbGysJKlfv36aN2+ennjiiTLb9e7dWzfddJN69uypjh076uWXX9aDDz6oH374QSUlJZKk0NBQvffee5X4zlRMw4YNtWjRIv3444+6+eabdc899+i6667TjBkzqnwtQE3lYYwxrl4EAKD6SE1NVb169XTnnXe6eikAKhl3DAEAFWaM0ZdffqkuXbq4eikALgHuGAIAAEASdwwBAABgIQwBAAAgiTAEAACAhTAEAACAJMIQAAAAFsIQAAAAkghDAAAAWAhDAAAASCIMAQAAYPk/Hbf7mi6LgTYAAAAASUVORK5CYII=",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Vaakapylväskaavio prosenteista\n",
"df1['%'].plot.barh()\n",
"\n",
"# x-akselin otsikointi; n-arvo mukaan\n",
"plt.xlabel(f'Prosenttia, n = {n}')\n",
"\n",
"# x-akselin jakoviivojen otsikoiden muotoilu\n",
"plt.gca().xaxis.set_major_formatter(myFmt100)\n",
"\n",
"# Pystysuuntainen taustaviivoitus\n",
"plt.grid(axis='x')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## crosstab-funktio laskee ristiintaulukoinnit"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Mies | \n",
" Nainen | \n",
"
\n",
" \n",
" \n",
" \n",
" | Peruskoulu | \n",
" 22 | \n",
" 5 | \n",
"
\n",
" \n",
" | 2. aste | \n",
" 23 | \n",
" 7 | \n",
"
\n",
" \n",
" | Korkeakoulu | \n",
" 15 | \n",
" 7 | \n",
"
\n",
" \n",
" | Ylempi korkeakoulu | \n",
" 2 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Mies Nainen\n",
"Peruskoulu 22 5\n",
"2. aste 23 7\n",
"Korkeakoulu 15 7\n",
"Ylempi korkeakoulu 2 0"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Ristiintaulukointi\n",
"df2 = pd.crosstab(df['koulutus'], df['sukup'])\n",
"\n",
"# Otsikot kuntoon:\n",
"df2.index = koulutus\n",
"df2.columns = sukup\n",
"\n",
"df2"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAi4AAAHtCAYAAAA+3vVYAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAASBpJREFUeJzt3XlYlPX+xvGbGfZFwS3UyB3NXDLNtCzTo6Wm5b5kZi6YS+rRxC1zTdHMMo4mHs2D+4ZaqWmlnbQ6puWS2s8FjXJBRAEXQARm5veHhzlSWmDA8Azv13V1Xc0z22fmwZl7vquLzWazCQAAwABMji4AAAAgpwguAADAMAguAADAMAguAADAMAguAADAMAguAADAMAguAADAMAguAADAMFwdXUBes1qtio+Pl4+Pj1xcXBxdDgAAyAGbzaaUlBSVKVNGJtPd21WcLrjEx8eradOmji4DAADcg127dikwMPCu1ztdcPHx8ZF064X7+vo6uBoAAJATycnJatq0qf17/G6cLrhkdQ/5+voSXAAAMJg/G+bB4FwAAGAYBBcAAGAYTtdVBABATlmtVqWnpzu6jCLBzc1NZrP5Lz8OwQUAUCSlp6crJiZGVqvV0aUUGf7+/goMDPxLy5UQXAAARY7NZtOFCxdkNpsVFBT0h+uG4K+z2WxKTU1VfHy8JKls2bL3/FgEFwBAkZOZmanU1FSVK1dO3t7eji6nSPDy8pJ0a721MmXK3HO3ERETAFDkWCwWSZK7u7uDKylaskJiRkbGPT8GwQUAUGSxNUzByov3m+ACAAAMg+ACAMB/Waw2p34+Z8DgXAAA/stsctHwNQd1Kj4535+rahlfvd+9Xq7uU716dUnStm3bVLly5WzX/etf/9LMmTP12muvaejQoZo4caIkaerUqXlTcCFBcAEA4Dan4pP1U+w1R5dxVwEBAdq0aZNef/31bMc3btyYbY8+ZwssWegqAgDAQNq1a6ePP/4428J5hw8fVnp6umrWrGk/NnbsWI0dO9Z+eevWrWrXrp3q16+vjh076ptvvrFf9/3336tjx45q0KCBWrZsqenTpyszM7NgXlAuEVwAADCQp59+WhkZGfrPf/5jPxYVFaXOnTvf9T67du3SpEmTNHHiRO3bt09Dhw7V0KFDFR0dLUkaPXq0evXqpR9++EH/+te/tH37du3cuTPfX8u9ILgAv2HUwXJGrRtA7ri6uqpdu3batGmTJCktLU2fffaZ2rdvf9f7rFixQj169NCjjz4qs9msZs2aqXnz5lqzZo0kycPDQ9u2bdO///1v+fv7a9euXXr22WcL4uXkGmNcgN8oyMF5eeVeBvkBMK6OHTuqW7duSk5O1o4dO/TII4+odOnSd739+fPntW/fPq1evdp+zGKxqFGjRpKkpUuX6h//+IemTJmiS5cu6cknn9TkyZMVGBiY768ltwguwB0U9sF5AIq2GjVqqHLlytq2bZs2b96s3r17/+HtAwMD1b59ew0YMMB+LDY2Vp6enrp586ZOnTqlyZMny9XVVTExMZowYYJmzJih8PDw/H4puUZXEQAABtSxY0dFRkYqJiZGTZs2/cPbdu3aVcuWLdPhw4clSUeOHFHHjh21ZcsWubi4aOTIkVqyZIkyMzNVunRpubq6KiAgoCBeRq7R4gIAwG2qlvH98xsVgudp27atZs2apd69e8vV9Y+/zlu1aqXU1FSNHz9esbGx8vf31yuvvKJevXrJxcVFCxYs0KxZs7Rw4UKZzWY99dRTGjVq1F+qL7+42Gw2pxrRl5ycrPr162v//v3Z5rMDufFc+NeG6ip6qFwxbR32pKPLAAwjLS1NMTExqlSpkjw9Pe3HLVabzKaC27+ooJ/P0e72vks5//6mqwgAgP8q6BBRlEJLXiG4AAAAwyC4AAAAwyC4AAAAwyC4AAAAwyC4AAAAwyC4AAAAwyC4AAAAwyC4AAAAwyC45BGL1ZgLEBu1bgDIF1aLcz+fE2CvojxiNrlo+JqDOhWf7OhScqxqGV+9372eo8sAgMLDZJY29Jcun8z/5yoVLHVanKu7VK9eXU2bNtXChQvl4vK/VXc3btyoefPm6csvv/zTx/jkk0+0cOFCbd26NdclFwYElzx0Kj7ZUPvbAADu4PJJ6cKPjq7irnbt2qXFixcrJCTknu7//PPP6/nnn8/jqgoOXUUAABhIr1699P777+vAgQN3vc2XX36p7t27q3Hjxqpbt65eeukl/fLLL5Jutc40b95ckrR37141b95cCxYs0JNPPqmGDRtq6NChSk7+X+/B1q1b1a5dO9WvX18dO3bUN998k62WOXPmqGfPnqpXr55at26tTz/9NH9e+H8RXAAAMJCWLVuqW7duGjlypK5cufK76+Pi4jR8+HANGDBAe/bs0VdffSWbzab58+ff8fHOnz+vixcv6osvvtD69et18OBBrVq1StKt1p1JkyZp4sSJ2rdvn4YOHaqhQ4cqOjrafv9169bpjTfe0N69e/XMM89o4sSJunnzZr68dongAgCA4YwZM0YlSpTQ2LFjZbNln2RRokQJbd26Vc2bN1dycrLi4uIUEBCgixcv3vXxhgwZIk9PT1WoUEGPPfaYYmJiJEkrVqxQjx499Oijj8psNqtZs2Zq3ry51qxZY7/vs88+q5o1a8rd3V0dOnTQ9evXlZCQkD8vXIxxAQDAcNzd3TV37lx16NBBS5YsUUBAgP06Nzc3bdmyRWvWrJGLi4uCg4OVnJwsV9e7f+WXLl062/2zwtD58+e1b98+rV692n69xWJRo0aN7njfrOewWq1//UXeBcEFAAADeuCBBzRt2jSNHj1aHTt2tB/ftm2bVqxYodWrV6tChQqSpGnTpunkydzPlAoMDFT79u01YMAA+7HY2Fh5enr+9RdwjwguAADcrlSwYZ6nTZs22rt3r9asWaPy5ctLkq5fvy6TySRPT0/ZbDZ9/fXX+uijj1StWrVcP37Xrl311ltvqVGjRqpTp46OHDmikJAQDR48WC+//PJfrv9eEFwAAMhiteR6bZW//Hwm8196iPHjx+vHH3/UtWu3luPo0KGD9u/fr+eee05ms1mVK1dW7969tXLlSqWnp+fqsVu1aqXU1FSNHz9esbGx8vf31yuvvKJevXr9pZr/Chfbb0f1GFxycrLq16+v/fv3y9fXt0Cf+7nwrw21jstD5Ypp67AnHV1GocS5BJxbWlqaYmJiVKlSJYd2exQ1f/S+5/T7m1lFAADAMAguAADAMAguAADAMAguAADAMAguAIAiy8nmpxR6efF+E1wAAEWO2XxrCnJupwfjr0lNTZV0a3Xee8U6LgCAIsfV1VXe3t66dOmS3NzcZDLxOz4/2Ww2paamKj4+Xv7+/vbgeC8ILgCAIsfFxUVly5ZVTEyMfv31V0eXU2T4+/srMDDwLz0GwQUAUCS5u7urWrVqdBcVEDc3t7/U0pKF4AIAKLKy9vSBcdCpBwAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADMMhweX48ePq06ePGjZsqCeeeEKjR49WYmKiJOnHH39Uly5dVK9ePTVv3lzr1693RIkAAKAQKvDgkpaWpv79+6tevXr65ptvtGXLFl25ckXjx4/X1atXNWDAALVv317ff/+9pk+frrCwMB0+fLigywQAAIVQgQeX2NhY1ahRQ0OGDJG7u7sCAgLUrVs3ff/99/r888/l7++vnj17ytXVVY0bN1a7du20cuXKgi4TAAAUQgW+cm7lypW1ePHibMc+++wzPfTQQ4qOjlZwcHC266pWraqoqKhcP4/FYpHFYvlLteZGXixj7CgF+T4ZAecSAApeTj+/HLrkv81m09y5c/Xvf/9bK1as0LJly+Tl5ZXtNp6envZtsHPj8OHD8vb2zqtS/5CXl5dq1qxZIM+VH06cOKEbN244uoxCgXMJAI6R0+96hwWX5ORkjRs3Tj/99JNWrFih6tWry8vLS9evX892u7S0NPn4+OT68evUqSNfX9+8KtepVa9e3dElII9wLgEYVXJyco5u55DgcubMGYWEhKhcuXKKiopSiRIlJEnBwcH69ttvs9321KlTqlatWq6fw2w2G7rJvyDxPjkPziUAo8rp51eBD869evWqevfurUceeUQffvihPbRIUsuWLXX58mVFRkYqIyND3333nTZv3qxOnToVdJkAAKAQKvAWl40bNyo2Nlbbtm3T9u3bs1138OBBLVmyRNOnT1d4eLhKlCihCRMmqFGjRgVdJgAAKIQKPLj06dNHffr0uev1tWvX1po1awqwIgAAYBQs+Q8AAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAyD4AIAAAzDocElMTFRLVu21N69e+3HJk2apFq1aqlevXr2/9auXevAKgEAQGHh6qgn3r9/v8aOHaszZ85kO37kyBFNmzZNHTp0cFBlAACgsHJIi8umTZs0atQojRgxItvx9PR0nTx5UrVq1XJEWQAAoJBzSItLkyZN1K5dO7m6umYLL8ePH1dmZqbCw8O1f/9++fn5qVOnTurfv79MptxlLIvFIovFktel35XZbC6w58prBfk+GQHnEgAKXk4/vxwSXEqXLn3H49evX1fDhg3Vq1cvvfvuuzp27JiGDBkik8mk/v375+o5Dh8+LG9v77wo9095eXmpZs2aBfJc+eHEiRO6ceOGo8soFDiXzsPNzU0P1nxIbq7GC6IZmRYd+7+flJGR4ehSgAKTmpqao9s5bIzLnTzxxBN64okn7Jfr1Kmj3r1769NPP811cKlTp458fX3zukSnVL16dUeXgDzCuczObDZr+JqDOhWf7OhScqxqGV+9372eHnroIUeXAhSo5OSc/TstVMFlx44dunz5srp3724/lp6eLk9Pz1w/ltlsNnSTf0HifXIenMvfOxWfrJ9irzm6jFzjXKKoyenffKFax8VmsyksLEx79uyRzWbTwYMHtWzZMnXr1s3RpQEAgEKgULW4tGzZUuPGjdPkyZN18eJFlSpVSkOHDtULL7zg6NIAAEAh4PDgcuLEiWyXu3fvnq2rCAAAIEuh6ioCAAD4IwQXAABgGAQXAABgGAQXAABgGAQXAABgGAQXAABgGAQXAABgGAQXAABgGHkWXBITE/PqoQAAAO4o1yvnHj58WG+//bYuXrwoq9UqScrIyFBiYqKOHj2a5wUCAABkyXGLS7t27SRJU6ZMUenSpdWkSRNVqlRJL730ksxms0JDQ/OtSAAAACkXwWXAgAGSpOjoaIWFhalnz56yWCzq06eP3nvvPX388cf5ViQAAICUi+BSrlw5SVLx4sXl6empoKAgRUdHS5IefvhhnTt3Ln8qBAAA+K8cB5eQkBBJUuXKlbV69Wp5eHjI29tbx44d0+nTp2UyMUEJAADkrxwPzj1w4IAkafjw4Ro0aJCeeOIJ9evXT127dpXZbFaPHj3yrUgAAADpHmYVlS5dWrt375abm5u6deumBx98UNevX9cTTzyRH/UBAADY5bp/p1u3bsrIyLB3DdWpU4fQAgAACkSug4u/v78uXryYH7UAAAD8oVx3FVWrVk1du3bVww8/rDJlymS7LiwsLM8KAwAA+K1cBxdvb28988wz+VELAADAH8p1cKFVBQAAOEqug0t6ero2b978u72KTp48qQULFuR5gQAAAFlyHFz++c9/asCAARo/fry+/vprBQQEKCMjQ97e3oqOjlbnzp3zs04AAICczyr6/vvvJUm7d+/W6tWr9dZbb+nhhx/W5s2bNXr0aF27di3figQAAJByEVwWLVokSbLZbKpcubIqV66sY8eOSZJ69uxpX1kXAAAgv+Q4uLRr106SFBgYqLNnz6pEiRJKSEhQamqqbDabUlNT861IAAAAKRdjXAYMGCDpVoB58cUXFRUVpaefflqDBg2Sh4eHHnrooXwrEgAAQMpFcMlqcRkwYICCgoLk5+enN998U7Nnz1ZycrLefPPNfCsSAABAuofp0JLUunVr+/9PmTJFkpSZmZk3FQEAANxFroPLmTNnNH/+/N+t4xITE6PvvvsuzwsEAADIkuPBuVljXN544w2dP39efn5+yszMVHBwsKKjo9W7d+98KxIAAEDKRXCpX7++JOnIkSOaP3++Bg8eLD8/P02YMEHvvvuudu/enW9FAgAASLkILi+88IKkW5ssFi9eXA888IBOnjwpSXrqqacUExOTPxUCAAD8V46DS5s2bSRJDzzwgHbt2iUfHx9ZrVadPXs223gXAACA/JLjwblbt26VdGusy7Bhw7RlyxZ169ZN3bt3l9lsVrNmzfKtSAAAACkXwaVs2bKSpObNm+vzzz9XiRIlNHjwYFWsWFHJyclq3759ftUIAAAg6R7XcSlZsqQuX74sq9Wqhx9+WJJ0+fJllStXLi9rAwAAyCbXwSUqKkpTp05VRkaG/ZjNZpOLi4t900UAAID8kOvgMnfuXIWGhurpp5+WyZTjsb0AAAB/Wa6DS3p6unr27EloAQAABS7X6eP555/X6tWr86MWAACAP5TrFpcWLVqoX79+ev/99+Xn55ftup07d+ZZYQAAAL+V6+AyadIktWrVSo0bN5bZbM6PmgAAAO4o18ElPj5ec+bMyY9aAAAA/lCux7g89thjOnjwYH7UAgAA8Idy3eJSvnx59e3bV4899pgCAgKyXRcWFpZnhQEAAPxWroNLamqqWrVqlR+1AAAA/KFcBxdaVQAAgKPkOrjMmzfvrte99tprf6kYAACAP5Lr4LJ3795sl69cuaLTp0/TfQQAAPJdroPL8uXLf3fs448//l2gAQAAyGt5suHQCy+8wKq5AAAg3+VJcNm3b5+8vb3z4qEAAADuKtddRc2bN5eLi4v9ckZGhi5fvqxBgwblaWEAAAC/levgMnTo0GyXTSaTqlSpolq1auVZUQAAAHeS6+DSpEkTlS5d+nfH161bp65du+ZJUQAAAHeS6zEuffv21dWrV+2XL1++rAEDBmjmzJl5WhgAAMBv5Tq41KlTR/369VNKSoo+/fRTPffcc0pLS9Mnn3ySH/UBAADY5bqraPr06Ro3bpxatWqllJQUvf766+rZs2d+1AYAAJDNPU2HnjFjhho3bqxatWqpe/fueV0TAADAHeW4xaVGjRrZpkHbbDZJyjab6NixY3lYGgAAQHY5Di7Lli3LzzoAAAD+VI6DS8OGDfOzDgAAgD/1l1fOvR37FQEAgPz0l1fOTUxM1IYNG9SlS5c8KwoAAOBOch1cOnTo8LtjLVu21MiRI9WnT588KQoAAOBO8mR36PLly+uXX37J9f0SExPVsmVL7d27137sxx9/VJcuXVSvXj01b95c69evz4sSAQCAE8h1i8v333+f7XJGRoa2b9+uChUq5Opx9u/fr7Fjx+rMmTP2Y1evXtWAAQM0bNgwdevWTd9//72GDBmi6tWrq06dOrktFQAAOJlcB5devXplu5y1O/SkSZNy/BibNm1SeHi4QkNDNWLECPvxzz//XP7+/vaVeBs3bqx27dpp5cqVBBcAAJDz4BIbGyvpzjOH7jbL6G6aNGmidu3aydXVNVtwiY6OVnBwcLbbVq1aVVFRUbl6fEmyWCyyWCy5vt+9MpvNBfZcea0g3ycj4Fw6D84lYBw5/ZvPcXD5o2nQNptNLi4uOV45t3Tp0nc8npKSIi8vr2zHPD09lZqamtMy7Q4fPixvb+9c3+9eeHl5qWbNmgXyXPnhxIkTunHjhqPLKBQ4l86DcwkYS06/63McXApijRYvLy9dv34927G0tDT5+Pjk+rHq1KkjX1/fvCrNqVWvXt3RJSCPcC6dB+cSRU1ycnKObpfj4FK+fPl7LiangoOD9e2332Y7durUKVWrVi3Xj2U2mw3dTFyQeJ+cB+fSeXAuUdTk9G8+T6ZD55WWLVvq8uXLioyMVEZGhr777jtt3rxZnTp1cnRpAACgEChUwSUgIEBLlizR9u3b9dhjj2nChAmaMGGCGjVq5OjSAABAIZDr6dB57cSJE9ku165dW2vWrHFQNQAAoDArVC0uAAAAf4TgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAgAADIPgAjiB0r4ektXi6DLujVHrzieGPpeSsWuHIbg6ugAAf10xL1fJZJY29Jcun3R0OTlXKljqtNjRVRQqhj2XEucTBYLgAjiTyyelCz86ugrkBc4lcEd0FQEAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMolMHl008/Vc2aNVWvXj37f6GhoY4uCwAAOJirowu4kyNHjuiFF15QWFiYo0sBAACFSKFscTly5Ihq1arl6DIAAEAhU+haXKxWq3766Sd5eXlp8eLFslgsatq0qUaNGqXixYvn+HEsFossFks+Vpqd2WwusOfKawX5PhmBkc+lUeXX3yDn0jH4TMG9yOnfTaELLomJiapZs6aeffZZhYeHKykpSWPGjFFoaKj++c9/5vhxDh8+LG9v73ys9H+8vLxUs2bNAnmuvFTa10OyWgz54W7NzNDR/zumjIyMPH1co55Loztx4oRu3LiRp4/JuXSc/DifcH6pqak5ul2hCy6lSpXSypUr7Ze9vLwUGhqqrl27Kjk5Wb6+vjl6nDp16uT4tkVVMS9XyWSWNvSXLp90dDk5VypYpk6L9dBDDzm6EuSR6tWrO7oE5CHOJ+5FcnJyjm5X6ILL8ePHtWXLFr3++utycXGRJKWnp8tkMsnd3T3Hj2M2mw3ZkuAQl09KF350dBW5xvl1HpxL58L5xL3I6d9NoRuc6+/vr5UrV2rx4sXKzMxUbGysZs+erQ4dOuQquAAAAOdT6IJLYGCgFi5cqJ07d6phw4bq1KmTateurYkTJzq6NAAA4GCFrqtIkho2bKg1a9Y4ugwAAFDIFLoWFwAAgLshuAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAAAMMguAAADMFitTm6hHti1LoLK1dHFwAAQE6YTS4avuagTsUnO7qUHKtaxlfvd6/n6DKcCsEFAGAYp+KT9VPsNUeXAQeiqwgAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABgGwQUAABhGoQwuCQkJGjx4sBo0aKDHHntM06dPV2ZmpqPLAgAADlYog8vf//53eXt76+uvv1ZUVJT27NmjyMhIR5cFAAAcrNAFl19//VX79u1TaGiovLy8FBQUpMGDB2vlypWOLg0AADiYq6ML+K3o6Gj5+/vrvvvusx+rUqWKYmNjde3aNRUrVuwP72+z2SRJV69elcViyddab2c2m1WxmEnWdLcCe86/6j4vKTk5WfKtLJWwOrqcnPOtLCUn59v55VwWIM7l7xj2XEqczzuoWMyk5Hx8T5xJcnKypP99j99NoQsuKSkp8vLyynYs63JqauqfBpeUlBRJUvPmzfOnQCfys6Rlji7inlySptZ3dBGFCufSeRj3XEqcz9/7WVL9MEdXYSwpKSny8/O76/WF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1atXlZCQoNjYWDVt2lQzZszQ4cOH9frrr9tvGxQUpDfeeENjx461dw8hdxicW0gNHjzYvsKii4uLOnfurF9++UU+Pj5KTU3V4cOHFRUVJXd3d/Xq1UuvvvqqmjRpQh8pUECypqvabDadOXNG169fV61atRQfH69Jkybp8OHD+uijj7LNFrpy5Yr8/f0dVzTyXFYXz4kTJzRx4kSZTCadPHlSbdu21csvv6z4+HiNGDFCTZs21axZs+54X+QOY1wKocGDByshIUGbNm3StWvXFBoaqjNnzqhDhw7q1auXihUrpn//+99yd3fXypUr9euvv6py5cqSRGgBCkDWdFWr1aqQkBClpqbaZ4eMGTNG48aN0/Tp09WlSxetXbvWvucQocX5mEwmnT17Vv3799egQYP0xBNPKCkpSSNHjtS1a9c0bdo0vffee+rTp4+CgoKybbtCaLk3tLgUMq+99poSExO1atUq+7HFixfr+PHjeuedd7R9+3aNGTNGjz32mGw2m37++WeFh4ezgyxQwGw2m3r37q2goCCNHDlSJpNJkyZNUnR0tGbNmqUHHnhAISEhSk5O1pYtW2Qymfhh4aRWrVql7777TuHh4faWuF9++UVt27bVlClT1KlTJx09elQPPvggew7lAVpcCpE33nhDP/zwgz7//HP7sbNnz2rVqlX2lN6qVStVrFhRv/zyi1xdXVWzZs3fbcYFIH+cPHnSPs7s5MmTunnzpsaNG2ffSiM8PFy9evXSP/7xDy1atMi+Dw1fVs4la3mKrJBy/vx5XblyRdKtVu+0tDRVrFhRTzzxhC5evChJqlWrliSxIm4eoJ2qEGnfvr28vb21bds2SVJ8fLxeeukldezYUR07dpR06x9MjRo11KpVK7Vo0YLQAhSQ0NBQRUZG2i8nJibql19+sV9OTU2VJLVu3do+APe+++5T2bJlC7JMFACz2azo6GgtX75c0q1l+vfv368dO3bIbDbL09NT0q0JFSVKlMh2X0LLX8c7WIg8+uijevvttzVmzBhdvHhRUVFR6tmzp1599VVJ4pcb4EBXrlxR69at7ZcfeeQReXt7a+bMmXrrrbfs05svXLiggIAAZWZmymw20z3kJNLT03XmzBlVrVpVkrR+/XplZGRIkho0aKDevXtr3LhxiomJUYUKFfTll18qKSlJnTt3dmTZTongUsg0aNBA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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Lukumäärät pylväinä\n",
"df2.plot.bar(width=0.8, rot=45)\n",
"\n",
"plt.ylabel('lukumäärä')\n",
"\n",
"# Vaakasuuntainen taustaviivoitus\n",
"plt.grid(axis='y')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \n",
" | | \n",
" Mies, n = 62 | \n",
" Nainen, n = 19 | \n",
"
\n",
" \n",
" \n",
" \n",
" | Peruskoulu | \n",
" 35.5 % | \n",
" 26.3 % | \n",
"
\n",
" \n",
" | 2. aste | \n",
" 37.1 % | \n",
" 36.8 % | \n",
"
\n",
" \n",
" | Korkeakoulu | \n",
" 24.2 % | \n",
" 36.8 % | \n",
"
\n",
" \n",
" | Ylempi korkeakoulu | \n",
" 3.2 % | \n",
" 0.0 % | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Ristiintaulukointi, prosentit (normalize) sarakkeiden mukaan\n",
"df3 = pd.crosstab(df['koulutus'], df['sukup'], normalize='columns')\n",
"\n",
"# Otsikot kuntoon\n",
"df3.index = koulutus\n",
"df3.columns = sukup\n",
"\n",
"# Kikkailen n-arvot mukaan\n",
"for muuttuja in df3.columns:\n",
" df3 = df3.rename(columns={muuttuja:f'{muuttuja}, n = {df2[muuttuja].sum()}'})\n",
"\n",
"# Loppusilaus\n",
"(df3*100).style.format('{:.1f} %')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAmwAAAHiCAYAAABVx5AQAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAPkVJREFUeJzt3Xt8zvXj//Hndm0zLDaZSOgzsaJiNkYUJpRDn4ycx5SonA/ZchhzinJMhUKSopxDUh/VUtiiRTl/PhQm50O7NrO59v794ef6tgzDtuuFx/12c7vZ+3pf7/fr/bou1/Xwvg5zsyzLEgAAAIzl7uoBAAAA4OoINgAAAMMRbAAAAIYj2AAAAAxHsAEAABiOYAMAADAcwQYAAGA4gg0AAMBwHq4eAHJHZmamjh07psKFC8vNzc3VwwEAADlgWZZSUlJUokQJubtf+TwawXabOHbsmOrWrevqYQAAgBsQFxenkiVLXvFygu02UbhwYUnSN998o6JFi7p4NHcOh8Ohbdu26dFHH5XNZnP1cO4ozL1rMO+uw9y7Rl7Pu91uV926dZ3P41dCsN0mLr0M6uPjIx8fHxeP5s7hcDhUqFAh+fj48ACaz5h712DeXYe5d438mvdrvZ2JDx0AAAAYjmADAAAwHMEGAABgOIINAADAcAQbAACA4Qg2AAAAwxFsAAAAhiPYAAAADEewAQAAGI5gAwAAMBzBBgAAYDiCDQAAwHAEGwAAgOEINgAAAMMRbAAAAIYj2AAAAAxHsAEAABiOYAMAADAcwQYAAGA4gg0AAMBwBBsAAIDhCDYAAADDEWwAAACGI9gAAAAMR7ABAAAYjmADAAAwHMEGAABgOIINAADAcAQbAACA4Qg2AAAAwxFsAAAAhiPYAAAADEewAQAAGI5gAwAAMBzBBgAAYDiCDQAAwHAEGwAAgOEINgAAAMMRbAAAAIYj2AAAAAxHsAEAABiOYAMAADAcwQbcpIIFC7p6CHcs5t41mHfXYe5dw9PT09VDkIerB4DcZbPZXD2EO4rNZlOlSpVcsm8r0yE39zv39nbl3N/JbnbeHZkO2e7g++3N4D7vGjabTZUqu37eCbbbzNT/7NGGAymuHgbyWL1Af73a+EFpSVfpxB5XDwfImQeelK1BjKK/j9a+s/tcPRogRwKKBmjcE+PkcDhcOg6C7TaTdDpV2w//5ephII+V9y988S8n9kh/bnXtYICcKl5RkrTv7D7tPLXTxYMBbi28hw0AAMBwBBsAAIDhCDYAAADDEWwAAACGI9gAAAAMR7ABAAAYjmADAAAwHMEGAABgOIINAADAcAQbAACA4Qg2AAAAwxFsAAAAhiPYAAAADEewAQAAGI5gAwAAMBzBBgAAYDiCDQAAwHAEGwAAgOEINgAAAMMRbAAAAIYj2AAAAAxHsAEAABiOYAMAADAcwQYAAGA4gg0AAMBwBBsAAIDhCDYAAADDEWwAAACGI9gAAAAMR7ABAAAYjmADAAAwHMEGAABgOIINAADAcAQbAACA4Qg2AAAAwxFsAAAAhiPYAAAADEewAQAAGI5gAwAAMBzBBgAAYLjrCrbAwEB169ZNlmVlWb506VKFhYXlaBuff/65mjZtej27ve2MHj1a0dHRWZYdPXpUvXv3VmhoqOrUqaPXX39d58+fd9EIAQCASa77DFtcXJxmzZp1wzt85plntHr16hu+/q3s9OnTGjhwoD766KMsyzMzM/XKK68oPT1dX375pT7//HPt2rVLI0aMcM1AAQCAUa472CIiIjR16lT9/PPPV1znm2++Udu2bVWrVi1VqVJFHTt21O+//y4p69m4+Ph4hYWFafr06Xr88cdVo0YN9erVS3a73bmt1atXq3nz5goODlZ4eLh++OGHLGOZOHGiOnTooKCgID399NP64osvrveQnONq166dRo8erZo1a6pWrVoaMmSIMjIysl2/adOmCgoKuuxP165ds10/JSVFTz31lIoUKaLGjRtnuWz//v367bffFBMTIz8/PxUrVkz9+/fXypUrlZycfEPHAwAAbh/XHWwNGzZUmzZt1L9/f505c+ayy48cOaI+ffqoW7du2rhxo7777jtZlqV33nkn2+0lJSXp6NGj+vrrr7Vo0SIlJibqk08+kXTxbN7w4cMVExOjhIQE9erVS7169dLevXud1//ss880ZMgQxcfHq1GjRoqJibnhlxJ//vln3X333Vq/fr1mzpypL774Ql999VW2665evVqJiYmX/bnS2ccCBQpo9erViomJUaFChbJclpmZKUkqWLCgc5mbm5syMjJ08ODBGzoWAABw+7ihDx1ERUWpWLFiio6Ovuz9bMWKFdPq1asVFhYmu92uI0eOyM/PT0ePHr3i9nr06CFvb2+VK1dOoaGh2r9/vyRp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buhYAADA7SNfg83Dw0PNmzd3viyalpamtWvX6tlnn73idebPn6927dqpevXqstlsql+/vsLCwrRw4UJJUoECBbRmzRp9++238vX1VVxcnBo3bnzDY+zRo4e8vb1Vrlw5hYaGav/+/Te8rb87e/asZs+erZdfflk//vijevTooX79+mnr1q2Xrbtu3TqNHj1aw4cPV8GCBXNl/wAA4Nblkd87DA8PV5s2bWS32/Wf//xH1apVk7+//xXXT0pKUkJCghYsWOBc5nA4VLNmTUnShx9+qGnTpik2NlbHjx/X448/rhEjRqhkyZI3NL6/j8XT01OWZWW7Xvfu3bVly5bLlpcqVUorV668bLmXl5datmypoKAgSVKjRo1Uq1YtrV27VlWqVJEkWZal6dOn6/3339fYsWPVpEmTGzoGAABwe8n3YHvwwQcVEBCgNWvWaOXKlercufNV1y9ZsqSeffZZdevWzbns8OHD8vb21vnz5/Xf//5XI0aMkIeHh/bv36+hQ4dq7Nixeuutt/L0OGbOnHld65cvX17p6elZljkcDmcQnjt3Tv369dPevXv18ccfZ3l5FAAA3Nlc8j1s4eHhmjt3rvbv36+6detedd3WrVtr3rx5zk9T/vrrrwoPD9eqVavk5uam/v37a86cObpw4YL8/f3l4eEhPz+//DiM69KuXTstWLBAGzZsUGZmptauXav4+Hg1a9ZMktSvXz8dOXJES5YsIdYAAEAW+X6GTZKaNWum8ePHq3PnzvLwuPoQnnrqKaWmpmrw4ME6fPiwfH19FRkZqYiICLm5uWn69OkaP368Zs6cKZvNpieeeEIDBw6UJM2YMUMrV6684gcB8lPLli3l7u6u119/XYcOHVLp0qU1efJkVa5cWdu3b9e3334rLy8v1a9fP8v13n//fYWEhLho1AAAwAT5Fmy7d+92/t3Pz0+//fZblss/+ugj59/HjRuX5bLw8HCFh4dnu91q1arp008/zfay7t27Kz4+PkfjCw0NzTLG7MZxs1q0aKEWLVpctrxy5cqX7RsAAOCS2/pXU3399ddX/coQAACAW4FLXhLNL40aNXL1EAAAAG7abX2GDQAA4HZAsAEAABiOYAMAADAcwQYAAGA4gg0AAMBwBBsAAIDhCDYAAADDEWwAAACGI9gAAAAMR7ABAAAYjmADAAAwHMEGAABgOIINAADA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PHlSQ4YM0cSJE51PWpcw93lj27ZteuCBB/TZZ5+pYcOGqlOnjsaPHy9/f39JzHte8vPzU2RkpMaPH69HHnlEdevW1f3336/IyEhJzH1uqlOnjr7++ms1adLkssuuNc///e9/c3w7FCxYUDExMerevbtefvlljR49WgULFtTYsWPVr18/eXt758rx8MvfDZaSknLZE9iln1NTU1WkSJEslxUvXlxz5851/mxZlnr27KmhQ4dqzZo1mj17try8vDRw4ECFhITk+fhvRZZlacqUKfr22281f/58SdnfDt7e3kpNTc12G8HBwVq5cqXz55MnT2rBggVauHChJkyYoPXr16tUqVKKjY3NEuN3oszMTL366qvq0qWLHnzwwcsuZ+7zxtmzZ7V79249/PDDWrZsmdLS0jRo0CBFRUVp5syZzHseyszMlLe3t4YNG6ZWrVrpjz/+UM+ePfXWW2+pb9++zH0uuvQfkOxca56v93Zo27ZtlhMjP/zwgy5cuKDg4GD17t1bf/zxh6pVq6bBgwfL09Pzho6HM2wGK1SokM6dO5dl2aWfCxcufM3rL126VBUrVtR9992nYcOG6e2339agQYPUt29f56lb/B+73a7evXtr5cqVmj9/vvN/pwULFlRaWlqWddPS0nJ0G0jSG2+8oR49emjz5s2Ki4vTokWLVLVqVY0bNy7Xj+FWM3PmTHl5eSkiIiLby5n7vOHl5SVJGjJkiHx8fFS8eHH17dtXcXFxzicq5j1vfP3111q7dq3at28vLy8vVahQQT169HC+UZ25zx/XmuebuR3S09P15ptvasiQIZoxY4Z8fX21fPlyHThwQIsXL77hMRNsBqtQoYLOnDmT5dOe//vf/1SyZEndddddV73u2bNnNXfuXPXr108HDhxQoUKFdO+99+rhhx/W8ePHdfr06bwe/i3lwIEDatmypex2uxYvXpzlpYSKFStq7969Wdb/73//qwoVKlxzu5s3b9aJEyf09NNPa8+ePapYsaK8vLz08MMPa8+ePbl+HLeaFStWKCEhQSEhIQoJCdGqVau0atUq5xlg5j5vPPDAA8rMzFRGRoZz2aVPF1qWxbznoT///DPLJ0Kli+9Du3TWhbnPH9ea5woVKtzw7TBr1iw1adJEpUuX1t69e1W5cmW5ubmpcuXKN3U7EGwGu//++xUcHKyxY8fKbrfr4MGD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Mapatepl4x06dKh++eUXzZkzR/fcc4/+85//6N1339Xvv/8uf39/tWvXTp06dZK7u3u2/2YDAwM1b948hYaGZtn23x9/JGX7eJGf0vftU9qOHfm+32spUKCAJk+erJYtW+qjjz5SRESEEhISNHfuXH300Ufy9fW97Do5eX4YOXKk5syZoyNHjqhWrVrq2bOnRo8erd27dysgIECTJk1SuXLlNG3aNO3cuVM2m03r169XsWLF1L17d7Vp00bSxbNIPXv2zHJyITvr169X3759NXr0aD399NPc311wf79lXxK91WRkZCg+Pl6bNm1S7dq1NXnyZH333XeaO3eu1q9frypVquj555/X+fPnndc5cOCAvvvuO73xxhvX3H5sbKxq1aqlhIQELVmyRDt27NCiRYuyrPPbb7/p+eef14ABAxQZGSlJ6t27tw4cOKBly5YpLi5OAQEBioyMlN2e92cu71QBAQGaNWtWlo96r127VpUrV87R9SdMmKBDhw5p8eLFSkxM1NChQzV58mT98ccfSktL06uvvqqYmBht2bJFEydO1Pvvv69t27ZpzJgxCgkJUffu3TVjxgylpqYqMjJSFSpU0Pfff69PPvlEGzZsyJOXz28HGRkZGjBggBYtWqSFCxdmibWMjAw9//zzstls+uqrr7RmzRpJ0ksvvaQLFy5IuvidkgEBAdq4caPat2/vvO7BgwcVERGhf//73xo8eLDc3Nyu+viQlpaml19+WY0bN9b333+v+Ph4lS1b9rLHiczMTA0ePFg7d+7URx99pHvuuUebNm1S37591bVrVyUkJGjSpEn64IMPNG/evHyYwTtXQECAYmJiNHHiRO3cuVPR0dEaNGiQHn300WzXz8nzw8qVK/Xpp5/q66+/1pYtW/TKK69ozJgx+vHHH+Xl5ZXlbP26detUrVo1/fTTTxo5cqRGjRqljRs35nj8cXFx6t+/vyZNmqSnn36a+7uLEGx5KDY2ViEhIQoJCVGtWrU0atQodenSRR07dtTChQvVv39/lSlTRgUKFFCPHj2UkZGh7777znn9Zs2aqWDBgipSpMg191WgQAGtX79eX375pdzd3bVixQp16dLFefn27dvVpUsXvfDCC3ruueckXfyHk5CQoGHDhsnf31/e3t4aOHCgLly4oLi4uFyfD1zOsixNnjxZ3377rYYMGZKj6/Tq1UtT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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Edellinen 100 % pinottuina vaakapylväinä, T vaihtaa arvosarjat ja kategoriat päittäin\n",
"df3.T.plot.barh(stacked=True)\n",
"\n",
"plt.xlabel('Prosenttia sukupuolesta')\n",
"\n",
"# Selitteen sijoittelu suhteessa origoon, selitteitä 4 vierekkäin\n",
"plt.legend(loc = (-0.15, -0.25), ncol=4)\n",
" \n",
"# x-akselin jakoviivojen otsikoiden muotoilu\n",
"plt.gca().xaxis.set_major_formatter(myFmt1)\n",
"\n",
"# Pystysuuntainen taustaviivoitus\n",
"plt.grid(axis='x')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Useiden muuttujien frekvenssit yhteen taulukkoon\n",
"\n",
"Tässä kannattaa käyttää **value_counts**-funktiota."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \n",
" | | \n",
" johto | \n",
" työtov | \n",
" työymp | \n",
" palkkat | \n",
" työteht | \n",
"
\n",
" \n",
" \n",
" \n",
" | Erittäin tyytymätön | \n",
" 8.5 % | \n",
" - | \n",
" 11.0 % | \n",
" 40.2 % | \n",
" 6.1 % | \n",
"
\n",
" \n",
" | Jokseenkin tyytymätön | \n",
" 19.5 % | \n",
" 3.7 % | \n",
" 11.0 % | \n",
" 23.2 % | \n",
" 18.3 % | \n",
"
\n",
" \n",
" | Ei tyytymätön eikä tyytyväinen | \n",
" 36.6 % | \n",
" 19.8 % | \n",
" 36.6 % | \n",
" 23.2 % | \n",
" 35.4 % | \n",
"
\n",
" \n",
" | Jokseenkin tyytyväinen | \n",
" 28.0 % | \n",
" 43.2 % | \n",
" 28.0 % | \n",
" 12.2 % | \n",
" 30.5 % | \n",
"
\n",
" \n",
" | Erittäin tyytyväinen | \n",
" 7.3 % | \n",
" 33.3 % | \n",
" 13.4 % | \n",
" 1.2 % | \n",
" 9.8 % | \n",
"
\n",
" \n",
" | Yhteensä | \n",
" 100.0 % | \n",
" 100.0 % | \n",
" 100.0 % | \n",
" 100.0 % | \n",
" 100.0 % | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Lasken prosentit value_counts()-toiminnolla ja muutan tuloksen dataframeksi\n",
"df4 = df['johto'].value_counts(normalize=True).sort_index().to_frame('johto')\n",
"\n",
"# Lisään tietokehikkoon uusia sarakkeita\n",
"df4['työtov'] = df['työtov'].value_counts(sort=False, normalize=True)\n",
"df4['työymp'] = df['työymp'].value_counts(sort=False, normalize=True)\n",
"df4['palkkat'] = df['palkkat'].value_counts(sort=False, normalize=True)\n",
"df4['työteht'] = df['työteht'].value_counts(sort=False, normalize=True)\n",
"\n",
"# Riviotsikot aiemmin määritellystä tyytyväisyys-listasta\n",
"df4.index = tyytyväisyys\n",
"\n",
"# Yhteensä-rivi\n",
"df4.loc['Yhteensä'] = df4.sum()\n",
"\n",
"# Loppusilaus\n",
"# na_rep-parametrin ansiosta puuttuva arvo näytetään viivana\n",
"(df4 * 100).style.format('{:.1f} %', na_rep='-')"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAIRCAYAAABDIxc1AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZQBJREFUeJzt3Xt8jGf+//FXMkkIoXEI6lDdUqyejIRQ4hB1qKAScWhUi5WyWqelah1ColqsUu22qpTS0m4pqTi2pVXnNppSbOhqiyRFRKoZRGJy//7Iz3yFIIkkw5338/HwkJnrnuv+3Fdm7nnnuu+Z28UwDAMRERERE3J1dgEiIiIiRUVBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0REREzLzdkFFCa73U5mZqazyxARESkyFosFNzc3XFxcnF3KXcE0Qcdms5GQkIC+6FlERMyuTJky3HvvvXh4eDi7lDueixkuAWG32/n5558pU6YMPj4+SrkiImJKhmGQkZFBcnIydrudBx98EFdXnYVyM6aY0cnMzMQwDHx8fPD09HR2OSIiIkXG09MTd3d3jh07RkZGBqVLl3Z2SXc0U8VAzeSIiEhJoFmcvNNIiYiIiGmZOujYs4r39KPiXh/ApUuXOHnypON2WloaZ8+eLZZ1Hzt27Lb7sNvtnDhxohCqyb/CqF/uPEZWlinXVZL89ttvhdKPXuMCJjlH50Ysri5EzvovxxIuFPm6atcsw+Qxf83XYwIDA0lOTsbN7fpfw4IFC/Dz87vu/tjYWMLDw4mLiwMgLCyMvn37EhISAkD79u2ZO3cu/v7+AKxZs4b58+ezbt06Bg0ahJ+fH0OGDAEgIiICgKioqHzVDTBjxgxSU1OZPn16vh97tVGjRvHggw8ybNiw2+onN1dvn9VqzTGmudUfFBTE4MGDARxjJncfF1dX0jd/ivFHctGux9uH0u16Ffjxq1at4t///jdbtmwp1GWLy81qevfdd4mNjWXhwoX57nfZsmVs3LiRDz/88LbqK6x9FODYfyQlJeXYN1y7P5Y7k6mDDsCxhAscOWpzdhk3FBkZ6QgpeeHn55fjRZWampqj/drb3bp1o1u3bgDX7XQKEnButB5n95Obq7fv2h1Rbuu9OthcGTO5Oxl/JJN1JqlI12Hq6fDbdOWPqYIorBnpwty3XL3/uHrfcO3+WO5Meq3e4QIDA4mIiKBFixZ0796dXbt2Ub9+fQAGDhxIUlISkydPJioqio4dOwIQHh7OggULMAyD9957j65du+Ln50eTJk0YPXo06enpAIwbN45x48YB8NZbbzF8+HDGjBmDn58frVq14vXXX8+1prfffpuYmBhiYmLo1q0b7733nmPdV7z//vv07dv3pm0TJkwgNjaW+fPnM2TIECIiIhg4cGCOZaOiohg7diwJCQnUr1+f6Oho2rZtS6NGjfjnP/9JbGws3bp1w2q18txzzzl2kjabjYkTJ9KhQwcaNWpEQEAA7777bq71AyQmJjJy5EiaN29OixYtGD16NKdPnwZgz549BAYGMm/ePAICAmjatCnDhg3DZrtzA7TcfQ4fPkx4eDhNmzalVatWTJkyhbS0tOuWy8jIIDw8nL59+2Kz2Th16hSDBg1yPO7FF190PHcNw2Dp0qV07NgRPz8/wsLCOHDggKMvm81GVFQUrVu3pnnz5owaNYozZ84AOF5zK1asIDAwEF9fXwYMGJDjUPmNanrrrbfo168fkD3z8/TTT/PKK6/QrFkzmjdvzoQJE3L9ctfVq1czf/58YmNj8fPzY926dfj6+nLp0iXHMhs3bqRt27asXbv2hm352UfNnTuXPn365Gj717/+xfPPPw/ADz/8wLPPPkvLli155JFHCAkJ4ccffwSy9w1X9sd5Ga+dO3cSGhqKn58fQUFBrFmzxtE2btw4IiIiGDJkCFarlXbt2rF06dLrxkjyT0HnLrB//342bNjA0qVLc5xpv2jRIqpXr05kZCQRERFs2rQJyD7sFR4e7njMW2+9RWxsLJ988gnbt28nJiYm1/V88cUXtGzZkj179jB16lQWLFjgeEFf7YUXXqBr16507dqVNWvW0L17d06cOMG+ffscy0RHRxMSEnLTtmnTpuHn58fgwYN59913CQ0NZdeuXZw6dQrI3nmuW7cux4zX1q1bWb9+PZ9++imff/65o87Nmzfz+++/s3z5cgBmzZpFQkICK1euJC4ujokTJzJnzhyOHTt2Xf2ZmZkMHDgQi8XCF198wYYNG4Dsv0ovX74MZAehU6dO8eWXX7JixQri4uIc6xK5XampqTz77LPUrVuXb7/9ls8++4xff/2VsWPH5lguPT2dv//97xiGwfvvv4+XlxezZ8+mWrVq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/P3vf8cwDN5//328vLyYPXs21apVY8eOHaxfv54LFy7w3nvvAbB8+XIWL17M3Llz2bVrFyEhIQwYMMARZsaPH8+xY8dYtWoVX331FV5eXrz44otcfZWQb775hujoaDZt2sSZM2d45513blnTtX744QcqVarEtm3bmD9/PuvXr+eLL764brng4GAGDx6Mn58fsbGxtG/fHovFwubNmx3LREdHExwcTIcOHW7Y9sILL9C1a1e6du3KmjVr6N69OydOnGDfvn05lr36r+yYmBj+85//8OWXX7J3716GDh3KtGnT2LFjBx4eHo7r5SxZsoRt27axZMkS4uLieOedd/jkk0/YvXv3dfUDDB8+nOPHj7N69Wq2bt3KAw88QP/+/XPsdG81xmJ++/fvZ8OGDSxduhTXqy4cumjRIqpXr05kZCQRERFs2rQJyD7sFR4e7njMW2+9RWxsLJ988gnbt28nJiYm1/V88cUXtGzZkj179jB16lQWLFjAjz/+eN1y+XkN3axt2rRp+Pn5MXjwYN59911CQ0PZtWsXp06dArL/cFi3bh0hISH06tWLr776yvHa+PPPP9myZQuhoaGcPHmSESNG8Pzzz7Nr1y6++eYbDMPg7bffznU7ExMTOXXqFF9++SUrVqwgLi6O5cuXA7B161YmT55MREQE3333HcOGDWPYsGH8/PPPjsd/+umnTJgwgT179tChQwciIiJy/FEldzYFnTvQ5s2bcXd3Z8yYMZQuXRofHx8mTZrEli1bSE5OBrJ3CEOGDHG8EV651kmpUqXYu3cv69at4/z58yxcuJCJEycC2eeLDB48mAYNGuDu7k5oaCh16tRhzZo1pKSksGnTJiZMmEClSpUoW7Ys48eP56effuLgwYOO2sLDwylfvjyVK1cmMDAwx4m2N6rpWqVLl2bIkCG4u7vz6KOPUr9+fX799ddbjouHhwddunTh888/ByAlJYXt27cTHBx807ZrValShYCAAMeyBw8eJCEhgU6dOjmWeeaZZ/D29qZKlSo8+OCDdOjQgTp16lCmTBmaNWtGYmIiAL169eKDDz7Ax8eH06dPk56eTtmyZR077qudOHGC7777jkmTJuHj40Pp0qUZM2YMly9fZuvWrXkaY7n7RUZGOs7RuvKva9euOZbp2LEj5cuXp3z58vnqu1WrVqxcuZL777+fs2fPkpqaire3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ahkZGRw7doylS5fSunVrhRyTKc7gUVJDzs1eQ/l5fdlsNpKSknjjjTcICQlRyJEiYeqgI+YzePBgAN588818tV0tIyODPn36cO+99zq+D0dE8u5mr6H8vL5OnjxJ7969adCgAUOHDi3KkqUEM/WhKxERETPS+17e6VNXIiIiYloKOiIiImJaCjoiIiJiWgo6IiIiYloKOiIiImJapg46xf2BMhN8gE1ERMRUTP09Oi4uLpw+dSrfXwleEB4eHlRxwhfPHTt2jNq1a99WH1cuLHmjK30XpcKo/06SlpZGZmYmFStWvK1+Tp8+jZeXF2XKlCmkykRESiZTz+hA9pdXFde//AoMDOSRRx7BarVe9y82NhaAoKAg1qxZk+vjZ8yYwbx5825rfABGjRpFdHT0bfeTm4iICCIiIgBybBfkXv+V7V2zZg1BQUFFUtPV6wHo168fb7311i2XjY2NxWq13rTf9u3b8/PPP99WbWfOnKFjx46cPXv2tvqB7Iu8Dho0CLj+uTRo0CB9YaKImJ6pZ3TuBpGRkYSEhNywfd26dTdsS01NLZQaCquf3ERFRTl+jouLu+V6r97ebt26FVldNxvXmy177TZcqzDGMj09nQsXLtx2PwBDhgxx/HztNi9cuLBQ1iEicicz/YzO3S4wMJBVq1Zdd//bb79NTEwMMTExdOvWjffee4+OHTvmWOb999+nb9++N22bMGECsbGxzJ8/nyFDhhAREcHAgQNzLBsVFcXYsWNJSEigfv36REdH07ZtWxo1asQ///lPYmNj6datG1arleeee84xE2Gz2Zg4cSIdOnSgUaNGBAQEOGYQrq0fIDExkZEjR9K8eXNatGjB6NGjOX36NAB79uwhMDCQefPmERAQQNOmTRk2bNgNr/htGAZLly6lY8eO+Pn5ERYWxoEDB245rocOHaJZs2Z88MEHABw9epTBgwfTpk0bHn30UTp37szXX3+d6zqvjHF4eDgLFizgySefvG7GpGvXrqxcufKGbStWrKBLly4AdOnShdWrV9OkSRNiYmIcy2VkZODv789XX32F1Wpl+/btjrY///yTRx99lP3795ORkcGMGTN48sknsVqtNG/enKlTpzrOJbt6JmvcuHFEREQwZMgQrFYr7dq1Y+nSpY5+bTYbUVFRtG7dmubNmzNq1CjOnDkD4HherFixgsDAQHx9fRkw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27YtmZmZLF68GDe3/H8LQv/+/enevTtDhw7FarUybdo0IiIiaNeu3U0f17x5c3r27MnLL79MtWrVGDt2LC+99BKNGzdm2LBh9OjRg1KlSjm24Vq9e/dm9OjRzJkzB/i/gBkfH09wcHCOZW/UVrlyZdq3b0/v3r35+OOPAahYsSKtW7cmISGBDh065OjH29ubwMBA3NzcaN68ueP+iRMnEh8fT9OmTenUqRPnzp0jMDDwhrXfzMyZMylfvjzdu3enWbNmbN26lYULFxZotk1EpDi5GCY4kJ6ens6vv/7KX/7yF0qXLu3scpzqjz/+ICAggK+++spxyCEvbdeKj4+nX79+bN++3THDIAWzdOlSvv3221y/t+Zmbdd67bXXSE9PJzIysijKFJG7iN738k5fGGgSGRkZHDt2jKVLl9K6descQeZmbdey2WwkJSXxxhtvEBISopBzG5KTk/n9999ZsmQJ48ePz3PbtX7//Xd+++03oqOjHd/vIyIieWPqQ1clSUZGBn369CEuLo5x48blue1aJ0+epHfv3pw7d46hQ4cWZcmm980339CvXz9atGhx3SGzm7Vd69NPP2Xo0KE8++yz/PWvfy3KkkVETEeHrkRERO4yet/LO83oiIiIiGmZKuiYYHJKRETklvR+l3emCDoWiwW48XebiIiImMmFCxeA//sWc7kxU3zqys3NjTJlypCcnIy7uzuurqbIbyIiIjkYhsGFCxc4ffo03t7ejj/05cZMcTIyZM/m/PrrrwX6insREZG7ibe3N9WqVcvzJXlKMtMEHci+AKEOX4mIiJm5u7trJicfTBV0RERERK6mk1lERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS03JxdgDNlZWVx+vRpypYti4uLi7PLERERkTwwDIPz589TpUoVXF1vPmdTooPO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q8ddIad4FcZzXiEn/5y9rykJIQfIPeTY7Rz876Fcli5eJeM3IHekixcvOruEEknj7jwae+fQuDtPZmams0tQ0BERERHzUtARERER01LQEREREdNS0BERERHTUtARERER01LQEREREdNS0BERERHTUtARERER01LQEREREdNS0BERERHTUtARERER01LQEREREdNS0BERERHTUtARERER01LQEREREdNS0BERERHTUtARERER01LQEREREdNS0BERERHTUtARERER01LQEREREdNS0BERERHTUtARERER01LQEREREdNS0BERERHTUtARERER01LQEREREdNS0BERERHTUtARERER01LQEREREdNS0BERERHTUtARERER01LQEREREdNS0BGn8fT0dHYJJZLG3Xk09s6hcXced3d3Z5eAm7MLuBNYLBZnl1BosgwDVxcXZ5dxSxaLhYYNG95yOcMwcLkLtudukddxl4IzsrJwcb3+b0iNvXM4e9wNux0XE73H5IfFYuGhvzr/Oa+gA0x/8zBJp51dxe3zb1yRwc/+hfV7Dc6mObua23d/FWjZ0IXTp06RkZHh7HJEbqlMmTJUrFSJ9M2fYvyR7OxyxMlcaz1IqaYdiHt2DLb4o84up9h5NaiDdeks7Ha7U+tQ0AGOJ17gl+NZzi7jtt1XM3t69mwanD7n5GIKQUWv7P8zMjIUdOSucGWa3vgjmawzSU6uRpzNxbsyALb4o/wZd8jJ1ZRcOkdHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0REREwrX0Hn0qVLnDx5sqhqERERESlU+Qo6YWFh7Ny585bLJSUlYbVaSUpKIiIigoiIiAIXKCIiIlJQ+bp6eWpqap6Wq169OnFxcQBERUXlvyoRERGRQpDnGZ2BAweSlJTE5MmT6d+/P5MmTcrRPnjwYObOnQtAbGwsffv2xc/Pj8DAQN544w0yMjK4dOkSTZo0ISYmxvG4jIwM/P392bVrF2+99RYjRozg5ZdfpnHjxrRq1YoNGzbw9ttv8/jjj9O0aVPeeecdx2Pr16/PwoULadOmDVarlcGDB3Pq1KnbHRMRERExiTwHnUWLFlG9enUiIyPp1asXGzduJCMjA4AzZ86wY8cOQkJC+OWXXxgwYAAdOnRg586dLF68mC1btjBz5kxKlSpFUFAQn3/+uaPfr7/+mrJly9KsWTMANm3aRNu2bdm7dy/dunVj9OjR2Gw2tm7dyquvvsrcuXNJTEx0PD46OpoPP/yQb7/9FldXV0aNGlVYYyMiIiJ3uQJ96uqJJ57A1dWVLVu2ABATE4PVaqVWrVrExMRQv359nnvuOTw8PKhduzajR49mxYoVZGVl0aNHD3bu3ElycjIAq1evJiQkBBcXFwDq1q1Lp06dcHFxoUWLFtjtdoYMGYK7uzuBgYFA9jlAV4wYMYJatWpRrlw5xo4dy969e0lISLitQRERERFzKFDQ8fDwoEuXLo6ZmdWrV9OjRw8AUlJSqFWrVo7la9asSXp6OikpKTzyyCPUqVOHdevWkZKSwvbt2+nevbtjWW9v7/8rzjW7vHvuuSfH7aysLMcytWvXdvxcvXp1AEeIEhERkZKtwN+j06NHD7Zt20ZcXBwJCQl07NgRgBo1anD8+PEcyx4/fhwPDw9HYOnRowfr1q1j48aN+Pn5UbNmTceyV2Z28urqc3KuzORcCTwiIiJSsuUr6Hh4eJCWlgZAw4YNqVu3LlFRUXTu3BlPT08AgoKCOHr0KEuWLCEjI4Pjx48ze/ZsunbtioeHBwDdunUjPj6eFStWEBISclsb8Pbbb5OcnMyff/7JjBkzCAgIoGrVqrfVp4iIiJhDvoJOaGgoc+bMYcyYMQCEhIRw6NAhx2EryD5MtXDhQjZt2sTjjz9OWFgYLVq0yPFdOhUrVqR169YkJCTQoUOH29qAhx56iLCwMAIDAylfvjyzZs26rf5ERETEPPL1PTqDBg1i0KBBjts1atTggQcewGq15ljOz8+P5cuX37SvGjVqEBQUROnSpR33DRs2LMcy/v7+HD58OMd9197u0KHDdR91FxEREYF8Bp0rUlNTOXnyJPPmzePpp5/O12N///13fvvtN6Kjo/nggw8KsnoRERGRPCnQycgHDhygT58++Pj40KdPn3w99tNPP2Xo0KE8++yz/PWvfy3I6kVERETypEAzOgEBAezbt69AKxwxYgQjRowo0GOvde1hLBEREZGrFfjj5SIiIiJ3OgUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMa0CfWGg2dxXowxu7s6u4vbdWyX7CvIVyzm5kEJSvkz2/1euei9yp3N3z96RuHj76K9IwaVcBQC8GtRxciXOcadst4thGIazi3AWm82Gr68ve/fuxcvLy9nlFIosw8DVxcXZZRQawzBwMdH2iPkZWVm4uCrmSDbDbsfFYnF2GU5jz7wMri5YCnkM8vP+rVcjYLfbnV1CoblbQo7dbufQoUO3HHuFnMKV13GXgrtRyNHYO4ezx71Ehxy7nYP/PeTsMhR0xHkuXrzo7BJKJI2782jsnUPj7jyZmZnOLkFBR0RERMxLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR5zG09PT2SWUSBp359HYO4fG3Xnc3d2dXQJuzi7gTmCxWG67D8MwcHFxKYRqSgaLxULDhg1vqw8jKwsXV2X1/CiMcZeCcfbYG3Y7LoWwr7vbOHvcSzKLxcJDf3X+2CvoAF/EGVywGwV+/P1VoGVDF06fOkVGRkYhViY3UqZMGSpWqkT65k8x/kh2djkidzTXWg9SqmkH4p4dgy3+qLPLkRLCq0EdrEtnYbfbnVqHgg6QaoNzt5FPKnpl/5+RkaGgU0yuTIcafySTdSbJydWI3NlcvCsDYIs/yp9xh5xcjUjx0ry/iIiImJaCjoiIiJiWgo6IiIiYloKOiIiImJaCjoiIiJiWgo6IiIiYloKOiIiImJaCjoiIiJiWgo6IiIiYloKOiIiImJaCjoiIiJhWoQadS5cucfLkydvu57fffrv9YkRERKTEK9SgExYWxs6dO2+5XFJSElarlaSkJCIiIoiIiHC0HTp0iC5duhRmWSIiIlJCFerVy1NTU/O0XPXq1YmLiwMgKioqR1taWhqZmZmFWZaIiIiUUIU2ozNw4ECSkpKYPHky/fv3Z9KkSTnaBw8ezNy5cwGIjY2lb9+++Pn5ERgYyBtvvEFGRgYn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RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLTcnF2AMxmGAYDNZsNisTi5mpLFbrdz4cIFjX0x07g7j8beOTTuzlOUY2+z2YD/ex+/mRIddM6fPw9AYGCgkysRERGR/Dp//jzlypW76TIuRl7ikEllZWVx+vRpypYti4uLi7PLERERkTwwDIPz589TpUoVXF1vfhZOiQ46IiIiYm46GVlERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMy5RBJyUlhaFDh+Ln54e/vz/Tpk3j8uXLuS576tQp+vTpg9VqpV+/fpw5c8bRFhMTw8svv1xcZd+V4uPjGTBgAE2bNqVFixaMHTuWs2fPOtr37dtHz549sVqtBAYGsmLFihv29d1339G+fXt8fX2ZMGECWVlZjrZJkybx2WefFem23K3sdjv9+vVj3LhxOe7X2BeNP/74g7Fjx+Lv70+TJk0YOnQop0+fdrRr3IvOwYMH6du3L35+frRs2ZJXXnmFjIwMR7vGvnCdPXuW9u3bs2fPnhz332qcV69eTfv27WnUqBEhISHExcXdcB1Lly7F39+fFi1a8PHHHzvuz8zMJDg4mF9++eX2N8QwoWeeecYYPXq0ceHCBeP48eNGUFCQsWDBglyXnTFjhjFy5EjjwoULxogRI4x//etfhmEYRlpamtG5c2fjzJkzxVn6XeXixYtGixYtjLlz5xqXLl0yzp49a4SHhxuDBw82DMMw/vjjD6Np06bGRx99ZGRmZho7d+40rFarsW/fvlz769Gjh7F06VLj3LlzRmBgoLF161bDMAxj3759RlhYmJGVlVVs23Y3eeONN4wGDRoYL7/8suM+jX3ReeaZZ4wXXnjBOHfunJGWlma8+OKLxvPPP28Yhsa9KNntdqNFixbGkiVLDLvdbvz+++9Gx44djX//+9+GYWjsC1tsbKzxxBNPGPXq1TN2797tuP9W47x7927DarUasbGxRkZGhrF48WLD39/fuHDhwnXrSEtLM/76178a8fHxxn//+1/jr3/9q3H+/HnDMAxjwYIFxuzZswtlW0w3o3Ps2DG+++47XnrpJTw9PalVqxZDhw5l2bJluS7v5pZ9uS/j/39B9JULj82dO5e+fftSqVKl4in8LpSUlESDBg144YUX8PDwoEKFCvTu3Zvvv/8egC+++AJvb2/69u2Lm5sbzZs3p2vXrnn6XRiGgcViISsri1deeYWIiAhdpiMXu3bt4osvvqBDhw457tfYF40DBw6wb98+pk+fTvny5fHy8mLq1KmMGTMG0LgXpXPnzpGcnExWVpZjf+3q6oqnpyegsS9Mq1evZsyYMYwaNeq6tluN84oVKwgKCsLX1xd3d3f69+9PhQoVWL9+/XV9XXm/vfL7dHFxwcXFhZMnT/L555/z97//vVC2x3RB5+eff8bb25uqVas67qtTpw5JSUn8+eef1y3/7LPPkpqaStu2bbHZbPTv35/4+Hj2799Pnz59irP0u84DDzzAwoULc1yVdtOmTTz00ENA9u+iXr16OR5Tt25d4uPjc+3vpZde4tNPP6VTp04EBgby+OOP8/HHH9O4cWPq169fdBtyl0pJSWHChAm8/vrrjp39FRr7orF//37q1q3Lp59+Svv27WnZsiUzZszAx8cH0LgXpQoVKtC/f39mzJjBI488QuvWrbn//vvp378/oLEvTC1btuTLL7+kc+fO17Xdapz/97//5fn34OnpSUREBIMHD+bvf/87r7zyCp6enrz66quMGjWK0qVLF8r2mO7q5efPn79up3/l9oULFyhfvnyOtsqVK/PBBx84bhuGwYsvvsjEiRPZsGED77//Ph4eHowZMwY/P78ir/9uZRgGb7zxBl9//TUfffQRkPvvonTp0ly4cCHXPnx9fYmJiXHcTklJ4eOPP+aTTz5h1qxZbNu2jXvvvZfIyMgcQbYkysrK4qWXXmLAgAE0aNDgunaNfdE4d+4chw8f5uGHH2b16tWkp6czduxYXn75ZebPn69xL0JZWVmULl2aSZMmERoayrFjx3jxxRd58803GTlypMa+EF0J7rm51Tjn9/fQp0+fHJMK27dv5/Lly/j6+jJ8+HCOHTtG48aNGT9+PO7u7gXaHtPN6JQpU4aLFy/muO/K7bJly97y8atWraJevXrUrFmTSZMm8e9//5uxY8cycuRIx/Sa5GSz2Rg+fDgxMTF89NFHjr+GPD09SU9Pz7Fsenp6nn4PADNnzuSFF14gNjaWrVu3smLFCho1asT06dMLfRvuNvPnz8fDw4N+/frl2q6xLxoeHh4ATJgwAS8vLypXrszIkSPZunWrYwevcS8aX375JZs2bSIsLAwPDw8efPBBXnjhBccJrBr74nGrcb6d30NGRgb/+te/mDBhAu+++y7e3t5ER0dz/PhxVq5cWeCaTRd0HnzwQf74448cn546evQo1apVo1y5cjd97Llz5/jggw8YNWoUx48fp0yZMlSvXp2HH36Y5ORkUlNTi7r8u87x48fp0aMHNpuNlStX5pjyrVevHj///HOO5f/3v//x4IMP3rLf2NhYzpw5w5NPPsmRI0eoV68eHh4ePPzwwxw5cqTQt+Nu8/nnn/Pdd9/h5+eHn58fa9euZe3atY5ZR4190ahbty5ZWVlkZmY67rvyaR3DMDTuRej333/P8QkryD7P5spf+Rr74nGrcX7wwQcL/HtYuHAhnTt3pkaNGvz888889NBDuLi48NBDD93W78F0Qef+++/H19eXV199FZvNxokTJ3jnnXcIDQ295WNnz57N3/72N8qXL0+NGjX4888/OXbsGHFxcdxzzz14e3sX/QbcRc6dO8dzzz1H48aNef/996lYsWKO9vbt23PmzBk++OADMjMz2b17NzExMfTo0eOm/V6+fJnXXnuNSZMmAdm/0/j4eC5evEhcXBz33XdfkW3T3WLjxo388MMPxMbGEhsbS5cuXejSpQuxsbGAxr6oPP7449SqVYvx48dz/vx5zp49y5w5c3jiiSfw8vLSuBehli1bkpyczLvvvovdbufEiRPMmzePrl27AnrOF5dbjXNoaCgxMTHs3r2bzMxMPvjgA1JSUmjfvv1N+01ISODLL79kwIABQPbv4ccffyQzM5P9+/dTu3btghddKJ/dusMkJycbw4YNM5o2bWo0a9bMmD59unH58uWbPmb//v3GM888k+O+jz76yGjWrJnRpk0bY/PmzUVZ8l1p0aJFRr169YzHHnvMaNSoUY5/V+zfv9/o3bu3YbVajXbt2hmfffZZnvqdO3eu47bdbjfGjRtn+Pr6GiEhIcYvv/xSJNtzN3v55ZdzfLzcMDT2ReXkyZPGyJEjjRYtWhh+fn7G2LFjjXPnzjnaNe5FZ8eOHUbPnj0NX19fo02bNsbs2bONS5cuOdo19oXv2o+XG8atxzk6Otro2LGj0ahRIyM0NNT48ccfb7mewYMHGzt37nTcPnXqlBEWFmY0btzYePHFF42LFy8WeBtcDEMnnoiIiIg5me7QlYiIiMgVCjoiIiJiWgo6IiIiYloKOiIiImJaCjoiIiJiWgo6IiIiYloKOiIiImJaCjoicke48m23V1y6dImTJ086saJbO3bsmFPXf/r06RteLFFEsinoiJhUYGAgjzzyCFarFavVSqNGjWjZsiUzZsxwXJ/pTjJq1Ciio6Mdt8PCwti5cyeQfS0iq9XqpMpyN2PGDObNm1cofb377rsMGjQIgDVr1hAUFHTLx5w5c4aOHTty9uzZQqlBxKzcnF2AiBSdyMhIQkJCHLcPHz5M//798fT0ZPjw4U6s7HrXXjT36tt+fn7ExcUVd0k3VZgX+R0yZIjj527dutGtW7dbPiY9PV2zOSJ5oBkdkRKkfv36NGnShEOHDgHQr18/xo0bR9u2bWnTpg02m43Dhw8THh5O06ZNadWqFVOmTCEtLQ0Am83GqFGj8Pf3p0WLFvztb3/j6NGjjv7XrVtH165d8fX1JSQkhO3btzva+vXrx+uvv07fvn2xWq08+eSTrF+/HoAJEyYQGxvL/PnzGTJkCAMHDiQpKYnJkycTFRXFnj17qF+/vqOvLVu20KdPH5o3b85jjz3GM888w2+//Xbd9tpsNqxWa446/vzzTx599FH2799PRkYGM2bM4Mknn8RqtdK8eXOmTp3KlSvjfP/994SEhODn50f79u2ZNm0aly9f5u233yYmJoaYmBhHKPnhhx949tlnadmyJY888gghISH8+OOPjvWuXLmSkJAQ/P39sVqtDB482DEb89Zbb9GvXz8AVq1aRWBgIJB9wckpU6bQokUL/P39CQsLY+/evdjtdrp06QJAly5dWL9+/S23RaTEKvBVskTkjta2bdscF9vLyMgwdu/ebTRp0sRYunSpYRiG8cwzzxgBAQHGyZMnjXPnzhlnz541mjZtakyfPt24ePGicfr0aePZZ581hgwZYhiGYcydO9cYNGiQcfHiRePSpUvGyy+/7Gj75ptvDF9fX+O7774zLl++bGzZssVo1KiRceTIEce6mjZtahw8eNC4dOmSMXv2bMPX19dIT093tL/55pu51r97926jXr16hmEYxu+//248/PDDjgvtnj171ggLCzPGjBmT6zj885//NP7xj384bi9btszo0qWLYRiG8d577xlBQUHGqVOnDMMwjB9++MFo2LCh4+KCbdq0MVatWmUYhmGcOHHCaNmypbFx40bDMHJeSPXixYtG06ZNjY8++siw2+3G+fPnjREjRhhPP/20YRiGsW/fPuOxxx4z9u3b59iGDh06GHPmzDEMwzDefPNNx0WFP/vsM6Nt27aGYRjGypUrjW7duhnnzp0zLl++bMyePdvo2rWro5569eoZJ06cyNO2iJRUOnQlYmKRkZG8+uqrjtvVqlVjwIABPPPMM477WrVqRdWqVYHsWQd3d3fGjBmDxWKhdOnSTJo0iaCgIJKTkyldujTx8fFER0fTokULXn31VVxdsyeGP/roI55++mmaNGkCQNu2bQkMDOSTTz5h0qRJAHTs2JGGDRsCEBwczLvvvktKSgrVq1fP8zZVrFiRdevWcd9992Gz2Th58iQVKlTg1KlTuS7fs2dPBgwYgM1mw8vLi9WrVxMaGgpAr169CA4OplKlSpw+fZr09HTKli3r6KtUqVJs2LABb29vmjRpwtatWx3bezV3d3f+85//ULt2bS5dukRiYiLe3t789NNPANSrV4+1a9dSs2ZNzp07x+nTp6lYseINa76idOnSJCQksHLlSlq1asWIESMYNWpUrsvealtESioFHRETmzx5co5zdHJTpUoVx89XQofFYnHcV7NmTQASExMJDw/Hw8ODlStXEhUVRa1atRg9ejQdOnQgMTGR7777jo8//tjxWLvdTrNmzRy3fXx8HD+7uWXvfvJ7YrS7uztr167lk08+wcXFhXr16mGz2Rz9XctqtVKzZk02bdpEo0aNiI+PZ8GCBQBcvHiRqKgovv/+e6pVq0bDhg0xDMNR05IlS3jrrbeIjIwkOTmZgIAApkyZQrVq1XKsw2KxsGfPHsLDw7lw4QJ169bFzc3NcdjI1dWVpUuXEhMTQ5kyZahfvz42m+2Wh5WCgoLIzMxkxYoVzJ49m0qVKjFkyBCefvrp65a91baIlFQKOiIlnIuLi+PnGjVqkJSUhN1ud4Sd48ePA9kh5fDhwwQGBtK/f3/S0tJYvnw5o0aNYvfu3VSrVo3u3bvz/PPPO/pLSkqidOnShVrvhg0b+Oijj/j444+pXbs2AFOnTuXIkSM3fExoaChr167l2LFjPPHEE3h7ewMwceJE7rnnHrZv306pUqXIyspyzEhdunSJ//3vf0yZMgU3Nzd+/fVXJk6cyKuvvsqbb76Zo/99+/YxdepUPvnkEx5++GEAFi1axK+//grABx98wI4dO4iJiaFy5cpAzhOQb+TXX3/loYceonv37qSnp7Nx40Zefvll/Pz88PT0zLHszbZFpCTTycgi4tC6dWsAZs2aRXp6OsnJyUybNo1mzZpRo0YNVqxYwdixY0lJScHLywsvLy/KlCmDh4cHvXr1YunSpezfvx+An376iZCQENauXZundXt4eDhOes7t9hVpaWm4urpSunRpDMPg22+/JTo6mszMzBv23b17d3788Ueio6Pp2bOn436bzUapUqVwdXXFZrMxc+ZMbDYbmZmZuLi48I9//INFixZx+fJlfHx8cHNzo0KFCtfVd3VNAD/++CNLly4lIyPDsR43Nzfc3d25fPkyn3/+Odu2bbtpzQBff/01L774IgkJCZQuXRpvb2/c3NwoV64cpUqVcvR9q20RKck0oyMiDuXKlWPx4sVMnz7dEXratWvH2LFjAfjHP/5BVFQUQUFBXLp0iQceeIB33nmHUqVK0alTJy5cuMD48eNJSkrC29ub/v37Oz5NdCvdu3dnypQpHDhwgOXLlxMaGsqcOXP46aefcoST4OBg9u7dS1BQEBaLhQceeIDnnnuOZcuWkZGRgYeHx3V9e3t7ExgYSFxcHM2bN3fcP3HiRCIiImjatClly5alTZs2BAQEcOTIETw8PJg3bx4zZsxg/vz5WCwWWrVqxZgxYwDo3Lkzo0aNok2bNnz99deEhYXRt29fsrKyqFmzpuNTZmfOnGHgwIEcOXKEtm3bUqpUKRo2bEhYWBi7d+++6Zg8++yznDp1ij59+mCz2ahRowZz5syhWrVqGIZB+/bt6d27N+PGjbvptoiUZC7GrQ4Si4hIkZo7dy4//PADS5YscXYpIqajQ1ciIk5ks9n45ZdfHOfuiEjh0qErEREnMQyDzp07Y7FYmDNnjrPLETElHboSERER09KhKxERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMS0FHRERETEtBR0RERExLQUdERERMa3/B6RoCCnzxPXcAAAAAElFTkSuQmCC",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Edellinen 100 % pylväinä\n",
"# cmap-parametrilla voin määrittää käytettävän värikartan\n",
"df4.drop('Yhteensä').T.plot.barh(stacked=True, cmap='coolwarm')\n",
"\n",
"plt.xlabel('Prosenttia vastaajista')\n",
"\n",
"# Selitteen sijainti; 2 selitettä vierekkäin\n",
"plt.legend(loc=(-0.03, 1.1), ncol=2)\n",
"\n",
"# x-akselin jakoviivojen otsikoiden muotoilu\n",
"plt.gca().xaxis.set_major_formatter(myFmt1)\n",
"\n",
"# Pystysuuntainen taustaviivoitus\n",
"plt.grid(axis='x')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Värikarttoja https://matplotlib.org/stable/tutorials/colors/colormaps.html"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## sum-funktio laskee monivalintojen yhteenvedot\n",
"\n",
"Jos monivalinta-muuttujissa valinnan puuttuminen näkyy puuttuvana arvona ja valinta merkitään numerolla 1, niin valintojen lukumäärän voi laskea count-funktiolla tai sum-funktiolla. Jos valinnan puuttuminen merkitään numerolla 0, niin valintojen lukumäärä täytyy laskea sum-funktiolla."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \n",
" | | \n",
" f | \n",
"
\n",
" \n",
" \n",
" \n",
" | työterv | \n",
" 47 | \n",
"
\n",
" \n",
" | hieroja | \n",
" 22 | \n",
"
\n",
" \n",
" | lomaosa | \n",
" 20 | \n",
"
\n",
" \n",
" | kuntosa | \n",
" 9 | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Monivalintojen lukumäärät\n",
"df5 = df[monivalinnat].sum()\n",
"\n",
"# Muutan series-tyyppisen tietorakenteen dataframeksi (to_frame) ja järjestän lukumäärien mukaiseen järjestykseen (sort_values)\n",
"df5 = df5.to_frame('f').sort_values(by='f', ascending=False)\n",
"\n",
"df5.style.format('{:.0f}')"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \n",
" | | \n",
" f | \n",
" % vastaajista | \n",
"
\n",
" \n",
" \n",
" \n",
" | työterv | \n",
" 47 | \n",
" 57.3 % | \n",
"
\n",
" \n",
" | hieroja | \n",
" 22 | \n",
" 26.8 % | \n",
"
\n",
" \n",
" | lomaosa | \n",
" 20 | \n",
" 24.4 % | \n",
"
\n",
" \n",
" | kuntosa | \n",
" 9 | \n",
" 11.0 % | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Prosenttia vastaajien kokonaismäärästä (shape[0])\n",
"df5['% vastaajista'] = df5['f']/df.shape[0]*100\n",
"\n",
"# Ulkoasun viimeistely\n",
"df5.style.format({'f':'{:.0f}', '% vastaajista':'{:.1f} %'})"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Lukumäärät pylväinä\n",
"df5['f'].plot.barh(legend=False)\n",
"\n",
"plt.xlabel('Käyttäjien lukumäärä')\n",
"\n",
"# Pystysuuntainen taustaviivoitus\n",
"plt.grid(axis='x')"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \n",
" | | \n",
" työterv | \n",
" lomaosa | \n",
" kuntosa | \n",
" hieroja | \n",
"
\n",
" \n",
" \n",
" \n",
" | Miehet, n = 63 | \n",
" 35 | \n",
" 16 | \n",
" 8 | \n",
" 13 | \n",
"
\n",
" \n",
" | Naiset, n = 19 | \n",
" 12 | \n",
" 4 | \n",
" 1 | \n",
" 9 | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Miesten ja naisten lukumäärät\n",
"miehet_n = len(df[df['sukup']==1])\n",
"naiset_n = len(df[df['sukup']==2])\n",
"\n",
"# Miesten ja naisten otsikoinnit\n",
"miehet = f'Miehet, n = {miehet_n}'\n",
"naiset = f'Naiset, n = {naiset_n}'\n",
"\n",
"# Monivalinnat sukupuolen mukaan\n",
"df6 = df.groupby('sukup')[monivalinnat].sum()\n",
"\n",
"# Sukupuolet sukup-listasta, jonka määrittelin aiemmin\n",
"df6.index = [miehet, naiset]\n",
"\n",
"df6.style.format('{:.0f}')"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'Lukumäärä')"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAg8AAAElCAYAAABj+gFvAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAANSdJREFUeJzt3XdUFFf/BvBnly5VDJZYowhYiCIKKlEiihgVQzQmimKwRFQSe8Eu9sRe0FeDNZLYRYkRTSzEXyzBqBiNKFiCQhCRjqzssvP7g9d9XSkyUnaB53NOzslOufsd4S7P3rkzIxEEQQARERFRCUk1XQARERFVLgwPREREJArDAxEREYnC8EBERESiMDwQERGRKAwPREREJArDAxEREYnC8EBERESiMDxQheC9yIiqD/b3qo/hoRLx8fGBra0tBg0aVOQ2kyZNgq2tLQICAlTLbG1tsWHDBlHv9Tb7FCYxMRF+fn6Ij48vdVvlLSMjAwsWLICLiwscHBzw+eef4+LFi2rbPH78GBMmTEDHjh3h6OgIf39/PHjwQEMVU3Xh4+ODli1b4q+//ip0vZubm1qfL4mAgAC4ubmVRXkqGRkZmDFjBq5cuVKm7Za3ZcuWwcfHp8DyzMxMzJ8/H507d0bbtm0xaNAg/PbbbxqoUPswPFQyUqkU169fx7///ltgXU5ODs6dO1dg+b59+zBw4MAKqK6gCxcuFFqTtsnLy8OXX36J06dPY9q0aVi/fj3MzMwwevRoREdHAwCysrIwYsQI3L17FwsWLMCKFSvw5MkT+Pj4IC0tTbMHQFVeXl4eZs6cidzc3DJpb9y4cdi4cWOZtPXS7du3ERoaCqVSWabtlqetW7di586dBZYrFAr4+vri2LFj8PX1xaZNm+Ds7Ixx48bhl19+qfhCtYyupgsgcVq2bInY2FiEh4dj+PDhauvOnDkDAwMDmJqaqi1v27ZtBVZYOYWFheGvv/7C4cOHYWdnBwBwcnJCv3798Pvvv8POzg4nTpzAP//8g+PHj8Pa2hoAYGNjg+7duyM8PLzYESGi0jI1NUVMTAyCgoIwadKkUrfXqFGjMqiq8nr06BGWL1+Os2fPFvjMBICzZ8/i5s2bWLlyJTw9PQEAnTt3hlwux+LFi9G9e3dIpdX3+3f1PfJKqkaNGnB1dcWJEycKrPv555/Rq1cv6OqqZ8LXT0GkpaVh3rx56Ny5M+zt7fHZZ58VGJ4H8r9pz549G05OTnBwcMD48ePx7NkztW1+/fVX9O/fH/b29nBxccHixYvx/PlzAMDhw4cxc+ZMAED37t1FDasGBATA19cXhw4dgoeHB1q3bo1+/fohIiKi2P1sbW2L/K+4IdqTJ0+iQ4cOquAAAAYGBjh58iRGjhwJAPDw8MDevXtVwQEA9PT0AKDMvg0SFaVFixbw8vJCcHAwbt68Wey2MpkMq1atQs+ePdG6dWu0a9cOw4cPx+3bt1XbvH7a4tatW/jiiy/g6OgIBwcH+Pr6IioqSq3dK1euYOjQoWjTpg2cnJwwY8YMpKSkAAAuX76MYcOGAQCGDRtW6GmAomzYsAHu7u44d+4cPD090bp1a3h4eODIkSPF7ufm5lZsny/OsmXLEBcXh127dqFFixYF1t+7dw8A0K1bN7XlTk5OSExMVI1IVlcceaiEevfujQkTJiAhIQHvvvsugPw/9L/99ht27NhR7Dm5Fy9e4IsvvkBycjImTZqE2rVr49ChQxg1ahSCg4PRqVMn1ba7d++Gp6cn1q1bh5iYGHz77bcAgPXr1wPI/7Y+depUeHp6YuLEiYiPj8eaNWsQGxuLHTt24MMPP8TYsWOxefNmbNy48Y2d+XU3b95EUlISxo8fDxMTE6xbtw7jx4/Hb7/9BnNz80L32bdvX5Ht6evrF7kuOjoa3bt3x86dO7F7924kJibC1tYWM2fOhJOTEwDAzMwMDg4OAPLDwv379/HNN9+gZs2a+Oijj0QdG9HbmD17Ni5cuICZM2fi0KFDRf5OT58+HZGRkZgyZQoaNWqEhw8fYt26dZg0aRJOnDgBiUSitn1WVhZGjRoFZ2dnrF+/HnK5HJs3b8bIkSNV38wjIyMxfPhwdOzYEWvXrkV6ejrWrVuHYcOG4eDBg2jVqhXmzZuHhQsXYt68eXB2dhZ1bE+fPsXChQsxduxY1K9fH9u2bUNAQADef/99NGvWrNB9Nm7c+NbBfeLEiWjevHmBf4uXLC0tAQDx8fFqn11xcXEA8uc/tWzZ8q3euypgeKiEPvzwQ9SoUQPh4eEYMWIEAOCXX36BpaUlHB0di9336NGjiI6Oxv79+9GmTRsAQNeuXeHj44OVK1fi0KFDqm3t7e1VgaFTp064ceOGKpgIgoCVK1eiS5cuWLlypWqfJk2awNfXFxEREfjwww9VQ6MtWrRAgwYNRB1nZmYmDh8+rGqjRo0aGDp0KC5dugQPD49C93nbUzQpKSkIDw+Hubk5pk+fDiMjI2zduhUjR47E/v37C3wz8fPzw4ULFyCVShEYGAgrK6u3el8iMczMzBAYGIixY8cWefoiNzcX2dnZmDt3Lnr37g0g/9tydnY2li9fjqdPn6J27dpq+8TGxiIlJQU+Pj6qz5CmTZti7969yMrKgqmpKVatWoX33nsPW7ZsgY6ODgCgTZs26NOnDw4dOoQhQ4aoRuWsra3VRuhKIicnB0uWLFF9gWnSpAm6deuGiIiIIsNDaf5429jYFLu+R48eWLFiBWbMmIGFCxeiadOmuHLlCrZt2wYAqhHW6oqnLSohQ0NDuLm5qZ26OH78OHr37l1kin7p4sWLsLKyQqtWraBQKKBQKJCXl4du3brh5s2bSE9PV237ehBp2LAhMjIyAAD3799HYmIi3NzcVO0oFAp06NABJiYm+P3330t9nJaWlmrnZevWrQsg/0OmKK/W8vp/eXl5Re4nl8uRmZmJbdu2oVevXnB1dcWWLVtgYmKC7777rsD2/v7+2LVrF4YMGYK5c+fiP//5TymOlKjk3Nzc0K9fPwQHB+PWrVsF1uvr62Pbtm3o3bs3kpKSEBkZiX379uHs2bMA8n/XX9e8eXNYWlpi7NixmD9/Ps6cOQMrKytMnz4d9erVQ05ODqKiouDq6gpBEFR9qmHDhmjWrFmZ9HdAPfy/7O/F/ZHOy8srts+XhqWlJbZv3468vDwMHDgQjo6OWLp0KSZPngwg/8tMdcaRh0rqo48+gr+/Px4/fgxjY2NcvHgREydOfON+aWlpePr0KVq1alXo+qdPn6pOCbzeOaRSqer67ZdXFwQGBiIwMLBAO0lJSSKOpnBGRkZqr18Go+Jmchd1XABQv359nDlzptB1xsbGaNasmeoDCwBMTEzg4OCgdp74pfbt2wMAOnbsiIyMDGzevBmjRo0qMN+EqDzMmTMHFy9eREBAgNpo4Uvnz5/H0qVLcf/+fRgbG8PW1hbGxsYACr8Hg7GxMUJCQrB582b8/PPP2Lt3L4yMjNCvXz/Mnj0bGRkZUCqV+O677woN0wYGBmVyXK/2+ZeTEYu7Z4S7u3uxl4HfuXOnVPXY29sjLCwMT548QU5ODho3bozLly8DQJGnTqsLftJVUl27doWpqSlOnjwJU1NTNGjQAK1bt37jfqampmjSpInaqYZXlfTUgpmZGYD8c6sv5wS8SlMd6+DBg0WuK27OQ+PGjQs9d6pQKGBoaAgAuHHjBh4/fqwaCn7J3t4eR48eRWpqKk9fUIUwNzfHggUL4O/vj82bN6uti4uLg7+/P7p3744tW7aoRu9CQkJw/vz5Itts2rQpVqxYgby8PNy4cQNHjx7Fjz/+iAYNGsDb2xsSiQS+vr7o06dPgX1fD/oVZfPmzeU2WTk1NRXnzp2Dq6sr6tSpo1p+69YtSKXSQidZVicMD5WUvr4+unfvjlOnTqFGjRqFdujCODk54dy5c6hVq5ZqsiWQf63zrVu3igwVr2vatClq1aqFx48fq65GAPJHLqZNm4ZBgwahUaNGFX4pk729/Vvt5+rqik2bNuHevXuq86upqam4evUqvLy8AORfurVlyxa0bdtW7d/u/PnzsLKyQq1atUpdP1FJ9ejRA3379sXWrVtVV/0A+RONX7x4AT8/P7XTfi+DQ2Hf5MPDw7FgwQKEhYXBysoKDg4OcHBwwPHjx5GYmAgTExO0bNkS9+/fV+tjMpkMEyZMQNeuXWFtba2aC1FRxE7CFkMQBMycORMLFixQXYadnZ2N/fv3w8nJSfUFqrpieKjEevfuDT8/P0ilUsyZM6dE+/Tv3x979uzB8OHDMWbMGNSrVw8XLlzAd999h6FDh6p9CBVHR0cHkyZNwrx586Cjo4Nu3bohIyMDmzZtwpMnT1SnD152sF9++QVdu3ZFs2bNkJiYiMTERLRs2bLY0YCKNGzYMBw+fBijR4/GpEmTUKNGDWzatAkSiQSjRo0CAAwePBj79++Hn58fxo0bhxo1aiA0NBQRERFYuXJltb7mmzRj7ty5uHTpEpKTk1XLWrVqBV1dXaxYsQIjRoxAbm4uDh8+rLpZW2FzCNq1awelUgl/f3+MHj0axsbGOHHiBDIzM9GzZ08AwOTJkzF69GhMmTIF/fr1Q15eHrZv346oqCiMHTsWAFT3Szh37hzMzc1hZ2eHlJQUxMXFwdraGiYmJuX8L1J2LC0t0adPH6xduxYGBgaoVasWtmzZgqSkJKxatUrT5WkcP+0qsc6dO8PMzAzNmzcvcjby62rUqIGQkBA4OjpixYoV+PLLL3Hq1ClMmTJFdU+Gkho4cCBWrVqFq1evYsyYMViwYAEaNGiA77//Hg0bNgQAODs7o3Pnzli1ahW++eYbAMCBAwfw+eefl8m8iLJibm6OH3/8EW3btsXChQsxZcoUmJub44cfflDNg6hduzZ++OEHvPfee1i0aBG+/vpr/Pvvv9i6davqJjJEFcnCwgILFixQW9a4cWOsWrUKT548wdixYzFv3jwAwPfffw+JRFLoraNr166N4OBgmJqaYvbs2fDz88OtW7ewYcMGdOzYEQDwwQcfYNu2bUhMTMT48eMxffp06OjoYMeOHaqJjs2bN0ffvn0REhKCqVOnAsgPEp9//nmhkzu1XWBgIHr16oVVq1Zh0qRJMDQ0xK5du0p0iriqkwh8gglpwJAhQ7B27VrOESCqBqZPnw5vb2/e7bYK4cgDVbiIiAjIZDIGB6Jq4O+//0ZUVFS5zk+giseRB6pw8fHxMDY2hoWFhaZLIaJylpKSghcvXqBevXqaLoXKEMMDERERicLTFkRERCQKwwMRERGJwvBAREREolS5m0QplUokJSXB2Nj4jQ+JIqKiCYKA7Oxs1K5dW6tvgMU+T1R2Strvq1x4SEpKgqurq6bLIKoyIiIi1B4Ypm3Y54nK3pv6fZULDy+fHBcREVGpboVKpG2ysrLg6uqq6lPain2eqOyUtN9XufDwctjSxMSEHyREZUDbTwWwzxOVvTf1e+09kUlERERaieGBiIiIRGF4ICIiIlEYHoiIiEgUhgciIiISheGBiIiIRGF4ICIiIlEYHt5SUFAQ3N3dERQUpOlSiIiIKhTDw1uQyWQIDQ2FUqlEaGgoZDKZpksiIiKqMAwPb0GhUECpVALIfyiPQqHQcEVEREQVh+GBiIiIRGF4ICIiIlEYHoiIiEgUhgciIiISheGBiIiIRGF4ICIiIlEYHoiIiEgUhgciIiISheGBiIiIRNFoeMjLy4OPjw8CAgJUy6KiojBw4EA4ODjAzc0NBw4c0GCFRERE9DqNhoeNGzfiypUrqtfp6ekYPXo0vLy8EBkZiSVLlmDZsmW4ceOGBqskIiKiV2ksPFy8eBGnTp1Cz549VctOnToFCwsLDBkyBLq6uujUqRM8PT0REhKiqTKJiIjoNRoJD8+ePcPs2bOxatUqGBkZqZbHxMTAxsZGbVtra2tER0dXdIlERERUhAoPD0qlEtOmTcPw4cNhZ2enti47O1stTACAoaEhnj9/XpElEhERUTEqPDxs2bIF+vr68PHxKbDOyMgIMplMbZlMJoOxsXFFlUdERERvoFvRb3j06FEkJSWhffv2AKAKC7/++iumT5+O33//XW372NhYNG/evKLLJCIioiJU+MhDeHg4rl69iitXruDKlSvo27cv+vbtiytXrsDd3R3JycnYuXMn5HI5Ll26hLCwMAwYMKCiyyQiIqIiaNVNomrWrInt27cjPDwczs7OmDNnDubMmYOOHTtqujQiIiL6rwo/bfG65cuXq722t7fH3r17NVQNERERvYlWjTwQERGR9mN4ICIiIlEYHoiIiEgUhgciIiISheGBiIiIRGF4ICIiIlEYHoiIiEgUhgciIiISheGBiIiIRGF4ICIiIlEYHoiIiEgUhgciIiISheGBiIiIRGF4ICIiIlEYHoiIiEgUhgciIiISheGBiIiIRGF4ICIiIlEYHoiIiEgUhgciIiISpdqEhzylUtMllEhlqZOIiKovXU0XUFF0pFLM+eE8HiSll7otpVym9vrLzeGQ6hmWut33aptjsXeXUrdDRERUnqpNeACAB0npiI5PKXU7EkUuzF95HZOQBkFXv9TtEhERVQbV5rQFERERlQ2GByIiIhKF4YGIiIhEYXggIiIiURgeiIiISBSGByIiIhKF4YGIiIhEYXggIiIiURgeiIiISBSGByIiIhKF4YGIiIhEYXggIiIiURgeiIiISBSGByIiIhKF4YGIiIhEYXggIiIiURgeiIiISBSGByIiIhJFI+Hh4sWLGDhwINq1awcXFxcsWrQIMpkMABAVFYWBAwfCwcEBbm5uOHDggCZKJCIioiJUeHhISUmBn58fBg8ejCtXruDIkSP4448/sHXrVqSnp2P06NHw8vJCZGQklixZgmXLluHGjRsVXSYREREVQbei39DS0hIXLlyAiYkJBEFAWloaXrx4AUtLS5w6dQoWFhYYMmQIAKBTp07w9PRESEgI3n///YoulYiIiAqhkdMWJiYmAABXV1d4enrCysoK/fv3R0xMDGxsbNS2tba2RnR0tCbKJCIiokJodMLkqVOn8Ntvv0EqlWL8+PHIzs6GkZGR2jaGhoZ4/vy5hiokIiKi12k0PBgaGqJOnTqYNm0azp8/DyMjI9XEyZdkMhmMjY01VCERERG9rsLDw9WrV9GrVy/k5uaqluXm5kJPTw/W1taIiYlR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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Luodaan kahden kaavion kuvio\n",
"fig, axs = plt.subplots(nrows=1, ncols=2, sharey=True, figsize=(6, 3))\n",
"\n",
"# fillna(0) korvaa puuttuvat arvot nollilla\n",
"sns.barplot(data=df[monivalinnat].fillna(0)[df['sukup']==1], ax=axs[0], estimator=sum)\n",
"sns.barplot(data=df[monivalinnat].fillna(0)[df['sukup']==2], ax=axs[1], estimator=sum)\n",
"\n",
"axs[0].set_title(miehet)\n",
"axs[1].set_title(naiset)\n",
"axs[0].set_ylabel('Lukumäärä')"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \n",
" | | \n",
" työterv | \n",
" lomaosa | \n",
" kuntosa | \n",
" hieroja | \n",
"
\n",
" \n",
" \n",
" \n",
" | Miehet, n = 63 | \n",
" 55.6 % | \n",
" 25.4 % | \n",
" 12.7 % | \n",
" 20.6 % | \n",
"
\n",
" \n",
" | Naiset, n = 19 | \n",
" 63.2 % | \n",
" 21.1 % | \n",
" 5.3 % | \n",
" 47.4 % | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Monivalinnat sukupuolen mukaan\n",
"df7 = df.groupby('sukup')[monivalinnat].sum()\n",
"\n",
"# Prosentit\n",
"# iloc[0] viittaa indeksin mukaiselle 0-riville (miesten rivi)\n",
"df7.iloc[0] = df7.iloc[0] / miehet_n * 100\n",
"df7.iloc[1] = df7.iloc[1] / naiset_n * 100\n",
"\n",
"# Kikkailen n-arvot mukaan\n",
"df7.index = [miehet, naiset]\n",
"\n",
"# Loppusilaus\n",
"(df7).style.format('{:.1f} %')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Luokiteltu jakauma\n",
"\n",
"Pandas-kirjaston **cut**-toiminnolla voin luokitella muuttujan. Oletuksena luokan yläraja kuuluu luokkaan. Parametrilla **right = False** voin vaihtaa luokan alarajan kuulumaan luokkaan (histogrammi-kaaviossa käytetään tätä tapaa)."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \n",
" | \n",
" f | \n",
" % | \n",
"
\n",
" \n",
" | palkkaluokka | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | [1000, 2000) | \n",
" 19 | \n",
" 23.2 % | \n",
"
\n",
" \n",
" | [2000, 3000) | \n",
" 50 | \n",
" 61.0 % | \n",
"
\n",
" \n",
" | [3000, 4000) | \n",
" 8 | \n",
" 9.8 % | \n",
"
\n",
" \n",
" | [4000, 7000) | \n",
" 5 | \n",
" 6.1 % | \n",
"
\n",
" \n",
" | Yhteensä | \n",
" 82 | \n",
" 100.0 % | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Määrittelen luokkarajat palkan luokittelemiseksi\n",
"rajat = [1000, 2000, 3000, 4000, 7000]\n",
"\n",
"# Lisään dataan palkkaluokka-sarakkeen\n",
"df['palkkaluokka'] = pd.cut(df['palkka'], bins=rajat, right=False)\n",
"\n",
"# Palkkaluokkiin kuuluvien lukumäärät\n",
"df8 = pd.crosstab(df['palkkaluokka'], 'f')\n",
"df8.columns.name = ''\n",
"\n",
"# Prosentit\n",
"df8['%'] = df8['f']/df8['f'].sum()*100\n",
"\n",
"df8.loc['Yhteensä'] = df8.sum()\n",
"\n",
"# Loppusilaus\n",
"df8.style.format({'f':'{:.0f}', '%':'{:.1f} %'})"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'lukumäärä')"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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UaGuXbtKkrZu3aru3bsft8AOCw0NVffu3Vt6TAAA0Mwa9fd8K8zRJBdeeKEuvvhi3X///XK73fruu+/09NNPa9y4cYEeDQAABFiIOdFZMAFQUVGh++67Txs3blRoaKhGjx6tO++8U23atAn0aAAAIICCMlwAAADqE3QvFQEAADSEcAEAANYgXAAAgDUIFwAAYI1TOlwqKyuVkpKijRs3+rZt3rxZ6enpcjqdSk5O1vLly/2+5vXXX1dKSori4+M1duxYffrpp759hw4d0oMPPqhLL71UTqdTkydP1u7du1vt+bSE0tJSZWVlaeDAgUpKStL06dNVWVkpibWqz4YNG5Senq7+/fsrKSlJ8+bNU21trSTWqz6HDh1SZmamZs6c6dvGOh1r9erV6t27t5xOp+9Xbm6uJNbraPv27dP06dOVkJCgSy65RFOmTPE9J9bq/3vzzTf9/jw5nU716dNHffr0kRTka2VOUZs2bTJXXXWViY2NNcXFxcYYY/bt22cGDhxoXn75ZePxeMxHH31knE6n2bx5szHGmOLiYuN0Os2mTZtMXV2def75501CQoKpqakxxhjz5JNPmtTUVLNz506zf/9+c9ttt5mbbropYM/xlzpw4IBJSkoyjz/+uPnpp59MZWWluemmm8zNN9/MWtVjz549pm/fvubVV181hw4dMrt27TIjR440jz/+OOvVgMcee8z06tXLzJgxwxjDz2BDHnjgATNz5sxjtrNex7r++uvN1KlTTVVVldm/f7+55ZZbTHZ2Nmt1At9//71JSkoyb7zxRtCv1SkZLq+99poZOnSoeeutt/zCZdmyZebqq6/2u+/dd99tpk+fbowx5o477jB5eXl++4cPH25WrFhhjDHm8ssvN2+++aZv3w8//GDi4uLM9u3bW/LptJitW7eaSZMmmYMHD/q2vfvuu6Z///6sVQP2799vjDHG6/War776yqSkpJiXXnqJ9arHRx99ZEaMGGFycnJ84cI61S8jI8O8/PLLx2xnvfx99tlnpm/fvr6fQ2OM2bt3r/n6669Zq+Pwer0mMzPTzJ492xgT/H+uTsmXigYPHqx33nlHI0aM8NvucrkUGxvrty06OlqlpaWSpLKysgb379+/X99//73f/q5du6pTp0766quvWuiZtKwePXroueee8/vgv7ffflsXXXQRa9WADh06SPrfRT5T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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Luokiteltu jakauma histogrammina\n",
"sns.histplot(data=df['palkka'], bins=rajat)\n",
"\n",
"plt.ylabel('lukumäärä')"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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vb2VkpKilJSUnzQ/AABwZWl2NzwDAAB4EvEDAACsQvwAAACrED8AAMAqxA8AALAK8QMAAKxC/AAAAKsQPwAAwCrEDwAAsArxAwAArEL8AAAAqxA/AADAKsQPAACwCvEDAACsQvwAAACrED8AAMAqxA8AALAK8QPAGm0dreR2m6aeBmC9pv5z6Nuk3x0AGpH/Vb7y9vbSS58U6cipM009HcBK1wc4ND2ye5POgfgBYJ0jp87oi9Lypp4GgCbCx14AAMAqxA8AALAK8QMAAKxC/AAAAKsQPwAAwCrEDwAAsArxAwAArEL8AAAAqxA/AADAKsQPAACwCvEDAACsQvwAAACrED8AAMAqxA8AALAK8QMAAKxC/AAAAKsQPwAAwCrEDwAAsArxAwAArEL8AAAAqxA/AADAKsQPAACwCvEDAACsQvwAAACrED8AAMAqxA8AALAK8QMAAKxC/AAAAKs0y/gpLS3V1KlT1adPH/Xr108LFixQdXV1na89duyY7r//foWFhSk2NlYlJSU157KzszVr1qzGmjYAAGgBmmX8zJw5U1dffbU2b96sd955R9u2bdOKFSvqfO2bb76prl27auvWrerQoUPN61wul1599VXFx8c33sQBAECz1+zi59ChQ9qxY4fi4uLkcDh04403aurUqUpPT6/z9b6+vpIkY4wkycfHR5L04osvasKECerQoUPjTBwAALQIvk09gR8qKipSu3bt1Llz55pjt9xyi44ePap//etfuuaaa2q9fuLEiXryySc1dOhQ9ezZU5MmTVJhYaEKCgr01FNP1fv7fxdRLpfrpy3kIjq1Njrr7+Wx8a8E1/hWy+VysVeXgb26fOwV0PQ6tTYe+Tv2uzG/+3v8Yppd/JSXl8vhcNQ69t3XFRUV58VPx44da30kZozRo48+qsTERP3pT3/SG2+8IT8/Pz355JPq06fPZX1/SYqIiPiJK8FPsVZSSlNPooVgry4fewU0D695cOzy8nL927/920Vf0+zi5+qrr9aZM2dqHfvua39//0u+/91335XT6dQNN9ygBx54QGvXrtVXX32lGTNmaPPmzfLyuvh/7V177bXKzc2Vv7//JV8LAACaB2OMysvLde21117ytc0ufrp3767Tp0+rpKREHTt2lCR9/vnn6tKlyyVLrqysTCtWrFB6err+/ve/6+qrr9Z1112njh076sSJEzp16pTat29/0TG8vb3VpUuXBlsPAABoHJfqhO80uxueAwMDFR4eroULF8rlcukf//iHXn75ZY0bN+6S733uuef04IMP6pprrtH111+vf/3rXzp06JD27Nmjtm3bql27dp5fAAAAaNaa3ZUfSVqyZImefvpp3XXXXfL29lZMTIymTp160ffs27dPBw8eVHJysqRv7wWaNWuW7r//frVu3VqLFi2St3ezaz0AANDIvMzl3BYNAABwheBSCAAAsArxAwAArEL8AAAAqxA/AADAKsTPT3Ty5ElFRUVp+/btNcf27t2r8ePHKywsTJGRkcrKyqr1nvfee09RUVEKDQ3VmDFjtGfPnppz586d0zPPPKOBAwcqLCxMjzzyiI4fP95o6/GEwsJCTZ48WX379tWgQYMUHx+vkydPSmKvfmjbtm0aP368evfurUGDBmnevHmqrKyUxF5dyLlz5xQbG6vZs2fXHGOvzrdu3TrdeuutCgsLq/kVFxcnif36odOnTys+Pl79+vXT7bffrqlTp9asib36f3/4wx9q/X4KCwtTSEiIQkJCJDXzvTL40fLz882wYcOM0+k0eXl5xhhjTp8+bfr27Wvefvttc/bsWbN161YTFhZm9u7da4wxJi8vz4SFhZn8/HxTVVVlfv/735t+/fqZiooKY4wxL730khk9erQ5evSo+frrr83MmTPNQw891GRr/KnOnDljBg0aZF588UXzzTffmJMnT5qHHnrIPPzww+zVD5SWlpqePXua1atXm3Pnzpljx46ZUaNGmRdffJG9uogXXnjB9OjRw8yaNcsYw5/BC1m0aJGZPXv2ecfZr/P96le/MtOmTTNlZWXm66+/No8++qiZMmUKe3UJX331lRk0aJB5//33m/1eET8/0rvvvmuGDBli/vjHP9aKn8zMTDN8+PBar507d66Jj483xhjzxBNPmMTExFrno6OjzTvvvGOMMebOO+80f/jDH2rOnThxwgQHB5vDhw97cjke8/nnn5sHH3zQVFdX1xz76KOPTO/evdmrOnz99dfGGGPcbrfZv3+/iYqKMitXrmSvLmDr1q1m5MiRZsaMGTXxw17VbcKECebtt98+7zj7Vdu+fftMz549a/4sGmPMqVOnzIEDB9iri3C73SY2NtYkJCQYY5r/7ys+9vqR7rjjDn344YcaOXJkreNFRUVyOp21jgUFBamwsFCSVFxcfMHzX3/9tb766qta5zt27Ki2bdtq//79HlqJZ918881atmyZfHx8ao598MEHuu2229irOrRp00bStw/WHT16tDp16qQxY8awV3UoLS1VQkKCFi9eXOthyOzV+dxutz777DNt3LhRQ4cO1Z133qmkpCSVlZWxXz9QUFCgoKAgZWZmKioqSnfccYeeeeYZderUib26iDVr1qi4uLjm4+fmvlfEz4/UqVMn+fqe/w9k1/VU+tatW6uiouKS5797ovzVV1993vnvzrVkxhg9//zzysnJUUJCAnt1ERs2bNCmTZvk7e2tGTNmsFc/4Ha7FRcXp8mTJ6tHjx61zrFX5zt58qRuvfVW3X333Vq3bp1WrVqlL774QnFxcezXD5SVlWn//v364osv9N577+n999/XsWPHNGvWLPbqAtxut1555RX95je/qfkPuOa+V8RPA3M4HDU3qH6nsrKy5on0Fzv/3W+EHz7V/vvvb6lcLpdmzJih7Oxsvf322woODmavLqJ169bq3Lmz4uLitHnzZvbqB5YuXSo/Pz/Fxsaed469Ol/Hjh2Vnp6ucePGyeFw6LrrrlNcXJw2bdokYwz79T1+fn6SpISEBLVp00YdO3bUzJkzlZuby15dwPbt23X8+PFaz+Bs7n8OiZ8G5nQ6VVRUVOtYcXGxunfvLunbp9Zf6Hzbtm3VuXNnFRcX15w7ceKETp8+fd7lwZbk8OHDGjt2rFwul9555x0FBwdLYq9+aPfu3YqOjlZVVVXNsaqqKrVq1UpBQUHs1fesWbNGO3bsUJ8+fdSnTx+tXbtWa9euVZ8+ffh9VYfCwkKlpaXJfO9pRlVVVfL29lavXr3Yr+8JCgqS2+3W2bNna4653W5J0s9//nP2qg4ffPCBoqKial2pafZ/DhvkziHLff+G55MnT5o+ffqY3//+96aqqsps27bNhIWFmW3bthljTM0d79u2bau5w/322283p06dMsYY8/zzz5tRo0aZw4cP19zh/qtf/aqplvaTnT592gwZMsTMnj3bnDt3rtY59qo2l8tlIiIizMKFC80333xjvvzySzNu3Djz3//93+zVJcyaNavmhmf26nz//Oc/TWhoqHnttdfM2bNnzZEjR8y9995r5syZw379QFVVlYmKijLTp083LpfLlJaWmokTJ5pp06axVxcwatQok5mZWetYc98r4qcBfD9+jDGmoKDA3HfffSYsLMzcddddZvXq1bVe//7775u7777bhIaGmnHjxpm//OUvNeeqqqrMs88+awYPHmx69+5tHnnkEVNSUtJoa2loy5cvN06n0/ziF78woaGhtX4Zw179UFFRkZk8ebLp06ePGTp0qHnuuefMN998Y4xhry7m+/FjDHtVl+3bt9fsSf/+/c28efNMZWWlMYb9+qGvvvrKzJw50wwaNMj06dPHxMfHm7KyMmMMe1WX0NBQs3HjxvOON+e94qnuAADAKtzzAwAArEL8AAAAqxA/AADAKsQPAACwCvEDAACsQvwAAACrED8AAMAqxA8AALAK8QPgihYbG6uXXnpJkjR79mzNnj37kq8DcGUjfgAAgFWIHwDN3pdffqng4GCtXLlSgwYNUnh4uOLi4uRyuVRVVaVnnnlGI0aMUFhYmAYMGKB58+bpUk/uOXLkiO666y4tXLjwvNf+9a9/Vf/+/bVixQpJ0ueff66HH35YQ4YMUa9evTRy5Ejl5OR4arkAPIz4AdBibNiwQdnZ2Vq/fr0OHTqk5ORkvfnmm9q8ebPefPNN7dmzRy+//LJWrVqlvLy8C47zj3/8Q7Gxsbrnnns0Z84ceXl51Zz79NNP9V//9V964oknNGnSJEnS9OnT5XQ69eGHHyo/P1933HGHfvvb33p4tQA8xbepJwAAl+upp55S+/btJUkzZszQI488olmzZumXv/ylOnTooOPHj6uyslL+/v46duxYnWMcOXJEsbGxGjJkiGbMmFHr3Geffaa33npLU6ZM0fjx42uOL126VJ07d5YxRkeOHNE111xzwfEBNH/ED4AW46abbqr53127dlVVVZXOnj2refPmaefOnerSpYtuvfVWGWPkdrvrHCM/P1+DBg3Sxx9/rMcff1xt27atObd161aFhYVp7dq1euCBB+Tn5ydJKiws1NSpU3XixAndcsstat++/SU/VgPQfPGxF4AW4/tXW7788ks5HA4lJSXJ4XBoy5Ytys7OVkpKygXDR5JGjhyppUuXqmvXrkpOTq51btKkSXr55Zf19ddf1/zk17Fjx/TYY4/p8ccfV15entLT0zVq1CjPLBBAoyB+ALQYixcvlsvl0rFjx7RkyRLdc889crlcuuqqq+Tt7S2Xy6XU1FS5XC6dPXu2zjFatWolHx8fpaSk6KOPPtK6detqnfP399eCBQu0fPly7d69W+Xl5Tp37pwcDockqbi4WL/73e8kSVVVVZ5fNIAGR/wAaDG6deumUaNG6T/+4z8UFhamOXPmKDExUYWFherbt6+io6Plcrk0ePBgHThw4KJj3XLLLZo+fbqSk5PPu39nwIABGj9+vGbNmqUuXbooPj5ecXFxCg8P12OPPaaxY8eqVatWl/weAJonL8MH1wCauS+//FJ33XWXPv74Y91www1NPR0ALRxXfgAAgFWIHwAAYBU+9gIAAFbhyg8AALAK8QMAAKxC/AAAAKsQPwAAwCrEDwAAsArxAwAArEL8AAAAqxA/AADAKv8H2yZCloZnsjwAAAAASUVORK5CYII=",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Luokiteltu jakauma histogrammina, jossa pystyakselilla prosentit\n",
"sns.histplot(data=df['palkka'], bins=rajat, stat='percent')\n",
"\n",
"plt.ylabel('prosenttia')\n",
"\n",
"# y-akselin jakoviivojen otsikoiden muotoilu\n",
"plt.gca().yaxis.set_major_formatter(myFmt100)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**histplot**-toiminnolla tehdyssä histogrammissa pylvään leveys riippuu oikeaoppisesti luokkavälin pituudesta (tässä luokkaan (4000, 7000] liittyvä pylväs on muita leveämpi."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Lisätietoa\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
}