Découvrez les bibliothèques Python qui ont révolutionné le développement

Python est l’un des langages de programmation les plus populaires au monde, et cela est dû en grande partie à sa large gamme de bibliothèques. Ces bibliothèques contiennent du code pré-écrit pour accomplir diverses tâches dans la programmation, ce qui rend le travail des développeurs beaucoup plus facile et plus fluide.

Depuis de nombreuses années, nous avons assisté à l’émergence de nouvelles bibliothèques Python ainsi qu’à la mise à jour de certaines déjà existantes. Voici quelques-unes des bibliothèques qui ont attirées notre attention cette année :

FastAPI

FastAPI a été créé comme alternative ultra-rapide aux frameworks web traditionnels tels que Flask et Django. Cette bibliothèque permet une génération automatique de documentation basée sur les annotations du type “type hints”et prend également en charge les requêtes websocket. Bien que cette bibliothèque soit simple une formation sur le langage est absolument nécessaire.

Exemple :

from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
    return {"Hello": "World"}

Pydantic

Pydantic est une librairie ultra-légère qui offre un moyen simple mais efficace de valider vos données avec typage fort (strong typing). Elle s’integre très bien avec ­FastAPI: elle vous permet notamment d’automatiser la création des schémas JSON pour documenter rapidement votre API.

Exemple :

from pydantic import BaseModel
class Character(BaseModel):
    name: str 
    strength: int

c = Character(name='Conan', strength=9)
print(c.dict())

Streamlit

Streamlit est une bibliothèque Python très accessible pour créer des applications web. Elle permet de développer et partager rapidement des projets de visualisation de données avec une interface utilisateur élégante.

Exemple:

import streamlit as st
x = st.slider('Select a value')
st.write(x, 'squared is', x * x)

Rich

Rich est un module Python qui permet d’enrichir la sortie console standard (STDOUT) grâce à une gamme variée d’options. Il comprend notamment des barres de progression, des graphismes Unicode personnalisables ainsi que du texte coloré.

Exemple :

from rich.console import Console
console = Console()
console.print("Hello World", style="bold red")

En somme, ces nouvelles librairies ont permis aux programmeurs Python de gagner en efficacité tout en fournissant plus facilement des solutions innovantes à leurs problèmes courants. Si vous voulez prendre votre travail au niveau supérieur cette année 2023, il serait judicieux d’essayer l’une ou plusieurs de ces bibliothèques dans vos prochains projets.

Boostez votre productivité grâce aux outils de data analysis et visualisation : Pandas, Numpy et Matplotlib

Si vous travaillez avec des données dans Python, vous avez probablement entendu parler de Pandas, NumPy et Matplotlib. Ces bibliothèques sont très populaires parmi les scientifiques des données, car elles permettent une manipulation puissante des tableaux de données et une création facile de graphiques.

Les avantages de l’utilisation des bibliothèques Python pour la Data Science

Les bibliothèques Python telles que Pandas, NumPy et Matplotlib offrent plusieurs avantages pour les scientifiques des données :

  • Productivité améliorée : en utilisant ces bibliothèques plutôt qu’une combinaison d’outils différents ; un gain significatif peut être obtenu en termes d’efficacité.
  • Manipulation rapide et efficace du data frame : Les tables constituées avec l’aide du package pandas peuvent être manipulées rapidement sans avoir recours aux boucles for fastidieuses requérant plus ou moins aisément le langage R ou Excel
  • Visualisations riches : Le package matplotlib offre la possibilité de créer divers types graphiques (histogramme,…) , mais également quelques dataviz plus poussés comme Heatmaps qui permettront à vos visualisations desservir parfaitement votre message Présentation rapide de chaque bibliothèque

1. Pandas

Pandas est une librairie open-source basée sur NumPy fournissant performances optimisées pour faciliter la manipulation d’un tableau complet.Très souvent les packages précédemments cités ont un point faible: ils travaillent uniquement avec les arrays donc il devient compliqué de travailler avec les données tabulaires. Pandas permet quant-à lui de manipuler des data frames, donc très souvent c’est la première librairie que l’on charge sur notre environnement Python.

2. NumPy

NumPy est une bibliothèque fondamentale pour l’informatique scientifique en Python et fournit un support efficace aux tableaux multidimensionnels (arrays) à grande échelle ! Par conséquent très pratique dans les domaines du machine learning

3. Matplotlib

