torstai 13. joulukuuta 2012

Sormiharjoitus Twitter-datalla, osa 2

Käsittelin pari viikkoa sitten yksinkertaista Twitter-datan analyysiä, joka muodostui siinä määrin yleisömenestykseksi, että ainakin neljä ihmistä innostui sen perusteella tekemään vastaavanlaisen visualisoinnin ja tästä hurmioituneena ajattelin jatkaa saman aiheen tiimoilta.

Tällä kertaa minulla on tavoitteena kertoa miten on mahdollista kerätä ja visualisoida käyttäjän kuukausittaiset twiittimäärät. Innostuin ideasta viime aikoina Twitter:ssä liikkuneen ilmiön kautta, jossa kerrotaan omista Twitter:iin liittymispäivistä (kts. Twitter Birthday -palvelu). Etenkin, että monet kertoivat liittyneensä jo useita vuosia sitten, mutta aktivoituneen palvelun käyttämiseen vasta viime aikoina, herätti minussa kiinnostuksen siitä milloin itse aloin todella Twitter:ä käyttämään.

Ajatus, joka minulle heräsi oli kerätä talteen kaikki twiittini ja ryhmitellä ne kuukausittaisiksi twiittimääriksi. Eli esimerkiksi niin, että joulukuussa 2011 twiittasin 98 kertaa ja tammikuussa 2012 84 kertaa. Halusin nähdä datan piirrettynä yksinkertaisesti visualisoituna pylväsdiagrammiksi, jossa pystyakseli kuvaa twiittien määrää ja vaaka-akseli aikaa. Näin pystyisin näkemään missä vaiheessa olen esimerkiksi saavuttanut twiittimäärissäni nykyisen tason ja millä tavoin tuo twiittien kuukausitten määrä on vaihdellut eri aikoina.

Mutta nyt itse asiaan!



Kuten aikaisemmasta harjoituksesta opimme on All My Tweets -palvelun kautta mahdollista ladata käyttäjän kaikki twiitit aina
30003200:een viimeisimpään twiittiin saakka (Note: Twitter limits the number of tweets returned to 3,200). Itselläni tämä raja ei tule täyteen, joten edelleen palvelu palvelee käyttötarkoitustani.

Aloitan kuten aikaisemmassakin esimerkissäni eli kopioin henkilökohtaisen All My Tweets -sivuni sisällön Sublime Text -editoriin leikepöydän kautta. Analyysia tehdessäni minulla oli Twitter:n mukaan 1930 twiittiä ja tarkistin, että tämä lukuarvo täsmäsi Sublime Text -editoriin kopioituneiden rivien määrää. (Kuva 1)

Otin twiitit talteen All My Tweets-palvelusta yksinkertaisesti maalaamalla kaikki twiitit ja kopioimalla ne leikepöydän kautta käyttämääni Sublime Text -tekstieditoriin. (Kuva 1)
Edellisellä kerralla halusin poistaa kaikki aikaleimatiedot datasta, koska en halunnut niitä mukaan avainsanapilveen. Tällä kertaa motivaationi on sen sijaan muokata päivämäärätietoa niin, että siitä poistetaan reduntantti tieto twiitin lähetyspäivästä, koska haluan niputtaa twiittejä yhteen nimen omaan kuukauden ja vuoden perusteella. All My Tweets -palvelusta kopioitujen twiittien perässä oleva aikaleima on muotoa "Dec 10, 2012", joten tavoitteeni on muuttaa tekstijono muotoon "Dec, 2012". Tällä tavoin kaikki joulukuussa 2012 lähetetyt twiitit saavat yhteisen nimittäjän, jonka avulla ne on myöhemmässä vaiheeessa mahdollista visualisoida.

Teen muunnoksen jälleen säännöllisten lausekkeiden avulla. Käyttämäni etsi ja korvaa koodi näyttää seuraavalta:

([A-Z]{1}[a-z]{2}) ([0-9]+), ([0-9]{4})

ja

\1, \3

Korvaan siis merkkijonon jossa on kolme merkkiä joista ensimmäinen on kapitaali, välilyönti, numeroita yksi tai useampi, pilkku, välilyönti, sekä neljä numeroa siten, että poistan päivämäärää kuvaavan osuuden. (Kuva 2)

