from datetime import datetime
print(f'Päivitetty {datetime.now().date()} / Aki Taanila')
Dummy-muuttujaksi (binäärinen muuttuja, dikotominen muuttuja) kutsutaan muuttujaa, joka saa arvokseen 1 tai 0 (joskus tämän sijasta käytetään tyhjää).
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ä.
Tärkeää! Usein valintakysymyksiä (saa valita vain yhden vaihtoehdon) kutsutaan virheellisesti monivalintakysymyksiksi. Valintakysymystä ei kannata koodata dummy-muuttujiksi paitsi koneoppimisen malleja käytettäessä.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Grafiikan tyylimääritys
plt.style.use('seaborn-whitegrid')
# Sanakirja taulukoiden muotoiluun
# f-sarakkeeseen 0 desimaalia, %-sarakkeeseen 1 desimaali
format = {'f':'{:.0f}', '%':'{:.1f} %'}
df = pd.read_excel('https://taanila.fi/data1.xlsx')
df
# Yhteenvetoon otettavien dikotomisten muuttujien nimet
dikot = ['työterv', 'lomaosa', 'kuntosa', 'hieroja']
# Valintojen lukumäärät count-funktiolla lukumäärän mukaan järjestettynä
df1 = df[dikot].sum().to_frame('f').sort_values('f', ascending=False)
# shape[0] antaa datan rivien lukumäärän eli vastaajien lukumäärän
n = df.shape[0]
# Prosentit
df1['% vastaajista'] = df1['f']/n*100
# Ulkoasun viimeistely
df1.style.format({'f':'{:.0f}', '% vastaajista':'{:.1f} %'})
# Muuttujien lista frekvenssien mukaisessa järjestyksessä
list = df[dikot].sum().sort_values(ascending=False).index
# Seaborn kaaviot tehdään suoraan alkuperäisestä datasta, joten edellisen solun taulukkoa ei tarvita
sns.barplot(data=df[list], estimator=sum)
plt.ylabel('lukumäärä')
Data-analytiikka Pythonilla: https://tilastoapu.wordpress.com/python/