Avainsana-arkisto: Frekvenssitaulukko

Frekvenssitaulukot Exceliin

Päivitetty 24.9.2017

Tämän artikkelin koodin ohjeineen löydät GitHubista https://github.com/taanila/tilastoapu

Edellisessä artikkelissani Tunnuslukuja Exceliin kerroin miten lasket Pythonilla käden käänteessä aineiston tunnusluvut ja korrelaatiot ja tallennat tulokset Exceliin. Frekvenssitaulukoiden laskenta edellyttää enemmän Python-taitoja. Frekvenssitaulukot voin laskea Pythonissa monella eri tavalla. Yrityksen ja erehdyksen kautta olen itse päätynyt seuravassa kuvaamaani tapaan, mutta helpompia ja tehokkaampiakin tapoja voi olla olemassa.

Aluksi otan käyttöön pandas-ohjelmakirjaston, avaan aineiston ja alustan ExcelWriterin kirjoittamaan frekvenssit.xlsx -nimiseen tiedostoon. Tämä kaikki on sinulle toivottavasti tuttua jo edellisestä artikkelistani.

import pandas as pd
df=pd.read_excel('http://www.elisanet.fi/taanila/data1.xlsx', sheetname='Data')
writer = pd.ExcelWriter('frekvenssit.xlsx', engine='xlsxwriter')

Seuraavaksi alustan muuttujan rivi arvoksi 0. Tätä muuttujaa tarvitsen osoittaessani mille Excel-taulukon riville tietoja milloinkin kirjoitan. Aloitan arvosta 0, koska Python numeroi rivit alkaen arvosta 0.

rivi=0

Hyödynnän for-toistorakennetta käydäkseni läpi kaikki aineiston muuttujat (sarakkeet). Tällä tavalla toteutettuna voin käyttää ohjelmaa minkä tahansa aineiston kanssa. For-rakenteen aloitan komennolla:

for var in df:

For-rakenne käy läpi yksi kerrallaan kaikki dataframesta df löytyvät muuttujat (sarakkeet). Muuttujan nimen var sijasta olisin voinut käyttää mitä tahansa keksimääni nimeä. Kaksoispiste on pakollinen ja merkitsee for-rakenteen aloitusta. Kaksoispisteen jälkeen kaikki ohjelmarivit, jotka ovat sisennettyjä, sisältyvät for-rakenteeseen. Monissa muissa ohjelmointikielissä for-rakenne lopetetaan erillisellä komennolla, mutta Pythonissa for-rakenne loppuu kun sisennetyt ohjelmarivit loppuvat. Jos kopioit alla olevat rivit suoraan omaan ohjelmaasi, niin muista sisentää rivit. Minä sisällytin for-rakenteeseen seuraavat ohjelmarivit:

df1=pd.crosstab(df[var],'lkm')
df1=df1.assign(prosenttia=df1/df1.sum())
df1.loc['Yhteensä']=df1.sum()
df1.to_excel(writer, sheet_name='Frekvenssit', startrow=rivi)
rivi=rivi+df1.shape[0]+2

Käytän crosstab-toimintoa lukumäärien laskemiseen. Crosstab on tässä kätevä, koska sen tuloksena syntyy dataframe, jonka voin helposti kirjoittaa Excel-taulukkoon. Nimeän syntyvät dataframen nimellä df1.

Assign-toiminnolla lisään df1-dataframeen uuden sarakkeen, johon lasken prosentit. Huomaa, miten kätevästi voin suorittaa laskennan dataframessa.

df1.loc[’Yhteensä’]=df1.sum() lisää df1-dataframen viimeiseksi riviksi summa-rivin.

Seuraavaksi kirjoitan df1-dataframen Frekvenssit-taulukkovälilehdelle alkaen rivi-muuttujan osoittamalta riviltä.

Seuraavaksi kasvatan rivi-muuttujan arvoa, jotta seuraava frekvenssitaulukko kirjoitetaan edellisen alapuolelle siten että väliin jää yksi tyhjä rivi. Dataframen df1 rivimäärän saan selville df1.shape[0] -komennolla. Komento df1.shape[1] kertoisi vastaavasti dataframen df1 sarakkeiden määrän.

