Retour à la liste des articles Articles
15 minutes de lecture

Graphiques avec SQL : Un guide pour les débutants

SQL, souvent connu sous le nom de Structured Query Language (langage de requête structuré), est un outil précieux pour les analystes de données. Il vous permet d'interroger, de mettre à jour et d'organiser vos données. Il s'agit d'une condition préalable essentielle à la création de graphiques. Dans cet article, nous verrons comment préparer des données avec SQL pour les utiliser dans des visualisations de données.

Les données brutes n'ont de valeur que si vous savez comment les nettoyer et les organiser. Ainsi, la préparation correcte des données pour les graphiques est une étape importante dans la création de graphiques captivants et informatifs. Dans cet article, nous verrons comment utiliser SQL pour nettoyer les données que vous utiliserez dans un graphique.

Les graphiques sont des représentations visuelles de données qui comprennent les diagrammes à barres, les diagrammes linéaires, les diagrammes circulaires, les diagrammes en boîte et bien d'autres. Leur objectif est de convertir des données complexes en informations claires et exploitables. Ceci est particulièrement important car les analystes de données doivent être en mesure de communiquer leurs informations au reste de leur équipe et aux autres parties prenantes.

Si SQL excelle dans le nettoyage et la préparation des données, il ne dispose pas d'une fonctionnalité intégrée de création de graphiques. Il existe cependant de nombreuses ressources externes pour ce faire, notamment Tableau, Looker Studio, Power BI ou des bibliothèques Python. Cela dit, la qualité de vos graphiques dépend des données utilisées pour les créer. Si les données ne sont pas correctement préparées, vos graphiques ne pourront pas exprimer un message significatif.

C'est pourquoi le langage SQL reste extrêmement important. Et quel meilleur moment pour commencer à étudier que maintenant, avec notre cours SQL pour l'analyse de données? Ce cours vous permettra d'acquérir toutes les compétences clés pour préparer les données pour les graphiques.

Dans cet article, nous vous montrerons comment utiliser SQL pour préparer vos données à la création de graphiques à l'aide d'outils externes. Des exemples et des requêtes SQL seront également fournis pour que vous puissiez vous exercer. Alors, commençons !

Se préparer à créer des graphiques avec SQL

