R et Python dans Power BI : Pourquoi et Comment ?
Dec 03, 2024Pourquoi utiliser R et Python ?
Power BI est déjà un outil puissant pour l'analyse de données professionnelles, offrant des capacités ETL robustes via Power Query, un moteur de stockage de données performant basé sur le même code que Microsoft Analysis Services, et une suite impressionnante de visualisations.
Alors, pourquoi voudrait-on ajouter R et Python à cet arsenal ? Voici plusieurs raisons convaincantes :
- Ces langages permettent des analyses statistiques avancées que Power BI ne peut pas faire nativement
- R et Python disposent de milliers de bibliothèques spécialisées pour l'analyse de données
- Ils peuvent se connecter à des sources de données que Power BI ne gère pas directement
- Vous pouvez réutiliser du code R ou Python existant dans votre organisation
- Si vous maîtrisez déjà l'un de ces langages, vous pouvez être plus productif qu'en apprenant Power Query
Prérequis Techniques
Avant de commencer, il faut installer :
- Pour R : l'installation de base plus des packages comme tidyverse, ggplot2
- Pour Python : pandas et matplotlib au minimum, plus sklearn pour le machine learning
La plupart des paquets de R sont plus petits et destinés à un usage unique. Les bibliothèques de Python sont souvent volumineuses et couvrent de nombreuses fonctions différentes, bien que, pour des raisons de performance, il soit possible de n'importer que les parties du package dont vous avez besoin.
Dans Power BI Desktop, vous n'êtes limité que par les packages installés sur votre ordinateur, dans Power BI Service, vous êtes limité par ce qui y a été installé. Voici une liste des packages R disponibles dans Power BI Service, et des bibliothèques Python disponibles.
Exemple Pratique : Analyse Météorologique
Dans cet exemple, nous allons :
- Utiliser R pour collecter des données météorologiques
- Utiliser Python pour créer un modèle de prévision
- Visualiser les résultats
Obtenir des données
Le premier endroit où vous pouvez utiliser ces langages est dans la rubrique Obtenir des données, où un script R ou Python est répertorié dans la catégorie « Autre ». En sélectionnant cette catégorie, vous ouvrez un éditeur de texte de base dans lequel vous pouvez taper ou coller votre script.
L'une des seules limites majeures à ce que vous pouvez faire ici est que le script s'arrête au bout de 30 minutes, alors assurez-vous que ce que vous faites se déroule dans ce délai.
Collecte des Données avec R
Voici comment récupérer des données météo historiques avec R :
library(tidyverse) library(lubridate) # Création de données météo simulées set.seed(42) generer_meteo <- function(n_jours) { dates <- seq(as.Date("2023-01-01"), by = "day", length.out = n_jours) data.frame( date = dates, temperature = rnorm(n_jours, mean = 15 + 10 * sin(2 * pi * (yday(dates)/365)), sd = 3), humidite = runif(n_jours, 40, 90), pression = rnorm(n_jours, 1013, 5), pluie = rbinom(n_jours, 1, 0.3) ) %>% mutate( mois = month(date), saison = case_when( mois %in% c(12, 1, 2) ~ "Hiver", mois %in% c(3, 4, 5) ~ "Printemps", mois %in% c(6, 7, 8) ~ "Été", TRUE ~ "Automne" ) ) } # Générer données d'entraînement et de test donnees_train <- generer_meteo(300) donnees_test <- generer_meteo(65) donnees_train$ensemble <- "entrainement" donnees_test$ensemble <- "test" donnees_meteo <- rbind(donnees_train, donnees_test)
Transformer des données avec R et Python
Vous pouvez ensuite ajouter des étapes supplémentaires comme vous le feriez normalement dans Power Query. Des scripts R et Python supplémentaires sont également possibles.
Ensuite, nous utilisons Python pour créer un modèle de prévision de pluie :
import pandas as pd import numpy as np from sklearn.ensemble import RandomForestClassifier from sklearn.preprocessing import LabelEncoder # Préparation des données le = LabelEncoder() dataset['saison_num'] = le.fit_transform(dataset['saison']) dataset['prediction'] = np.nan # Entraînement du modèle train = dataset[dataset['ensemble'] == 'entrainement'] X_train = train[['temperature', 'humidite', 'pression', 'saison_num']] y_train = train['pluie'] rf_model = RandomForestClassifier(n_estimators=100, random_state=42) rf_model.fit(X_train, y_train) # Prédiction test = dataset[dataset['ensemble'] == 'test'] X_test = test[['temperature', 'humidite', 'pression', 'saison_num']] predictions = rf_model.predict(X_test) # Ajout des prédictions dataset.loc[dataset['ensemble'] == 'test', 'prediction'] = predictions
Visualisation des Résultats
Une fois les données chargées, nous pouvons créer des visuels avec R et Python. Dans le panneau des visuels, les icônes pour les visuels R et Python. Ils fonctionnent à peu près de la même manière et nous utiliserons ici le visuel Python.
Cliquer sur le visuel crée un visuel vierge sur la toile et fait apparaître un éditeur en bas de l'écran.
Vous remarquerez dans l'éditeur qu'il y a quelques lignes de code commenté qui sont automatiquement ajoutées. Ce code prend les données que vous avez ajoutées au visuel, les place dans un cadre de données, puis supprime les lignes en double.
Si vous ne souhaitez pas que les lignes en double soient supprimées, veillez à ajouter une sorte de colonne clé qui rendra chaque ligne unique.
Notez qu'il y a une limite de 150 mille lignes par visuel et qu'il doit être exécuté en 5 minutes pour Power BI Desktop, et en 1 minute pour le Service.
Dans la barre supérieure, sur le côté droit du visuel, il y a plusieurs boutons utiles. De gauche à droite, il s'agit d'un bouton pour exécuter le script et mettre à jour le visuel, ouvrir le menu d'options pour sélectionner les options de script que vous voulez, et la flèche ouvre un éditeur externe.
L'ouverture d'un éditeur externe est facilitée par le fait qu'en ouvrant l'éditeur (tel que Rstudio ou VS Code), il exporte l'ensemble des données sous forme de fichier CSV et ajoute le code nécessaire à l'éditeur pour lire le fichier CSV.
Vous pouvez ensuite vous amuser jusqu'à ce que vous obteniez un visuel qui vous plaît dans l'éditeur, puis copier et coller le code dans Power BI.
import matplotlib.pyplot as plt from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay # Création de la matrice de confusion test_actual = dataset[dataset['ensemble'] == 'test']['pluie'] test_pred = dataset[dataset['ensemble'] == 'test']['prediction'] cm = confusion_matrix(test_actual, test_pred) disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=['Pas de Pluie', 'Pluie']) # Configuration du graphique plt.figure(figsize=(8, 6)) disp.plot(cmap='Blues') plt.title('Matrice de Confusion : Prédiction de Pluie') plt.show()
Points Importants à Retenir
- Les scripts R et Python dans Power BI Desktop ont une limite de temps d'exécution de 30 minutes
- Dans le Service Power BI, la limite est de 1 minute pour les visuels
- La taille maximale des données pour les visuels est de 150 000 lignes
- Pensez à gérer l'espace disque temporaire utilisé par les scripts
- Pour le Service Power BI, vérifiez que les packages nécessaires sont disponibles
Conclusion
L'intégration de R et Python dans Power BI ouvre de nouvelles possibilités d'analyse avancée. Notre exemple montre comment combiner :
- La collecte et préparation des données avec R
- L'analyse prédictive avec Python
- La visualisation des résultats
Cette approche hybride permet de tirer le meilleur parti de chaque technologie tout en restant dans l'environnement familier de Power BI.