Featured image of post Préparation de données avec Microsoft Fabric, les blocs-notes

Préparation de données avec Microsoft Fabric, les blocs-notes

On termine le match avec les blocs-notes.

Contexte

Afin de découvrir les différents types de traitement proposé par Microsoft Fabric, je vous ai proposé un match entre 3 différentes possibilités : Préparation de données avec Microsoft Fabric, le match !.

Je me propose ici de réaliser les transformations avec un bloc-notes.

Pour rappel, les blocs-notes permettent d’écrire des séquences de code alterné avec des séquences de texte au format markdown.
Le code est exécuté par un moteur Spark, mais dans l’écosystème de Fabric vous n’y avez pas accès.
Les langages supportés sont :

  • Python
  • Spark SQL
  • Scala
  • R

Pour ce match, j’ai choisi d’utiliser le langage Python avec la bibliothèque Pandas 🐼.

Création de notre bloc-notes

Rendez-vous dans l’espace de travail Fabric - Le match [Silver] créer dans l’article de préparation du match.
Ouvrez le lakehouse LeMatch.

Création d’un bloc-notes

  1. Dans le menu sélectionnez Ouvrir le notebook.
  2. Sélectionnez Nouveau notebook.

Le bloc-notes s’ouvre :

Le bloc-notes

Tâches préparatoires à une transformation de données

Charger les données

Pour charger les données, on va utiliser un assistant pour écrire le premier bloc de code.

Chargement de données - étape 1

  1. Ouvrez le dossier Files.
  2. Sélectionnez le raccourci Bronze_Le_Match.
  3. Sur le fichier countries.csv appuyez sur les 3 points.
  4. Sélectionnez Charger des données.
  5. Sélectionnez Pandas.

Le code suivant est ajouté dans le bloc-notes :

1
2
3
4
import pandas as pd
# Load data into pandas DataFrame from "/lakehouse/default/" + "Files/Bronze_Le_Match/countries.csv"
df = pd.read_csv("/lakehouse/default/" + "Files/Bronze_Le_Match/countries.csv")
display(df)

Explication rapide du code :

  1. On demande à importer la librairie pandas pour pouvoir l’utiliser.
  2. On a un commentaire
  3. On charge dans la variable df le contenu du fichier csv.
  4. On affiche le contenu de la variable df.

Chargement de données - étape 2

  1. Pour exécuter le code, appuyez sur l’icône Run cell.
  2. Vous pouvez voir le résultat directement dans le bloc-notes.

La variable df est utilisable dans les cellules suivantes du notebook.

Si vous avez un message d’erreur vous disant que df n’est pas défini, le serveur a probablement réinitialisé votre session. Il suffit de relancer le code de chargement de données pour continuer.

Obtenir un échantillonnage des données

Pour ne voir que les 10 premières lignes du jeu de données, on utilise le code suivant :

1
df.head(10)

Lire un échantillonnage des données

  1. Appuyez sur + Code pour ajouter une nouvelle cellule dans le bloc-notes.
  2. Saisir le code.
  3. Exécuter le code, appuyez sur l’icône Run cell.
  4. Vous pouvez voir le résultat directement dans le bloc-notes.

Pour la suite je ne vous montrerais que le résultat du code, la procédure d’ajout et d’exécution étant toujours la même.

Voir les métadonnées du jeu de données

Pour voir les métadonnées, on utilise le code suivant :

1
df.info()

Lire les métadonnées

Réaliser les transformations

Sélectionner certaines colonnes

Pour ne sélectionner que les 3 colonnes name, currencies et capital, on utilise le code suivant :

1
df[["name","currencies","capital"]] 

Sélection de colonnes

Le jeu de données df est modifié, recharger le avec la commande de chargement de données pour la suite des exemples.

Filtrer les lignes à conserver

Pour ne sélectionner que les lignes ayant pour valeur EUR dans la colonne currencies, on utilise le code suivant :

1
df.loc[df["currencies"] == "EUR" ]

Code filtrant les lignes

Modifier le nom des colonnes

Pour renommer que les 3 colonnes name, currencies et capital, en nom, devise et capitale, on utilise le code suivant :

1
2
3
4
5
6
7
8
new_names = {'name':'Nom',
        'currencies':'devise',
        'capital':'capitale'
}
df.rename(columns =new_names, inplace =True)

# voir le résultat
df.head()

Code renommant les colonnes

Modifier le type de données des colonnes

Pour convertir la colonne area qui est de type nombre décimal en nombre entier, on utilise le code suivant :

1
df.astype({'area':'int'})

Code modifiant le type de la colonne area

Gestion des valeurs absentes

Pour remplacer les valeurs vides par la valeur -1 de la colonne landlocked, on utilise le code suivant :

1
2
df['landlocked'].fillna(-1, inplace=True)
df.head()

Code remplaçant les valeurs vides d’une colonne

Enlever les doublons

Pour obtenir la liste des devises dédoublonnée, on utilise le code suivant :

1
2
df2 = df[["currencies"]].drop_duplicates(subset=["currencies"], keep=False)
display(df2)

Code regroupant les valeurs uniques d’une colonne

Sauvegarder le résultat dans la couche Silver

Le résultat que l’on souhaite conserver dans la couche silver est le résultat de la variable df2 vers un fichier parquet, tel que le montre le code suivant :

1
2
df2 = df.loc[df["currencies"] == "EUR" ]
df2.to_parquet("/lakehouse/default/" + "Files/MatchNotebook.parquet") 

Sauvegarde et lecture du résultat

  1. Exécutez le code ci-dessus pour sauvegarder les données sélectionnées dans un fichier parquet.
  2. Depuis l’explorateur de lakehouse, localiser votre fichier (pensez à rafraichir si il n’apparait pas) et générer le code pour le lire (comme pour le csv au début).
  3. Vous pouvez voir le résultat dans la couche silver.

Merci de votre attention.

comments powered by Disqus
Généré avec Hugo
Thème Stack conçu par Jimmy