XD blog

blog page


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...

2014-06-30 Machine Learning with Python

Two very interesting blogs which illustrate how to do machine learning with Python:

I suggest the two following blog posts:

2014-06-20 Python et Excel

On m'a posé récemment la question des divers moyens de travailler avec Python et Excel. J'en connais trois :


more...

2014-06-18 Apprendre à programmer tout seul à l'adolescence

J'ai commencé la programmation à l'âge de 10 ans, avec mon premier ordinateur qui était un Amstrad CPC 464 avec des cassettes (voir aussi L'Amstrad CPC 464 fête ses 30 ans). C'était en Basic. Aujourd'hui les langages ont changé, ils permettent de faire plus rapidement une quantité de chose mais il est très probable que j'apprendrais de la même manière : en suivant pas à pas les exemples des premières pages d'un livre : Apprendre à programmer avec Python. Peut-être y ajouterai-je aujourd'hui un ou deux MOOC : Langage Python, MOOC consacré à la programmation (langage utilisé : Python), Programmation en Python pour débutants - Les bases.

Python est un bon choix de premier langage : il est à la fois très simple et très utilisé. Avec un peu d'anglais, il est facile de trouver une réponse à un problème comme un obscur message d'erreur.


more...

2014-06-17 Download data after redirection

I was looking for a way to download a file from http://sourceforge.net/ with the following code:

url = "something on source forge"
req = urllib.request.Request(url)
u = urllib.request.urlopen(req)
bin = u.read()
u.close()
with open("something.zip","wb") as f : f.write(bin)

It failed due to redirections. Doing it myself or trying to look for some module doing the job. Every query I tried on a search engine about getting a file from SourceForge in Python gave me links to Python projects on hosted on SourceForge. Not exactly what I was looking for. So...


more...

2014-06-14 Sports Scientist et Big Data

Les équipes de football équipent leurs joueurs de capteurs, un sur chaque jambe. Ils enregistrent leurs déplacement, les trajectoires des ballons, et moulinent le tout grâce à des statisticiens spécialisés dans le domaine : Big data football club, Le football professionnel à l'heure du big data, Big Data: Would number geeks make better football managers?. Sports Scientist est le terme qui regroupe les métiers qui étudient le sport sous un angle scientifique. Le statisticien est devenu l'un d'entre deux.

2014/10/30

Un article plus récent paru sur le sujet : La Data Révolution (dans le football et l'Equipe).

2015/02/01

Un autre article plus récent paru sur le sujet : Crowdsourcing ou algorithme : comment évaluer le prix d’un joueur de foot ? (rue89).

2014-06-11 Torsion de problèmes

Il n'existe le plus souvent aucun algorithme qui réponde exactement à un problème, surtout si c'est le vôtre. Mais ça ne veut pas dire qu'il n'existe pas de solution. Avec un peu d'imagination, il faut arriver à tordre le problème initial pour exploiter des algorithmes connus. Cette torsion sera d'autant plus facile qu'on connaît d'algorithmes. Par exemple, voici trois problèmes :

Et voici trois classes d'algorithmes :

Sauriez-vous apparier un problème avec une classe d'algorithmes qui mèneraient à la solution ?

Un indice : Inférer les trajectoires des velib

2014-06-06 De l'usage de Python pour réduire le nombre de régions

C'est un article qui a été repris dans Le Monde d'aujourd'hui où on expose ce que pourraient être les régions si on tenait compte des déplacements à l'intérieur de la métropole : Réforme des régions : et si Hollande avait laissé les bigdata décider ? Découvrez le Régionator3000 ! La méthode s'appuie sur des données produites par l'INSEE : Base sur les flux de mobilité : mobilités professionnelles (déplacements domicile - lieu de travail). L'idée est simple : faire en sorte que la majorité des français habitent et travaillent au sein de la même région et donc réduire le nombre de français qui habitent et travaillent dans deux régions différentes. Je n'aime pas trop le titre qui cite les Big Data alors que ce n'en sont pas vraiment : le résultat est produit avec un script Python et le module scikit-learn et les données ne pèsent pas plus de 8 Mo. Mon propos n'est pas de dire que cette répartition est meilleure qu'une autre. Elle ne prend qu'une donnée en compte - les déplacements quotidien des gens -. C'est également une photo du présent qui n'est pas nécessairement celle qu'on pourrait avoir dans dix ans. Il eut été intéressant d'étudier l'évolution des résultats sur quelques décennies. On constate aussi que la Bretagne et la Corse font partie de la même région. Mon propos est plus de dire que c'est un élément de réflexion qui est devenu tout aussi accessible que les autres même s'il repose sur une méthode complexe : un clustering dans un graphe. Qui plus est, cela a été réalisé en Python.

Ce qu'on reproche probablement à la solution du gouvernement est qu'elle n'est pas expliquée. En cela, elle apparaît arbitraire. Puisqu'elle utilise une méthode qu'on ne peut accuser d'un quelconque biais, l'approche scientifique paraît plus objective, plus équitable et donc plus acceptable. Cela dit, il est vrai qu'on peut trafiquer les données en amont.

2014-06-05 Tout est scandale

Un ton scandaleux est toujours plus prompte d'attirer l'attention du lecteur et dès qu'un sujet est éligible, l'article devient le moyen de clouer au pilori l'auteur du forfait. Récemment, une des entreprises à avoir subi les foudres des journalistes est la SNCF : Pour renouveler ses TER, la SNCF commande des rames... trop larges. Victime d'une erreur de communication avec Réseaux ferré de France (RFF), il faudra raboter les certains quais de gare pour laisser passer de nouveaux trains. Même si le montant paraît important, rapporté à la somme totale, il est petit (moins de 1%). Ensuite, il n'est dit à aucun moment que les nouveaux trains sont trop larges. On peut raisonnablement penser qu'aucun voyageur ne se plaindra d'avoir plus d'espace. L'erreur de la SNCF serait simplement de ne pas avoir anticiper ce coût. Ce serait une erreur finalement petite pour un projet qui semble dans l'ensemble réussi.

J'ai récemment écrit au sujet du nouveau logiciel de paie des fonctionnaires qui fut abandonné après un investissement nettement supérieur aux 80 millions dépensés par RFF pour raboter ses quais. L'article n'est pas très précis quant aux raisons qui ont mené à cet échec. Le ministère du Budget arrive même à tourner cela en un demi-échec puisque le projet était risqué. La décision de l'interrompre était la seule sensée. Elle aura permis d'éviter d'investir plus d'argent dans un échec annoncé.

De ces deux erreurs, je retiens qu'on se scandalise de celle qu'on pense comprendre. On s'en moque aisément même si c'est déjà un problème résolu. Pour celle qu'on ne comprend pas, on s'en remet à celui qui l'annonce sans forcément chercher plus loin. Et on se garde bien de commenter. Ca fait partie de ces petites choses qui nous surprennent quand on les apprend (comme Profs sans élèves: mais combien sont-ils au juste?) et dont on ne sait quoi faire.


<-- -->

Xavier Dupré