Näytetään tekstit, joissa on tunniste Excel. Näytä kaikki tekstit
Näytetään tekstit, joissa on tunniste Excel. Näytä kaikki tekstit

maanantai 27. huhtikuuta 2020

Älyjääkaappi raportoi käytöstään

Ostin vuoden 2018 alussa Boschin älyjääkaapin. Älykkääksi sen tekee mobiilisovellus, jonka kautta voi säätää jääkaapin ja pakastimen lämpötilaa, saada hälytykset liian pitkään auki olevasta ovesta sekä mahdollisuus katsoa kahdella kameralla mitä jääkaapissa on. Viimeksi mainittu on näppärä ominaisuus ruokakaupassa. Usein on vaikea muistaa, montako maitotölkkiä kaapissa olikaan. Toisaalta pelkistä kamerakuvista on vaikea nähdä koko sisältöä eikä se tietenkään kerro, onko maidon viimeinen käyttöpäivä mennyt jo umpeen.

Bosch käyttää HomeConnect-tekniikkaa, joka ei ole erityisen avoin. Siihen kuitenkin löytyy IFTTT-rajapinta, jonka kautta jääkaappi pystyy liittymään muihin sovelluksiin. Kirjoitin aiheesta aiemmin.

Koronaviruksen aiheuttaman eristäytymisen vuoksi tuli mieleen katsoa, millaista dataa jääkaappi on vuosien mittaan tuottanut. Rajapinta on toiminut luotettavasti ja kirjannut Google Docsin laskentamalliin lähes 20 000 riviä. Niiden analysointi ei tosin ollut ihan helppoa. Seuraavassa muutama idea, joita voi soveltaa muissakin tehtävissä.

Ensimmäinen työ on saada data Exceliin, sillä Google Docs ei sovellu isojen datamäärien pyörittelyyn. IFTTT oli tuottanut toistakymmentä HomeConnectFridgeLog(n) tiedostoa, missä n oli järjestysnumero. Tiedostot piti ladata omalle levylle, avata Exceliin ja kopioida manuaalisesti peräkkäin samalle laskentamallin sivulle. Otin mukaan vain datan vuoden 2019 alusta, jolloin analysoitavaksi jäi 13 632 riviä dataa.

Tästä analyysi alkaa.
IFTTT kirjoittaa avaukset omassa muodossaan, mikä ei ole suoraan Google Docsin eikä Excelin käyttämä päiväysformaatti. Se vaati melkoisen määrän manuaalista käsittelyä ja joukon tarkkaan suunniteltuja etsi-korvaa-toimintoja ennen kuin päivämäärä sekä tuntiarvo oli saatu poimittua omiin sarakkeisiinsa.

Jos merkkijonon pituus olisi ollut vakio, olisi voinut helposti poimia päivän numeron ja kellonajan. Vaihteleva pituus pakotti kikkailuihin. Tehtävää helpotti se, että pilkku, at ja kaksoispiste olivat kaikki erilaisia erottimia. Samat erottimet eri paikoissa olisivat mutkistaneet prosessia merkittävästi.

Tein ensin etsi-korvaa kuukausien nimille ja vaihdoin ne numeroiksi (January -> 01). Päivän poimiminen osoittautui vaikeimmaksi, se piti tehdä useassa osassa. Perässä oleva pilkku helpotti korvausta ( 1, -> 01,), mutta tällöin piti huomioida myös numeron edessä oleva välilyönti. Ensimmäisellä yrityksellä 31, vaihtui muotoon 301, mikä ei tietenkään ollut tarkoitus.

Kun päivämäärä oli vakiomuotoinen, vuoden poimiminen omaan sarakkeeseen oli helppoa ja koska siinä oli vain kaksi arvoa, ne olisi voinut täyttää ilman funktioitakin.

