Dato i Excel til dato i mySQL

Excel brukes til å utveksle data, også data som burde deles i andre formater. En tid tilbake fikk jeg noen databasetabeller, delt opp i fem excel-dokumenter (slik at den som gav meg dataen kunne maile den). Jeg ville (naturlig nok?) ha dette over i mySQL. Av det lærte jeg et par triks.

1. Datoer i Excel må krangles over i mySQL, alternativt kan du gjøre dette:
Lag en ny kolonne for dato.
Legg inn følgende formel i første celle:
=TEKST(A1, YYYY-MM-DD)
(min versjon av Excel er på Norsk, hvis du har en utenlandsk versjon skal TEKST skrives som TEXT)

Så kommer enda en utfordring. For å duplisere formlen ville jeg vanligvis ha klikket og dratt det lille krysset nede i høyre hjørne av cellen, helt ned til nederste rad i kolonnen. Men kolonnen er et titalls-tusen rader lang! Å klikk og dra tar jo evig tid.

Ved å dobbeltklikke på dette likke krysset, så auto-kopieres formelen helt ned til siste rad. Nice.
Lagre som CSV.

2. Excel lagrer CSV-dokumenter med rare tegnsett.
For å importere til mySQL må tegnsettet være noe mySQL skjønner. Ved å bare large som CSV gikk dette i ball for meg. For å enkelt få kontroll på dette åpnet jeg den nylagde CVS-filen i Textmate og lagret den igjen, men da ved å endre tegnsettet til UTF-8 og linjeskift til LF (begge de anbefalte valgene i Textmate).

Vips, importer til mySQL
Jeg bruker Sequal Pro som GUI til mySQL. Her er det en egen «Import…» kommando under «File..».

var partifarger = {} // krangle kan vi gjøre siden

Partier har farger, og det gjør det lettere for oss alle å skille dem fra hverandre. Det er lurt. Problemer finnes også, partiene henter seg nye farger og andre farger, bryter ut i nye partier og trenger flere farger. Så gir media partiene tydelige farger for å lage lekker grafikk med alle fargene, men som ikke er de helt samme som partiene selv valgte.
Så, det er rom for en krangle for de som vil. De som heller vil ha en hashtable i javascript for rask look-up for å fargelegge ting med partier i, her er en sånn:

var partifarger = {} // aka new Object()
partifarger['A'] = '#da383f'; //'#fd0000' fra logo
partifarger['ALP'] = '#f6f6f6'; // finnes ikke lenher
partifarger['B'] = '#008140'; // samme som Sp
partifarger['DNF'] = '#f6f6f6'; // finnes ikke lenger. Det Nye Folkepartiet het også det liberale forlepartiet og nye venste.
partifarger['FFF'] = '#f6f6f6'; // finnes ikke lenger
partifarger['FrP'] = '#393d87';
partifarger['H'] = '#0f658d';
partifarger['Kp'] = '#286d6d'; //'#f6f6f6' // finnes ikke lenger, stilte dog til valg i 2011 ...
partifarger['KrF'] = '#efae52';
partifarger['NKP'] = '#e40202'; // fra logo
partifarger['RV'] = '#a61e20';
partifarger['SF'] = '#f6f6f6'; // finnes ikke lenger
partifarger['Sp'] = '#008767'; //'#008140'
partifarger['SV'] = '#bb234a'; //'#cf0036'
partifarger['SVf'] = '#f6f6f6'; // finnes ikke lenger
partifarger['TF'] = '#f6f6f6'; // finnes ikke lenger
partifarger['Uav'] = '#f6f6f6'; // finnes ikke lenger
partifarger['V'] = '#81b45f'; //'#006c6e'
// de under her hadde NRK med i 2011-valget, selv om de ikke kom inn
partifarger['DEMN'] = '#003366'; // demokratene er ikke inne
partifarger['PP'] = '#000000'; // pensjonistpartiet er ikke inne
partifarger['MDG'] = '#3b7346'; // miljøpartiet de grønne er ikke inne
partifarger['R'] = '#7c2629'; // rødt er ikke inne

Stort sett basert på NRKs fargevalg fra lokalvalget 2011.

fra web/rss/xml/data til google spreadsheets

Aj-aj. Her er et google spreadsheet trick som hadde gått meg hus forbi. Dette er gull for alle som jobber med regneark, uansett hva det skulle være av arbeid. Før eller siden trenger du å importere data fra web/rss/xml eller liknende inn i ditt arbeide. Her er det som må være den enkleste måten å gjøre det på:

Tabell fra html

=importHtml(URL, element, index)
=ImportHtml("http://en.wikipedia.org/wiki/Demographics_of_India"; "table";5)

bruke xpath
=importXML("URL","XPath expression")
=importXML("http://www.google.com/search?q=live", "//a[@class='l']/@href")

flere

=importData("URL")
=GoogleReader(URL)
=GoogleReader ("http://graphics8.nytimes.com/services/xml/rss/nyt/HomePage.xml", "items title", "false", 1)
=GoogleFinance("symbol", "attribute")
=GoogleFinance("GOOG", "price")
=GoogleLookup("entity", "attribute")
=GoogleLookup("Italy", "population")

Gull!

Spillanmeldere – kritiker eller entusiast? Eller begge?

Webscraping anser jeg som et metodisk verktøy som burde brukes mer. Ikke fordi det er den beste måten å gjøre ting på, lagt der i fra, men fordi det er enkelt, nyttig og relativt raskt. Et verktøy for scraping jeg har lekt med er scraperwiki.

Ikke bare kan du lage scrapers (skrapere?) med scraperwiki, du kan også lage views (presentasjonslag). Etter litt leking kom jeg fram til dette:

NRK P3s spillanmeldelser bruker 3 av 6 terningsider til 75% av sine anmeldelser. De har kun brukt terningkast 1 én eneste gang, og da til å feilkategorisere en film. Hva betyr det?

Betyr det at spill, som en relativt ny kulturform, trenger evangelister og entusiaster til å pushe spillets utmerkede egenskaper på oss? Anmelder de ikke de dårlige spillene? (jeg har selv spilt flere spill jeg kunne gitt terningkast 1 og 2 de siste årene, skriver ikke P3 om disse?) Har spillanmeldere noen insentiv for å vurdere «snilt»? Eller har de lave forventninger?

Tja, jeg som gjorde dette av metodisk interesse får vel innse at kvantitative mål ikke besvarer disse spørsmålene, men; det viser at terningkast ikke hverken er normalfordelt eller jevnt distribuert.

.. kanskje jeg får en jevn distribusjon hvis jeg gjør dette på popmusikk eller amerikanske filmer?