Etsi ja korvaa toiminto löytyy CMD/CTRL + SHIFT + F näppäinyhmistelmän takaa. Voit myös tarkistaa, että vasemmasta alanurkasta löytyvä hakutuloksien määrä vastaa twiittiesi määrää. (Kuva 2)
Tähän asti toteutus on edennyt hyvin samalla kaavalla kuin edellisessäkin harjoituksessa. Data hankittiin All My Tweets -palvelusta ja sitä muokattiin hieman sopivampaan muotoon Sublime Text -editorissa. Tässä kohtaa esimerkit lähtevät kuitenkin eri poluille, koska aikaisemmassa harjoituksessa veimme tekstimuotoisen datan suoraan Sublime Text -editorista Wordle:en. Nyt datan muokkaamista tulee kuitenkin jatkaa antamalla sille lisää rakenteisuutta, koska on tarpeellista pystyä osoittamaan missä kohtaa twiitin tekstisisältö loppuu ja tieto twiitin lähetysajankohdasta alkaa.

Tein twiitin tekstisisällön ja aikaleiman erottamisen askelsarkainmerkillä (tabulator). Tämä siitä syystä, että esimerkiksi pilkun tai puolipisteen käyttäminen ei ole oikein mielekästä, koska ne ovat normaalisti twiiteissä/tekstissä käytettäviä merkkejä ja erotinmerkin tulee olla sillä tavalla yksikäsitteinen, ettei sitä voida sekoittaa sisältöön. Eli oletan, ettei twiittien sisällöissä ole askelsarkaimia. (Kuva 3)

Poistan päivämäärien edessä olevan välilyönnin ja korvaan sen askelsarkain merkillä, jota käytän erottamaan tekstisisältö- ja aikasolut toisistaan. (Kuva 3)
Nyt data on valmis tallennettavaksi (CMD/CTRL + S). Tallennettaessa kannattaa käyttää .csv-tiedostopäätettä. CSV-tiedosto on rakenteista dataa sisältävä tiedostoformaatti, jossa data on useimmiten eroteltu toisistaan pilkuilla, mutta pilkkujen sijaan on mahdollista käyttää oikeastaan mitä tahansa erotinmerkkiä (kts. DSV). CSV-tiedoston avaaminen onnistuu kätevimmin LibreOffice-taulukkolaskentaohjelmassa, joka mahdollistaa tiedostossa käytettävän erotinmerkin manuaalisen valitsemisen. (Kuva 4)

Erotinmerkiksi on valittu "Tab". Muut asetukset toimivat usein sellaisenaan, mutta ongelmia voi syntyä esimerkiksi merkistökoodauksen kanssa, jolloin "Character set" asetusta voi yrittää muuttaa valintojen ISO-8859-1:n ja UTF-8:n välillä. (Kuva 4)
Tiedoston avaamisen jälkeen huomasin, että muumien twiittien aikaleimat eivät olleet tulleet oikein erotelluiksi, mutta korjasin ne tässä vaiheessa käsin, koska kyse oli vain muutamasta kymmenestä virheellisestä esiintymästä. (Kuva 5)

Dataa kannattaa selata silmämääräisesti läpi, jotta huomaa tämänkaltaiset ilmiselvät virheet. (Kuva 5)
Korjattuani virheet tallensin tiedoston uudelleen LibreOfficessa ja tehdessäni näin valitsin, että haluan muokata asetuksia (Kuva 6). Tämä mahdollistaa sen, että voin valita mitä erotinmerkkiä jatkossa käytetään (Kuva 7). Tämä on tärkeää, koska seuraavaksi käyttämämme Excel ei osaa käsitellä oletuksena kuin puolipistein eroteltua dataa.

