XD blog

blog page

python


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-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-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-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-04 Commencez avec Python

Quelques pointeurs pour ceux qui veulent commencer avec Python.

Et pour les plus jeunes :

2014-06-03 pandas and openpyxl are not compatible anymore

I use a lot openpyxl with pandas. But the new version of openpyxl is not compatible anymore with pandas. So be careful to install an older version until this compatibility issue is fixed:

pip install openpyxl==1.8.6

2014-06-02 Débugger en Python

Je n'ai jamais vraiment débugger en Python. J'ai commencé à coder avec ce langage il y a plusieurs années et j'avoue que le débugger C++ de Visual Studio est inégalé. Il n'y avait pas d'équivalent en Python. Après plusieurs essais au cours des années, je reste toujours un peu sceptique. Débugger en Python prend du temps, l'exécution est très ralentie et il m'est arrivé souvent que mon pointeur d'arrêt soit ignoré. Ou encore, j'ai peiné à configurer l'outil (trop de paramètres). Bref, je débugge rarement, j'insère plus souvent des print. Toutefois, débugger sans utiliser de ligne de commande est possible :

Si vous êtes moins dans le visuel (ce qui n'est pas mon cas), il y a d'autres alternatives comme pudb et le débuggeur de base Debugger en Python: les bases de pdb.

En ce qui me concerne, je vais faire le shadock, si on ne peut pas débugger correctement en python, c'est que ça ne sert à rien.


<-- -->

Xavier Dupré