XD blog

blog page

2014-07


2014-07-27 Les DataFrame en Python

J'utilise les DataFrame quasiment quotidiennement pour manipuler les données. Je n'écris plus de code pour lire ou écrire des données. Je n'écris plus de fichiers plats pour récupérer les données sous Excel. J'écris beaucoup moins de boucles. Je manipule des fichiers de plus d'un millions de lignes. J'utilise beaucoup moins Excel. Les premières opérations qu'on applique sont toujours les mêmes et elles sont résumées ici : DataFrame et Matrice (autre mise en forme).

2014-07-22 Madame La Borne du Vélib, soyez plus explicite.

J'ai rarement besoin de parler à une borne velib. Sauf ce soir où je pose mon passe navigo sur la borne pour finalement m'apercevoir que le pneu avant est crevé. Je laisse donc le vélo en attendant que le voyant soit vert de nouveau. Quelques minutes plus tard, je reprends un vélo mais le plot me le refuse. Après trois essais, je décide de m'adresser à la borne pour voir les options qu'elle me propose. Elle me dit que mon vélo est parti et que je ne peux pas emprunter de nouveau.

Là, je m'agace un peu. Le vélo est là, je le vois. Je signale donc que je l'ai rendu et que quelqu'un doit vérifier mes dires. Quand ? Je ne sais pas. J'essaye de conctacter quelqu'un ainsi que me le propose la borne. Une barre de complétion se remplit de vert puis une petite croix rouge apparaît. Je me doute que ça ne va pas marcher. Pourquoi ? Là encore, c'est l'inconnu. Bref, on propose de payer un trajet. D'accord, allons-y puisque c'est apparemment ma seule chance de pédaler ce soir. On me propose d'utiliser une carte bancaire (au fond de mon sac) ou mon pass navigo. Je choisis la seconde option... Refusée car j'ai un vélo suspicieux dans mon historique. Je capitule. Les messages d'erreurs brillent plutôt dans l'ellipse. Mais je reconnais, en bon codeur quotidien, que ceux-ci tiennent souvent du premier concert des Rolling Stones que du dernier de la tournée.

Me voilà réduit à prendre le métro. Je vais quand même éviter Madeleine ce soir. Les SDF jouent à cache cache avec les policiers. Ils errent. Leurs chiens comme leurs maîtres ne voient pas la lumière du jour de la journée. Enfin, je le suppose d'après les indices laissés sur le sol. J'aimerais bien comprendre pourquoi cette station semble être un point de rassemblement. Bref, j'ai faim, il est presque minuit et si j'avais eu un vélo, je serais déjà place de clichy et vous n'auriez pas eu à lire ce blog.

Je vais relire Au bonheur des Ogres. Les machines remplacent les guichets mais j'attends celle qui jouera Monsieur Malaussène. Peut-être un jour verra-ton l'application Malaussène pour SmartPhone, pour se passer les nerfs quand les autres vous abreuvent de messages d'erreurs incompréhensibles.

Post scriptum : la remise de mon vélo a été confirmée le lendemain matin. J'ai repris un vélo le soir même bien que j'ai failli retomber dans le même piège que la veille. Le vélo que je convoitais n'avait plus de chaîne mais c'est sans doute ce qui l'a sauvé d'une fin moins glorieuse (9000 Vélib' volés en un an).

2014-07-19 Data can be huge, don't panic!

Data can be huge. Even if you reduce it, even if you sample, it seems there is no end to it and every look into it seems so slow! So slow! Hundred of millions of rows to read every time you try to find something. That's the kind of issues I ran into when I first met data from Internet. It was almost six years ago. I realize now there might be better ideas but, back then, I used SQLite to avoid storing everything in memory because I could not. 3 Gb, even 6 Gb could not hold in my laptop memory six years ago. However, switching from flat files to SQL table is painful. Writing the schema is painful, at least to me. So I did a function which guesses it from any flat file and... well, I used some tricks, a couple are described here: Mix SQLite and DataFrame. Whether they are useful is totally up to you.


more...

2014-07-12 Apprendre à programmer aux enfants : Le monde de Reeborg

Scrach est un outil très connu pour apprendre à programmer aux enfants. J'ai toujours du mal à m'y mettre car la programmation y est visuelle. Je ne sais pas si c'est le meilleur moyen d'apprendre. Les légos Mindstorms proposent un environnement équivalent et j'ai arrêté car le programme dépasse vite la taille de l'écran. Je suis tombé aujourd'hui sur cet outil qui permet de coder en python le déplacement d'un robot : Reeborg. L'objectif est très simple : il faut programmer les déplacer d'un robot pour cheminer dans une grille avec différents objectifs. L'outil existe dorénavant dans une version française. L'auteur tient un blog Only Python qui parle beaucoup de Reeborg. Pour les parents, pendant que vos enfants programment, vous pouvez vous amuser à résoudre ce genre de problème : pycontest.

2014-07-11 Why Python?

Python recently became very popular. It can do pretty much everything. The language is very slow but extensions can be fast because their implementation can be done in C++. Python is also very popular at schools as mentioned in this paper: Python is Now the Most Popular Introductory Teaching Language at Top U.S. Universities. This page also references many schools using Python: Schools using Python.

It might be difficult to find a perfect setup for your own use. There are usually many libraries doing the same thing. If you do not know Python, it might be difficult to navigate through the big repository pypi. However, there exists distribution which does everything for you: WinPython. We can argue R is a better fit or Julia might be easier to start with. However, I think there are two reasons why Python is a good choice:

The language Python is one of the most simple. It is also very modular. It has many extensions to do what the language does not do. Extensions can be easily written in C++. As a result, Python's ecosystem is moving fast. And maybe that's why it became very popular.

2014-07-05 Intermittents, publicité sur internet, Big Data et long tail

Il est difficile d'échapper aux articles traitent de la grève des intermittents du spectacle. Je suis tombé sur ce billet Intermittents : Quand la culture «justifie tous les égoïsmes» qui s'interroge sur le déficit de l'UNEDIC. Selon l'article, le régime des intermittents est responsable d'une partie de ce déficit plus importante (25%) que le nombre d'intermittents rapporté à l'ensemble des travailleurs (3,5%) et ce n'est pas juste. Je ne sais pas si c'est juste ou pas mais on peut relier cela au principe d'une assurance qui est de mutualiser le risque. L'argent dépensé ne l'est que par une minorité de gens. On peut s'interroger sur le sens du mot juste dans ce cas. On pourrait argumenter que le déficit de l'UNEDIC est en grande partie causé par les intermittents depuis déjà plusieurs années. On pourrait répondre que les personnes âgées sont aussi celles qui concentrent une grande partie des dépenses de santé. Si on regarde la situation dans différents pays, on peut se demander si le sens du mot juste ne dépendrait pas du pays dans lequel on le considère. L'auteur conclut en suggérant que les intermittents mutualisent les risques au sein de leur communauté. Mathématiquement parlant, ce n'est pas la plus sûre des solutions car ce serait une population exposée aux mêmes risques. Il en est de même pour toute communauté puisqu'un tel groupe assemble des personnes qui se ressemblent. Il est préférable et plus efficace de mutualiser des risques qui ne sont pas corrélés entre eux. Tout trader vous le dira.


more...

2014-07-01 Pywin32 does not find its DLL

I recently needed to install pywin32 because of nbconvert. However, when importing win32api, it produces an exception (unable to find some DLL). To fix it, the following path <python>Lib/site-packages/pywin32_system32 must be added to environment variable PATH. But I did not want to do that but I'm using several Python version at the same time so I needed to fix it while running my script which I did below.


more...

Xavier Dupré