Power Query


J’ai récemment été sollicité pour construire un modèle de données permettant de réaliser des analyses sur des cours de bourse. La principale difficulté a consisté à générer les URL spécifiques permettant de récupérer les bonnes valeurs (cours de bourse d’un titre spécifique entre deux dates). Lorsque vous sélectionnez un titre sur Yahoo finance, vous pouvez trouver un lien de téléchargement des donnée (un fichier CSV.) C’est l’URL du lien de téléchargement qui va nous falloir étudier dans le détail : https://query1.finance.yahoo.com/v7/finance/download/AAPL?period1=1556291578&period2=1587913978&interval=1d&events=history On observant bien on peut identifier trois variables : Le code du titre : AAPL; La date de début des cotations : 1556291578; La date de fin de cotations : 1587913978; Ces deux dates sont au format timestamp, elles sont exprimées en secondes écoulées depuis le premier janvier 1970. Nous allons donc devoir créer une formule permettant de convertir une date en timestamp dans power Query. Ci dessous un exemple pour la date du 01/02/2020 Number.From ( DateTime.From ( #datetime(2020, 1, 2, 0, 0, 0) ) – #duration ( 25569,0,0,0 ) ) * 86400 Création des requêtes dans power query Tout d’abord nous allons créer une requête web : Puis coller l’Url présentée précédemment : Tout d’abord il faut […]

Récupérer les cours de bourse sur Yahoo finance



