Formation Python : Manipulation de données
Formation Python : Manipulation de données
Contact: [Link]@[Link]
2021
Formation Python ORSYS Consultants 2/ 38
Manipulation des données
Plan
Numpy
➥ Le paquet NumPy (Numeric Python) fournit des routines de base pour manipuler de
grands tableaux et matrices de données numériques. Vous pouvez importer ce package :
import numpy as np
Or
from numpy import *
Les tableaux
➥ Les tableaux sont similaires aux listes en Python, sauf que chaque élément d’un tableau
doit être du même type.
➥ La fonction array() prend deux arguments : la liste à convertir dans le tableau et le type de
chaque membre de la liste.
a = [Link]([1, 4, 5, 8], float)
Formation Python ORSYS Consultants 4/ 38
Manipulation des données
Manipulation des données avec Numpy
➥ Les tableaux peuvent être multidimensionnels. Les différents axes sont accédés à l’aide de
virgules à l’intérieur de la notation entre parenthèses.
a = [Link]([[1, 2, 3], [4, 5, 6]], float)
a[0,0] #vaut 1.0
a[1,:] #vaut [4. 5. 6.]
a[:,2] #vaut [3. 6.]
Formation Python ORSYS Consultants 5/ 38
Manipulation des données
Manipulation des données avec Numpy
➥ La fonction copy peut être utilisée pour créer une nouvelle copie distincte d’un tableau en
mémoire.
a = [Link]([1, 2, 3], float)
b = a
c = [Link]()
a[0] = 0
a #vaut array([0., 2., 3.])
b #vaut array([0., 2., 3.])
c #vaut array([1., 2., 3.])
Formation Python ORSYS Consultants 7/ 38
Manipulation des données
Manipulation des données avec Numpy
➥ Les fonctions zeroslike et oneslike créent un nouveau tableau avec les mêmes dimensions
et le même type que celui existant
a = [Link]([[1, 2, 3], [4, 5, 6]], float)
np.zeros_like(a) #array([[ 0., 0., 0.], [ 0., 0., 0.]])
np.ones_like(a) #array([[ 1., 1., 1.], [ 1., 1., 1.]])
➥ Les tableaux dont le nombre de dimensions ne correspond pas seront diffusés par Python
pour effectuer des opérations mathématiques(le plus petit tableau sera répété autant de fois
que nécessaire pour effectuer l’opération)
a = [Link]([[1, 2], [3, 4], [5, 6]], float)
b = [Link]([-1, 3], float)
a + b
Formation Python ORSYS Consultants 10/ 38
Manipulation des données
Manipulation des données avec Numpy
➥ Les fonctions argmin et argmax renvoient les indices dans le tableau correspondant à des
valeurs minimale et maximale
a = [Link]([2, 1, 9], float)
[Link]() #1
[Link]() #2
Pandas
➥ Pandas est une librairie Python spécialisée dans l’analyse des données
➥ Les objets Pandas peuvent être considérés comme des versions améliorées de tableaux
structurés NumPy dans lesquels les lignes et les colonnes sont identifiées avec des
étiquettes plutôt que de simples indices entiers.
➥ Pour charger pandas dans la mémoire de Python, on utilise la commande import
habituelle :
import pandas
➥ Pandas est souvent chargé avec un nom raccourci, comme pour NumPy et matplotlib :
import pandas as pd
Formation Python ORSYS Consultants 15/ 38
Manipulation des données
Manipulation des données avec Pandas
La série Pandas
➥ Le premier type de données apporté par pandas est la serie, qui correspond à un vecteur à
une dimension de données indexées.
s = pd. Series ([10 , 20, 30, 40] , index = [’a’, ’b’, ’c’,
’d’])
s
➥ Avec pandas, chaque élément de la série de données possède une étiquette qui permet
d’appeler les éléments. Ainsi, pour appeler le premier élément de la série, on peut utiliser
son index, comme pour une liste (0 pour le premier élément) ou son étiquette (ici, "a") :
[Link]
[Link]
[Link]
s [0]
s["a"]
Formation Python ORSYS Consultants 16/ 38
Manipulation des données
Manipulation des données avec Pandas
La série Pandas
➥ On peut extraire plusieurs éléments, par leurs indices ou leurs étiquettes :
s [[1 ,3]]
s [["b","d"]]
La série Pandas
➥ Contrairement à un dictionnaire,la série prend en charge les opérations de style tableau
telles que le découpage :
s[’b’:’d’]
Le type DataFrame
➥ Un autre type d’objet introduit par pandas sont les dataframes. Ils correspondent à des
tableaux à deux dimensions avec des étiquettes pour nommer les lignes et les colonnes.
➥ Voici comment créer un dataframe avec pandas à partir de données fournies comme liste
de lignes
df = pd. DataFrame ( columns =["a", "b", "c", "d"],
index =["chat", "singe", "souris"],
data =[ np. arange (10 , 14) ,
np. arange (20 , 24) ,
np. arange (30 , 34)])
df
➥ L’attribut .columns renvoie le nom des colonnes et permet aussi de renommer les colonnes
d’un dataframe
df. columns
➥ On peut aussi sélectionner des lignes avec l’instruction .iloc et l’indice de la ligne (la
première ligne ayant l’indice 0) :
[Link] [1]
[Link] [[1 ,0]]
➥ Notez qu’à partir du moment où on souhaite effectuer une sélection sur des lignes, il faut
utiliser loc (ou iloc si on utilise les indices).
➥ On peut aussi combiner plusieurs conditions avec & pour l’opérateur "et", aussi | pour
l’opérateur "ou".
df[ (df ["Pau"] >15) & (df ["Lyon"] >25) ]
df[ (df ["Pau"] >15) | (df ["Lyon"] >25) ]
Formation Python ORSYS Consultants 22/ 38
Manipulation des données
Manipulation des données avec Pandas
Combinaison datasets
➥ [Link] () peut être utilisé pour une simple concaténation d’objets Series ou DataFrame,
tout comme [Link] () peut être utilisé pour de simples concaténations de tableaux :
ser1 = [Link]([’A’, ’B’, ’C’], index=[1, 2, 3])
ser2 = [Link]([’D’, ’E’, ’F’], index=[4, 5, 6])
[Link]([ser1, ser2])
Formation Python ORSYS Consultants 23/ 38
Visualiser les données à l’aide d’un graphique
Plan
l = [1, 2, 3]
for item in l:
print(item)
Formation Python ORSYS Consultants 26/ 38
Visualiser les données à l’aide d’un graphique
Visualiser les données à l’aide d’un graphique avec matplotlib
l = [1, 2, 3]
for index, item in enumerate(l):
print(index, item)
Package Matplotlib
Importation de Matplotlib
➥ Comme nous utilisons le raccourci np pour NumPy et le raccourci pd pour Pandas, nous
utiliserons des raccourcis standard pour les importations Matplotlib :
import matplotlib as mpl
import [Link] as plt
La fonction plot()
➥ L’instruction plot() permet de tracer des courbes qui relient des points dont les abscisses et
ordonnées sont fournies dans des tableaux.
x = array([1, 3, 4, 6])
y = array([2, 3, 5, 1])
plot(x, y)
Formation Python ORSYS Consultants 28/ 38
Visualiser les données à l’aide d’un graphique
Visualiser les données à l’aide d’un graphique avec matplotlib
Package Matplotlib
La fonction show()
➥ La fonction [Link] () recherche tous les objets de figure actuellement actifs et ouvre une
ou plusieurs fenêtres interactives qui affichent ces figures :
import [Link] as plt
import numpy as np
x = [Link](0, 10, 100)
[Link](x, [Link](x))
[Link](x, [Link](x))
[Link]()
La fonction subplot()
➥ La fonction subplot permet de regrouper plusieurs graphes, modélisé par un objet Figure
# create the first of two panels and set current axis
[Link](2, 1, 1) # (rows, columns, panel number)
[Link](x, [Link](x))
# create the second panel and set current axis
[Link](2, 1, 2)
[Link](x, [Link](x));
Formation Python ORSYS Consultants 29/ 38
Visualiser les données à l’aide d’un graphique
Visualiser les données à l’aide d’un graphique avec matplotlib
❶ Premier graphe
➥ Créer deux listes de nombres : l’une stocke les valeurs des coordonnées x de ces points et
l’autre les coordonnées y.
➥ Créer la courbe correspondant avec la fonction plot()
Formation Python ORSYS Consultants 29/ 38
Visualiser les données à l’aide d’un graphique
Visualiser les données à l’aide d’un graphique avec matplotlib
❶ Premier graphe
➥ Créer deux listes de nombres : l’une stocke les valeurs des coordonnées x de ces points et
l’autre les coordonnées y.
➥ Créer la courbe correspondant avec la fonction plot()
from [Link] import *
x_numbers = [1, 2, 3]
y_numbers = [2, 4, 6]
plot(x_numbers, y_numbers)
➥ Vous pouvez choisir parmi plusieurs options de marqueur, y compris "o", "*", "x" et "+".
➥ Vous pouvez créer un graphique qui ne marque que les points que vous avez spécifié, sans
aucune ligne les reliant, en supprimant marker
Formation Python ORSYS Consultants 30/ 38
Visualiser les données à l’aide d’un graphique
Visualiser les données à l’aide d’un graphique avec matplotlib
❷ Deuxième graphe
➥ Les valeurs de température moyennes mesurées à une ville au cours des années 2005 à
2017 sont les suivantes : 25.9, 30.3, 30.4, 27.4, 35.5, 36.8, 28.8, 31.0, 32.0, 35.3, 34.0,
36.7 et 36.4 degrés
➥ Tracer la température en affichant les années correspondantes
nyc_temp = [25.9, 30.3, 30.4, 27.4, 35.5, 36.8, 28.8, 31.0,
32.0, 35.3, 34.0, 36.7, 36.4 ]
years = range(2005, 2018)
plot(years, nyc_temp, marker=’o’)
Formation Python ORSYS Consultants 30/ 38
Visualiser les données à l’aide d’un graphique
Visualiser les données à l’aide d’un graphique avec matplotlib
❷ Deuxième graphe
➥ Les valeurs de température moyennes mesurées à une ville au cours des années 2005 à
2017 sont les suivantes : 25.9, 30.3, 30.4, 27.4, 35.5, 36.8, 28.8, 31.0, 32.0, 35.3, 34.0,
36.7 et 36.4 degrés
➥ Tracer la température en affichant les années correspondantes
nyc_temp = [25.9, 30.3, 30.4, 27.4, 35.5, 36.8, 28.8, 31.0,
32.0, 35.3, 34.0, 36.7, 36.4 ]
years = range(2005, 2018)
plot(years, nyc_temp, marker=’o’)
➥ créer trois listes pour stocker la température. Chaque liste sera composée de 12 chiffres
correspondant à la température moyenne de janvier à décembre de chaque année
nyc_temp_2005 = [30.3, 21.3, 22.2, 27.0, 25.5, 20.3, 19.3,
32.7, 29.0, 26.0, 25.3, 25.1]
nyc_temp_2010 = [40.3, 41.3, 38.2, 39.0, 20.9, 21.3, 20.3,
35.6, 38.0, 37.0, 32.1, 31.0]
nyc_temp_2017 = [36.3, 32.3, 31.2, 40.0, 22.4, 20.2, 19.3,
32.9, 39.0, 36.2, 31.2, 30.0]
➥ Vous pouvez tracer les trois ensembles de données sur trois graphiques différents.
Formation Python ORSYS Consultants 31/ 38
Visualiser les données à l’aide d’un graphique
Visualiser les données à l’aide d’un graphique avec matplotlib
❷ Deuxième graphe
➥ Mais pour pouvoir les comparer, vous pouvez les tracer sur un même graphique
months = range(1, 13)
plot(months, nyc_temp_2005, months,
nyc_temp_2010, months, nyc_temp_2017)
❷ Deuxième graphe
➥ Mais pour pouvoir les comparer, vous pouvez les tracer sur un même graphique
months = range(1, 13)
plot(months, nyc_temp_2005, months,
nyc_temp_2010, months, nyc_temp_2017)
❷ Deuxième graphe
➥ Vous pouvez spécifier un second argument à la fonction qui spécifiera la position de la
légende. Par défaut, il est toujours placé en haut à droite du graphique.
➥ Vous pouvez spécifier une position particulière, telles que ’lower center’, ’center left’, and
’upper left’
months = range(1, 13)
plot(months, nyc_temp_2005, months, nyc_temp_2010, months,
nyc_temp_2017)
legend([2005, 2010, 2017],loc=’lower center’)
Introduction à PyLab
➥ PyLab permet d’utiliser de manière aisée les bibliothèques NumPy et matplotlib pour de la
programmation scientifique avec Python.
➥ utilise la fonction arange() de numpy : la difference entre range() et arange() est qu’elle
retourne un tableau à la différence de range(). Tester :
from pylab import *
m = arange(3,15,2)
m
print(m)
❷ Deuxième graphe
❷ Deuxième graphe
➥ Soit f (x) = x - (x - 1)*sin(x)
➥ Dessiner la courbe qui modélise f(x), x étant une liste entre -3 et 3
Formation Python ORSYS Consultants 36/ 38
Visualiser les données à l’aide d’un graphique
Visualiser les données à l’aide d’un graphique avec pylab
❷ Deuxième graphe
➥ Soit f (x) = x - (x - 1)*sin(x)
➥ Dessiner la courbe qui modélise f(x), x étant une liste entre -3 et 3
from matplotlib import pyplot as plt
from math import *
x = range(-3, 3)
y=[]
for i in x:
[Link](i - (i-1)*sin(i))
[Link](x, y)
Formation Python ORSYS Consultants 37/ 38
Visualiser les données à l’aide d’un graphique
Visualiser les données à l’aide d’un graphique avec pylab
Exemple
import numpy as np
from matplotlib import pyplot as plt
fig, ax = [Link]()
[Link](X[:, 0], X[:, 1], c=y, s=50, cmap=’RdBu’)
ax.set_title(’Naive Bayes Model’, size=14)
xlim = (-8, 8)
ylim = (-15, 5)
Exemple