Journal Bibliothèques Python utiles à l'analyse des données

Posté par  (Mastodon) . Licence CC By‑SA.
Étiquettes :
16
27
mar.
2019

Sommaire

Si vous réalisez des analyses de données à l’aide de Python sans doute connaissez-vous bien et utilisez-vous les bibliothèques pandas, scikit-learn, TensorFlow, Keras, matplotlib et quelques autres. Dans cet article-là, des bibliothèques un peu moins connues sont présentées avec comment les installer si nécessaire et avec des exemples.

Je vous aurais bien traduit l’article, mais je ne suis pas certain qu’il soit en licence libre. Je reprends dans le désordre la liste suggérée par l’article, je vous dis quelques mots sur chacune des bibliothèques et si ce teasing vous met l’eau à la bouche, vous pourrez toujours consulter l’article susmentionné. Néanmoins, vous n’y retrouverez pas toutes les bibliothèques que je mentionne vu que je me suis permis d’en ajouter quelques-unes.

Si vous ne connaissez rien à l’analyse des données avec Python (et que cela vous intéresse), je ne peux que vous conseiller l’excellente dépêche d’un super site consacré à linux.

Commençons pas les représentations graphiques.

Dash

Dash permet la création d’applications web de visualisation avec des menus déroulants, des curseurs et des graphiques à partir de Python sans devoir passer par JavaScript. À mon stade de connaissance, j’ai du mal à voir les différences avec ce que permet Bokeh.

IPyvolume

Si vous voulez réaliser des représentations en 3D, un coup d’œuil à IPyvolume est sans doute indiqué. IPyvolume permet de visualiser des volumes ainsi que des glyphes en 3D dans le notebook Jupyter. Pour l’instant, cela semble être une bibliothèque en version bêta, donc potentiellement avec des bugs plus nombreux que pour une bibliothèque mature.

Pyviz

Pyviz n’est pas une bibliothèque en soit mais pour ce qui concerne la visualisation, il s’agit certainement d’un portail intéressant à visiter. L’objectif de PyViz est de rendre la visualisation des données en Python plus facile à utiliser, plus facile à apprendre et plus puissante (rien que ça :-)).

Vous y trouverez notamment (en anglais)
- Des outils qui facilitent l’application des bibliothèques Python de visualisation à vos données.
- Un tutoriel complet montrant comment utiliser simultanément les outils disponibles pour effectuer un large éventail de tâches.
- Des exemples d'ensembles de données à utiliser.

Chartify

Quand Spotify Labs écrit des bibliothèques cela donne Chartify. Cette bibliothèque est construite sur Bokeh et semble surtout permettre d’utiliser Bokeh de manière plus user friendly et de manière moins fastidieuse. J’imagine que cela se fait au prix de la flexibilité.

Mais peut-être aurais-je dû débuter par des bibliothèques qui aident aux nettoyages des bases de données.

FlashText

Pour assurer un traitement du langage naturel (NLP), un nettoyage préalable des données textuelles est souvent nécessaire notamment en effectuant le remplacement de mots-clés ou l'extraction de mots-clés dans les phrases. Habituellement, de telles opérations peuvent être accomplies avec des expressions régulières, mais elles peuvent devenir laborieuses si le nombre de termes à rechercher se compte par milliers.

Le module FlashText de Python fournirait une solution appropriée pour de telles situations. L’avantage principal de FlashText est que le temps d’exécution est le même quel que soit le nombre de termes de recherche (j’ai un peu de mal à y croire mais c’est effectivement ce qu’il semble prétendre en comparant leur performance avec celle de la bibliothèque re).

FuzzyWuzzy

FussyWuzzy, et plus d'explication en mots ici, est une bibliothèque utile quand il s'agit d’évaluer des correspondances de chaînes de caractères. FuzzyWuzzy serait également pratique pour comparer des enregistrements conservés dans différentes bases de données. Techniquement, FuzzyWuzzy utilise la distance de Levenshtein pour calculer les différences entre les séquences.

Pendulum

La gestion des dates en Python vous frustre, peut-être que Pendulum peut vous aider. C’est une bibliothèque Python pour faciliter les manipulations des dates et des heures. Pour le moment, je n’ai pas été confronté à ce genre de problème, je suis donc bien en peine de mesurer l’intérêt de cette bibliothèque par rapport à la classe Python gérant les dates et heures.

Mais avant de nettoyer les données, peut-être faudrait-il les collecter, non ?

Wget

Wget est un utilitaire gratuit pour le téléchargement de fichiers depuis le web. Il prend en charge les protocoles HTTP, HTTPS et FTP, ainsi que la récupération via des proxies HTTP.

Une fois qu’on a de belles données bien nettoyée, on peut établir des modèles.

Imbalanced-learn

La plupart des algorithmes de classification fonctionnent mieux lorsque le nombre d'échantillons dans chaque classe est similaire. Malheureusement dans la vraie vie réelle, les ensembles de données sont souvent déséquilibrés ce qui peut avoir une incidence sur l’efficacité des algorithmes d'apprentissage automatique. Imbalanced-learn a été créée pour s'attaquer à ce problème. Il est compatible avec scikit-learn et fait partie des projets scikit-learn-contrib.

PyFlux

L'analyse des séries chronologiques est l'un des problèmes les plus fréquemment rencontrés dans l'apprentissage machine. Si vous souhaitez aborder ce genre de données avec des approches probabilistes (e.a. les modèles ARIMA, GARCH et VAR), PyFlux est une bibliothèque open source que vous devez considérer (et qui pour info est quelque peu délaissé par son créateur occupé sur d'autres projets).

