7.2 KiB
7.2 KiB
Introduction à Pandas
Concepts de base
- Types de base :
Series
- Types de base :
DataFrame
- Types de base :
Index
- Types alternatifs :
MultiIndex
- Types alternatifs :
DatetimeIndex
Jupyter
-
Types de cellules, Kernel
-
Raccourcis clavier par défaut
-
Qu'est-ce que Jupyter ?
-
Avantages de Jupyter pour l'analyse de données
-
Installer Jupyter et lancer un serveur Jupyter
-
Types de cellules, Kernel
-
Raccourcis clavier par défaut
Création de données avec Python, Numpy et Pandas
- Tableaux Numpy
- Création et manipulation de tableaux (1D et 2D)
- Fonctions pour générer des séquences
- numpy.arange() et numpy.linspace()
- pandas.date_range()
- numpy.random.default_rng()
- numpy.empty, ones, zeros, etc.
- Numpy : "Array creation routines"
Manipuler une série
- Quelles sont les propriétés d'une série ?
- Quand obtient-on une série ?
- Types de données (
dtype
) - Créer une série
- Avec index par défaut
- Avec un index
- Préciser le dtype
- Extraire des informations d'une série (valeurs, index)
- Opérations sur séries (arithmétiques, comparaisons)
- Modifier une valeur d'une série
- Valeurs vides et filtrage (isna, notna, dropna, fillna, count)
- Méthodes des séries booléennes (any, all)
- Récupérer les valeurs distinctes (unique) et retirer des doublons
- Appliquer une fonction aux valeurs d'une série
- Filtrer une série (slice, indexes, conditions, filtres str, filtres dt)
- Concaténation de séries
Manipuler un dataframe
-
Quelles sont les propriétés d'un DataFrame ?
-
Notions et nomenclature des DataFrame (index, colonnes)
-
Quand obtient-on un DataFrame ?
-
Types de données (
dtypes
) -
Créer un DataFrame
- Avec des index par défaut (colonnes et lignes)
- Avec des index (colonnes et lignes)
-
Extraire des informations d'un DataFrame
- Taille d'un DataFrame
- Index des lignes et colonnes
- Cellule à une position (
at
) - Une ligne de données (
loc
,iloc
) - Une colonne de données (
df[]
) - Plusieurs lignes de données (
loc
,iloc
) - Plusieurs colonnes de données (
df[]
) - Lignes et colonnes (
loc[,]
,iloc[,]
) - Filtrage conditionnel (
loc[]
) - Déduplication des lignes (
drop_duplicates
) - Tri des lignes
- Récapitulatif
-
Valeurs vides et filtrage (isna, notna, dropna, fillna)
- Détecter les valeurs vides (isna, notna)
- Méthodes des séries booléennes (any, all, sum)
- Supprimer les lignes avec des valeurs vides (dropna)
- Remplacer les valeurs vides (fillna)
-
Modifier des informations dans un DataFrame
- Changer toute une colonne ou ligne
- Créer une ligne ou une colonne (+ insertion)
- Changer une cellule
- Retirer une ou plusieurs lignes et colonnes
- Appliquer une fonction
-
Comme du SQL, pour des DataFrame
- Ajouter un DataFrame sous ou à côté d'un autre
- Effectuer des jointures (left, right, inner, outer)
- Groupements (group_by)
- Fenêtres
-
Configurer l'affichage d'un DataFrame (config ou to_string)
Utiliser des index
- Quelles sont les propriétés d'un index ?
- Extraire des valeurs d'un index (position, slicing)
- Connaître la position d'une valeur dans l'index (
get_loc
) - Définir un index à un DataFrame ou une série
- Réinitialiser l'index d'un DataFrame ou une série
- Trier par un index (MultiIndex)
- Comprendre les MultiIndex
- Les DatetimeIndex et la fonction date_range
Calculer avec des séries et des dataframe
- Appliquer des fonctions d'agrégation (statistiques etc.)
- Sur une série
- Sur un DataFrame (
describe()
) - Multiples résultats simultanés (
df.agg()
) - Fonctions d'agrégation personnalisées
- Conversion des types (to_datetime,
.astype()
, etc.) - Opérations et comparaisons sur les séries et dataframes
Chargement de DataFrame depuis fichiers
- Protocoles pris en charge (https, file)
- Chargement de fichiers CSV (inférence, dates, en-têtes, encodage)
- Chargement de fichiers Excel (moteurs de chargement : xlrd, openpyxl etc.)
- Chargement depuis document JSON (liste de dictionnaires etc.)
- Prise en charge des archives (zip, gz, bz2, xz)
- Chargement depuis SQLite3 (ou SQLAlchemy)
Enregistrement de DataFrame vers des fichiers
- Formats de sauvegarde classiques (Excel, CSV)
- Formats SQL (connexion SQLAlchemy ou SQLite3)
- Format Pickle
Export de DataFrame vers des formats divers
- Vers un dictionnaire
- Vers une chaîne de caractères
- Vers un document HTML
Rendu de graphiques avec Pandas et Matplotlib
- Matplotlib, qu'est-ce que c'est ?
- Comment ça marche ?
Diagrammes avec Pandas
- Exemples simples (création de diagrammes matplotlib)
- Générer un diagramme en barres
- Générer un diagramme en lignes
- Générer un diagramme en secteurs
- Générer un nuage de points
- Autres diagrammes
- Personnaliser les diagrammes
- Arguments de la méthode
.plot()
(tracé)
- Arguments de la méthode
Matplotlib plus complet
- Créer un simple tracé et dessiner dedans
- Avec un DataFrame
- Avec des données brutes (Numpy ou Python)
- Dessiner par-dessus un tracé (hold state)
- Objets de type
Figure
et sous-tracés (Axes
)- Layout multi-tracés (
subplots
) - Manipuler un objet de tracé
Axes
- Layout multi-tracés (
- Afficher les diagrammes (fenêtres)
- Personnaliser les couleurs
- Nommage des couleurs
- Cartes de couleur (
Colormap
)- Objets colormap fournis par Matplotlib
- Objets colormap personnalisés (classes Colormap)
- Personnaliser les tracés
- Largeurs de traits, contours de zones
- Couleurs de fond
- Couleurs de tracés
- Espacements et mise en page
- Polices de texte
- Génération de légendes
- Libellés (X, Y, titre, Axes, valeurs de barres/secteurs)
- Dessiner par-dessus un tracé (lignes, texte, cercles)
Rendu de diagrammes statistiques avec Seaborn
- Seaborn, c'est quoi ?
- Créer un simple tracé pour une matrice de corrélation (heatmap)
Rendu de diagrammes web avec Plotly et Dash
- Plotly, c'est quoi ?
- Plotly Express, c'est quoi ?
- Exemples simples
- Générer un diagramme en barres
- Générer un diagramme en lignes
- Générer un diagramme en secteurs
- Générer un nuage de points
- Générer un diagramme de Sankey
- Dash, c'est quoi ?
- Générer un tableau de bord simple avec Dash
- Construction avec des composants HTML
- Composant
dash_table.DashTable
- Composants DCC (Dash Core Components)
- Créer un dashboard via un document HTML (dash-htmlayout)
- Interactivité dans un tableau de bord Dash
- Callbacks
- Entrées
- Sorties
- Propriétés des composants
- Styles CSS et scripts JS dans un document Dash
- Répertoire de recherche des fichiers et configuration
- dash-htmlayout pour créer son layout de tableau de bord sans Python
Concurrence et parallélisme dans le traitement de données
- Optimisation des performances via la parallélisation/threading
- Outils Python d'exécution concurrente/parallèle
- Celery (Linux seulement)
- Configuration
- Installation d'un broker (Redis)
- Envoi d'une tâche Celery
- Démarrage d'une tâche et service Worker
- Tâches périodiques et service Beat
- Spark + pySpark (Linux seulement)
Outils et bibliothèques de performance Python
- Numba
- Nuitka
- PyPy
- Mesurer le temps d'exécution de votre code
- Concept : Profiling