Matplotlib est le package dataviz go-to en python, utilisé par beaucoup d’autres packages python pour leurs visualisations.

Exemple et utilisation concrète

Supposons qu’un analyste financier travaille sur une longue période historique de données boursières remontant jusqu’au milieu des années 1990 consistant en plusieurs colonnes : date d’achat, prix d’acquisition, frais liés au placement etc…

Considérons alors les besoins suivants :

1°) Sélectionnez toutes les lignes qui ont été achetées après 2015.
2°) Créez une nouvelle colonne contenant la différence entre le prix actuel du stock et son prix moyen durant sa période détenue.
3°) Affichez tous ces stocks dont la valeur moyenne est supérieure à leur coût actuel.

Pandas Example

Dans cet exemple simple nous avons créé deux nouvelles colonnes afin de répondre aux attentes fixées tout cela sans avoir recours à aucune boucle for ou liste compréhensive obligeante.

Les bibliothèques de web scraping à utiliser (et celles à éviter)

Le web scraping est une technique permettant d’extraire des données provenant de sites web. Cela peut être utile pour différentes raisons, notamment pour collecter des informations sur les concurrents ou encore automatiser la récupération de données. Dans cet article, nous allons voir quelles sont les bibliothèques de Python à privilégier et celles qu’il faut éviter.

Les bibliothèques à utiliser

Beautiful Soup

Beautiful Soup est l’une des bibliothèques les plus utilisées en Python pour le web scraping. Elle permet d’analyser du HTML et XML, ainsi que d’autres types de fichiers markup. La librairie supporte toutes sortes d’options comme par exemple rechercher un élément particulier dans un document HTML ou même parser plusieurs pages simultanément.

from bs4 import BeautifulSoup
import requests

url = "http://www.example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

Requests-HTML

Requests-HTML utilise la puissance du module Requests, tout en ajoutant le parsing HTML via pyppeteer. Cette combinaison donne accès aux fonctions basiques communes mais également avancée telles que CSS Selector ou XPath afin d’analyser rapidement différents elements dans la page tel qu’un lien ou autre.

from requests_html import AsyncHTMLSession

session = AsyncHTMLSession()

async def get_url_title(url):
    r = await session.get(url)
    return r.html.title.text

titles = []
urls = ['https://google.com', 'https://twitter.com']

for url in urls:
    titles.append(get_url_title(url))

print(titles) # ['Google', 'Twitter']

Scrapy

Scrapy est un framework d’extraction de données open source rapide et efficace, écrit en Python. Il a été conçu pour traiter rapidement des volumes importants de données, par exemple pour l’analyse de contenu web. L’une des caractéristiques principales qui distingue Scrapy est le mécanisme automatique suivi basé sur les règles.

import scrapy

class BlogSpider(scrapy.Spider):
    name = 'blogspider'

    start_urls = ['http://www.example.com/']

    def parse(self, response):
        for title in response.css('.title'):
            yield {'title': title.css('::text').get()}

        next_page = response.css('a.next::attr(href)').get()
        if next_page is not None:
            yield response.follow(next_page, self.parse)

Les bibliothèques à éviter

PyQuery

Bien que PyQuery soit une bibliothèque utile en termes d’efficacité et de vitesse lorsqu’il s’agit d’une analyse relative simple de code HTML/XML grâce aux fonctions telles que construites autour du concept JQuery avec CSS Selector ou XPath comme base ce dernier n’est pas maintenu depuis plusieur années maintenant.

from pyquery import PyQuery as pq

doc=pq('<html><h1>a</h1></html>') 
# doc ('html') : retourne une liste contenant l'objet HTML
d=pq('<div id="test" class="class1"><ul><li>xxxx</li></ul></div>') 
# d('#test li') : récupère tous les éléments qui correspondent

lxml

Bien que lxml soit une bibliothèque populaire pour la manipulation des documents XML et HTML, elle est moins recommandée en ce qui concerne le web scraping. Pour faire du parsing de page web avec cette librairie on doit utiliser un parser comme BeautifulSoup ou pyquery. Ainsi son utilisation reste limité car plus compliqué a utilisé.

from lxml import html
import requests

page = requests.get('http://econpy.pythonanywhere.com/ex/001.html')
tree = html.fromstring(page.content)

buyers = tree.xpath('//div[@title="buyer-name"]/text()')
prices = tree.xpath('//span[@class="item-price"]/text()')