pyFTS

Vous préférez une approche basée sur les ensembles flous  ? pyFTS est votre homme bibliothèque. Pour une introduction à l’application des ensembles flous à l’analyse des séries temporelles, vous pouvez consulter ce blog.

DEAP

Si j’en crois Wikipédia, DEAP (pour Distributed Evolutionary Algorithms in Python) est une bibliothèque de calcul évolutif. Il intègre les structures de données et les outils nécessaires pour mettre en œuvre les techniques de calcul évolutif les plus courantes telles que les algorithmes génétiques, la programmation génétique, les stratégies d’évolution, l’optimisation des essaims de particules, les évolutions différentielles, la circulation et la distribution. Il est développé à l’Université Laval depuis 2009.


Personnellement, en préparant ce journal, j'ai découvert pas mal de nouvelles bibliothèques qui pourraient m'être utiles dans le futur. J'espère que cela sera aussi votre cas en le lisant.

  • # Pyviz

    Posté par  . Évalué à 2.

    Merci en particulier pour pyviz qui m'a l'air très intéressant. Pas testé, mais tout juste installé (il n'est pas dans debian, mais ça passe avec pip). Ça a l'air de faire le lien avec pas mal de librairies de visualisation, et donc parfait au moins pour les tester, et pour utiliser juste ce dont on a besoin dans chacune d'entre elles.
    À voir à l'usage, mais bon a priori.

  • # Bien pour des données en volume raisonnable

    Posté par  (Mastodon) . Évalué à 2.

    Pour gérer quelques gigas de données pas de souci ce sont des bonnes bibliothèques et les remarques sont pertinentes.
    Au delà (des centaines de gigas , des teras , ou autre petas) il faut un autre moteur de traitement distribué (H2o, Tensorflow, Spark) , les API existent pour python , R , scala , java..

    • [^] # Re: Bien pour des données en volume raisonnable

      Posté par  . Évalué à 5.

      Bonjour,

      sans vouloir du tout polémiquer je voudrais mettre un bémol la dessus et voudrais partager mon expérience. Dans ma boite on fait du monitoring et de l'analyse de données remontées par différentes sortes d'équipements. Ça va de capteurs infrarouges et de fermeture de porte, à des équipements réseaux en passant par des métriques de serveurs ou des montres connectées.

      Mais globalement on stocke des données simples : un timestamp => une série de valeurs. Quand on a commencé on m'a parlé de hadoop, de spark, de datalake, que lorsque j'aurais plusieurs centaines de tera de données j'allais avoir des problèmes pour accéder à mes données et les traitées.

      N'y connaissant pas grand chose je me suis renseigné et j'ai trouvé que niveau mise en place et admin c'était très lourd. Surtout hadoop. Bref je n'ai pas fait ce choix. Je suis bêtement parti sur un postgres, car c'est simple, robuste, performant, standard (vive le sql (en fait non vive les orm :))), que les ressources humaines sont plus simple à trouver etc. Et franchement je ne regrette pas. Nous avons plusieurs centaines de tera de données, nous insérons plusieurs dizaines de giga par jours et tout va bien. Ca reste du postgres. Petite subtilité par contre. Nous utilisons un plugin dans postgres : timescaledb. Et pour aggrandir le disque dans postgres sans se prendre la tête notre postgres tourne dans ceph.

      Honnêtement je suis très content de nos choix. Ceph est vraiment extra ordinaire. Je dirais la même chose de postgres. Ça marche tellement bien que en tant qu'admin c'est frustrant il n'y a pratiquement rien à faire. Alors je me suis mis à faire du dev.

      En ce moment nous testons l'intégration de notre architecture dans kubernetes et istio. Et ça c'est la cerise sur le gâteau. Je crée une branche dans git. Je pousse dans gitlab. Et la j'ai une version complète et totale de l'application avec la totalité des données (merci les snaphosts de ceph), avec une url dédié, le monitoring. La totalité. Et ce en quelques dizaines de secondes. J'adore mon métier !

      Bref tout ça pour dire que oui hadoop spark h20 etc c'est sûrement très bien. Cependant de mon expérience une bonne vieille db avec un peu de partitionning c'est simple et ça fait le taf.

      oau

      ps : et surtout y'a pas de java !!! Oui désolé je n'ai eu que de très mauvaise expérience avec java. Je sais que c'est très bien. Mais j'y arrive pas. Mais quand même, prochaine étape : kafka.

  • # HTTP ?

    Posté par  . Évalué à 3.

    12 produits proposés (je compte pas wget, faut pas déconner), 4 liens vers leur homepage seulement. Que s'est-il passé ?

    • [^] # Re: HTTP ?

      Posté par  (Mastodon) . Évalué à 1.

      Ah ben voilà quand on laisse n’importe quelle moule fraîche écrire un journal ! Elle n’a pas forcément déjà acquis le bon réflexe de vérifier que les liens sont bien dans le texte et pas seulement dans sa tête ou dans l’historique de son navigateur.

      Mea culpa !

      Voici les liens qui auraient pu/du se trouver dans le texte du journal (si un gentil modérateur [pléonasme, non?] s’ennuie assez que pour modifier le journal en ajoutant ces liens …) :

      Surtout, ne pas tout prendre au sérieux !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.