r versur python
TRANSCRIPT
L’avenir de R s’ecrit-il en Python ?
Alexis Eidelman
Institut des politiques publiques
FLtauRParis – 3 octobre 2013
Introduction
Pourquoi se limiter a un langage de statistique ?
• Parce qu’on fait des stats ! Patate !En fait, on ne fait pas que ca → On fait des requetes, de lamanipulation de donnees, des operations elementaires, lavraie partie stat est parfois (souvent) tres faible...
• Parce qu’on est pas des programmeurs ! Banane !→ Python et pas C ou Fortran qui sont plus hard→ On fait plus de programmation qu’on pense, autant lefaire dans un langage prevu pour ca.
• Finalement, n’est-ce pas un biais culturel qui nous poussever R ?
Introduction
Pourquoi se limiter a un langage de statistique ?
• Parce qu’on fait des stats ! Patate !
En fait, on ne fait pas que ca → On fait des requetes, de lamanipulation de donnees, des operations elementaires, lavraie partie stat est parfois (souvent) tres faible...
• Parce qu’on est pas des programmeurs ! Banane !→ Python et pas C ou Fortran qui sont plus hard→ On fait plus de programmation qu’on pense, autant lefaire dans un langage prevu pour ca.
• Finalement, n’est-ce pas un biais culturel qui nous poussever R ?
Introduction
Pourquoi se limiter a un langage de statistique ?
• Parce qu’on fait des stats ! Patate !En fait, on ne fait pas que ca → On fait des requetes, de lamanipulation de donnees, des operations elementaires, lavraie partie stat est parfois (souvent) tres faible...
• Parce qu’on est pas des programmeurs ! Banane !→ Python et pas C ou Fortran qui sont plus hard→ On fait plus de programmation qu’on pense, autant lefaire dans un langage prevu pour ca.
• Finalement, n’est-ce pas un biais culturel qui nous poussever R ?
Introduction
Pourquoi se limiter a un langage de statistique ?
• Parce qu’on fait des stats ! Patate !En fait, on ne fait pas que ca → On fait des requetes, de lamanipulation de donnees, des operations elementaires, lavraie partie stat est parfois (souvent) tres faible...
• Parce qu’on est pas des programmeurs ! Banane !
→ Python et pas C ou Fortran qui sont plus hard→ On fait plus de programmation qu’on pense, autant lefaire dans un langage prevu pour ca.
• Finalement, n’est-ce pas un biais culturel qui nous poussever R ?
Introduction
Pourquoi se limiter a un langage de statistique ?
• Parce qu’on fait des stats ! Patate !En fait, on ne fait pas que ca → On fait des requetes, de lamanipulation de donnees, des operations elementaires, lavraie partie stat est parfois (souvent) tres faible...
• Parce qu’on est pas des programmeurs ! Banane !→ Python et pas C ou Fortran qui sont plus hard→ On fait plus de programmation qu’on pense, autant lefaire dans un langage prevu pour ca.
• Finalement, n’est-ce pas un biais culturel qui nous poussever R ?
Introduction
Pourquoi se limiter a un langage de statistique ?
• Parce qu’on fait des stats ! Patate !En fait, on ne fait pas que ca → On fait des requetes, de lamanipulation de donnees, des operations elementaires, lavraie partie stat est parfois (souvent) tres faible...
• Parce qu’on est pas des programmeurs ! Banane !→ Python et pas C ou Fortran qui sont plus hard→ On fait plus de programmation qu’on pense, autant lefaire dans un langage prevu pour ca.
• Finalement, n’est-ce pas un biais culturel qui nous poussever R ?
Introduction
But de la presentation
• Une saine critique : R ne doit pas etre compare qu’a SAS
• Presenter Python et ses atouts
• Parler de l’interface R et Python
Introduction
But de la presentation
• Une saine critique : R ne doit pas etre compare qu’a SAS
• Presenter Python et ses atouts
• Parler de l’interface R et Python
Roadmap
1 Introduction
2 Presentation de Python
3 Python pour les statisticiens
4 Plein de bonus avec Python
5 Une comparaison pratique : travail sur l’enquete patrimoine2010
Python
C’est quoi ?
• Un langage de programmation simplifie.
• Libre et gratuit
• Utilise plus par des physiciens, financiers que des biologistes
• Et utilise pour generer des interfaces graphiques et desapplications
Python
C’est quoi ?
• Un langage de programmation simplifie.
• Libre et gratuit
• Utilise plus par des physiciens, financiers que des biologistes
• Et utilise pour generer des interfaces graphiques et desapplications
Python
Ses forces
• Lisible• indentation obligatoire (pas d’accolade)• conventions d’ecriture bien partagees• programmes courts• noms explicites• pas de declaration de type
• Rapide• Ne calcule que ce dont il a besoin (permet de renommer a
loisir)• Spontanement rapide (aucune comparaison entre une
boucle R et une boucle Python)• Rapide a ecrire.
Python
Ses forces
• Lisible• indentation obligatoire (pas d’accolade)• conventions d’ecriture bien partagees• programmes courts• noms explicites• pas de declaration de type
• Rapide• Ne calcule que ce dont il a besoin (permet de renommer a
loisir)• Spontanement rapide (aucune comparaison entre une
boucle R et une boucle Python)• Rapide a ecrire.
Python
Ses forces
• Lisible• indentation obligatoire (pas d’accolade)• conventions d’ecriture bien partagees• programmes courts• noms explicites• pas de declaration de type
• Rapide• Ne calcule que ce dont il a besoin (permet de renommer a
loisir)• Spontanement rapide (aucune comparaison entre une
boucle R et une boucle Python)• Rapide a ecrire.
Python
Ses forces
• Facile a apprendre
• Possibilite de rentabiliser son travail• La structure de classes
• Plein de petites choses• assert• travail simple sur les chaines de caracteres• bons editeurs• bonnes documentations ( + stackoverflow)
Python
Ses forces
• Facile a apprendre
• Possibilite de rentabiliser son travail• La structure de classes
• Plein de petites choses• assert• travail simple sur les chaines de caracteres• bons editeurs• bonnes documentations ( + stackoverflow)
Python
Ses forces
• Facile a apprendre
• Possibilite de rentabiliser son travail• La structure de classes
• Plein de petites choses• assert• travail simple sur les chaines de caracteres• bons editeurs• bonnes documentations ( + stackoverflow)
Python
Ses forces
• Facile a apprendre
• Possibilite de rentabiliser son travail• La structure de classes
• Plein de petites choses• assert• travail simple sur les chaines de caracteres• bons editeurs• bonnes documentations ( + stackoverflow)
Python
Quelques faiblessesIl faut parfois se battre avec Python...
Python
Quelques faiblessesIl faut parfois se battre avec Python...
Python
Quelques faiblesses
• Visualisation des tables
• Plusieurs editeurs (a priori bons mais c’est plus simplequand on n’a pas de choix, n’est-ce pas ?)
• Numerote a partir de zero
• Deux versions 2.7 et 3.3
• Doit convaincre, comme R a ses debuts
Roadmap
1 Introduction
2 Presentation de Python
3 Python pour les statisticiens
4 Plein de bonus avec Python
5 Une comparaison pratique : travail sur l’enquete patrimoine2010
Python pour les statisticiens
Les libraires inevitable
• Numpy : la gestion des tableaux (tres rapide et leger)
• Pandas• Index• Subset• Pas de probleme avec les valeurs manquantes• Vecteur, DataFrame, TimeSeries• et progresse
Python pour les statisticiens
Les libraires inevitable
• Numpy : la gestion des tableaux (tres rapide et leger)
• Pandas• Index• Subset• Pas de probleme avec les valeurs manquantes• Vecteur, DataFrame, TimeSeries• et progresse
Python pour les statisticiens
Les libraires inevitable
• Numpy : la gestion des tableaux (tres rapide et leger)
• Pandas• Index• Subset• Pas de probleme avec les valeurs manquantes• Vecteur, DataFrame, TimeSeries• et progresse
Python pour les statisticiens
Python et R
• package : rpy2
• lecture ecriture de table
• Appeler les fonctions de R
• A l’inverse possibilite de lancer Python depuis R.
Roadmap
1 Introduction
2 Presentation de Python
3 Python pour les statisticiens
4 Plein de bonus avec Python
5 Une comparaison pratique : travail sur l’enquete patrimoine2010
Plein de bonus avec Python
Des libraires
• Big Data
• Interface avec office (dont excel) : pywin32
• Utiliser Latex (Pytex)
• Webscrapping : scrapy
• Cartographie ?
• Ecrire en c, c++
• Interface avec YAML
• Documentation automatique (Sphinx)
• Analyse du temps de calcul (RunSnake)
Et ca evolue sans cesse !
Plein de bonus avec Python
Des libraires
• Big Data
• Interface avec office (dont excel) : pywin32
• Utiliser Latex (Pytex)
• Webscrapping : scrapy
• Cartographie ?
• Ecrire en c, c++
• Interface avec YAML
• Documentation automatique (Sphinx)
• Analyse du temps de calcul (RunSnake)
Et ca evolue sans cesse !
Roadmap
1 Introduction
2 Presentation de Python
3 Python pour les statisticiens
4 Plein de bonus avec Python
5 Une comparaison pratique : travail sur l’enquete patrimoine2010
Une comparaison
Contexte
• Produire une statistique mais potentiellement a partir dedifferents jeux de donnees→ Dissocier ce dont on a besoin et ce qu’on a→ Prevoir des imputations pour completer les bases dedonnees
Concretement :
• Enquete patrimoine 2010
• Base etendue (dupliquee) a plus de 11 millions de lignes
• Data cleaning
• Imputation de declarations fiscales, d’etat de sante, etc.
• Fermeture de l’echantillon (associer a chaque enfants de labase des parents fictifs dans la base).
Une comparaison
Contexte
• Produire une statistique mais potentiellement a partir dedifferents jeux de donnees
→ Dissocier ce dont on a besoin et ce qu’on a→ Prevoir des imputations pour completer les bases dedonnees
Concretement :
• Enquete patrimoine 2010
• Base etendue (dupliquee) a plus de 11 millions de lignes
• Data cleaning
• Imputation de declarations fiscales, d’etat de sante, etc.
• Fermeture de l’echantillon (associer a chaque enfants de labase des parents fictifs dans la base).
Une comparaison
Contexte
• Produire une statistique mais potentiellement a partir dedifferents jeux de donnees→ Dissocier ce dont on a besoin et ce qu’on a
→ Prevoir des imputations pour completer les bases dedonnees
Concretement :
• Enquete patrimoine 2010
• Base etendue (dupliquee) a plus de 11 millions de lignes
• Data cleaning
• Imputation de declarations fiscales, d’etat de sante, etc.
• Fermeture de l’echantillon (associer a chaque enfants de labase des parents fictifs dans la base).
Une comparaison
Contexte
• Produire une statistique mais potentiellement a partir dedifferents jeux de donnees→ Dissocier ce dont on a besoin et ce qu’on a→ Prevoir des imputations pour completer les bases dedonnees
Concretement :
• Enquete patrimoine 2010
• Base etendue (dupliquee) a plus de 11 millions de lignes
• Data cleaning
• Imputation de declarations fiscales, d’etat de sante, etc.
• Fermeture de l’echantillon (associer a chaque enfants de labase des parents fictifs dans la base).
Une comparaison
Contexte
• Produire une statistique mais potentiellement a partir dedifferents jeux de donnees→ Dissocier ce dont on a besoin et ce qu’on a→ Prevoir des imputations pour completer les bases dedonnees
Concretement :
• Enquete patrimoine 2010
• Base etendue (dupliquee) a plus de 11 millions de lignes
• Data cleaning
• Imputation de declarations fiscales, d’etat de sante, etc.
• Fermeture de l’echantillon (associer a chaque enfants de labase des parents fictifs dans la base).
Une comparaison
Contexte
• Produire une statistique mais potentiellement a partir dedifferents jeux de donnees→ Dissocier ce dont on a besoin et ce qu’on a→ Prevoir des imputations pour completer les bases dedonnees
Concretement :
• Enquete patrimoine 2010
• Base etendue (dupliquee) a plus de 11 millions de lignes
• Data cleaning
• Imputation de declarations fiscales, d’etat de sante, etc.
• Fermeture de l’echantillon (associer a chaque enfants de labase des parents fictifs dans la base).
Une comparaison
Contexte
• Produire une statistique mais potentiellement a partir dedifferents jeux de donnees→ Dissocier ce dont on a besoin et ce qu’on a→ Prevoir des imputations pour completer les bases dedonnees
Concretement :
• Enquete patrimoine 2010
• Base etendue (dupliquee) a plus de 11 millions de lignes
• Data cleaning
• Imputation de declarations fiscales, d’etat de sante, etc.
• Fermeture de l’echantillon (associer a chaque enfants de labase des parents fictifs dans la base).
Une comparaison
En R
• Un fichier central qui en appelle d’autres
• Des lapply(as.integer)
• une boucle sur 15 variables (cydeb1-cydeb15) prendbeaucoup de temps
• Taille de la base de donnees limitante (pour un problemequadratique)
• Galeres innommables pour la duplication des menages et lagestions de identifiants (pour ne pas faire de groupby)
• Des load et des save un peu partout pour ne pas tout refairea zero a chaque modif mais avec les differentes options c’estpas genial
Une comparaison
En R
• Un fichier central qui en appelle d’autres
• Des lapply(as.integer)
• une boucle sur 15 variables (cydeb1-cydeb15) prendbeaucoup de temps
• Taille de la base de donnees limitante (pour un problemequadratique)
• Galeres innommables pour la duplication des menages et lagestions de identifiants (pour ne pas faire de groupby)
• Des load et des save un peu partout pour ne pas tout refairea zero a chaque modif mais avec les differentes options c’estpas genial
Une comparaison
En Python
• Une classe Data, les donnees necessaires
• Contient certaines methodes(=fonction) : extension de labase, maitrise des formats de donnees,
• Une sous-classe Patrimoine, l’annee d’enquete est unparametre pour l’instant
• Contient la lecture, les corrections, le recodage de variables,les imputations, etc.
• Pas de probleme memoire, ni de groupby bien geres parpandas.
• Des verifications (assert) dans le programme bien rassurant
• Beaucoup plus rapide qu’en R (environ 1min30 contre7min30)
Une comparaison
En Python
• Une classe Data, les donnees necessaires
• Contient certaines methodes(=fonction) : extension de labase, maitrise des formats de donnees,
• Une sous-classe Patrimoine, l’annee d’enquete est unparametre pour l’instant
• Contient la lecture, les corrections, le recodage de variables,les imputations, etc.
• Pas de probleme memoire, ni de groupby bien geres parpandas.
• Des verifications (assert) dans le programme bien rassurant
• Beaucoup plus rapide qu’en R (environ 1min30 contre7min30)
Une comparaison
En Python
• Une classe Data, les donnees necessaires
• Contient certaines methodes(=fonction) : extension de labase, maitrise des formats de donnees,
• Une sous-classe Patrimoine, l’annee d’enquete est unparametre pour l’instant
• Contient la lecture, les corrections, le recodage de variables,les imputations, etc.
• Pas de probleme memoire, ni de groupby bien geres parpandas.
• Des verifications (assert) dans le programme bien rassurant
• Beaucoup plus rapide qu’en R (environ 1min30 contre7min30)
Une comparaison
En Python
• Une classe Data, les donnees necessaires
• Contient certaines methodes(=fonction) : extension de labase, maitrise des formats de donnees,
• Une sous-classe Patrimoine, l’annee d’enquete est unparametre pour l’instant
• Contient la lecture, les corrections, le recodage de variables,les imputations, etc.
• Pas de probleme memoire, ni de groupby bien geres parpandas.
• Des verifications (assert) dans le programme bien rassurant
• Beaucoup plus rapide qu’en R (environ 1min30 contre7min30)
Python pour les statisticiens - Conclusion
Mon ressenti
• Pas plus complique que R du tout (peut-etre meme plussimple)
• Moins de librairies orientee stat qu’en R
• Plus performant que R.
• Lecture des programmes beaucoup plus facile, meme quandils sont complexes
Si je dois debuter un projet aujourd’hui, je prefere lecommencer en Python plutot qu’en R.
Python pour les statisticiens - Conclusion
Mon ressenti
• Pas plus complique que R du tout (peut-etre meme plussimple)
• Moins de librairies orientee stat qu’en R
• Plus performant que R.
• Lecture des programmes beaucoup plus facile, meme quandils sont complexes
Si je dois debuter un projet aujourd’hui, je prefere lecommencer en Python plutot qu’en R.
L’avenir de R s’ecrit-il en Python ?
Alexis Eidelman
Institut des politiques publiques
FLtauRParis – 3 octobre 2013