Kellonaika oli yllättävän visainen ongelma, sillä AM/PM-muunnos ei ollut ihan mekaaninen. Periaatteessa PM tarkoittaa kellonaika +12 h, mutta ensimmäinen tunti puolenpäivän (klo 12:00) jälkeen ei olekaan 0 PM vaan 12 AM.

Lopulta data oli kuitenkin halutussa järjestyksessä Excelissä.

Sarakkeet oikeilla paikoillaan
kkvv-sarake oli tarpeen x-akselin arvoja varten. Näistä olikin sitten jo helppo laatia Pivot-taulukko ja laskea eri kuukausien avausmäärät yhteen.

Jossain tapauksissa on helpompaa siirtää data csv-muodossa ensin Wordiin ja tehdä perusmuokkaus siellä esimerkiksi erotinmerkkejä muuttamalla. Vasta sen jälkeen data palautetaan Exceliin joko tiedostona tai leikepöydän kautta.

Jääkaapin oven avaukset kuukausittain.
Maaliskuun 2020 aiheuttama piikki näkyy selvästi. Sen kohdalla 1160 avausta ovat 31 prosenttia suuremmat kuin maaliskuun 2019 avaukset (885 kertaa). Todellinen nousu on vielä suurempi, sillä etätyöpakko alkoi vasta kuun puolivälissä.

Kun data oli kerran olemassa, sitä oli helppo pyöritellä. Toinen grafiikka näyttää avaukset kellonajan (tunti) mukaan:

Jääkaapin oven avaukset tunneittain.
Ei ole mitenkään yllättävää, että kuvaajan muoto täsmää esimerkiksi mobiilidatan hitauteen, joskin huippu osuu pari tuntia aikaisemmaksi.

Tämän jälkeen olisi helppo laskea korrelaatio kuukausittain jääkaapin avauksen ja painon (Withings-älyvaaka) tai askelten (Fitbit-askelmittari) kanssa. Korrelaatio olisi epäilemättä vahva. Tulos voisi kuitenkin olla sen verran masentava, että jääköön analyysi tähän.

Jääkaapin dataesimerkki on muistutus siitä, miten dataa syntyy nykyään kaikkialla, ja millaisia yllättäviäkin laskelmia sen perusteella voidaan tehdä.

tiistai 26. tammikuuta 2016

Fitbit-data Exceliin

Fitbit-aktiivisuusranneke laskee päivässä kertyneet askeleet, kerrokset ja paljon muuta tietoa liikkumisesta. Nettipalvelusta tai älypuhelimesta voi sitten katsella miten tavoitteet ovat täyttyneet.

Fitbitin oma Dashboard-näyttö
Mutta entä jos haluaa katsoa tietoja kauemmas taaksepäin? Kojelauta näyttää vain 28 päivän tiedot. Log-välilehdeltä voi valita melkein minkä ajanjakson tahansa, esimerkiksi vuoden:

Log-välilehti näyttää vaikka koko vuoden.
Graafista näkyy, miten mittauksissa on keväällä tauko, koska laitteen malli vaihtui. Analyysitoiminnot ja mittauksen säilyminen yhdenmukaisena on valmistajan näkökulmasta mainio keino sitoa asiakas oman tuotteen käyttäjäksi.

Entä miten tiedot saisi ladattua itselle, jos vaikka lopettaa juuri tämän rannekkeen käytön? Onneksi Fitbitissä on mahdollisuus ladata tiedot itselle. Toiminto löytyy asetuksista (Data Export) ja näyttää lupaavalta. Tiedot saa ladattua joko CSV- tai XLS-muodossa.

Voiko päiväysten valinta olla oikeasti näin hankalaa?
"Your data belongs to you!", sivu hehkuttaa -- aivan oikein. Tämä on sitä MyDataa. Tiedot liikkumisestani ovat minun, eivät Fitbitin omaisuutta. Asiakkaana minulla pitäisi olla oikeus ladata ne itselle ja jopa siirtää palvelusta toiseen.

