XD blog

blog page

~technical


2014-08-05 Custom completion for IPython

Autocompletion is a nice feature quite useful when typing very long names. It is implemented by modules such as IPython, bpython or DreamPie. I'm quite a big fan of a the first one, the notebooks to be precise. However, it did not seem quite easy to add my custom autocompletion. I tried some search queries but I was only able to find Integrating your objects with IPython or IPEP 11: Tab Completion System Refactor.


more...

2014-08-03 Customize IPython notebooks

If you want to customize your notebooks and finds a style which suits you better, you can look into these links and try one of these options:

2014-08-01 Un livre sur Javascript

Je suis tombé là-dessus aujourd'hui : Eloquent JavaScript. Pas mal du tout.

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


<-- -->

Xavier Dupré