Python s’est imposé comme une alternative très crédible à R dans la manipulation de données. L’écosystème Pandas a permis de démocratiser l’utilisation des DataFrames dans Python et faciliter la manipulation de données structurées grâce à la philosophie SQL. Python reste également le langage le plus pratique pour récupérer et manipuler des données moins structurées (webscraping, API). Python tend à devenir, grâce au développement d’API vers d’autres langages (C, Spark, Postgres, ElasticSearch…), le langage “one to rule them all”

Author

Lino Galiana

Published

July 16, 2023

Si on associe souvent les data scientists à la mise en oeuvre de modèles d’intelligence artificielle, il est important de ne pas oublier que l’entraînement et l’utilisation de ces modèles ne représente pas forcément le quotidien des data scientists.

En pratique, la récupération de sources de données hétérogènes, la structuration et harmonisation de celles-ci en vue d’une analyse exploratoire préalable à la modélisation ou la visualisation représente une part importante du travail des data scientists. Dans de nombreux environnements c’est même l’essence du travail du data scientist. L’élaboration de modèles pertinents requiert en effet une réflexion approfondie sur les données ; une étape que l’on ne saurait négliger.

Ce cours, comme de nombreuses ressources introductives sur la data science (Wickham, Çetinkaya-Rundel, and Grolemund 2023; VanderPlas 2016; McKinney 2012), proposera donc beaucoup d’éléments sur la manipulation de données, compétence essentielle pour les data scientists.

Les logiciels de programmation orientés autour du concept de base de données sont devenus les outils principaux des data scientists. Le fait de pouvoir appliquer un certain nombre d’opérations standards sur des bases de données, quelle que soit leur nature, permet aux programmeurs d’être plus efficaces que s’ils devaient répéter ces opérations à la main, comme dans Excel.

Tous les langages de programmation dominants dans l’écosystème de la data science reposent sur le principe du dataframe. Il s’agit même d’un objet central dans certains logiciels, notamment R. La logique SQL, un langage de déclaration d’opérations sur des données qui a déjà plus de cinquante ans, offre un cadre pertinent pour effectuer des opérations standardisées sur les colonnes (création de nouvelles colonnes, sélection de sous-ensemble de lignes…).

Néanmoins, le dataframe ne s’est imposé que récemment en Python, grâce au package Pandas créé par Wes McKinney. L’essor de la librairie Pandas (téléchargée plus de 5 millions de fois par jour en 2023) est pour beaucoup dans le succès de Python dans l’écosystème de la data science et a amené, en quelques années, a un renouvellement complet de la manière de coder en Python, ce langage si malléable, autour de l’analyse de données.

Cette partie du cours est une introduction générale à l’écosystème très riche de la manipulation de données avec Python. Ces chapitres évoquent aussi bien la récupération de données que la restructuration et la production d’analyse à partir de celles-ci.

Résumé de cette partie

Pandas est devenu incontournable dans l’écosystème Python pour la data science. Pandas est lui-même construit à partir du package Numpy, qu’il est utile de comprendre pour être à l’aise avec Pandas. Numpy est une librairie bas-niveau pour stocker et manipuler des données. Numpy est au coeur de l’écosystème de la data science car la plupart des librairies, même celles qui manient des objets destructurés, utilisent des objets construits à partir de Numpy1.

L’approche Pandas, qui offre un point d’entrée harmonisé pour manipuler des jeux de données de nature très différente, a été étendue aux objets géographiques avec Geopandas. Il est ainsi possible de manipuler des données géographiques comme s’il s’agissait de données structurées classiques. Les données géographiques et la représentation cartographique deviennent de plus en plus commun avec la multiplication de données ouvertes localisées et de big-data géolocalisées.

Cependant, les données structurées, importées depuis des fichiers plats ne représentent pas l’unique source de données. Les API et le webscraping permettent de télécharger ou d’extraire des données de manière très flexible depuis des pages web ou des guichets spécialisés. Ces données, notamment celles obtenues par webscraping nécessitent souvent un peu plus de travail de nettoyage de données, notamment des chaînes de caractère.

L’écosystème Pandas représente donc un couteau-suisse pour l’analyse de données. C’est pour cette raison que ce cours développera beaucoup de contenu dessus. Avant d’essayer de mettre en oeuvre une solution ad hoc, il est souvent utile de se poser la question suivante : “ne pourrais-je pas le faire avec les fonctionalités de base de Pandas ?” Se poser cette question peut éviter des chemins ardus et faire économiser beaucoup de temps.

Néanmoins, Pandas n’est pas adapté à des données ayant une volumétrie importante. Pour traiter de telles données, il est plutôt recommander de privilégier Polars ou Dask qui reprennent la logique de Pandas mais optimisent son fonctionnement, Spark si on a une infrastructure adaptée, généralement dans des environnements big data, ou DuckDB si on est prêt à utiliser des requêtes SQL plutôt qu’une librairie haut-niveau.

Exercices

Cette partie présente à la fois des tutoriels détaillés et des exercices guidés.

Il est possible de les consulter sur ce site ou d’utiliser l’un des badges présents en début de chapitre, par exemple ceux-ci pour ouvrir le chapitre d’exercices sur Pandas:

Download nbviewer Onyxia Onyxia
Binder Open In Colab githubdev

Pour aller plus loin

Ce cours n’aborde pas vraiment les questions de volumétrie ou de vitesse de calcul. Pandas peut montrer ses limites dans ce domaine sur des jeux de données d’une volumétrie conséquente (plusieurs Gigas).

Il est ainsi intéressant de porter attention à:

  • Le livre Modern Pandas pour obtenir des éléments supplémentaires sur la question de la performance avec Pandas ;
  • La question des objets sparse ;
  • Les packages Dask ou Polars pour accélérer les calculs ;
  • DuckDB pour effectuer de manière très efficace des requêtes SQL ;
  • PySpark pour des données très volumineuses.

Références

Voici une bibliographie sélective des ouvrages intéressants en complément des chapitres de la partie “Manipulation” de ce cours :

McKinney, Wes. 2012. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython. " O’Reilly Media, Inc.".
VanderPlas, Jake. 2016. Python Data Science Handbook: Essential Tools for Working with Data. " O’Reilly Media, Inc.".
Wickham, Hadley, Mine Çetinkaya-Rundel, and Garrett Grolemund. 2023. R for Data Science. " O’Reilly Media, Inc.".
Back to top

Footnotes

  1. Certaines librairies commencent, petit à petit, à s’émanciper de Numpy qui n’est pas toujours le plus adapté pour la gestion de certains types de données. Le framework Arrow tend à devenir la couche basse utilisée par de plus en plus de librairies de data science. Ce post de blog approfondit de manière très pédagogique ce sujet.↩︎

Citation

BibTeX citation:
@book{galiana2023,
  author = {Galiana, Lino},
  title = {Python Pour La Data Science},
  date = {2023},
  url = {https://pythonds.linogaliana.fr/},
  doi = {10.5281/zenodo.8229676},
  langid = {en}
}
For attribution, please cite this work as:
Galiana, Lino. 2023. Python Pour La Data Science. https://doi.org/10.5281/zenodo.8229676.