sobota 26. dubna 2014

Čištění dat v Google refine

Podklady pro předchozí úkol, tj. kalorické hodnoty sladkých nápojů, jsem získávala přímo v supermarketu a následně jsem je přenesla do počítače. Sice si mohu být jistá jejich správností, ale byl to příliš zdlouhavý proces. Nyní jsme začali pracovat s již zpracovanými hodnotami získanými z těchto stránek.
Spolužáci z uvedených stránek všechna data vytáhli a my jsme tak dostali rozsáhlou databázi potravin a jejich kalorických hodnot.
Získaná data však ještě nebyla ve stavu, abychom s nimi mohli pracovat. Museli jsme je vyčistit v Google refine. Zde jsou nejdůležitější pokyny jak na to:

Dříve než z otevřeného souboru v Google refine vytvoříme projekt, zadáme Character encoding na UTF-8, tím se nám text bude zobrazovat správně v českém jazyce.
Nepotřebné sloupce odstraníme – Edit columnremove this column.
 

Některé hodnoty máme uváděné v gramech – pro odstranění písmena „g“ – Edit cells transform replace(value," g","").
Následně potřebujeme sjednotit hodnoty, které jsou jinak zapsané, ale ve skutečnosti jsou stejné (například „-“ a „0“). U příslušného sloupce vyberu Facettext facet – v levém okně vyberu hodnotu „-“ u ní vyberu edit a změním na 0.
Změnit čárku mezi čísly na tečku – Edit cellstransform replace(value,",",".")
Převést hodnoty ve sloupcích na číselné hodnoty Edit cellscommon transforms to numbers (čísla se obarví na zeleno).

U sloupce Unit je potřeba sjednotit hodnoty, které jsou stejné – Facettext facetCluster –  zaškrtnu marge v případě, kdy hodnoty vyjadřují to samé. U možnosti Keying Function  můžu vybrat fingerprint nebo ngram-fingerprint. Fingerprint funguje tak, že jednotlivá písmena (či číslice) v názvu jsou seřazena podle abecedy (či podle hodnoty) a tedy názvy, u kterých je toto seřazení stejné, jsou vyhodnoceny jako potenciálně totožné. V ngram-fingerprint jsou hodnoty vyhodnocovány na základě opakovaného sledu po sobě jdoucích slov (či čísel a slov). Můžeme zvýšit Ngram Size, abychom od sebe některé hodnoty rozlišili.

Pro vymazání toho, s čím nechceme dále pracovat (v našem případě vše, co není nealkoholický nápoj) – Facet text facet contains(value,"Nápoje nealkoholické") – dojde k přeměnění hodnot na true a false.
Facettext facet – vyberu vše false a následně to vymažu ve sloupci Alledit rowsremove all matching rows.