Archives Wild Code School
Python

Visualisation explicative

Quête 66 sur 66 · 5 images archivées

Prérequis

Avant de plonger dans cette leçon, vous devriez être familier avec :

  • La création de visualisations avec Matplotlib et Seaborn

Objectifs pédagogiques

À la fin de cette leçon, vous serez capable de :

  • Simplifier et affiner vos visualisations pour un impact maximal.
  • Utiliser la couleur, les étiquettes et les annotations pour mettre en valeur les points de données clés.

La communication efficace des résultats d'analyse de données est essentielle. Dans cette leçon, vous apprendrez à transformer des insights de données complexes en histoires visuelles claires et convaincantes adaptées à votre public. Alors que l'analyse exploratoire des données vous aide à découvrir des modèles et des tendances, les visualisations explicatives sont conçues pour communiquer ces résultats d'une manière facilement compréhensible et exploitable.

En vous appuyant sur les compétences du module précédent, vous vous entraînerez à utiliser les meilleures pratiques pour créer des visualisations puissantes. Vous apprendrez à supprimer les éléments inutiles, à utiliser la couleur et les étiquettes avec intention, et à sélectionner les formats visuels les plus efficaces pour garantir que votre message soit instantanément clair.

Avant de créer une visualisation, il est crucial de commencer par deux étapes fondamentales :

  1. Choisir un message clé :

    Décidez du point principal ou de l'histoire que vous voulez que vos données transmettent. Ce message doit être clair, spécifique et concis. Essayez-vous de montrer une tendance, de comparer des catégories ou de mettre en évidence une corrélation ? Connaître votre message clé guidera toutes les décisions concernant le type de visualisation, les données à inclure et la façon de les présenter.

  2. Comprendre votre public :

    Savoir qui va voir votre visualisation est essentiel. Différents publics peuvent avoir des niveaux d'expertise, des intérêts ou des biais différents. Par exemple, un graphique pour des experts en données peut inclure plus de détails statistiques complexes, tandis qu'un graphique pour des non-techniciens devrait se concentrer sur des insights clairs et exploitables. Comprendre votre public vous aide à adapter votre visualisation d'une manière qui maximise la compréhension et l'impact.

Nous commencerons par un exemple de visualisation complexe et le simplifierons étape par étape, en appliquant les meilleures pratiques pour obtenir la représentation visuelle la plus efficace de vos données.

Notre objectif est d'illustrer comment les taux de complétion des cours varient selon la difficulté du cours. Cela aidera les éducateurs et les concepteurs de cours—qui peuvent ne pas être des experts techniques—à identifier les tendances et à affiner leurs approches. Nous utiliserons le jeu de données students.csv pour cette analyse.

:paperclip: students.csv

Pour commencer, créons un graphique en barres de base pour visualiser la distribution du statut de complétion à travers différentes difficultés de cours, avant d'appliquer les meilleures pratiques.

python
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# Load the dataset
df = pd.read_csv('students.csv')

# Basic count plot
plt.figure(figsize=(10, 6))
sns.countplot(data=df, x='CourseDifficulty', hue='CompletionStatus')

La simplification des visuels implique de supprimer les éléments qui ne contribuent pas au message clé. Pour améliorer la lisibilité de notre graphique, nous allons :

  • Éliminer l'encombrement : Supprimer les éléments inutiles comme les lignes de grille, les boîtes autour du texte et les bordures (lignes de bordure de la zone du graphique) qui n'aident pas à la compréhension.
  • Déplacer la légende : La placer en dehors de la zone du graphique pour réduire l'encombrement.
  • Ajuster la taille du texte : Modifier la taille de police des éléments textuels pour une meilleure lisibilité.
  • Réorganiser les barres : Afficher les difficultés des cours dans l'ordre croissant—Easy, Medium, Hard—pour une vue plus intuitive.
python
# Set up the figure
plt.figure(figsize=(10, 6))

# Create the count plot with specified order
sns.countplot(data=df, x='CourseDifficulty', hue='CompletionStatus', order=['Easy', 'Medium', 'Hard'])

# Set labels and font sizes
plt.xlabel('Course Difficulty', fontsize=16)
plt.ylabel('Number of Students', fontsize=16)
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)