Lopuksi vaihdan prosentteja sisältävälle sarakkeelle prosenttimuotoilun. Seuraavia ohjelmarivejä en enää sisennä, koska en halua toistaa niitä jokaisella for-rakenteen toistokerralla:

format = writer.book.add_format({'num_format': '0.0%'})
writer.sheets['Frekvenssit'].set_column('C:C',None, format)

Aluksi lisään writer.book oliolle prosenttimuotoilun, jossa on yksi desimaali. Tämän jälkeen asetan kyseisen muotoilun Frekvenssit-taulukkovälilehden C-sarakkeelle.

Kaiken päätteeksi tietenkin vielä tallennan edellä muodostetun Excelin:

writer.save()

Tämän jälkeen voin avata frekvenssit.xlsx-tiedoston Exceliin ja tutustua aikaansaannokseeeni.

Huomaa, että edellä kuvaamani ohjelma toimii sellaisenaan mille tahansa tilastoaineistolle kunhan vaihdan aineiston avaamiskomennossa tiedostonimen ja polun, josta tiedosto löytyy.

Seuraavassa artikkelissani Ristiintaulukointi lasken crosstab-toiminnolla ristiintaulukointeja.

Mainokset

3 Taulukointi

Päivitetty 31.8.2017

Tilastoaineistoon kätkeytyvä tieto täytyy esittää jollain tavalla. Ainakin minulle nousee ensimmäisenä mieleen kysymys: kuinka monta mitäkin on? Excelillä voin laskea lukumäärät pivot-taulukoina.

Varmista ennen pivot-taulukointia, että aineistosi on tallennettu aiemmassa artikkelissa 1 Tilastoaineiston tallentaminen kuvatulla tavalla. Aineiston täytyy olla yhtenäinen kokonaisuus, jonka sisällä ei ole tyhjiä rivejä tai sarakkeita. Pivot-taulukoinnin kannalta ei ole merkitystä sillä onko aineisto määritelty Taulukoksi (Table) vai ei.

Tarkastelen seuraavassa esimerkkiaineistoa data1.xlsx, joka sisältää vastauksia erään yrityksen työntekijöiltä.

Aloitan pivot-taulukoinnin valitsemalla täsmälleen yhden solun aineiston alueelta (tärkeää!). Seuraavaksi valitset Insert (Lisää) -välilehdeltä PivotTable (Pivot-taulukko).

Aukeavasta ikkunasta tarkastan, että Excel on arvannut aineistoni oikein. Voin myös määrittää luotavan pivot-taulukon sijainnin, mutta yleensä oletus (New Worksheet) kelpaa minulle.

OK:n jälkeen Excel luo tyhjän pivot-taulukon ja näyttää kenttäluettelon (Field List). Kenttäluettelon yläosasta löydän aineistoni muuttujat. Kenttäluettelon alaosassa on paikat riviotsikoita (Row Labels) ja laskettuja arvoja (Values) varten. Lukumäärät lasken seuraavasti:

  • Raahaan tarkasteltavan muuttujan kenttäluettelon yläosasta riviotsikoihin (Row Labels).
  • Raahaan tarkasteltavan muuttujan myös Arvot (Values) -ruutuun.
  • Tilanteesta riippuen Excel laskee oletuksena joko arvojen summan (Sum) tai määrän (Count). Minun täytyy olla tarkkana ja vaihtaa tarvittaessa laskentaperusteeksi määrä: Napsautan Arvot (Values) -ruudun kenttää ja valitsen aukeavasta valikosta Value Field Settings (Arvokentän asetukset). Tämän jälkeen valitsen haluamani laskentaperusteen ja napsautan OK.

Taulukon muotoilu

Jos muuttuja sisältää puuttuvia tietoja (tyhjiä soluja), niin tämä näkyy pivot-taulukossa tarpeettomana rivinä. Voin helposti poistaa tyhjän (blank) -rivin: Pivot-taulukon riviotsikoista (Row Labels) aukeaa alasvetovalikokko, josta voin valita taulukossa näytettävät arvot. Poistan valinnan tyhjien (blank) arvojen kohdalta.