print(buyers) # ['Carson Busses', 'Earl E. Byrd', 'Patty Cakes']
print(prices) # ['$29.95', '$8.37

Créez vos projets d’IA avec Tensorflow, Keras et Scikit-Learn

Si vous êtes un passionné de l’intelligence artificielle, vous avez probablement entendu parler des bibliothèques Python populaires pour le machine learning tels que Tensorflow, Keras et Scikit-learn. Ces bibliothèques offrent une grande variété d’outils pour créer des modèles intelligents et résoudre les problèmes de classification, de régression ou autres.

Commençons par comprendre ces outils :

1. TensorFlow :

TensorFlow est une plateforme open-source créée par Google Brain Team en 2015 destinée à la création de modèles utilisant les techniques du deep learning. La particularité de cette bibliothèque est sa capacité à travailler sur plusieurs processeurs (CPU/GPU…) aussi bien localement qu’en ligne grâce à son service Cloud.

#### 2. Keras :
Keras est une API qui agit comme interface utilisateur permettant un travail plus simple et sécurisé avec TensorFlow en spécifiant l’architecture du modèle.
Grâce a Keras, vous pouvez développer rapidement des prototypes simplement avant pouvoir déployer votre solution en production utilisant l’écosystème TensorFlow complet.

### Comment utiliser ces outils ?
Pour utiliser ces différentes outils d’apprentissage automatique dans vos programmes python exige généralement plusieurs étapes:

  • Les données doivent être récupérées / chargées
  • Le jeu de données doit être divisé en deux : entraînement vs test
  • Ensuite commence la phase très importante : construire le modèle – où chaque couche peut avoir différents paramètres afin que nous puissions configurer chacune selon nos besoins spécifiques
  • Puis entrainez le modèle et testez le.
  • Une fois le modèle ajusté, vous pouvez utiliser les nouvelles données pour prédire de nouveaux résultats.

Exemples d’utilisation:

Voici un exemple simple utilisant ces bibliothèques :

  • Vous pouvez créer un programme qui apprend à distinguer une photo de chat et du chien en se basant sur l’apprentissage automatique.
  • Les graphismes ont été entraînés précédemment avec des images de chats et chiens précises.
    Ensuite, notre programme analyse les pixels chaque image qu’on lui donne en espérant ensuite trouver des similarités entre tous les chats ou tous les chiens pour pouvoir classer correctement la nouvelle image fournie au programme.

Un autre exemple est celui d’un système automatisé qui peut aider dans la détection précoce du cancer du sein par analyse automatique des mammographies.
Le premier pas consiste à éduquer le système compilant plusieurs fichiers d’images radiographiques mammaires aspirées auprès de différentes sources. Ensuite on devra classifier chacune des images radiologiques après quoi suivra la phase finale où on présentera au système une série d’images mammographiques et il sera capable automatiquement de découvrir si elles contiennent ou non des anomalies possibles liées a cette maladie..

L’apprentissage machine promet beaucoup et représente l’une des technologies innovantes importantes que nous pouvons offrir aujourd’hui. Avec Tensorflow, Keras and Scikit-Learn, exprimez-vous plus efficacement!

Améliorez votre expérience utilisateur avec Tkinter, PyQT et WxPython

Lorsqu’on développe une application en Python, il est important de garantir une expérience utilisateur (UX) agréable. Pour cela, nous allons vous présenter trois bibliothèques populaires pour créer des interfaces graphiques : Tkinter, PyQT et WxPython.

Tkinter

Tkinter est la bibliothèque standard de Python pour créer des interfaces graphiques. Elle permet de créer facilement des fenêtres, boutons, champs de texte et autres widgets. Cette bibliothèque est simple à utiliser, mais elle n’offre pas autant d’options que d’autres bibliothèques comme PyQT ou WxPython.

Exemple :

import tkinter as tk

root = tk.Tk()

label = tk.Label(root, text="Hello World", font=("Arial Bold", 20))
label.pack()

root.mainloop()

On peut voir qu’il suffit juste d’importer tk puis de déclarer les éléments à l’aide des classes proposées par cette dernière.

PyQT

PyQt offre une large gamme d’options pour personnaliser votre interface utilisateur. Il s’agit également d’une construction multiplateforme ce qui vous permettra de réaliser vos projets sur Windows,Linux ou MacOS . Contrairement à Tkinter ,qui a été intégrée dans la distribution standard python depuis ses débuts , PyQt doit être installé séparément.
Voici un exemple:

