Atelier narration de données
Ce TP est articulé autour de la réutilisation des données. A l’image du désormais célèbre CovidTracker, le but est d’utiliser des données en accès libre pour créer des visualisations permettant une meilleure lisibilité ou compréhension de l’information.
Objectif
Vous devrez réaliser un Colab, ou équivalent, décrivant un jeu de données et présentant ces données (ou données retravaillées et/ou enrichies) sous forme de visualisations/. Vous avez la possibilité d’exporter ces données et de réaliser ces visualisations en JavaScript si vous le souhaitez.
Jeu de données
Pour réaliser les travaux pratiques, il est nécessaire de trouver un (ou plusieurs) jeu(x) de données permettant de réaliser des moyennes, d’aggréger selon des catégories, etc. Vous êtes libres de trouver un sujet qui vous plaît.
Une fois le(s) jeu(x) de données sélectionné(s), vous pouvez essayer de trouver d’autres jeux de données analogues permettant d’enrichir, comparer, etc. l’information par la suite. L’important est de s’approprier les données (format, description, etc.).
Propositions d’un thème autour d’un thème d’actualité, l’énergie :
Insertion des données dans une base SQL
Cette partie n’est pas “essentielle” au déroulement des travaux pratique. Elle a pour unique but de découvrir des opérations SQL de base
Base de données
Une base de donnée vous a été créée. Les informations de connexion sont les suivantes :
- hôte :
37.187.0.27
- identifiant : votre prénom, c’est-à-dire la partie qui précède le premier tiret de votre adresse électronique universitaire (ex. :
alaric
-tabaries@etud.univ-tln.fr)
- mot de passe : votre date de naissance suivi de
ab$
(ex. : pour une personne née le 01/01/2000, 01012000aB$
)
- base de donnée : votre prénom, c’est-à-dire la partie qui précède le premier tiret de votre adresse électronique universitaire (ex. :
alaric
-tabaries@etud.univ-tln.fr)
Une base de donnée est donc déjà créée, la prochaine étape, ce sont les tables.
Tutoriel W3Schools
Pour commencer, créez un fichier Google Colab (ou un environnement de développement de votre choix) et installez le paquet mysql-connector-python
.
!pip install mysql-connector-python
Pour créer votre table, référez-vous au tutoriel approprié. Des outils existent pour convertir des fichiers de données en structures de tables SQL.
Vous pouvez ensuite dérouler le tutoriel :
Traitement
Traitement à la main
Pour traiter un jeu de données sans utiliser de librairie spécifique. Il suffit de lire les données en respectant le format dans lesquelles elles sont livrées.
CSV
import csv
with open("fichier.csv", 'r') as f:
csvreader = csv.reader(f, delimiter=';')
for row in csvreader:
print(row)
import csv
with open("fichier.csv", 'r') as f:
csvreader = csv.DictReader(f, delimiter=';')
for row in csvreader:
print(row)
Avec une petite nuance ligne n°4 où on précise à l’interpréteur de lire le fichier CSV comme un dictionnaire, c’est-à-dire qu’on ne va pas accéder à la colonne par son numéro de colonne mais par son appelation précisée dans l’entête du fichier CSV.
JSON
import json
with open('fichier.json', 'r') as f:
data = json.load(f)
Mais il existe d’autres moyens plus appropriés !
Traitement avec des outils adaptés
La librairie Python Pandas
permet d’effectuer rapidement des traitements d’un ensemble de données. Pour l’utiliser, il faut installer la librairie comme présenté ci-dessous.
!pip install pandas
CSV
import pandas as pd
df = pd.read_csv('fichier.csv')
JSON
import pandas as pd
df = pd.read_json('fichier.json')
Quelques exemples de traitements
print(df.shape)
print(df.head(x))
print(df['column'].value_counts())
print(df.dtypes)
Supprimer des lignes en fonction de valeurs données
df = df[df.column != "value"]
df.drop(df.index[data['column'] < 123], inplace=True)
Créer des sous dataframes
sub_df = df[df.column == "value"]
sub_df = df[df["column"].str.contains("value").fillna(False)]
sub_dfs = df.groupby("column")
sub_df1 = sub_dfs.get_group(1)
Effectuer des opérations sur un ensemble de cellules ayant des valeurs identiques
Les opérations disponibles sont listées sur la documentation officielle.
sub_df = df.groupby('column', as_index=False).count()
sub_df = df.groupby('column', as_index=False).mean()
sub_df = df.groupby('column', as_index=False).sum()
Trier un dataframe
df.sort_values('column')
Fusionner des dataframes
dfxdf = pd.merge(df1[["col1", "col2"]], df2[["col1", "col1"]], on="col1", how="left")
Renommer une colonne
df.rename(columns={'column': 'col1'}, inplace=True)
Création de visualisations
Pour créer des visualisations, divers outils sont disponibles. Les visualisations Python, basées sur les librairies matplotlib, plotly ou encore seaborn, sont plus proches du code mais parfois moins interactives que celles développées en JS (D3.js) ou Vega.
Le mieux est de choisir un exemple qui se rapproche le plus de la visualisation voulue, d’y intégrer ses données et de la modifier par la suite. Vous avez plusieurs sites proposant une multitude de visualisations ci-dessous.
À noter que les visualisations Vega peuvent s’intégrer à Kibana.
Python (matplotlib, plotly, seaborn, bokeh ?)
Example de visualisation rapide d’un dataframe
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
plt.figure()
p = sns.histplot(data['col1'], kde=True, stat="density", linewidth=0)
plt.show()
sns.lineplot(x='col1', y='col2', data=df)
JS
Vega
Atelier narration de données
Ce TP est articulé autour de la réutilisation des données. A l’image du désormais célèbre CovidTracker, le but est d’utiliser des données en accès libre pour créer des visualisations permettant une meilleure lisibilité ou compréhension de l’information.
Objectif
Vous devrez réaliser un Colab, ou équivalent, décrivant un jeu de données et présentant ces données (ou données retravaillées et/ou enrichies) sous forme de visualisations/. Vous avez la possibilité d’exporter ces données et de réaliser ces visualisations en JavaScript si vous le souhaitez.
Jeu de données
Pour réaliser les travaux pratiques, il est nécessaire de trouver un (ou plusieurs) jeu(x) de données permettant de réaliser des moyennes, d’aggréger selon des catégories, etc. Vous êtes libres de trouver un sujet qui vous plaît.
Une fois le(s) jeu(x) de données sélectionné(s), vous pouvez essayer de trouver d’autres jeux de données analogues permettant d’enrichir, comparer, etc. l’information par la suite. L’important est de s’approprier les données (format, description, etc.).
Propositions d’un thème autour d’un thème d’actualité, l’énergie :
Insertion des données dans une base SQL
Cette partie n’est pas “essentielle” au déroulement des travaux pratique. Elle a pour unique but de découvrir des opérations SQL de base
Base de données
Une base de donnée vous a été créée. Les informations de connexion sont les suivantes :
37.187.0.27
alaric
-tabaries@etud.univ-tln.fr)ab$
(ex. : pour une personne née le 01/01/2000,01012000aB$
)alaric
-tabaries@etud.univ-tln.fr)Une base de donnée est donc déjà créée, la prochaine étape, ce sont les tables.
Tutoriel W3Schools
Pour commencer, créez un fichier Google Colab (ou un environnement de développement de votre choix) et installez le paquet
mysql-connector-python
.Pour créer votre table, référez-vous au tutoriel approprié. Des outils existent pour convertir des fichiers de données en structures de tables SQL.
Vous pouvez ensuite dérouler le tutoriel :
Traitement
Traitement à la main
Pour traiter un jeu de données sans utiliser de librairie spécifique. Il suffit de lire les données en respectant le format dans lesquelles elles sont livrées.
CSV
Avec une petite nuance ligne n°4 où on précise à l’interpréteur de lire le fichier CSV comme un dictionnaire, c’est-à-dire qu’on ne va pas accéder à la colonne par son numéro de colonne mais par son appelation précisée dans l’entête du fichier CSV.
JSON
import json with open('fichier.json', 'r') as f: data = json.load(f) # traitement...
Mais il existe d’autres moyens plus appropriés !
Traitement avec des outils adaptés
La librairie Python
Pandas
permet d’effectuer rapidement des traitements d’un ensemble de données. Pour l’utiliser, il faut installer la librairie comme présenté ci-dessous.CSV
import pandas as pd df = pd.read_csv('fichier.csv') # traitement...
JSON
import pandas as pd df = pd.read_json('fichier.json') # traitement...
Quelques exemples de traitements
Afficher des informations sur le dataframe
# affiche la taille du df print(df.shape) # affiche les x premières lignes print(df.head(x)) # affiche le nombre de lignes correspondantes à des valeurs identiques print(df['column'].value_counts()) # affiche les types des colonnes print(df.dtypes)
Supprimer des lignes en fonction de valeurs données
df = df[df.column != "value"] # ou encore df.drop(df.index[data['column'] < 123], inplace=True)
Créer des sous dataframes
sub_df = df[df.column == "value"] # ou encore sub_df = df[df["column"].str.contains("value").fillna(False)]
sub_dfs = df.groupby("column") sub_df1 = sub_dfs.get_group(1)
Effectuer des opérations sur un ensemble de cellules ayant des valeurs identiques
Les opérations disponibles sont listées sur la documentation officielle.
# grouper des données en fonction de la valeur d'une cellule sub_df = df.groupby('column', as_index=False).count() sub_df = df.groupby('column', as_index=False).mean() sub_df = df.groupby('column', as_index=False).sum() # ...
Trier un dataframe
df.sort_values('column')
Fusionner des dataframes
dfxdf = pd.merge(df1[["col1", "col2"]], df2[["col1", "col1"]], on="col1", how="left")
Renommer une colonne
df.rename(columns={'column': 'col1'}, inplace=True)
Création de visualisations
Pour créer des visualisations, divers outils sont disponibles. Les visualisations Python, basées sur les librairies matplotlib, plotly ou encore seaborn, sont plus proches du code mais parfois moins interactives que celles développées en JS (D3.js) ou Vega.
Le mieux est de choisir un exemple qui se rapproche le plus de la visualisation voulue, d’y intégrer ses données et de la modifier par la suite. Vous avez plusieurs sites proposant une multitude de visualisations ci-dessous.
À noter que les visualisations Vega peuvent s’intégrer à Kibana.
Python (matplotlib, plotly, seaborn, bokeh ?)
Example de visualisation rapide d’un dataframe
import matplotlib.pyplot as plt import seaborn as sns # pd.set_option('display.max_rows', None) sns.set() # un histogramme plt.figure() p = sns.histplot(data['col1'], kde=True, stat="density", linewidth=0) plt.show() # un graphique linéaire sns.lineplot(x='col1', y='col2', data=df)
JS
Vega