Yllä näet vierekkäin alkuperäisen pivot-taulukon ja vieressä tyylitellyn julkaistavaksi kelpaavan taulukon.

Prosentit

Lukumäärien viereen voin laskea prosentit. Lisään prosentit pivot-taulukkoon raahaamalla tarkasteltavan muuttujan toistamiseen Values (Arvot) -ruutuun. Napsautan uutta Values (Arvot) -ruudun muuttujaa ja valitsen aukeavasta valikosta Value Field Settings (Arvokentän asetukset). Laskentaperusteen täytyy olla Count (Määrä). Lisäksi valitsen esitystavaksi Show Values As (Näytä arvot muodossa) -välilehdeltä % of Column Total (Prosenttia sarakkeen summasta).

Lisäksi voin muuttaa desimaalien määrää Number Format (Lukumuotoilu) -painikkeella. Excel käyttää prosenttimuotoiluissa oletuksena kahta desimaalia, mutta usein 1 tai ei yhtään desimaalia riittää käytännön sovelluksiin.

Tutkimusraportissa taulukot ja kuviot pistävät ensimmäisenä silmään raporttia selailtaessa. Tämän takia taulukot kannattaa viimeistellä huolellisesti. Pienen viimeistelyn jälkeen valmis taulukko voisi näyttää seuraavalta:

Graafinen esittäminen

Excel Mac ei sisällä seuraavassa kuvattavaa PivotChart toimintoa, vaan kaikki kaaviot luodaan Insert-välilehdeltä.

Lukumäärät ja prosentit sisältävä taulukko on selkeä ja havainnollinen eikä vaadi graafista havainnollistamista. Jos kuitenkin haluan graafisen esityksen, niin voin toteuttaa sen Pivot-kaaviona (PivotChart). Jos olet pivot-taulukon alueella, niin työkalunauhassa on Pivot-taulukkotyökalut (PivotTable tools). Pivot-taulukkotyökalujen Analyze (Analysoi) -välilehdellä on PivotChart (Pivot-kaavio) -toiminto. Huomaa, että pivot-kaavio on pivot-taulukon graafinen esitystapa, jossa on mukana kaikki pivot-taulukon arvokentät. Koska kaaviossa ei saa olla yhtäaikaa lukumääriä ja prosentteja, niin PivotChart täytyy tehdä pivot-taulukosta, jossa on ainoastaan lukumäärät tai ainoastaan prosentit.

Pienen viilauksen jälkeen saan tässa artikkelissa esitetystä ensimmäisestä pivot-taulukosta seuraavan pivot-kaavion:

Numeroarvojen tilalle olen pivot-taulukkoon kirjoittanut vastausvaihtoehdot ’Tyytymätön’ jne. Kaaviosta olen poistanut selitteen (Legend) ja kaavion otsikon (Chart Title). Kaavioon olen lisännyt vaaka-akselin otsikon. Pivot-kaavion reunoilla voi olla kenttäpainikkeita. Jos haluan kenttäpainikkeet pois kaaviosta, niin valitsen pivot-kaaviotyökaluista Analyze (Analysoi) -välilehdeltä Field Buttons -Hide All (Kenttäpainikkeet – Piilota kaikki).

Pivot-kaavio on siinä mielessä tavallinen Excel-kaavio, että kaikki tavanomaiset kaavioiden muotoiluun liittyvät toiminnot ovat käytettävissä. Pivot-kaavio poikkeaa tavanomaisesta kaaviosta siinä, että sen sisältö päivittyy, jos pivot-taulukon sisältöä muutetaan.

Jos haluat oppia/kerrata Excel-kaavioiden luomiseen ja muotoiluun liittyvät perustaidot, niin käy läpi itseopiskelupaketti kaavio.xlsx.

Usein kysyttyä

Kysymys: Haluaisin vielä työstää pivot-taulukkoani, muta en näe kenttäluetteloa (Field List)?

Vastaus: Kenttäluettelo on näkyvillä vain jos valittuna on pivot-taulukon alueella oleva solu. Jos pivot-taulukon alueella olevan solun valitseminenkaan ei auta, niin valitse PivotTable Tools  – Analyze – Field List (Pivot-taulukkotyökalut – Analysoi – Kenttäluettelo).

