Uvod

Pozdrav svima,

danas ćemo se pozabaviti analizom, konsolidacijom i vizualizacijom kompleksnih setova podataka koji su loše formatirani i pripremljeni. Nešto poput te rečenice, od puno podataka doći ćemo do upotrebljivih podataka. “Danas ćemo od neurednih podataka dobiti korisne grafove.”

Ja sam Matija, i zovu me stručnjakom za Excel (ali stvarno, barem jednom tjedno me netko nazove da pita nešto o Excelu). Analiza podataka nešto je što radim već prilično dugo, a danas i ja prelazim na novu razinu. Pitoni, pande i jupyteri, i vodim i vas sa sobom.

Ovo je svojevrsni nastavak tutoriala za Jupyter notebook koji možete pogledati ovdje, ali danas ćemo se uhvatiti seta podataka koji ima gotovo bilo tko s web stranicom, Google Analytics podaci.

 

Korišteni podaci

Prije nego krenemo, kratko objašnjenje seta podataka koji smo koristili.

17.4.2020. pokrenuli smo nekoliko kampanja kako bi promovirali razvoj tehnologije za autonomni autić Mini Teslu.

Ovaj članak koristi podatke zaključno s 27.4.2020.

To nam daje 11 dana podataka (not great, not terrible).

Najveća prednost koju imamo s tim kampanjama, i zašto možemo napraviti ovakvu analizu i dati određene podatke vani je da s kampanjama za promociju projekta Mini Tesla ništa ne prodajemo. Nema skrivenog cilja. Napravili smo nešto super što su popratili i mediji, i to je to, hvalimo i promoviramo Roberta, Acu i Kristijana.

Landing page za sve oglase, osim Twittera je veliki članak za čije čitanje po Read-o-Meteru treba 17 minuta i  34 sekunde. Osim toga, članak bavi prilično tehničkom temom, i sadrži nekoliko videa.