from PyQt5.QtWidgets import QApplication,QWidget,QPushButton

app=QApplication([])
window=QWidget()
layout=VBoxLayout()
button1=QPushButton('Button1')
button2=QPushButton('Button2')
layout.addWidget(button1)
layout.addWidget(button2)

window.setLayout(layout)

window.show()

app.exec_()

Voici quelques-unes des fonctionnalités les plus populaires de PyQt :

  • Un large ensemble de widgets et de contrôles
  • Des styles personnalisés pour personnaliser l’apparence graphique.
  • Affichage d’images

WxPython

WxPython est une bibliothèque qui permet aux développeurs Python de créer des interfaces graphiques modernes. Elle offre un grand choix d’options pour personnaliser votre application, mais peut être plus difficile à appréhender que Tkinter.Par contre, elle apporte davantage en terme d’options disponibles.

Exemple:

import wx  

class Example(wx.Frame):  
    def __init__(self, parent, title):  
        super(Example,self).__init__(parent,title=title,size=(260,180))     
        self.InitUI()  

    def InitUI(self):   
        vbox = wx.BoxSizer(wx.VERTICAL) 

        hbox1 = wx.BoxSizer(wx.HORIZONTAL)  
        l1 = wx.StaticText(self,-1,'Enter a text...')        
        hbox1.Add(l1, 0 ,wx.RIGHT|wx.TOP ,8 )  

        tc = wx.TextCtrl(self)      

        hbox1.Add(tc , 2 ,wx.EXPAND|wx.TOP ,5 )    
        vbox.Add(hbox1,0,wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP|wx.BOTTOM,\
10)


      self.SetSizer(vbox)

def main():  

    app=wx.App()    
    ex=Example(None,'Boxsizers tutorial')    
ex.Show()
#This is important for the GUI to work perfectly in Windows OS due to event handling architecture
app.MainLoop()

if __name__=='__main__':
    main()

On peut voir que la construction est très structurée : il est nécessaire de créer des boîtes qui contiennent les différents éléments. WxPython requiert un peu plus d’efforts pour obtenir ce que vous voulez, mais les résultats sont magnifiques.

FonctionnalitésTkinterPyQTWxpython
WidgetsBaseLarge gamme
Personnalisation graphiquePas trop Grande variété (possibilité d’utiliser stylettk)Grande varièté
Mise en pageGérer cela via une grille avec le gestionnaire de mise en page Pack() ou Grid() Drop and Drag Gestions auto alignement contrôle totale sur l’alignement/la position des widgets

N’hésitez pas à expérimenter avec ces trois bibliothèques pour choisir celle qui convient le mieux à votre projet et vos besoins UX!

Optimisez vos performances avec Cython, Numba et PyPy

Si vous cherchez à améliorer les performances de votre code Python, il existe plusieurs bibliothèques que vous pouvez utiliser pour y parvenir. Trois des plus populaires sont Cython, Numba et PyPy.

Cython

Cython est un compilateur statique qui permet de transformer le code Python en code C. Il ajoute également des types statiques au langage, ce qui peut aider à accélérer l’exécution du code. Selon les tests réalisés sur différents benchmarks, Cython peut offrir une augmentation significative des performances par rapport à la version purement Python du même code.

Voici un exemple d’utilisation de Cython pour optimiser une fonction :

import cython

@cython.boundscheck(False)
def sum_cython(int n):
    cdef int i
    cdef int s = 0

    for i in range(n):
        s += i

    return s

Dans cet exemple, nous avons utilisé la fonction boundscheck de Cython pour désactiver la vérification automatique des limites d’indice dans les tableaux. Nous avons également déclaré deux variables comme étant de type entier (cdef int) afin d’améliorer leur performance lorsqu’elles sont utilisées dans une boucle. Enfin, nous avons fourni un typage explicite à notre argument n, afin que le compilateur puisse mieux optimiser son utilisation.

Numba

Numba est une bibliothèque développée par Anaconda qui utilise du jitting (compilation juste-à-temps) pour accélérer l’exécution du code-machine sous-jacent sans sacrifier la flexibilité et la facilité d’utilisation du langage Python. Contrairement à Cython, qui nécessite une étape de compilation spéciale avant l’exécution, Numba peut être utilisé directement dans un environnement Python standard.

Voici un exemple d’utilisation de Numba pour optimiser une fonction :

from numba import jit