Kysymys: Olen muuttanut aineistoani, mutta muutokset eivät näy pivot-taulukossa. Mitä minun pitäisi tehdä?

Vastaus: Valitse pivot-taulukkotyökalujen Analyze (Analysoi) -välilehdeltä Refresh (Päivitä). Jos tämäkään ei auta, niin määrittele pivot-taulukon pohjana oleva aineisto uudelleen Analyze (Analysoi) -välilehden Change Data Source (Muuta tietolähde) -toiminnolla.

Kysymys: Kyselylomakkeellani oli monivalintakysymys (vastaaja sai valita tarjotuista vaihtoehdoista useampiakin). Miten saan valintojen määrät taulukoitua samaan taulukkoon?

Vastaus: Oletan, että olet tallentanut monivalintakysymyksen vastaukset neuvomallani tavalla (1 Tilastoaineiston tallentaminen). Tee pivot-taulukko. Raahaa monivalintakysymykseen liittyvät muuttujat yksi kerrallaan Values (Arvot) -ruutuun. Jos aineistossa valintoja on merkitty ykkösillä ja muut solut ovat tyhjiä, niin on saman tekevää käytätkö laskentaperusteena summaa (Sum) vai määrää (Count). Näin saat taulukon, jossa on koottuna eri vaihtoehtojen valintojen lukumäärät. Voit vielä valita näytetäänkö lukumäärät vierekkäin vai allekkain vaihtamalla rivi/sarakeotsikoiden Values (Arvot) -palikan paikkaa.

Kysymys: Olen kysynyt samaa mielipideasteikkoa käyttäen mielipidettä moneen eri asiaan. Miten saan eri asioihin liittyvien mielipiteiden lukumäärät tai prosentit samaan taulukkoon?

Vastaus: Jokaisesta asiasta täytyy tehdä oma pivot-taulukkonsa. Tulokset voit kopioida ja yhdistää uuteen taulukkoon. Liittäminen pitää tehdä arvoina (Values). Parhaiten liittäminen sujuu Office-leikepöytää käyttäen. Lisätietoa liittämismuodoista ja Office-leikepöydästä blogissani Olennaiset Excel-taidotUusi taulukko voi pienen tyylittelyn jälkeen näyttää esimerkiksi seuraavalta:

koonti

Huomaa, että prosentteja esitettäessä täytyy myös ilmoittaa kokonaismäärä (n), josta prosentit on laskettu.

Kysymys: Miksi taulukossa ei näy tyhjien (blank) arvojen lukumäärää?

Vastaus: Taulukkoon lasketaan Values (Arvot) -ruudun muuttujan arvojen lukumäärä niissä soluissa, jotka vastaavat vastaavalla rivillä riviotsikoissa olevaa arvoa. Tyhjien kohdalla ei ole arvoja, joten taulukossa ei näy mitään lukumäärää. Jos haluat taulukon, jossa on laskettu puuttuvien arvojen lukumäärä, niin käytä Values (Arvot) -muuttujana sellaista muuttujaa, jolla ei ole puuttuvia arvoja (esimerkiksi ensimmäisen sarakkeen juokseva numerointi).

Kysymys: Miten voin laskea prosenttiosuuden luottamusvälin?

Vastaus: Lue artikkeli Prosenttiosuuden luottamusväli.

Seuraavaksi

Muuttujalla voi olla liikaa arvoja siinä mielessä, että edellä kuvattu taulukointi tuottaa liian pitkän tai epähavainnollisen taulukon. Esimerkiksi ikä-muuttujan taulukointi sellaisenaan ei liene tarkoituksenmukaista. Ikä-muuttujan arvot kannattaakin luokitella sopiviin ikäluokkiin taulukon luettavuuden parantamiseksi. Artikkelista 4 Muuttujan arvojen luokittelu voit lukea lisää.

Lue myös artikkelini Pivot-kaaviot, jossa käsittelen pivot-taulukoita lähtien liikkeelle pivot-kaavioista.