O’Reillyn hienon blogiohjelman kautta ilmaiseksi saamani kirja kertoo tyydyttävästi kaikenlaista, mitä Matlabia ja R:ää kammoksuva haluaa tietää! Tässä tapailen mietteitä kirjasta, ja onko siitä mihinkään.
Kirja
Pythonille on vuosien saatossa kehittynyt muutama oikein kehittynyt numeeriseen laskentaan erikoistunut kirjasto. On NumPyä, jolla Pythoniin tuodaan tehokkaat matriisit ja vektorit Matlab-tyyliin. Kyseiset vektorit venyvät vielä vähän enemmän joka suuntaan kuin esikuvansa, joten herkkua on. Toinen hieno kirjasto on pandas, joka tuo R:n ja luultavasti muiden tilastokielten datakehysolioita Pythonin käpisteltäväksi. Pandasin eräs kehittäjistä, Wes McKinney, sitten päätti kirjoittaa tilastoista ja data-analyysistä aloittelijoille sopivan kirjan!
Python for Data Analysis on makoisa lukuelämys, jos kokonaisuutta tulkitsee yhtenä “työkaluna” kielen ja irtokirjastojen sijaan. Matlabin sijasta käynnistelläänkin IPython ja otetaan numpy-vektorit haltuun. Tässä kirjassa esitellään kaikki tämä työkalun näkökulmasta. Pythonia on syytä osata entuudestaan, tässä mennään tyrät rytkyen kohti erikoissovelluksia!
Ensin esitellään pieni showcase, mitä Pandasilla ja Numpyllä voi tehdä, ja sitten siirrytään työkalumaiseen esittelyyn. Ensin opetetaan IPythonin salat näppäinyhdistelmiä myöten, jotta interaktiivinen komentokehotetyöskentely sujuu. Wes esittelee sitten hyvää matemaattista ja maalaisjärkistä notaatiota hyödyntäen Numpyn ja Pandasin oleelliset kikat, jonka jälkeen meillä on kasassa hyvä peruspaketti perusjuttuihin, jotka minulle riittävätkin hyvin.
Data-analyysiin liittyy oleellisesti datan hankkiminen, josta on ilahduttavasti iso lukunsa. CSV, HTML, JSON, Web 2.0-API:t, tietokannat… vain kuvan ja äänen informaation lukeminen taisi jäädä käsittelemättä paketista. Sinänsä kokenut koodaaja osaa datansa muovailla haluttuun muotoon, mutta McKinney hyödyntää ja esittelee parhaansa mukaan NumPyn ja Pandasin sisäänrakennettuja luku- ja parserointityökaluja. Pyöräähän ei sovi aina uudelleenkirjoitella. Muilta osin Wes hyödyntää Pythonin standardikirjaston kirjastoja, kuten kuuluukin. Visualisoinnista on myös oiva luku.
Loput luvut kirjasta sisältävätkin sitten Pandasin syventymistä eri tilastotieteiden teorioiden hyödyntämiseen. Asia, josta minulla ei kamalasti ole tietoa. Kirjassa ei esitellä myöskään tilastotieteiden peruskäsitteitä sen kummemmin, eli sataprosenttisen hyödyn saadakseen tulee tuntea perusjutut datakäpistelyistä. Siitä huolimatta yli puolet kirjasta lähtee tyydyttävän hyvin liikkeelle, ja joillekin yksinään IPython-luku palkitsee koko kirjan arvon. Jos tykkää toteutella numeerisia menetelmiä alusta alkaen, niin Numpy+IPython haastaa Matlabin aika hyvin, kun nopeudessa ei ilmeisesti synny isoja eroja (Numpy on kuitenkin LAPACK/BLAS/vastaavan rinnakkaistetun Fortranin kova hyödyntäjä).
Kokonaisuudessaan kirjaa on helppo suositella Python-koodaajille, jotka hakevat hyviä ideoita ja kaipaavat sitä kaivattua terää startup-ideoihinsa. Tämä, ja joku yliopiston tilastotiede-101. Suuri osa menestyksekkäistä webbipalveluista vaatii jonkinlaista data-analyysiä kaverikseen, eikä Matlab- tai R-ohjelmia aivan niin usein näe selaimen kyljessä juoksemassa!
Nyt samma po engelska, jos ne O’Reillyn kirjamiehet eivät osaakaan suomea…
Briefly in English
Wes McKinney’s “Python for Data Analysis” is a remarkably tidily written introduction to data analysis and its various bits. Especially those disliking Matlab or R for a reason or another can find a very cosy home within Python and the great ecosystem.
That ecosystem has produced a fast vector/matrix library NumPy that has clever features over Matlab’s offerings. Some time after that a great derivation for data analysis came, the “pandas” library. Built on top of NumPy, pandas has a focus on context. And McKinney is one of the developers of pandas, and he decided to write a book!
The way this book covers tools such as IPython, NumPy, pandas and matplotlib all weighs on interactive usage, it is uncanny. It doesn’t take long to realize all the neat applications in non-interactive program code. And that’s of course where many ideas requiring data analysis happen. Cool web 2.0 services need quite a bit of that these days and somehow I don’t imagine Matlab or R being used there in the active backend. Python fits the bill perfectly.
The basic or intermediate knowledge of Python programming is assumed and the more advanced chapters of the book (about half of it) get easier if you possess some basic knowledge on statistics. I don’t, but the introductory chapters alone make this book a very beginner-friendly indeed.