#!/usr/bin/env python # coding: utf-8 # In[1]: from datetime import datetime print(f'Päivitetty {datetime.now().date()} / Aki Taanila') # # Frekvenssit dikotomisille (dummy) muuttujille # # Dummy-muuttujaksi (binäärinen muuttuja, dikotominen muuttuja) kutsutaan muuttujaa, joka saa arvokseen 1 tai 0 (joskus nollan 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ä. # # # Usein valintakysymyksiä (saa valita vain yhden vaihtoehdon) kutsutaan virheellisesti monivalintakysymyksiksi. Valintakysymystä ei kannata koodata dummy-muuttujiksi paitsi koneoppimisen malleja käytettäessä. # In[2]: import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # Grafiikan tyylimääritys sns.set_style('whitegrid') # In[3]: df = pd.read_excel('https://taanila.fi/data1.xlsx') df # In[4]: # Yhteenvetoon otettavien dikotomisten muuttujien nimet dummy = ['työterv', 'lomaosa', 'kuntosa', 'hieroja'] # In[5]: # Valintojen lukumäärät sum-funktiolla lukumäärän mukaan järjestettynä df1 = df[dummy].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} %'}) # In[6]: df1['f'].plot.bar(width=0.8, rot=0) plt.ylabel('lukumäärä') plt.grid(axis='x') # In[7]: # Voin tehdä kaavion myös seabornin barplot-funktiolla # Muuttujien lista frekvenssien mukaisessa järjestyksessä list = df[dummy].sum().sort_values(ascending=False).index # fillna(0) korvaa puuttuvat arvot nollilla sns.barplot(data=df[list].fillna(0), estimator=sum) plt.ylabel('lukumäärä') # ## Lisätietoa # # Data-analytiikka Pythonilla https://tilastoapu.wordpress.com/python/