Pandas, QGis en de opcentiemen in Vlaanderen

Ik wilde wat meer leren over Pandas, de data-analytics tool die je kan (leren) gebruiken in Python, en had daarvoor een dataset nodig die niet té groot was, zodat ik ook kon controleren wat ik deed in Excel.

Daarvoor heb ik de open data van de Vlaamse overheid over de opcentiemen gebruikt.

Van de ene opzoeking kwam de andere vaststelling, en uiteindelijk heb ik genoeg cijfers en graphics over de data gemaakt dat ik er ineens maar een kleine presentatie van gemaakt hebt.

Je vind deze op slideshare :

Gebruikte tools :
* Pandas en Python
* Bokeh voor sommige graphs
* Keynote voor de presentatie in te maken
* QGis voor het maken van de mapping van de opcentiemen naar een grafische kaart op slide 5

Er is wat tijd in gekropen, maar al bij al heb ik weeral enkele dingen bijgeleerd !

Now per Keyword: Today Chart (and taking into account your languages)

Twitalytics has been updated some more:

  • For each keyword you now have a ‘Today” chart that shows you the tweets of today (normalised per hour)
  • The “Today” chart only shows the tweets per hour for your language selection (the 60 day chart counts all tweets in all languages)
  • In your “MyProfile” page you can see your list of keywords with nr of tweets and now also with nr of users per keyword.

I expect that the list of keywords/tweets/users will move to the “Reports section” in the future, with additional graphs (pie charts, hmmm !).

Some examples of trendlines… #proximus, #telenet and #mobistar (dutch post)

Voorbijee 60 dagen tweets voor telenet
Licht stijgende trendlijn 

Telenet heeft een stijgende trendline. Het volume per dag is al aardig te noemen. Een van de dingen die me opviel als ik de tweets doornam was dat er tweets bijzijn over het afzeggen van een afspraak, bevestigd door telenet maar dat de onderhoudspersoon in kwestie toch voor de deur staat. Wijst waarschijnlijk op een administratief probleempje. Je merkt ook snel als er problemen zijn met het programmeren van een digicorder… 🙂

Merk ook op dat dit geen hashtag keyword is (#telenet heeft een gemiddelde van 5.1 tweets per dag) maar gewoon telenet (gemiddelde van 36 tweets per dag). Vangt dan ook alle tweets over telenet op, ook diegene zonder hashtag.

Proximus heeft een licht stijgende trendline. Het volume van tweets is verwaarloosbaar. Gemiddelde van 2.1 in mijn lokale database.

Mobistar heeft ook weinig tweets, maar wel meer dan proximus – mobistar heeft een gemiddelde van 5.8 tweets per dag (in mijn lokale database). Deze trendline daalt lichtjes. Sentiment in de tweets is redelijk negatief, vooral te wijten aan het iphone tekort en de bestelprocedure.

Trendlines for JQPlot are working !

At last I’ve got trendlines working ! And wouldn’t you just know it, it was just a small change that needed to be done, but the documentation is a bit old for jqplot it seems.

Mind you, I completely understand – if I understand correctly, this is just one programmer who is creating and maintaining this. His project is quite a lot bigger than mine, and I already have trouble following up and dealing with all the bugs my users find in a timely manner, let alone implement the (welcome!) suggestions on how to improve the site.

Anyway, for the record: to get trendlines to work in jqplot, you need to:

  • include the plugin in your code
  • set somewhere in your javascript part the line $.jqplot.config.enablePlugins = true;

And that’s it ! Any further configuration can be done inside the series section of the config.

#NMBS twitter analysis for the last 30 days.

A picture says a thousand words, they say. So here is one that shows how many tweets there were for #nmbs the last 30 days. For those of you outside Belgium, the nmbs is the flemish name for the Belgian Trainroad company. #SNCB is the french name for the same company.

(I pulled this graph and the tweet list below from my Twitalytics program that I’m working on…)

last 3O days of twitter activity for the hashtag #nmbs

With this picture you immediately notice how May 26 seems especially active. Let’s see what sort of secondary keywords people where using that day in conjunction with #nmbs:

#nmbs(69) #fail(13) #news(5) #schaarbeek(3) #fb(3) #bxl(3) #breaking(3) #bommelding(3) #terroralert(2) #noord(2) #eu(2)

We can already deduce from these keywords (and my memory of the day) that there was a bomb alert that put the whole train system out of order for several hours.

People were not happy. Out of the 69 tweets for that day about the keyword #nmbs, 13 include the secondary keyword #fail. That’s 18% percent of the tweets that can immediately be considered negative ! It’s actually more, if you check the tweets themselves.

Here’s a small extract of what the people were tweeting (this is in flemish mostly):

32398 + willemsstijn (Stijn Willems) – 2010-05-26 17:38:36

Chaos in Brussel #NMBS

32401 + crispkat (Katrien Crispeyn) – 2010-05-26 17:12:48

In Leuven dan geen personeel voor trein richting Heverlee #fail #nmbs

32404 + mhitschf (Maureen Hitschfeld) – 2010-05-26 17:09:39

What I dislike the most is the lack of information! All trains delayed and no explanation at all! #NMBS

32407 + dubtje (Jan Debonnet) – 2010-05-26 17:05:38

Als de #nmbs nu een beetje zijn best doet kan ik m’n aansluiting missen en nog een uurtje ronddraaien in brugge.

32411 + jacobvb (Jacob) – 2010-05-26 17:00:59

zucht … #nmbs #fail AGAIN! http://tweetphoto.com/24050442

32413 + miespaties (Marlies Deforche) – 2010-05-26 16:52:40

En zo een MIVB bus ontdekt v Bxl Noord nr Vilvoorde, #58 #nmbs #bommelding #hoppa

32415 + avaneech (AnneliesVaneechoutte) – 2010-05-26 16:50:39

Wat een slagveld #brusselnoord #nmbs

32416 + jnloco (Jelle Loquet) – 2010-05-26 16:39:38

RT @isabelleminnebo: Bxl Noord is nu een beetje zoals de Titanic: veel te veel mensen, agressiviteit, paniek en iedereen wil hier gewoon WEG! #bxl #nmbs #noord

32418 + jnloco (Jelle Loquet) – 2010-05-26 16:39:01

Niettegenstaande bommelding in Schaarbeek, thuisgeraakt met een minieme vertraging van 15′. #gelukzak #nmbs

32422 + bartnelis (Bart Nelis) – 2010-05-26 16:34:21

Hallo!! Mogen de reizigers voor turnhout ook eens weten waar ze aan toe zijn ? Kloothommels #nmbs #fail

It’s nice to have a timeline view on how many tweets per day. Graphs do tell more than just words and numbers…It actually gave me some more ideas to implement !

[Update:  I have added a demo page to my little app that follows the #nmbs keyword]

Sparklines are cool !

Recently I was looking to add some graphics to my python CherryPy application, and I discovered sparklines.

Sparklines are small graphical displays of numerical data that help you to get a timeline view. Their size makes it easy to add them in phrases or to compare different graphs quickly. Below are some examples:

Examples of the sparkline graphics

This javascript jquery plugin is simplicity itself :

  1. Add the js script to your html page and add a jquery function
  2. Generate some numbers between a span tag
  3. And give that span a jquery function classname

And bob’s your uncle !

Go discover it for yourself !