{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Päivitetty 2025-05-15 / Aki Taanila\n"
]
}
],
"source": [
"from datetime import datetime\n",
"print(f'Päivitetty {datetime.now().date()} / Aki Taanila')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Dummy-muuttujien yhteenveto selittävän muuttujan mukaan\n",
"\n",
"Dummy-muuttujaksi (binäärinen, dikotominen) kutsutaan muuttujaa, joka saa arvokseen joko 0 (joskus tämän sijasta käytetään tyhjää solua) tai 1. \n",
"\n",
"Esimerkiksi kyselytutkimuksessa monivalintakysymys, jonka vaihtoehdoista vastaaja saa valita useammankin kuin yhden, koodataan dummy-muuttujiksi: Jokainen kysymyksen vaihtoehto on muuttuja, joka saa arvokseen 1, jos vastaaja on sen valinnut. Muussa tapauksessa arvo on 0 tai tyhjä.\n",
"\n",
"Usein valintakysymyksiä (saa valita vain yhden vaihtoehdon) kutsutaan virheellisesti monivalintakysymyksiksi. Valintakysmystä ei kannata koodata dummy-muuttujiksi paitsi koneoppimisen malleja käytettäessä."
]
},
{
"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",
" 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": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# Yhteenvetoon otettavien dikotomisten muuttujien nimet\n",
"dikot = ['työterv', 'lomaosa', 'kuntosa', 'hieroja']\n",
"\n",
"# 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}'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Lukumäärät taulukkona ja grafiikkana\n",
"\n",
"Seabornin barplot sopii hyvin yhteenvedon graafiseen esittämiseen, koska kaaviolle voi estimator-parametrilla määrittää laskentamenetelmäksi summan (summaa yhteen muuttujan arvoina olevia ykkösiä)."
]
},
{
"cell_type": "code",
"execution_count": 5,
"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": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Valintojen lukumäärät sukupuolen mukaan\n",
"df1 = df.groupby('sukup')[dikot].sum()\n",
"\n",
"# Riviotsikot (edellä määritellyt miesten ja naisten otsikoinnit)\n",
"df1.index = [miehet, naiset]\n",
"\n",
"# Ulkoasun viimeistely\n",
"df1.style.format('{:.0f}')"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'Lukumäärä')"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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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",
"# Puuttuvien arvojen korvaaminen arvolla 0 (fillna(0)) on välttämätön vain joissain versioissa\n",
"sns.barplot(data=df[dikot][df['sukup']==1].fillna(0), ax=axs[0], estimator=sum)\n",
"sns.barplot(data=df[dikot][df['sukup']==2].fillna(0), 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": "markdown",
"metadata": {},
"source": [
"## Prosenttiyhteenveto"
]
},
{
"cell_type": "code",
"execution_count": 7,
"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": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Valintojen lukumäärät sukupuolen mukaan\n",
"df1 = df.groupby('sukup')[dikot].sum()\n",
"\n",
"# Prosenttien laskenta: iloc[0] viittaa df1:n ensimmäiseen riviin ja iloc[1] toiseen riviin\n",
"df1.iloc[0] = df1.iloc[0]/miehet_n*100\n",
"df1.iloc[1] = df1.iloc[1]/naiset_n*100\n",
"\n",
"# Riviotsikot\n",
"df1.index = [miehet, naiset]\n",
"\n",
"# Prosenttilukujen ulkoasun viimeistely\n",
"df1.style.format('{:.1f} %')"
]
},
{
"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
}