Visualisation de Données Pytho
Cheatsheet Content
### Introduction à la Visualisation de Données avec Python La visualisation de données est essentielle pour explorer, comprendre et communiquer des informations à partir de données. Python offre un écosystème riche avec des bibliothèques puissantes comme Matplotlib, Seaborn, Plotly et Pandas pour créer des visualisations statiques et interactives. #### Pourquoi visualiser les données ? - **Exploration:** Identifier des motifs, des tendances et des anomalies. - **Communication:** Présenter des résultats de manière claire et concise. - **Validation:** Vérifier les hypothèses et les modèles. ### Matplotlib : Les Bases Matplotlib est la bibliothèque de base pour la création de graphiques statiques en Python. #### Importation ```python import matplotlib.pyplot as plt import numpy as np ``` #### Graphique en Lignes (Line Plot) Utilisé pour montrer les tendances au fil du temps ou entre des catégories ordonnées. ```python x = np.linspace(0, 10, 100) y = np.sin(x) plt.plot(x, y, label='sin(x)') plt.xlabel('X-axis') plt.ylabel('Y-axis') plt.title('Simple Line Plot') plt.legend() plt.show() ``` #### Nuage de Points (Scatter Plot) Idéal pour visualiser la relation entre deux variables continues. ```python x = np.random.rand(50) y = np.random.rand(50) plt.scatter(x, y, color='red', alpha=0.7) plt.xlabel('Variable 1') plt.ylabel('Variable 2') plt.title('Scatter Plot Example') plt.show() ``` #### Histogramme (Histogram) Afficher la distribution d'une variable numérique. ```python data = np.random.randn(1000) plt.hist(data, bins=30, edgecolor='black', alpha=0.7) plt.xlabel('Value') plt.ylabel('Frequency') plt.title('Histogram of Random Data') plt.show() ``` #### Diagramme en Barres (Bar Chart) Comparer des quantités entre différentes catégories. ```python categories = ['A', 'B', 'C', 'D'] values = [10, 25, 15, 30] plt.bar(categories, values, color='skyblue') plt.xlabel('Category') plt.ylabel('Value') plt.title('Bar Chart Example') plt.show() ``` #### Personnalisation de Base - `plt.figure(figsize=(width, height))`: Taille du graphique. - `plt.xlim()`, `plt.ylim()`: Limites des axes. - `plt.grid(True)`: Ajouter une grille. - `plt.savefig('my_plot.png')`: Enregistrer le graphique. ### Seaborn : Améliorations Statistiques Seaborn est basé sur Matplotlib et fournit une interface de haut niveau pour des graphiques statistiques plus attrayants et informatifs. #### Importation ```python import seaborn as sns import pandas as pd ``` #### Configuration du Style ```python sns.set_style('whitegrid') # 'darkgrid', 'white', 'dark', 'ticks' sns.set_palette('viridis') # 'deep', 'muted', 'pastel', 'bright', 'dark', 'colorblind' ``` #### Chargement de Données Exemple ```python df = sns.load_dataset('iris') # Utilisation d'un dataset intégré à Seaborn ``` #### Nuage de Points Amélioré Avec la relation entre deux variables numériques, possibilité d'ajouter une variable catégorielle (hue). ```python sns.scatterplot(data=df, x='sepal_length', y='sepal_width', hue='species') plt.title('Iris Sepal Length vs Width by Species') plt.show() ``` #### Distribution (Distplot / Histplot) Combinaison d'histogramme et de densité. `histplot` est le successeur de `distplot`. ```python sns.histplot(data=df, x='sepal_length', kde=True) # kde=True ajoute une estimation de la densité du noyau plt.title('Distribution of Sepal Length') plt.show() ``` #### Boîte à Moustaches (Box Plot) Visualiser la distribution d'une variable numérique pour différentes catégories, montrant la médiane, les quartiles et les valeurs aberrantes. ```python sns.boxplot(data=df, x='species', y='sepal_length') plt.title('Sepal Length Distribution by Species') plt.show() ``` #### Nuage de Violons (Violin Plot) Similaire au box plot mais montre la densité de la distribution sous-jacente. ```python sns.violinplot(data=df, x='species', y='sepal_length') plt.title('Violin Plot of Sepal Length by Species') plt.show() ``` #### Pair Plot Visualiser les relations par paires entre toutes les variables numériques d'un DataFrame. ```python sns.pairplot(df, hue='species') plt.show() ``` #### Heatmap Visualiser les données matricielles ou la corrélation entre les variables. ```python corr_matrix = df.corr(numeric_only=True) sns.heatmap(corr_matrix, annot=True, cmap='coolwarm') plt.title('Correlation Matrix of Iris Dataset') plt.show() ``` ### Plotly : Visualisations Interactives Plotly permet de créer des graphiques interactifs qui peuvent être intégrés dans des applications web ou exportés. #### Importation ```python import plotly.express as px import plotly.graph_objects as go ``` #### Graphique en Nuage de Points Interactif ```python df = sns.load_dataset('iris') fig = px.scatter(df, x='sepal_length', y='sepal_width', color='species', title='Iris Sepal Length vs Width (Interactive)', hover_data=['petal_length', 'petal_width']) fig.show() ``` #### Graphique en Barres Interactif ```python data = {'Category': ['A', 'B', 'C', 'D'], 'Value': [10, 25, 15, 30]} df_bar = pd.DataFrame(data) fig = px.bar(df_bar, x='Category', y='Value', title='Interactive Bar Chart') fig.show() ``` #### Graphique en Lignes Interactif ```python df_gapminder = px.data.gapminder().query("country=='Canada'") fig = px.line(df_gapminder, x="year", y="lifeExp", title='Life expectancy in Canada') fig.show() ``` #### Utilisation de `graph_objects` pour plus de contrôle ```python fig = go.Figure(data=go.Scatter(x=[1, 2, 3, 4], y=[10, 11, 12, 13], mode='markers', name='Points')) fig.add_trace(go.Scatter(x=[1, 2, 3, 4], y=[12, 9, 15, 12], mode='lines+markers', name='Line')) fig.update_layout(title='Complex Plotly Graph') fig.show() ``` ### Pandas : Plotting Intégré Pandas intègre des fonctions de traçage basées sur Matplotlib, rendant la visualisation rapide directement à partir des DataFrames. #### Bases du Plotting Pandas ```python df = pd.DataFrame({ 'A': np.random.rand(50).cumsum(), 'B': np.random.rand(50).cumsum() }, index=pd.date_range('2023-01-01', periods=50)) df.plot(title='Pandas Line Plot') # Par défaut, graphique en lignes plt.show() ``` #### Types de Graphiques Communs - `df.plot.bar()`: Diagramme en barres. - `df.plot.hist()`: Histogramme. - `df.plot.scatter(x='col1', y='col2')`: Nuage de points. - `df.plot.box()`: Boîte à moustaches. - `df.plot.area()`: Graphique en aires. - `df.plot.pie()`: Diagramme circulaire (pour une seule colonne). #### Exemple de Bar Plot avec Pandas ```python data = {'Fruits': ['Apple', 'Orange', 'Banana', 'Grape'], 'Count': [4, 7, 1, 9]} df_fruits = pd.DataFrame(data) df_fruits.plot.bar(x='Fruits', y='Count', title='Fruit Counts') plt.show() ``` ### Conseils et Bonnes Pratiques - **Clarté:** Assurez-vous que votre graphique est facile à comprendre. - **Étiquettes et Titres:** Toujours inclure des titres clairs et des étiquettes d'axes. - **Légendes:** Indispensables lorsque plusieurs séries de données sont représentées. - **Choix du Type de Graphique:** Sélectionnez le graphique approprié pour le type de données et le message que vous voulez transmettre. - **Couleurs:** Utilisez des palettes de couleurs cohérentes et accessibles (pensez aux daltoniens). - **Éviter le Surcharge:** Ne pas inclure trop d'informations dans un seul graphique. - **Interactivité:** Pour les présentations ou les dashboards, les graphiques interactifs (Plotly) sont souvent préférables. - **Nettoyage des Données:** Visualisez toujours des données propres et préparées.