# Configure the legend
# size refers to the labels Completed Non Completed
plt.legend(title='Completion Status',
           bbox_to_anchor=(1.05, 1), loc='upper left',
           edgecolor="white", title_fontsize=14,
           prop={'size': 12})

# Remove top and right spines
sns.despine(top=True, right=True)

La couleur est l'un des outils les plus puissants en visualisation de données. Utilisez-la judicieusement pour transmettre du sens :

  • La couleur la plus Importante est le gris : Utilisez le gris pour les éléments d'arrière-plan ou les données moins importantes afin de maintenir l'attention sur l'information principale.
  • Utilisez des palettes standards : Les palettes catégorielles standards dans Seaborn (comme Set1, Set2, pastel, etc.) sont excellentes pour différencier les catégories.
  • Choisir vos propres couleurs : Si vous voulez créer une palette personnalisée, réfléchissez à quand et pourquoi c'est nécessaire. Choisissez des couleurs qui sont distinctes, accessibles (pensez au daltonisme) et alignées avec le message que vous voulez transmettre.

Nous pouvons utiliser le vert pour "Completed" et le rouge pour "Not Completed" pour transmettre intuitivement les résultats positifs et négatifs. Pour réduire l'encombrement visuel, nous pouvons appliquer le gris aux éléments comme les étiquettes de texte ou les bordures qui sont importants mais n'ont pas besoin de ressortir.

python
# Set up the figure size
plt.figure(figsize=(10, 6))

# Create a countplot using seaborn
sns.countplot(data=df, x='CourseDifficulty', hue='CompletionStatus',
              order=['Easy', 'Medium', 'Hard'],
              palette = ['seagreen','red']) # Green for completed, red for not completed

# Set labels and font sizes
plt.xlabel('Course Difficulty', fontsize=16)
plt.ylabel('Number of Students', fontsize=16)
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)

# Configure the legend
plt.legend(title='Completion Status', bbox_to_anchor=(1.05, 1),
           loc='upper left', edgecolor="white",
           title_fontsize=14, prop={'size': 12})

# Remove top and right spines
sns.despine(top=True, right=True)

# Color the remaining spines grey
plt.gca().spines['left'].set_color('grey')  # Make the left spine grey
plt.gca().spines['bottom'].set_color('grey')  # Make the bottom spine grey

Les annotations fournissent du contexte et guident la compréhension des données par l'audience.

Incluez un titre descriptif qui résume le point principal de votre graphique. Lorsque c'est pertinent, ajoutez l'année en cours ou les dates importantes pour fournir un contexte temporel à vos données.

Vous pouvez également mettre en évidence des points de données spécifiques avec des valeurs exactes ou des notes spéciales, attirant l'attention sur les informations clés.

python
# Set up the figure size
plt.figure(figsize=(10, 6))

# Create a countplot using seaborn
ax = sns.countplot(data=df, x='CourseDifficulty', hue='CompletionStatus',
              order=['Easy', 'Medium', 'Hard'],
              palette = ['seagreen','red'])

# Add value count on top of each bar
for patch in ax.patches:
    ax.annotate(text = f'{int(patch.get_height())}',
    xy = [patch.get_x() + patch.get_width() / 2., patch.get_height()],
    ha='center', va='center',
    xytext=[0, 5], textcoords='offset points', color='grey')

# Set title and labels with appropriate font sizes
plt.title('Course Completion Status by Course Difficulty', fontsize=18)
plt.xlabel('Course Difficulty', fontsize=16)
plt.ylabel('Number of Students', fontsize=16)
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)

# Customize legend
plt.legend(title='Completion Status', bbox_to_anchor=(1.05, 1), loc='upper left',
           edgecolor="white", title_fontsize=14, prop={'size': 12})

# Remove top and right spines
sns.despine(top=True, right=True)

# Color the remaining spines grey
plt.gca().spines['left'].set_color('grey')
plt.gca().spines['bottom'].set_color('grey')

# Save the figure with high resolution
plt.savefig('annotate_with_insight.png', bbox_inches='tight', dpi=600)