Mutta sitten tulee ongelma: Custom-kohtaan syötettävä aikaväli voi olla enintään 31 päivää. Mitä ihmettä? Miksei koko vuotta kerralla?

Todellinen riesa paljastuu, kun alkaa syöttää päivämääriä kenttiin. Alku- ja loppupäivän voi valita kalenterinäytöstä, mutta ne eivät voi olla yli 31 päivän päässä toisistaan, eikä arvoja voi edes tyhjentää! Tammikuun siirto menee helposti, mutta helmikuu vaatii kolme klikkausta: alkupäiväksi valitaan 31.1., sen jälkeen loppupäiväksi 28.2. ja lopuksi alkupäiväksi siirretään 1.2.

Maaliskuu on vielä vaikeampi, koska loppupäivää ei voi siirtää suoraan 31.3. vaan ajat on syötettävä paloissa. Ensin alku 28.2., sitten loppu 28.3., sitten alku 1.3. ja lopuksi loppu 31.3. Tämän täytyy olla tahallista kiusantekoa! Jos päiväyksiin on helpompi tapa, en ainakaan itse keksinyt sitä. Jatkossa täytyy ladata data aina kuukauden loppuessa.

Data avautuu Exceliin, mutta maa-asetukset ovat amerikkalaiset, joten tulos on tällainen:

Kuukauden data vihdoin Excelissä.
Kun yksittäiset kuukaudet on kopioitu allekkain Exceliin, dataa on vielä puhdistettava. Pilkkujen poisto tuhaterottimista käy helposti etsi-korvaa-komennolla, samoin desimaalipisteen vaihto pilkuksi. Olisi ehkä helpompi ladata tiedot CSV-muodossa ja tehdä etsi/korvaa tekstinkäsittelyllä.

Päiväysten kääntäminen suomalaiseen muotoon käy helpoiten Text to columns -toiminnolla. Samalla toiminnolla vaihtuvat (sarake kerrallaan) korvausten jälkeen tekstiksi tulkitut numerot takaisin numeroiksi ja edessä on prosessin palkitsevin vaihe: analyysi omalla ohjelmalla.

Seuraavissa esimerkeissä tulokset ovat sivuseikka, koska dataa puuttuu keväältä. Oleellista on oivaltaa helppous ja mahdollisuudet, joita palvelusta ladatun oman datan analysointiin liittyy. Tässä työssä Excelin pivot-taulukko on mainio apuväline. Se tunnistaa automaattisesti kuukaudet ja parilla klikkauksella tuloksena on taulukko ja graafi:

Askeleet kuukausittain.
Piirretään samaan graafiin kaksi eri muuttujaa:

Askelten määrä ja kerrokset.
Askelten ja kerrosten määrällä on suora korrelaatio, joskin kesäkuukausina se vähenee. Tulos kertoo, että työpaikalla on kävelty portaita hissin käyttämisen sijaan.

Sykeanturin tulokset eri aktiivisuusmääristä -- raskasta liikuntaa on kovin vähän:

Sykealueet.
Lasketaan vielä askelten jakauma 10 000 tarkkuudella. Se käy helpoiten lisäämällä datasivulle ylimääräinen sarake, jossa on kaava =INT(askeleet/10 000) ja käyttämällä sen jälkeen =COUNTIF-funktiota:

Askeljakauma päivittäin.
Kahdeksana päivänä askelmäärä on ylittänyt 30 000 ja kerran peräti 40 000.

keskiviikko 5. joulukuuta 2012

Itsenäisyys loukkaa Skydriven käyttöehtoja

Microsoftin Skydrive-pilvessä on hauska ominaisuus: siihen voi helposti tehdä yksinkertaisen kyselylomakkeen, jonka vastaukset siirtyvät automaattisesti Excel-taulukkoon jatkokäsittelyä varten.