La préparation des données est une première étape essentielle pour créer des visualisations de données attrayantes. Le langage SQL permet d'organiser, d'agréger et de filtrer efficacement les données en quelques lignes de code. Voyons quelques exemples de graphiques que vous pouvez créer. (P.S. Voici notre Aide-mémoire SQL pour l'analyse de données afin que vous puissiez revoir certaines fonctions si nécessaire).

1. Diagramme à barres

Un diagramme à barres est un type de graphique qui contient des barres rectangulaires représentant différentes catégories de données. La hauteur (pour un graphique vertical) ou la longueur (pour un graphique horizontal) de la barre représente la valeur de la catégorie concernée.

Les diagrammes à barres sont utiles pour comparer les données de différentes catégories, telles que les ventes par produit, les commandes par région, etc. Vous pouvez identifier les différences ou les tendances au sein de ces catégories en un coup d'œil.

Exemple de diagramme à barres

Voici un exemple de diagramme à barres. Nous créerons la requête SQL pour ce graphique plus loin dans l'article.

Graphiques avec SQL

De quelles informations avons-nous besoin pour créer un diagramme à barres ?

  • Lesétiquettes: Nous avons besoin des étiquettes de chaque barre sur l'axe X (horizontal). La requête doit renvoyer les étiquettes comme l'une des colonnes de la clause SELECT.
  • Hauteur desbarres: La hauteur des barres est fonction de notre axe Y (vertical). Il s'agit d'une autre colonne qui doit être calculée dans une clause SELECT. La hauteur des barres est généralement calculée à l'aide d'une fonction d'agrégation telle que SUM() ou COUNT() et GROUP BY en utilisant les étiquettes de l'axe X.
  • Tri: Il est possible d'organiser les barres du graphique dans un ordre donné.

Exemple de ventes par catégorie de produits

Imaginons que vous souhaitiez analyser les ventes totales de 2023 pour chaque catégorie de produits. À l'aide de SQL, vous pouvez préparer les données pour le diagramme à barres en utilisant la requête suivante :

SELECT 
    product_category, 
    SUM(sales_amount) AS total_sales
FROM 
    sales_data
WHERE 
    sale_date BETWEEN '2023-01-01' AND '2023-12-31'
GROUP BY 
    product_category
ORDER BY 
    total_sales DESC;

Explication :

  • SELECT product_category, SUM(sales_amount) AS total_sales: Tout d'abord, nous sélectionnons les colonnes souhaitées et utilisons la fonction d'agrégation SUM sur sales_amount pour agréger les ventes par catégorie de produits. Ce sera l'étiquette de l'axe X et la hauteur de la barre.
  • WHERE sale_date BETWEEN '2023-01-01' AND '2023-12-31: Nous voulons évaluer uniquement les ventes de 2023, cette clause filtre donc les données pour qu'elles ne contiennent que les ventes de 2023.
  • GROUP BY product_category: Ici, nous regroupons nos données par product_category pour résumer les ventes totales.
  • ORDER BY total_sales DESC: Enfin, nous trions les données par ordre décroissant afin que les ventes les plus élevées soient les premières et les plus faibles les dernières.

2. Graphique linéaire

Un graphique linéaire est un type de graphique qui montre des points de données reliés par une ligne. Ce graphique est une excellente visualisation des données pour montrer les tendances au fil du temps, comme le suivi de l'activité d'un site Web sur un mois, l'analyse des tendances des ventes sur une année, etc.

Exemple de graphique linéaire

Voici un exemple de graphique linéaire :

Graphiques avec SQL

De quelles informations avons-nous besoin pour créer un graphique en courbes ?

  • Étiquettes: Nous avons besoin d'étiquettes (généralement des dates) pour l'axe des X.
  • Hauteur de laligne: Pour chaque point de la ligne, nous avons besoin d'une hauteur de ligne. Il peut s'agir de la valeur à cette date, soit sélectionnée dans la base de données, soit calculée à l'aide d'une fonction d'agrégation. Il peut également s'agir d'une autre valeur, telle qu'une moyenne mobile, calculée à l'aide de fonctions de fenêtre.
  • Tri: Afin de s'assurer que nos données sont correctement classées par date, nous utilisons la fonction ORDER.

Exemple de ventes de téléphones portables

Imaginons que nous voulions trouver les jours de pointe pour les ventes de téléphones portables en surveillant les ventes mensuelles de notre site web. Pour ce faire, nous pouvons calculer la moyenne mobile des données de vente afin d'atténuer les fluctuations.

Tout d'abord, nous allons diviser la requête en deux parties : une sous-requête qui collecte les données nécessaires et une requête principale qui calcule la moyenne mobile à l'aide de ces données. En utilisant SQL, nous pourrions préparer la sous-requête comme suit :

SELECT 
    DATE(sale_date) AS sale_day, 
    COUNT(*) AS mobile_sales_count
FROM 
    sales_data
WHERE 
    device_type = 'mobile'
GROUP BY 
    sale_day
ORDER BY 
    sale_day ASC;

Explication :

  • SELECT DATE(sale_date) AS sale_day, COUNT(*) AS mobile_sales_count: Extrait la date de sale_date et compte les ventes de téléphones portables pour chaque jour.
  • WHERE device_type = 'mobile': Filtre la colonne device_type pour n'inclure que les ventes d'appareils mobiles.
  • GROUP BY sale_day: Regroupe les données par jour.
  • ORDER BY sale_day ASC: Trie les résultats par date dans l'ordre croissant.

Nous poussons ensuite cette requête un peu plus loin en utilisant une moyenne mobile, comme nous l'avons mentionné. Une moyenne mobile lisse les variations à court terme des données, ce qui permet de minimiser les fluctuations. Une fluctuation est une variation à court terme des données, telle que des pics ou des baisses quotidiens, qui peut masquer des tendances plus larges.

En utilisant une moyenne mobile sur 7 jours, nous pouvons déterminer la moyenne pour le jour en cours et les six jours précédents. Nous atténuons ainsi les variations quotidiennes et révélons les tendances hebdomadaires. C'est exactement ce que nous permet de faire la modification de notre requête précédente :

SELECT 
    sale_day, 
    AVG(mobile_sales_count) OVER (ORDER BY sale_day ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_avg
FROM (
    SELECT 
        DATE(sale_date) AS sale_day, 
        COUNT(*) AS mobile_sales_count
    FROM 
        sales_data
    WHERE 
         device_type = 'mobile'
    GROUP BY 
        DATE(sale_date)
) daily_sales;

Explication :

  • SELECT sale_day, AVG(mobile_sales_count) OVER (ORDER BY sale_day ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_avg: Il s'agit d'une fonction de fenêtre qui calcule une moyenne mobile sur 7 jours (jour en cours + 6 jours précédents) des ventes de téléphones portables, classées par jour de vente.
  • FROM (...) daily_sales: Ici, nous adaptons la requête précédente en tant que sous-requête, et nous la nommons daily_sales.

Pour en savoir plus sur les fonctions de fenêtre, consultez notre article Exemple de fonction de fenêtre SQL avec explications.

3. Graphique circulaire

Un diagramme circulaire est un graphique qui divise un cercle en sections ou en tranches, chacune représentant une partie de l'ensemble. Ce type de graphique est particulièrement utile pour représenter des proportions ou des pourcentages, comme dans la distribution démographique, la répartition des sources de revenus, etc.

Exemple de diagramme circulaire

Un exemple de diagramme circulaire peut se présenter comme suit :

Graphiques avec SQL

De quelles informations avons-nous besoin pour créer un diagramme circulaire ?

  • Étiquettes: Nous avons besoin d'étiquettes pour chaque tranche du diagramme circulaire.
  • Taille destranches: Nous devons calculer la taille de chaque tranche.
  • Calcul dupourcentage: Nous devons calculer la contribution proportionnelle de chaque groupe au total, sous forme de pourcentage.
  • Regroupement: Nous devons généralement regrouper les données en fonction des étiquettes du graphique.

Exemple de répartition démographique des ventes

Imaginons que nous souhaitions connaître le pourcentage du chiffre d'affaires réalisé par chaque segment démographique d'âge pour notre entreprise. Nous pourrions utiliser la requête suivante pour préparer nos données :

SELECT 
    CASE 
        WHEN age < 18 THEN 'Below 18'
        WHEN age BETWEEN 18 AND 24 THEN '18-24'
        WHEN age BETWEEN 25 AND 34 THEN '25-34'
        WHEN age BETWEEN 35 AND 44 THEN '35-44'
        WHEN age BETWEEN 45 AND 54 THEN '45-54'
        WHEN age >= 55 THEN '55+'
    END AS age_group,
    SUM(sales_amount) AS total_sales, 
    SUM(sales_amount) * 100.0 / SUM(SUM(sales_amount)) OVER () AS pc_of_sales  
FROM 
    sales_data
WHERE 
    age IS NOT NULL  
GROUP BY 
    age_group; 

Explication :

  • CASE ... END AS age_group: À l'aide de l'instruction CASE, nous divisons l'âge de nos clients en groupes d'âge spécifiques. Chaque groupe formera une tranche de notre diagramme circulaire.
  • SUM(sales_amount) AS total_sales: En utilisant la fonction d'agrégation SUM(), nous calculons le montant total des ventes pour chaque groupe d'âge.
  • SUM(sales_amount) * 100.0 / SUM(SUM(sales_amount)) OVER () AS pc_of_sales: À l'aide d'une fonction de fenêtre, nous calculons le pourcentage des ventes totales réalisé par chaque groupe d'âge.
  • WHERE age IS NOT NULL: Pour nettoyer les données, nous filtrons les lignes contenant des valeurs NULL dans la colonne age.
  • GROUP BY age_group: Enfin, nous regroupons les données en fonction des groupes d'âge définis afin de résumer les ventes pour chaque catégorie.

4. Histogramme

Un histogramme est un graphique qui montre la distribution ou la diffusion des données en les regroupant par intervalles. Il est particulièrement utile pour rechercher des modèles et des tendances dans la répartition des données. C'est souvent le cas pour la distribution des délais de livraison, le volume des ventes dans les différentes gammes de prix, etc.

Exemple d'histogramme

Graphiques avec SQL

De quelles informations avons-nous besoin pour créer un histogramme ?

  • Les étiquettes: Nous avons besoin des valeurs de début et de fin pour chaque cellule. Ici, nous utilisons des intervalles de 10 minutes sur l'axe X.
  • Hauteur desbarres: Pour chaque cellule, nous devons calculer sa hauteur. Cette opération s'effectue généralement à l'aide d'une fonction d'agrégation avec GROUP BY.
  • Tri: En général, nous utilisons ORDER BY pour que les bacs soient triés du plus petit au plus grand.

Exemple de distribution des délais de livraison

Supposons que vous travailliez pour une entreprise de livraison de produits alimentaires et que vous souhaitiez déterminer la variation des délais de livraison à Barcelone. Nous pouvons préparer nos données à cet effet en exécutant la requête SQL suivante :

SELECT 
    FLOOR(delivery_duration / 10) * 10 AS bin_start, 
    (FLOOR(delivery_duration / 10) + 1) * 10 AS bin_end, 
    COUNT(*) AS no_of_orders
FROM 
    deliveries
WHERE
   region = ‘Barcelona’
GROUP BY 
    bin_start
ORDER BY 
    bin_start;

Explication :

  • FLOOR(delivery_duration / 10) * 10 AS bin_start: Tout d'abord, nous voulons créer nos intervalles. Pour ce faire, nous regroupons delivery_duration en intervalles de 10 minutes. Cela permet de calculer la limite inférieure de chaque intervalle (bin_start).
  • (FLOOR(delivery_duration / 10) + 1) * 10 AS bin_end: Ensuite, nous devons calculer la limite supérieure de chaque intervalle (bin_end) en ajoutant 10 minutes à bin_start.
  • COUNT(*) AS no_of_orders: Nous comptons maintenant le nombre de livraisons tombant dans chaque intervalle de 10 minutes.
  • WHERE region = 'Barcelona': Pour limiter les données à Barcelone, nous filtrons notre colonne region.
  • GROUP BY bin_start: Nous regroupons les livraisons par intervalle de 10 minutes.
  • ORDER BY bin_start: Enfin, nous trions les groupes par ordre croissant en fonction de leur heure de départ.

5. Diagramme de dispersion

Enfin, examinons le diagramme de dispersion. Ce graphique permet de visualiser la relation potentielle entre un maximum de trois variables en traçant des points de données. Il permet d'identifier efficacement les corrélations et les liens dans les données, comme les coûts de publicité par rapport aux ventes ou la satisfaction des employés par rapport à la fidélisation.

Exemple de nuage de points

Graphiques avec SQL

De quelles informations avons-nous besoin pour créer un diagramme de dispersion ?

  • Coordonnées X et Y de chaque point.
  • Étiquette: Optionnellement, nous avons besoin d'une étiquette pour chaque point afin de lui donner une couleur (comme dans notre exemple de graphique) ou une étiquette.

Ces données peuvent être simplement sélectionnées dans une base de données ou être calculées, comme dans notre exemple ci-dessous.

Exemple d'efficacité publicitaire

Supposons que nous voulions analyser l'efficacité de différentes formes de publicité au cours des deux dernières années en observant leur impact sur les ventes. En utilisant SQL, nous pouvons préparer les données comme suit :

SELECT 
    DATE_FORMAT(sd.sale_date, '%Y-%m') AS year_month, 
    mc.advertising_type, 
    SUM(mc.advertising_spend) AS total_advertising_spend, 
    SUM(sd.sales) AS total_sales
FROM 
    marketing_campaigns mc
JOIN 
    sales_data sd ON mc.campaign_id = sd.campaign_id
WHERE 
    sd.sale_date BETWEEN '2022-01-01' AND '2023-12-31'
GROUP BY 
    month, mc.advertising_type
ORDER BY 
    year_month;

Explication :

  • Chaque point du graphique correspond à un mois et à un type de publicité :
    • DATE_FORMAT(sd.sale_date, '%Y-%m') AS year_month: Tout d'abord, nous extrayons l'année et le mois de sale_date.
    • mc.advertising_type: Nous sélectionnons ici le type de publicité, qui sera utilisé comme teinte sur notre nuage de points. La teinte est essentiellement une troisième couche que nous pouvons ajouter à la couleur pour différencier les catégories dans un graphique.
  • SUM(mc.advertising_spend) AS total_advertising_spend: Nous agrégeons les dépenses publicitaires totales pour chaque mois et chaque type de publicité à l'aide de SUM().
  • SUM(sd.sales) AS total_sales: Nous utilisons à nouveau SUM() pour agréger les ventes totales.
  • JOIN sales_data sd ON mc.campaign_id = sd.campaign_id: Comme les données souhaitées se trouvent dans deux tableaux distincts, nous joignons le tableau marketing_campaigns avec la table sales_data table sur la base de la colonne commune campaign_id.
  • WHERE sd.sale_date BETWEEN '2022-01-01' AND '2023-12-31': Pour se concentrer sur les données de 2022 et 2023, nous filtrons la date de vente.
  • GROUP BY year_month, mc.advertising_type: Nous regroupons les données selon les catégories de notre tableau, ce qui nous donne un total par mois, par année et par type de publicité.
  • ORDER BY year_month: Enfin, nous classons les données par ordre croissant de mois.

Si vous souhaitez apprendre d'autres trucs et astuces pour utiliser SQL afin de créer des graphiques, n'hésitez pas à consulter notre article Visualisation de données à l'aide de SQL : Un guide pour les analystes de données.

Création de graphiques avec des données exportées depuis SQL

Une fois nos données préparées, nous devons utiliser des outils spécialisés pour créer des graphiques en dehors de SQL. Voyons quelques alternatives et comment vous pouvez importer vos données SQL dans ces outils.

1. Python

Python fournit des bibliothèques telles que Matplotlib et seaborn pour créer divers graphiques. En utilisant la bibliothèque Python pandas, vous pouvez importer et visualiser les données de SQL. Voyons comment procéder.

import pandas as pd

# Load the CSV file
df = pd.read_csv('/path/to/sql_export.csv')

# Preview the DataFrame
print(df.head())
  • Étape 3 : Créer un graphique à l'aide d'une bibliothèque Python : Une fois les données importées, nous pouvons créer notre graphique. Dans cet exemple, nous allons créer un graphique à barres en utilisant Matplotlib et seaborn :
import matplotlib.pyplot as plt
import seaborn as sns

# Create a bar chart
plt.figure(figsize=(10, 6))
sns.barplot(x='product_category', y='total_sales', data=df, palette='viridis')

# Customize the chart
plt.title('Total Sales by Product Category (2023)', fontsize=16)
plt.xlabel('Product Category', fontsize=12)
plt.ylabel('Total Sales', fontsize=12)
plt.xticks(rotation=45)
plt.tight_layout()

# Show the chart
plt.show()

2. tableau

Tableau est une solution de Business Intelligence facile à utiliser qui se connecte directement aux bases de données SQL et génère des tableaux de bord dynamiques et interactifs. Il peut même prendre en charge vos requêtes SQL directement à l'aide de son éditeur SQL personnalisé. Il existe également des connecteurs pour les principales bases de données telles que MySQL, PostgreSQL et Snowflake.

3. Power BI

Power BI est une application Microsoft populaire qui peut être utilisée pour créer des rapports et des tableaux de bord interactifs. Elle comprend également un support natif pour SQL Server et d'autres bases de données, ce qui vous permet d'effectuer des requêtes SQL directes.

4. Looker Studio

Looker Studio (anciennement Google Data Studio) est une application basée sur le cloud qui permet de développer des tableaux de bord interactifs et partageables. Elle est parfaite pour les utilisateurs qui sont déjà familiarisés avec l'environnement Google. Il est compatible avec des bases de données telles que BigQuery, MySQL et PostgreSQL, et prend en charge les requêtes personnalisées.

Apprendre SQL pour les graphiques et l'analyse des données

SQL est le fondement de l'analyse des données ; en tant que tel, il joue un rôle important dans la représentation graphique des données. Bien que SQL ne dispose pas d'outils graphiques intégrés, sa force réside dans la préparation et l'organisation des données pour la visualisation des données. L'utilisation de SQL en conjonction avec des outils tels que Python, Tableau, Power BI ou Looker Studio améliore votre capacité à extraire des informations exploitables et à les présenter efficacement.

Si vous êtes novice en SQL et que vous souhaitez améliorer vos compétences, c'est le moment de commencer. La maîtrise de SQL accélérera non seulement votre processus de préparation des données, mais améliorera également votre capacité à produire des graphiques et des tableaux de bord visuellement attrayants.

Commencez à apprendre SQL dès aujourd'hui avec notre cours SQL pour l'analyse de données! Vous pouvez également consulter d'autres compétences utiles à votre carrière dans notre article Skills Every Data Analyst Should Have (Compétences que tout analyste de données doit posséder). Bon apprentissage !