Za marketing i analytics stručnjake: Tijekom tog perioda kampanje su mijenjane i optimizirane, dodavani su oglasi, period je prekratak itd itd.
Svrha ovog članka nije da se pohvalimo rezultatima (ma da su super), nego da nekome tko ima problema s analizom i vizualizacijom olakšam život u budućnosti (link na GiT repozitorij očekujte kada objavimo nastavak na ovaj članak).

    Dohvaćanje podataka

    Ovo smo mogli napraviti s API komponentom za Google Analytics, ali nismo htjeli komplicirati, cilj je prikazati što se može s neurednim setom podataka, ne izraditi aplikaciju. Podaci su skinuti kao najširi mogući set:

    Behaviour → All Pages → Secondary Dimension (source / medium)

    U duhu jednostavnosti i primjenjivosti, doslovno su skinute .csv datoteke za svaki od dana u skupu. Zašto baš tako? Zašto nismo sve samo pregledali u Google Analyticsu? Google Analytics je super, i može vam detaljno pokazati što se događalo na vašoj stranici.

    Ali ako želite usporedbu nečega iz Analyticsa s podacima kampanja iz npr. Facebooka, za to ćete iskoristiti nešto treće. Postoje automatizirana rješenja , ili možete sve to provući kroz tablični kalkulator (Excel, Sheets ili nešto treće).

    Ako već koristite nešto treće, zašto to ne napraviti negdje gdje ćete moći sve odmah izračunati i nacrtati grafove za vizualnu provjeru ili prezentaciju. Kao bonus još ćete eliminirati ljudske greške ili krivo formatiranje čelija.

    Za sve to upotrijebit ćemo Juypter notebook (i pandas). Ok, ajmo pogledati na što liče ti podaci.

    Kakav divan nered. I imamo jedanaest takvih.

    Probajte samo zamisliti koliko bi vam trebalo da svih 11 ručno spojite po ključu Page + Source / Medium. Pogotovo sa svim fbclid URLovima.

    fbclid je parametar koji se dodaje na URL kada dolazi s Facebooka. Ako malo progooglajte, naći ćete teorije da se koristi za Facebook Analytics, da time zaobilaze cookie ali i teorije zavjere. Za sada, nema 100% kompletnog odgovora.

    (fbclid se može maknuti kao parametar, ali preferiram imati sve podatke u izvornom obliku, kada nešto uklonimo zbog “lakoće korištenja” ipak postoji šansa da će nam to nešto trebati za 3 mjeseca ili 3 godine.) Ako ga ipak želite ukloniti link je tu.

    Pandas će nam to sve pospajati u rekordnom vremenu, bez greška. Na kraju imamo tablicu: 1249 redova × 90 stupaca.

    Ovo je prva izlazna točka, ako ćete dalje sami raditi na .csv datoteci, barem znate da je spojena kako treba.

    Također, da imamo vremenski slijed, preimenovali smo sve stupce:

    • Page – pg
    • Source / Medium – sm
    • Pageviews – pv
    • Unique Pageviews – upv
    • Avg. Time on Page – atop
    • Entrances – et
    • Bounce Rate – br
    • % Exit – ex
    • Page Value – pval

    Svi stupci su imenovani kao [kratica]-[datum]

    pv-20200425 su Pageviews datuma 25.04.2020.

    Cilj analize

    Ok, sada imamo sve podatke, trebali bi definirati što na zanima. Današnji cilj bit će izvući odgovore na nekoliko pitanja:

    1. S koje mreže (i kampanje / seta kampanja) su se ljudi najviše zadržali na članku (nadamo se čitajući ga)?

    2. Da li postoji neka veza između prikazivanja i provedenog vremena (najvjerojatnije ne)

    3. Da li išta od skupljenih podataka korelira i ako da, zašto? Da li su i uzrok jedan drugom ili samo koreliraju?

    4. Koji je smisao života?

    5. Koja platforma je najbolja za širenje ideja

    6. Di da potrošimo ostatak budgeta? 

    Prilagodba podataka

    Prije nego išta radimo s podacima, mogli bi ih i urediti da ne naiđemo na probleme kasnije.

    1. Sve nepostojeće vrijednosti prepisat ćemo s nulama.

    2. Broj pageviewova i unique pageviewa prebacit ćemo iz decimalnih (float) i u cijele brojeve (int). Jer je nemoguće da imamo jedan i po page viewa. PageView se broji kada je netko došao na stranicu i učitao analytics kod.

    3.Average time on page ćemo iz formata hh:mm:ss prebaciti u sekunde.

    Originalni podaci:

    Nakon prilagodbe:

    Sada kada imamo podatke s kojima je relativno lako raditi, možemo pogledati odakle je sve dolazio promet na stranicu u zadanom razdoblju, i to sa samo jednom linijom koda.

    Cijeli naš promet u par redaka. Naoružani tom informacijom, možemo to podijeliti u nekoliko kategorija:

    Facebook

    • fb / post
    • m.facebook.com / referral
    • facebook / paid_traffic
    • facebook.com / referral
    • fb / single_image
    • l.facebook.com / referral
    • fb / video
    • lm.facebook.com / referral
    • web.facebook.com / referral

    Google

    • google / cpc
    • youtube.com / referral
    • google / organic

    LinkedIn

    • linkedin.com / referral
    • lnkd.in / referral

    Twitter

    • t.co / referral

    Oni kojima se sada nećemo baviti:

    • (direct) / (none)
    • cosmo / cosmo
    • ad-review-tool.twitter.biz / referral
    • s3.amazonaws.com / referral
    • loomen.carnet.hr / referral
    • alenn.ai / referral
    • github.com / referral
    • mail.google.com / referral
    • bing / organic
    • hexometer.com / referral

    Sad imamo i način kako podijeliti tu ogromnu tablicu da dobijemo što želimo:

    Facebook kampanjama smo pri kreaciji dali parametre za URL:

    • fb / post
    • facebook / paid_traffic
    • fb / single_image
    • fb / video

    Pa ćemo sve stavke s tim source medium-om razmatrati kao rezultate Facebooka.

    Za Google uzimamo:
    • google / cpc
    • youtube.com / referral

    Za LinkedIn uzimamo:
    • linkedin.com / referral
    • lnkd.in / referral

    Za Twitter uzimamo:
    • t.co / referral

    Da, refferal bi se mogao odnositi na puno stvari. Ali u ovom slučaju, Facebook kampanje su tagirane, YouTube refferal je opravdan ako je netko našao link u opisu videa, a LinkedIn i Twitter nisu imali aktivnosti osim kampanja. Ako je netko i kliknuo na organski link u ovom slučaju i s ovim ciljevima možemo to pripisati kampanji.

    Podjela i što izvodite iz čega ovisit će o tome što promovirate, koji su vam ciljevi i što namjeravate s dobivenim odgovorima. Za naš specifičan slučaj vrednujemo kanale.

    Da ne ponavljamo puno sličnih tablica, usredotočit ćemo se na Facebook, da vidimo kakav slijed prolaze podaci. Ostale kanale ćemo uključiti na kraju kada bude vrijeme za rezultate. Cijeli slijed svakog vidjet ćete uskoro kada objavimo cijeli notebook. (testni podaci bit će uključeni, sada hoće li biti naši realni podaci ili ćemo napraviti neki mockup, morat ćete pogađati)

    Ali idemo redom.

    Prvo smo izdvojili apsolutno cijelu listu s Facebooka, organski i plaćeno. (ako ikada budemo htjeli napraviti dodatne analize)

    Nakon toga, iz postojećeg skupa ostavili smo samo retke koji se odnose na stranice koje u Page sadrže “mini-tesla”. Naglašavam “sadrže” a ne “da jesu” jer uključujemo i fbclid URLove.

    I onda iz tog skupa izdvajamo u novi sve one za koje znamo da pripadaju plaćenim kampanjama. 

    Do sada smo slagali i filtrirali podatke, sad je vrijeme da ih konačno počnemo oblikovati tako da nam mogu odgovoriti na pitanja.

    Facebook rezultate podijeliti ćemo u dva podskupa:
    • Video kampanje čiji je cilj bio velik volumen prikazivanja
    • Web traffic kampanje kojima je bio cilj dovesti zainteresirane ljude na blog post

    Uklonit ćemo kolone koje sadrže podatke:
    • Entrances
    • Bounce rate
    • % Exits
    • Page value

    Iako su to bitni podaci za optimizaciju, nama u ovom slučaju nisu bitni, jer ih ne uspoređujemo s prošlim vremenskim razdobljem, niti ih je korisno uspoređivati dan za dan.

    Malo čudnije stvari moramo izvesti sa sekundama, što je puno lakše napraviti u Pythonu nego u nekom tabličnom kalkulatoru. Kako nas zanima prosječno vrijeme svih korisnika stranica koji su došli s pojedinog kanala, moramo sve korisnike sumirati i dobiti prosječno vrijeme svih korisnika. Naravno, prosječno vrijeme ne možemo samo zbrojiti, jer vrijeme tako ne funkcionira.

    Za svaki red računamo ukupno vrijeme tog specifičnog slučaja (Page, Source / Medium) po formuli.

    Ukupno vrijeme = Prosječno vrijeme * Pageviews

    To nam daje ukupno vrijeme po svakom specifičnom slučaju. Tako dobivene podatke možemo zbrojiti, da dobijemo informaciju ukupnih pageviewa i ukupnog vremena, koju sada opet možemo pretvoriti u prosječno vrijeme provedeno na stranici, ali sada obuhvaća sve slučajeve.

    Za Facebook web traffic kampanje:

    Za Facebook video kampanje

    I kada to još malo uredimo da bude čitljivo, dobijemo sljedeće podatke.

    Za Facebook web traffic kampanje:

    Za Facebook video kampanje:

    I sada kako sam i obećao, takve tablice za svaki od ostalih kanala:

    YouTube:

    LinkedIn:

    Twitter:

    koji je malo kasnio s pokretanjem jer imaju blesava i prestroga pravila vezana za metafore. I zato i ima landing stranicu samo za sebe.

    I za kraj, dodajemo realne podatke s Facebooka, Google Ads, LinkedIn Ads i Twitter Ads.

    Facebook web traffic:

    Facebook video:

    YouTube:

    LinkedIn:

    Twitter:

    Ok sada imamo brdo informacija, ajmo to nacrtati da vidimo kako stoje pojedini kanali (stavit ćemo na grafove sve informacije koje imamo).

    Facebook web traffic:

    Odmah možemo primjetini nekoliko stvari.

    Za ovaj prikaz bi bilo idealno iskoristiti dvije različite skale za vizualizaciju podataka (to ostaje za sljedeći članak).

    Impresije i reach koreliraju, ali reach (do koliko ljudi smo došli) je povezan s impresijama (koliko puta smo prikazali oglas) tako da nas to ne iznenađuje.

    Ima dana kada su ljudi koji su došli s Facebooka jednostavno bili nezainteresirani.

    Facebook video:

    I po podacima, a sada i potvrđeno vizualno, Video kampanje nisu napravile gotovo ništa. Prosječno vrijeme na stranici je zanemarivo.

    Youtube:

    Za YouTube imamo malo više linija, jer koristimo i informacije koliko je ljudi pogledalo video do postotaka (25%, 50%, 75%, 100%), ali ti brojevi koreliraju i ne pokazuju nam ništa što već nismo znali.

    LinkedIn:

    LinkedIn je neuredan zbog nekoliko faktora.

    Prvi je što smo u tom vremenskom razdoblju mijenjali kampanje tri puta, prva iteracija je bila promocija posta, s koje smo prešli na video, pa na engleski post, te smo se na kraju odlučili za LinkedIn article, koji ima dobar rezultat s brojem ljudi koji njega pogledaju, ali ih manji broj dođe na web stranicu.

    Twitter:

    Twitter je prilično kasnije startao, pa ćete nešto relevantnije vezano za njega moći vidjeti tek u sljedećem članku.

    Sami po sebi ovi grafovi ne govore nam puno, ali znamo da nas zanima vrijeme provedeno na stranicama vezanima za mini Teslu. Pa ćemo njih i pogledati.

    Prvo usporedbu prosječnog vremena provedenog na stranici:

    Ukupnog vremena provedenog na stranici.

    I ulaza na stranicu s različitih kanala:

    Rezultati i zaključci

    Na početku svega, postavili smo nekoliko pitanja na koja sada i možemo dati odgovore.

    1. S koje mreže (i kampanje / seta kampanja) su se ljudi najviše zadržali na članku (nadamo se čitajući ga)?
    2. Da li postoji neka veza između prikazivanja i provedenog vremena (najvjerojatnije ne)?
    3. Da li išta od skupljenih podataka korelira i ako da, zašto? Da li su i uzrok jedan drugom ili samo koreliraju?
    4. Koji je smisao života?
    5. Koja platforma je najbolja za širenje ideja?
    6. Di da potrošimo ostatak budgeta?

    S koje mreže su se ljudi najviše zadržali na članku?

    Facebook Web Traffic kampanje pokazale su se najbolje, zbog kombinacije nekoliko faktora. Prvi je svakako velik reach, i mogućnosti detaljnog targetiranja.

    Da li postoji neka veza između prikazivanja i provedenog vremena?

    Kao što smo i pretpostavili, nema direktne poveznice između broja prikazivanja i provedenog vremena (barem je nema još, ponovo ćemo to pogledati nakon nekoliko dana).

    Osim same publike, u promociji ovakvog članka veliku ulogu igra i tajming, da li osoba koju to i zanima baš sada ima 20 minuta vremena za Mini Teslu.

    Da li išta od skupljenih podataka korelira i ako da, zašto?

    Što točno korelira i zašto vidimo negdje i vizualno, ali direktan odgovor ćemo dati u sljedećem članku, gdje ćemo pronađene korelacije dobiti izračunima, ne samo vizualnim pregledom.

    Koji je smisao života?

    Tu nam Jupyter neće puno pomoći, ali brinite se za sebe i radite stvari koje vas usrećuju.

    Koja platforma je najbolja za širenje ideja?

    Ovisno o ideji i materijalu koji imate dostupan.

    Sa super videom definitivno je dobra ideja isprobati YouTube, dok vam Facebook nudi dobru i preciznu kontrolu publike. U najgorem slučaju, isprobajte, analizirajte neki kraći period te onda odlučite.

    Di da potrošimo ostatak budgeta?

    Ako vas zanima, mi smo se odlučili samo ugasiti Facebook Video jer stvarno nema učinka, dok s ostalima nastavljamo. U svakom slučaju ćete VI dobiti još bolje podatke kada napišemo drugi dio ovog članka.

    Zaključak članka

    Možda najveća prednost digitalnog oglašavanja danas je to što je apsolutno sve mjerljivo, ili out-the-box ili se može nekako mjeriti.

    To vam generira zbilja velike setove podataka, s nekoliko izvora koje je ponekada teško analizirati objektivno. Tu vam ovakve analize podataka mogu uvelike olakšati život, jer na jednom mjestu konsolidirate informacije više izvora.

    Ovaj članak će se nastaviti, s dodatnim mogućnostima analize, te ćemo na kraju svega podijeliti GiT repozitorij na kojem ćete moći isprobati slične svati sa svojim podacima.

    Ako imate puno podataka s kojima ne znate što ćete, i trebate analizu i odgovore na neka pitanja, slobodnom nam se javite.

     

    Pazite na sebe i radite što vas veseli.