Comme nous l’avons vu dans les articles précédents, Power Query permet, depuis son interface utilisateur de réaliser très facilement la plupart des taches de chargement et de transformation de vos données. Néanmoins, si vous souhaitez aller plus loin, il vous faudra étudier le langage qui tourne en arrière plan de cette interface utilisateur, le langage M. Si ce n’est déjà fait, vous pouvez télécharger les fichiers sources sur le site de l’excellent  livre M is for (Data) Monkey écrit par Ken Puls et Miguel Escobar  dont nous nous sommes inspiré Télécharger les fichiers pour écrire ce post. Pour commencer, le plus simple est d’ajouter une nouvelle colonne : Après avoir renommé la colonne, vous pouvez écrire une formule en langage M, par exemple : Pour vous faciliter la tache, vous n’avez pas à écrire le nom de chaque colonne, puisque l’éditeur vous présente les colonnes disponibles, sur lesquelles vous n’avez qu’à double cliquer. La langage M est très différent des formules Excel auxquelles nous sommes habitués : Les formules sont sensibles à la casse (Majuscules et minuscules sont considérées comme différentes.) Le comptage se fait à partir de zéro (à partir de un dans Excel. Il n’y a pas de conversion […]

Power query – M – Conversions de type



Power Query et son interface permettent de réaliser facilement des transformations simples.   En programmant en langage M, nous pouvons réaliser des transformations plus complexes, mais il faut bien reconnaître que la difficulté dans la programmation devient vite prohibitive. Microsoft l’a semble-t-il bien compris, en intégrant le langage R à Power Bi. Ce langage, utilisé par les data scientists du monde entier, permet de réaliser ces opérations bien plus facilement. Pour utiliser R dans Power Query, vous devrez tout d’abord mettre en place l’environnement sur votre ordinateur. Une fois l’environnement installé, nous allons devoir installer un package R nommé ‘dplyr’ Ouvrez R studio Tapez Fermez Rstudio Voila c’est fait ! Maintenant nous pouvons créer une nouvelle requête dans Power BI : Obtenir les données Web Entrez cette Url : https://raw.githubusercontent.com/genomicsclass/dagdata/master/inst/extdata/msleep_ggplot2.csv Modifier. Transformer –> Utiliser la première ligne pour les entêtes. Sélectionnez les colonnes contenant des chiffres et transformez leur type en Décimal. Normalement vous devriez obtenir ceci :   Maintenant nous allons pouvoir créer une nouvelle étape de transformation en créant un script R.     Copiez-collez ce script : Cliquez sur Ok   Ce script permet d’afficher les six premières lignes du Dataset et de l’affecter à la variable […]

Power Query & R – Transformation avec Dplyr



Il peut être utile (pour documenter une base de données ou visualiser la structure d’un nouveau dataset) d’obtenir un descriptif d’un table. Si vous êtes familiers de R vous connaissez la fonction str(dataset). Avec M et powerquery, nous pouvons obtenir un résultat voisin, en utilisant la fonction Table.Schema(). Dans cet exemple, nous avons référencé la requête iris comme source de données de la seconde requête. Cette dernière nous donne un descriptif de la structure du dataset iris. Pour aller plus loin, nous pouvons utiliser la fonction Table.Profile() qui nous fournira un ensemble de statistiques descriptives sommaires pour chaque critère (similaire à la fonction summary() dans R.) Cette fonction est très utile pour identifier la distribution des données, la volumétrie, les normalisations à réaliser etc…

PowerQuery – Decrire facilement des tables



1
Si l’analyse des indicateur classiques (Chiffre d’affaires, marge, évolution des stocks etc…) nous permet d’évaluer la performance, ils peuvent être incapables de nous expliquer le pourquoi de la performance. Une solution peut être d’analyser la corrélation entre les différentes variables. Pour ce faire, une matrice de corrélation est l’outil idéal : elle permet de visualiser, comme ci-dessous, l’impact de l’évolution d’une variable sur une autre. L’échelle de droite montre la corrélation positive (en bleu), lorsque l’évolution des deux variables s’éffectue dans le même sens et la corrélation négative (en rouge) pour l’inverse. Les grands cercles foncés à l’intersection de deux variables montrent une forte corrélation de ces dernières. La lecture de la valeur de corrélation s’effectue en diagonale. Dans l’exemple ci-dessus, on voit bien que l’augmentation des remises a un impact fort sur le prix de vente, ce qui est évident.   Moins évidente, la corrélation négative entre le stock et le prix de vente des articles, qui semble indiquer que lorsque le niveau de stock est élevé on cherche à l’ajuster en baissant le prix, au détriment de la marge..   Ce graphique peut être généré en utilisant un graphique R. Le plus simple est de générer une table […]

R Visuals – Corrélations avec Corr



Si vous souhaitez accéder à une source de données en utilisant un ordinateur hors domaine (workgroup), il va falloir lancer Power BI en émulant une session sur domaine.   Cela peut se faire à partir de la console ou de powershell, il sera ensuite possible de créer un raccourci reprenant cette commande (en mettant évidemment votre domaine et utilisateur réel.) Runas /netonly /user:DOMAINE\Utilisateur « C:\Program Files\Microsoft Power BI Desktop\bin\PBIDesktop.exe »   Vous serez alors prompté d’entrer votre mot de passe et PowerBi se lancera comme si  votre ordinateur était reconnu par l’AD.   Par la suite vous pouvez créer un raccourci sur votre bureau et coller la commande. Cette astuce est vraiment pratique lorsque vous avez des sources situées sur de nombreux domaines et que vous développez vos modèle en local et non en accès à distance.

PowerQuery – Se connecter sans appartenir au domaine



Il existe deux types de variables : les variables continues, que l’on ne peut dénombrer (par exemple l’ensemble des valeurs décimales comprises entre 1 et dix) et les variables catégorielles. Dans R, un facteur représente l’ensemble des valeurs que peut prendre une variable catégorielle, par exemple, pour une marque de véhicule : Peugeot, Citroen etc.. Cette notion de variable est importante en statistique, car vous ne développerez pas les mêmes modèles selon que la variable est continue ou catégorielle. Pour créer un facteur à partir d’un vecteur, il suffit d’utiliser la fonction factor(). Cette fonction associe des niveaux (levels) au vecteur. Ces niveaux sont les valeurs uniques du vecteur. Pour afficher ces valeurs uniques vous devrez utiliser la fonction levels() Vous voudrez parfois affecter un ordre aux valeurs de votre facteur, par exemple (grand, petit,moyen –> petit, moyen, grand). Ceci est possible avec R en utilisant la fonction order() : Cette technique permet de trier des valeurs non numériques. En utilisant la fonction summary(), vous pouvez obtenir le nombre d’occurence de chaque catégorie, dans le vecteur : Lorsque le vecteur est ordonné,vous pouvez opérer des comparaisons : Retournera TRUE. Les facteurs sont très important pour le bon fonctionnement des algorithmes […]

Power Query – Script R – Les facteurs



KNN – Le concept Littéralement K nearest neighbors, ce qui peut se traduire en Français les K(un nombre) plus proches voisins. Il s’agit d’un algorithme simple mais très efficace pour classifier des données labellisées.   Afin de comprendre le concept, le plus simple est d’imaginer de sélectionner un ensemble de critères pour classifier des objets dans deux ou plusieurs catégories. Par exemple classer des aliments dans une catégorie (fruit, légume, céréale  etc…) en appliquant une note à des critères comme la sucrosité, la salinité, le degré de croquant etc..   On peut alors introduire un nouvel élément et tenter de le classer en fonction de sa proximité avec les éléments existant du tableau.     KNN calcule la distance Euclidienne entre chaque critère du raisin et leur homologue pour chaque observation dans le tableau. La distance Euclidienne est égale à la racine carrée de la somme des carrés des distances. Quelle est la distance Rasin-Pomme ? La même opération est réalisée pour chaque enregistrement de la table.   Il est alors possible d’identifier quels sont les aliments les plus proches du raisin.   Si on affecte 1 au paramètre K, le raisin sera classifié en fonction du type de son […]

Machine Learning – KNN



Power Query met à notre disposition plusieurs objets que vous devez apprendre  à manipuler pour pouvoir programmer correctement. L’objet Table Si ce n’est déjà fait, vous pouvez télécharger les fichiers sources sur le site de l’excellent  livre M is for (Data) Monkey écrit par Ken Puls et Miguel Escobar  dont nous nous sommes inspiré Télécharger les fichiers pour écrire ce post. Obtenir les données –> Excel –> Ch19 ExamplesPower Query Objects.xlsx Selectionnez Sales Cliquez sur Modifier Dans l’écran Etapes appliquées, cliquez sur source Nous pouvons voir que la colonne [Data] est de type Table. Nous pouvons avoir le détail de chacune en cliquant à coté du mot Table. En aperçu nous pouvons voir que l’objet est composé de colonnes et de lignes. Nous pouvons générer la table en cliquant sur le mot Table ou développer toutes les tables par fusion, en cliquant sur la flèche double de l’entête de  la colonne [Data]. Listes Une liste est une colonne de données qui peuvent être de type différents. Commençons par créer une liste simple : Obtenir les données –> Requête simple ={1,2,3} Nous pouvons voir que Power query a bien créé une liste et non une table, en identifiant le symbole de liste […]

Power Query – M – Objets



Le Dataframe est l’objet que vous manipulerez le plus avec R et certainement avec Power Query, car ce dernier ne reconnaît que l’objet Dataframe (les autres objets comme les vecteurs doivent être convertis en Dataframes pour être exploités par Power Query). Un Dataframe correspond à un table de données, chaque colonne représentant une variable avec un type de données homogène. Contrairement aux matrices, les colonnes des dataframes peuvent être de type différent les unes des autre (numériques, logiques, texte…) R contient un ensemble de dataframes pré-constitués, très faciles à utiliser. data(mtcars);df = mtcars Charge le dataframe mtcars. Pour rappel les instructions doivent être saisies dans l'éditeur de la source de données Script R. Dans l'éditeur avancé utiliser le schéma suivant : Let Source= R.Execute(« Votre Code R ») In Source Nous pouvons examiner les premières ou dernières lignes du dataframe en utilisant les fonctions head() ou tail(). df = head(mtcars) df= tail(mtcars) Il est possible aussi de créer ses propres dataframes à partir d’un ensemble de vecteurs et de la fonction data.frame(): nom <- c(« Mercure », « Venus », « Terre », « Mars », « Jupiter », « Saturne »,                       « Uranus », « Neptune »); type <- c(« Terrestre », « Terrestre », »Terrestre », « Terrestre », « Gazeuse          […]

Power Query – Script R – Dataframes