@jit(nopython=True)
def sum_numba(n):
    s = 0

    for i in range(n):
        s += i

    return s

Dans cet exemple, nous avons décoré notre fonction avec le décorateur @jit, qui indique à Numba qu’il doit compiler cette fonction en code machine lorsqu’elle est appelée. Nous avons également spécifié nopython=True pour que le compilateur émette un message d’erreur si plusieurs fonctions Python seront utilisées pendant la génération de bytecode.

PyPy

PyPy est une implémentation alternative de l’interprète Python qui utilise une technique appelée “compilation juste-à-temps”. En général, cela permet à PyPy d’être plus rapide que CPython (l’implémentation standard) sur diverses tâches. Il prend également en charge des modules tiers comme NumPy et est souvent compatible avec les bibliothèques écrites en C.

Ainsi pour utiliser PyPy vous avez besoin simplement:

$ sudo apt install pypy 

Ensuite vous pouvez exécutez votre programme normalement avec la commande:

$ pypy mon-fichier-python.py

Cython, Numpy et PyPy sont tous des outils très performants permettant aux développeurs pythonistes sérieux d’améliorer significativement leurs scripts par rapport aux versions purement pythonnesque . Bien sûr chaque outil peut être mieux adapté à certains domaines que d’autres, mais en général pour améliorer la performance de votre code Python , il vaut la peine d’essayer les bibliothèques populaires et de tester quelle convient le mieux à vos besoins.

Bibliographie

Quelles sont les meilleures bibliothèques Python pour débuter ?

Il existe un grand nombre de bibliothèques Python utiles et largement utilisées dans divers domaines. Pour les débutants, certaines bibliothèques sont plus adaptées en raison de leur facilité d’utilisation et de leur popularité auprès de la communauté des développeurs.

Voici quelques-unes des meilleures bibliothèques Python à prendre en compte si vous êtes un débutant:

NumPy

NumPy est une bibliothèque qui fournit des fonctions pour manipuler efficacement des tableaux multidimensionnels volumineux et des matrices mathématiques. Elle est souvent utilisée en science des données et en apprentissage automatique. Plusieurs entreprises telles que Google, NASA, Intel l’utilisent fréquemment.

Selon Stack Overflow 2023 Survey (l’enquête annuelle réalisée par Stack Overflow), NumPy est la deuxième bibliothèque la plus populaire auprès du public avec 31% d’utilisateurs réguliers.

Pandas

Pandas est une autre bibiothèque très populaire dans le domaine scientifique : elle permet notamment de stocker facilement les données sous forme tabulaire grâce à ses Dataframes. Elle offre également une grande compatibilité avec NumPy.

Stack Overflow a également classé pandas comme la troisième librairie Python meilleure catégorise pour sa qualité technique ainsi que son accessibilité selon ce même sondage “Developeur Survey Results”.

Matplotlib

Matplotib quant à elle permettra aux nouveaux programmeurs python mais également aux data scientists déboussolés par Seaborn ou Plotly d’afficher simplement leurs graphiques.
Elle utilise généralement la méthode orientée objet pour créer des graphiques en 2D et en 3D. Elle est préférablement utilisée dans le monde scientifique afin de visualiser les informations.

Selon John Hunter, fondateur de Matplotlib “Matplotlib permet à quiconque ayant une connaissance minimale du code Python d’afficher facilement leurs données sur des graphiques”

Scikit-learn

Scikit-Learn fournit des algorithmes d’apprentissage automatique pour effectuer diverses tâches telles que classifications, régressions, clustering ou encore l’analyse sémantique latente. Cette bibliothèque est également recommandée par Google et Facebook.
L’enquête Stack Overflow a placé Scikit Learn comme cinquième librairie mieux catégorisée selon sa qualité technique et son accessibilité.

Références :
  • FastAPI: https://fastapi.tiangolo.com/
  • Pydantic: https://pydantic-docs.helpmanual.io/
  • Streamlit: https://streamlit.io/docs/getting_started.html
  • Rich: https://github.com/willmcgugan/rich

Bibliographie

Documentation pandas
Documentation numpy
Documentation Matplotlib

Geron A., “Hands-On Machine Learning with Scikit-Learn and TensorFlow”, O’Reilly Media Inc., USA 2017

  • https://www.tensorflow.org/versions/r0.9/get_started/
  • https://www.datacamp.com/community/news/tensorflow-vs-keras-which-one-you-should-use-and-when-z6gx31xk2l8