La boucle for itère à travers chaque barre du graphique et ajoute une annotation textuelle affichant le décompte (hauteur) de cette barre. Ces annotations sont centrées sur chaque barre et apparaissent légèrement au-dessus du sommet pour éviter le chevauchement.

Exercice

Créez un graphique en barres qui montre le nombre de transactions pour chaque produit vestimentaire, avec le nombre de transactions affiché au-dessus de chaque barre. L'objectif est d'aider l'équipe des ventes ou les gestionnaires de produits à identifier facilement les produits les plus populaires.

Jeu de données :

Nous utiliserons le jeu de données complete_data_with_time_features.csv :paperclip: complete_data_with_time_features.csv qui contient les colonnes pertinentes suivantes :

  • category : La catégorie du produit (par exemple, vêtements, électronique, etc.).
  • product_name : Le nom de chaque produit.

Assurez-vous de copier complete_data_with_time_features.csv dans le dossier exercise du dossier Explanatory_Visualisation.

Tâches :

Tâche 1 : Configurer votre Notebook

  • Ouvrez un nouveau notebook Jupyter nommé clothing_sales_analysis.ipynb dans le dossier exercise du dossier Explanatory_Visualisation.

Tâche 2 : Charger et filtrer les données

  • Chargez le jeu de données complete_data_with_time_features.csv dans un DataFrame pandas.
  • Filtrez les données pour n'inclure que les lignes où la category est "clothing".

Tâche 3 : Créer un graphique en barres pour visualiser les transactions

  • Tracez le nombre de transactions pour chaque produit :
    • Utilisez countplot de Seaborn pour créer un graphique en barres du nombre de transactions par produit dans la catégorie "clothing".
  • Assurez-vous que toutes les barres sont dans une couleur neutre (gris).

Tâche 4 : Simplifier et mettre en évidence les insights clés

  • Simplifiez le visuel :
    • Supprimez les éléments inutiles comme les lignes de grille, les bordures.
    • Utilisez des titres et des étiquettes d'axes descriptifs pour rendre le graphique facile à comprendre.
  • Utilisez la couleur avec intention
    • Assurez-vous que toutes les barres sont dans une couleur neutre (gris) sauf celle correspondant au produit avec le plus grand nombre de transactions (utilisez skyblue).
  • Ajoutez les décomptes au-dessus de chaque barre :
    • Affichez le nombre de transactions au-dessus de chaque barre pour plus de clarté.

Graphique attendu

Solution

Voir la solution
python
# Create a count plot for the number of transactions per product
plt.figure(figsize=(12, 6))
ax = sns.countplot(data=df_clothes,
                    x='product_name',hue='product_name',
                    palette=['grey','skyblue','grey','grey','grey'])

# Add value count on top of each bar
for p in ax.patches:
    ax.annotate(f'{int(p.get_height())}', (p.get_x() + p.get_width() / 2., p.get_height()),
                ha='center', va='center', xytext=(0, 5), textcoords='offset points', color='grey')

# Customize plot appearance
plt.title('Number of Transactions for Clothing Products', fontsize=16)
plt.xlabel('Product Name', fontsize=14)
plt.ylabel('Number of Transactions', fontsize=14)
plt.xticks(rotation=45)

# Remove gridlines and spines for a cleaner look
sns.despine(right=True,top=True)

# Save and display the plot
plt.savefig('clothing_transactions_countplot.png', bbox_inches='tight', dpi=300)

Excellent travail ! Vous avez approfondi les principes de création de visualisations explicatives efficaces, en vous concentrant sur l'utilisation efficace de la couleur dans un graphique pour communiquer clairement votre message clé.

Vous savez maintenant comment utiliser la couleur avec intention et comment attirer l'attention sur des éléments spécifiques. Par exemple, dans un graphique en barres avec plusieurs catégories, vous pouvez utiliser une couleur vive ou audacieuse (comme le rouge ou le bleu) pour mettre en évidence la barre représentant une variable clé, tout en utilisant des couleurs plus neutres (comme le gris) pour les autres barres.

Enfin, vous avez appris comment mettre l'accent sur les points clés en utilisant la couleur en combinaison avec d'autres techniques, comme les annotations.

Continuez votre excellent travail dans votre parcours avec les données !