TP Pandas
TP Pandas
TP Pandas
TP Pandas
Ce TP a pour but de présenter les opérations courantes de traitements et d’organisations des données
sous Python en utilisant le module Pandas. Les bases de données se présentent sous le format data
frame. Signalons toutefois que le data frame est constitués d’un ensemble de colonnes dont chacun peut
être considéré comme une série. La série est en fait un data frame à une seule colonne.
Un objet séries est un objet python qui se présente sous la forme d’un vecteur-colonne. C’est un objet
spécifique au module pandas. On distingue deux principales méthodes pour créer un objet séries : la
création de série à partir d’une liste de valeurs ou la création de séries à partir des dictionnaires .
On peut créer une série par saisie (ou à partir d’une liste) en utilisant la fonction series() de pandas.
Exemple:
importpandas
mySerie1=pandas.Series([5,6,2,9,12])
print(mySerie1)
0 5
1 6
2 2
3 9
4 12
Par définition, un dictionnaire est un ensemble formé d'une valeur et d'un indice. Etant donné cette
structure, on peut définir une série en utilisant directement le dictionnaire sans avoir besoin de
distinguer d'une part les valeurs et d'autre part les indices comme pour le cas d'une liste. Exemple: soit
le dictionnaire suivant:
import pandas
Notes= {‘Ahmed’ :12, ‘Aly’ :4 ; ‘Fama’ :13}
On peut définir une série à partir de ce dictionnaire comme suit:
mySerie = pandas.Series(Notes)
print(mySerie)
Ahmed 12
Aly 4
Fama 13
1/12
En convertissant un dictionnaire en series, les indices du dictionnaire deviennent directement les
indices de la série.
1.3 Définir des indices pour les séries (identifiant des séries)
Par défaut les séries sont indexé de 0 , 1, ...,n. On peut alors ajouter des indices aux séries en
utilisant l'option index lors de la création de la série. Ex:
import pandas
mySerie =pandas.Series([5,6,2,9,12], index=[ "cinq", "six", "deux","neuf","douze"])
print(mySerie)
cinq 5
six 6
deux 2
neuf 9
douze 12
On remarque que les séries et leur indice sont tous définis sous forme de liste.
NB: Lorsque les valeurs proviennent de la définition d'une liste, on peut écrire la définition de la série
comme suit:
myList=[5, 6, 2, 9, 12] # définition de la liste des valeurs
myIndices index=[ "cinq", "six", "deux","neuf","douze"] #définitionde lalistedesindices
mySerie=pandas.Series(myList,myIndices)#définition de la série
print(mySerie)
On peut ainsi remplacer les indices dans les opérations pour accéder aux valeurs.
Exemple :
print (mySerie[0]) # Selection du premier élément (méthode classique)
print(mySerie["cinq"]) # Selection du premier élément (sélection par l'index)
Pour rédéfinir les indices d'une série, on utilise la fonction reindex(). Exemple:
mySerie = mySerie.reindex(["a","b","c","d","e"])
Tout comme les objets series, les objets data frames sont des objets python spécifiques au modules
pandas. Il existe plusieurs manières de créer les objets data frames : création à partir de séries,
création à partir de dictionnaires, création à partir de sources de données externes, etc… La
fonction de base pour créer un data frame est la fonction DataFrame() de pandas.
2/12
2.1 Création de data frame à partir des séries
Premièrement: Rassembler les séries dans un dictionnaire en utilisant la fonction dict() pour créer les
variables. On a:
variables = dict(year=year, guardCorps = guardCorps, corps1 = corps1, corps2 = corps2, corps3 =
corps3, corps4 = corps4, corps5 = corps5, corps6 = corps6, corps7 = corps7, corps8 = corps8,
corps9 = corps9, corps10 = corps10, corps11 = corps11 , corps14 = corps14, corps15 =corps15)
Deuxièmement: On crée le dataframe en utilisant ma fonction DataFrame de pandas.
mydata = pandas.DataFrame(variables, columns = ['year', 'guardCorps', 'corps1', 'corps2','corps3',
'corps4', 'corps5', 'corps6','corps7', 'corps8','corps9', 'corps10', 'corps11', 'corps14','corps15'])
print(mydata)
NB: Ici, la définition columns n'est pas nécessaire car les variables ont les mêmes noms que ceux du
dictionnaire. Elle sert juste à garder l’ordre d’apparition desvariables dans un print.
3/12
2.2 Création du dataframe à partir d'un dictionnaire
On peut créer un dataframe à partir d'un dictionnaire en utilisant la fonction DataFrame de pandas.
Un dataframe vide est un dataframe dont les variables (colonnes) sont indiquées mais qui ne contient
pas d’observations (lignes). Le plus souvent, on a besoin de créer un data frame afin de l’ajouter des
observations dans la suite du programme en utilisant les fonctions appends. Voic-ci-dessous un
exemple simple de création de data frame vide.
l’argument index permet d’indiquer que le dataframe ne contient aucune ligne. Et l’argument columns
permet d’indiquer les noms des variables.
4/12
NB : Pour ajouter des observations à ce data frame vide, on utilise les fonction de fusions verticales.
5/12
3 Création de dataframe à partir des sources de données externes
Les données externes peuvent se présenter sous plusieurs formes: csv, txt, xlsx, etc... Cette section a
pour but de décrire comment importer les données en python sous forme de data frame.
L’importation de fichiers txt ou csv se fait basiquement avec la fonction read_csv() du module pandas
(on peut aussi utiliser la fonction from_csv()).
x=pandas.read_csv("mytabdelimdata.txt",sep="\t", header=0,encoding
='utf-8') # ou encoding='Latin-1' pour les tables avec caractères accentués
print(x)
NB : Dans les deux exemples ci-dessus, le paramètre header=0 indique que les noms de variables
se trouvent sur la ligne 0. Si les données ne contiennent pas les données, on met header=None.
On peut appliquer cette méthode d’importation pour tous les fichiers txt ou csv. Il suffit de changer
le séparateur sep (Ex : ;, , ,etc…).
Lorsque la table de données importée ne contient pas les noms des colonnes, on ajoute les noms dans
une seconde étape. Ex:
6/12
3.2 Importation de fichiers Excels
L’importation de data frames à partir de fichiers excel se fait avec la fonction read_excel() de
pandas. On dispose pour cela de plusieurs méthodes. Exemples :
Première méthode
z1=pandas.read_excel("myxlsxdata.xlsx",sheetname="myxlsxdatasheet", header=0,
parse_cols="A:W")
print(z1)
Deuxième méthode
7/12
Exercices
Exercice 1
Écrivez un programme Pandas pour obtenir les pouvoirs des valeurs d'un tableau par élément.
Les données : {‘X’:[78,85,96,80,86], ‘Y':[84,94,89,83,86],'Z':[86,97,96,72,83]}
Exercice 2
1. Écrire un programme Pandas pour créer et afficher le DataFrame suivant à partir de
données d’un dictionnaire.
8/12
Exercice 4
Soit la table suivi de données Excel suivante :
9/12
Les fonctions essentielles de Pandas :
(https://thaoly-22574.medium.com/pandas-les-fonctions-essentielles-b978c6377db0)
pd.read_csv()
pd.read_excel()
pd.read_sql()
df.to_csv()
df.to_excel()
df.to_sql()
df.head() : Permet d’afficher les 5 premières lignes de votre dataframe. Vous pouvez
aussi choisir le nombre de ligne que vous voulez afficher. Il suffit juste de le préciser
entre les parenthèses.
df.tail() : Fait la même chose que head() mais pour les dernières lignes du dataframe.
10/12
df.apply() : Permet d’appliquer une fonction sur toutes les lignes de votre dataframe
df.iloc[0,:] = Affiche toutes les valeurs de la ligne 0 sur toutes les colonnes
df.dropna(axis=1) = Supprime toutes les lignes qui contiennent des valeurs null
df[df[col] > 0.5] = Affiche les données où les valeurs sont supérieurs à 0.5
df[(df[col] > 0.5) & (df[col] < 0.7)] = Affiche toutes les données où les valeurs sont
supérieurs à 0.5 mais inférieurs à 0.7
11/12
df_sort_values([col1,col2], ascending=[True,False]) Filtre les valeurs de la colonne col1
de façon ascendante et de la colonne 2 col2 de façon descendante.
df.groupby(col1) Retourne un objet agrégé group by pour les valeurs d’une colonne
df.groupby([col1, col2])
df.pivot_table()
df.groupby(col1).agg(np.mean)
df.apply(np.mean)
df.std(axis=0)
12/12