"Edit filter settings" -asetus antaa seuraavassa vaiheessa mahdollisuuden muokata .csv-tiedoston asetuksia. (Kuva 6)
Tärkeää on valita "Field delimeter" -kohtaan puolipiste (;) ja Text delimeter -kohtaan lainausmerkki ("). (Kuva 7)
Nyt minulla on siis hyvin jäsennelty .csv-muotoinen tiedosto, joka sisältää taulukkodataa missä on rivejä twiittieni määrä ja kaksi saraketta. Ensimmäinen sarake pitää sisällään lähettämäni twiitin sisällön ja toinen tiedon siitä minä kuukautena ja vuotena twiitti on lähetetty.

Seuraavaksi avaan tiedoston Excel:ssä. Mikäli huomaat ongelmia ääkkösten kanssa voit yrittää vaihtaa kuvassa 7 näkyvän Character set valinnan ISO-8859-1:ksi (twiittien tekstisisällöllä ei tämän harjoituksen kannalta ole kuitenkaan merkitystä). Kuitenkin jos kaikki meni hyvin näet aika- ja twiittitiedot eroteltuina omiin soluihinsa myös Excel:ssä. Mitä meidän täytyy tässä vaiheessa tehdä on lisätä datan alkuun yksi rivi, johon lisäämme solujen kuvauksen. (Kuva 8)

Sarakkeille on annettava nimet, jotta voimme käsitellä niitä jatkossa. Nimi sijoitetaan lisäämällä alkuun uusi rivi ja sijoittamalla rivien ensimmäisiin sarakkeisiin jokin saraketta kuvaava tunniste. (Kuva 8)
Nyt dataa on mahdollista analysoida Excel:ssä. Tämä onnistuu helposti Pivot-taulukoiden avulla. Pivot-taulukon luominen onnistuu kätevimmin osoittamalla kenttää A1 ja valitsemalla valikosta Tiedot -> Pivot. Pivot-taulukot mahdollistavat taulukkomuotoisen datan jäsentämisen ja yhteenkokoamisen. Eli esimerkiksi tässä tapauksessa Pivot-taulukko mahdollistaa, että voimme niputtaa twiitit aika-sarakkeen perusteella yhteen. Myös LibreOffice:sta löytyy Pivot-toiminnallisuus, mutta olen kokenut, että Excel:n vastaava on hieman näppärämpi käyttää. (Kuva 9)

Luotuani Pivot-taulukon huomasin, ettei taulukkoa ollut mahdollista järjestää ajallisesti laskevaan tai nousevaan järjestykseen, koska kuukausien lyhennetyt nimet eivät järjestäyty tietokoneen avulla millään yksinkertaisella logiikalla kronologiseen järjestykseen. Aikamääreet olisi voinut muuntaa tässä kohtaa johonkin toiseen muotoon, mutta päädyin tekemään järjestämisen käsin, koska kyse oli kuitenkin vain muutamasta kymmenestä data-alkiosta. Käsin järjestetty data on nähtävillä kuvassa 9 oikealla puolella ja alkuperäinen Pivot-taulukko vasemmalla.

Vasemmalla vihreän otsakkeen alla näkyy Pivot-taulukko. Oikealla sama data, mutta jäsennettynä ajallisesti nousevaan järjestykseen. (Kuva 9)
Nyt data on helppo visualisoida Excel:stä löytyvillä kaavio-komponenteilla. Tämä onnistuu maalaamalla haluttu data – tässä tapauksessa kuvassa 9 näkyvä oikeanpuolimmainen data – ja lisäämällä soveltuvan valikon kautta taulukkoon kaaviokomponentti. Kaaviokomponentiksi valitsin pylväsdiagrammin, koska se on melko luonnollinen tapa kuvata tämänkaltaista dataa määrällistä dataa, jolla on kaksi ulottuvuutta (määrä ja aika). (Kuva 10)

Twitter-käyttöni trendi on ollut selkeästi kasvava. (Kuva 10)
Näinkin monivaiheisen toteutuksen tekeminen oli kuitenkin melko yksinkertaista ja ei ehkä vienyt minulta kuin 15-minuuttia. Tämä kertoo toki, että olen melko sopeutunut käyttämään eri sovellusten parhaita puolia datan käsittelyssä ja tiedän valmiita polkuja, joiden avulla pääsen haluamaani lopputulokseen. Uskon kuitenkin, että jos vain suuntaviivat ovat selvillä niin samankaltaiseen lopputulokseen pääseminen ei ole kovin suuri tekninen haaste.

Jatkokehitysideoitakin keksin matkan varrella kuten, että pylväät voisivat pitää sisällään tiedon siitä kuinka moni twiiteistä kulloisenakin kuukautena on ollut uudelleentwiittaus (retweet).

Kuulen taas mielelläni jos joku on onnistunut toteuttamaan omasta Twitter-datastaan samanlaisen analyysin. Tai mielelläni pullautan tarvittaessa tällaisen sellaisesta kiinnostuneelle.

Muokkaus: 14.1.2013

Tässä Anna Emilia Alentolan versio:
https://twitter.com/anniemilia__/status/282175539157028865

Ei kommentteja:

Lähetä kommentti