Excel-kyselyn luominen löytyy Create-valikon viimeiseltä riviltä.
Aloin tehdä lomaketta, jossa kysyttiin henkilön nimi, osoite, vuoden tärkein juhla ja muuta sellaista. Lomaketta tallennettaessa tuli virheilmoitus käyttöehtojen rikkomisesta: Remove questions or words requesting personal information.

Hmm... jostain syystä Microsoft ei salli henkilötietojen kysymistä. Mutta mitä järkeä on tehdä nettiin lomakkeita, jos niissä ei saa kysyä nimeä tai muita henkilötietoja?

Ikävä kyllä Skydrive varoittaa asiasta vasta lomakkeen tallennuksen yhteydessä, eikä se silloinkaan kerro, missä kentässä on ongelma. Poistin nimikentän, mutta virheilmoitus ei hävinnyt. Poistin osoitekentän, sama tulos. Lopulta mitään henkilökohtaista ei ollut enää jäljellä -- mutta silti varoitus pysyi ennallaan. Mitä ihmettä?

Monien kokeilujen jälkeen jäljitin ongelman vuoden tärkeimpään juhlaan. Vastausvaihtoehdot joulu, juhannus, pääsiäinen ja vappu olivat Skydriven mielestä OK, mutta itsenäisyyspäivä ei kelvannut.

Lopulta jäljellä oli vain yksi kenttä ja yksi vastaus:

Itsenäisyys loukkaa Skydriven käyttöehtoja.
Ahaa! Lomakkeessa ei saa esiintyä sanaa itsenä -- ei sen paremmin selityksenä, kentän nimenä kuin vastausvaihtoehtonakaan.

En ymmärrä syytä, joten voin vain arvailla. Microsoftilla on kiellettyjen sanojen lista, ja joku suomea huonosti osaava on lisännyt sinne kyseisen sanan -- mutta miten se liittyy henkilötietoihin? Miksei listalla ole sellaisia itsestäänselvyyksiä kuin nimi, puhelinnumero tai osoite?

Kiellettyjä, täysin harmittomia sanoja voi olla muitakin. Johtopäätös: jos teet kyselylomaketta Skydriveen, kokeile lomakkeen tallentamista jokaisen kentän lisäämisen jälkeen. Avainsanan löytäminen valmiista lomakkeesta voi olla työlästä ja turhauttavaa.

Tein lopulta nettiin aivan toisenlaisen lomakkeen, jonka voi täyttää osoitteessa https://skydrive.live.com/survey?resid=CD142BD908031492!734&authkey=!AHRI0OIl5nwiX2c

Lomakkeilla ilmoitetut tiedot tulevat näppärästi Excelin web-versioon, jota voi käyttää Skydrivessa ilmaiseksi:

Lomakkeen vastaukset näkyvät suoraan Excel-mallissa.
Toinen vaihtoehto on käyttää Google Docsia, joka tietääkseni ei sensuroi kysyttäviä tietoja. Googlen vastaava toiminto on monipuolisempi, mutta hankalampi käyttää. Kenttätyyppejä on enemmän ja valmiina on mm. palautelomakkeissa tarpeellinen pisteytys -- jopa kaksiulotteisena taulukkona. Lisäksi jokaisen vastauksen ensimmäiseen sarakkeeseen tallentuu päiväys ja kellonaika. Pakollisten kenttien kohdalle ilmestyy automaattisesti pieni punainen tähti.

Kaiken kaikkiaan hyödyllinen ominaisuus! Miten näitä lomakkeita ennen tehtiin, kun ei ollut pilviä...?

Lisäys 11.12.2012: Ilmeisesti on niin, ettei lomake-ominaisuutta tarjota suomalaisille käyttäjille. Minulla se näkyi, koska olen rekisteröitynyt Live-palveluun kauan sitten ja valinnut maaksi Iso-Britannian. Kyseessä voisi olla jokin suomalaisen tekstin ja englantilaisen palvelun välinen konflikti. Tämä pitää tarkistaa uudelleen sitten, kun lomakkeet näkyvät myös suomalaisille käyttäjille.