Pandas est un paquet Python qui permet de manipuler des données sous forme de tableaux à une ou plusieurs dimensions. Un tableau à une dimension est appelé Series alors qu'un tableau à deux dimensions est qualifié de Dataframe. On peut également manipuler des tableaux à trois dimensions (Panel) ou à quatre dimensions (Panel4D).
Pandas permet notamment d'extraire ou de remplacer des données de manière simple, de récupérer des données depuis des fichiers CSV et d'analyser les données en interagissant avec d'autres paquets.
1.1. Définition d'un DataFrame
Il existe une multitude de manières de définir un DataFrame avec Pandas. Voici un exemple concret avec des personnes dont on connait les caractéristiques (nom, age, sexe, poids, taille).
Le DataFrame est une matrice dont les lignes sont des individus ou des objets et les colonnes sont les propriétés associées à ces individus. L'intérêt des Dataframe et qu'ils permettent de manipuler plusieurs colonnes avec des types différents (entier, réel, chaîne de caractères) alors qu'avec numpy> les données doivent être du même type.
1.1.1. Description des données sous forme de listes
# création d'une matrice de 6 lignes par 4 colonnes sous forme
# de tuples
l =list(zip(noms,sexe,ages,poids))
print("zip = ", l)
df = pd.DataFrame( data = l , columns=['nom','sexe','age','poids'])
print(df)
1.1.2. Sous forme de fichier CSV
Attention : ne surtout pas mettre d'espace entre les champs dans la définition de
StringIO sinon certaines valeurs ne serons pas reconnues. Par exemple pour :
"John","M",20,80
La chaine "M" sera reconnue comme tel, mais si on écrit :
"John", "M",20,80
La même valeur sera reconnue en tant que ' "M"'
from io importStringIO
import pandas as pd
donnees =StringIO("""nom,sexe,age,poids
"John","M",20,80
"Julia","F",10,25
"Janet","F",15,35
"Jack","M",30,120
"Jeff","M",45,75
"Jane","F",18,41
""")
df = pd.read_csv( data = donnees, sep=",")
print(df)
1.2. Informations d'un DataFrame
Les informations concernant le DataFrame sont par exemple :
la propriété shape : nombre de lignes et de colonnes sous forme d'un tuple
la propriété index : nombre de lignes sou forme d'un range
la propriété dtypes qui donne le type de chaque colonne
le fonction describe() qui donne une description statistique des données numériques
from io importStringIO
import pandas as pd
donnees =StringIO("""nom,sexe,age,poids
"John","M",20,80
"Julia","F",10,25
"Janet","F",15,35
"Jack","M",30,120
"Jeff","M",45,75
"Jane","F",18,41
""")
df = pd.read_csv(donnees, sep=",")
print("shape=", df.shape)
print("index=", df.index)
print("=== types ====\n", df.dtypes)
print("=== description ===\n", df.describe())
shape= (6, 4)
index= RangeIndex(start=0, stop=6, step=1)
=== types ====
nom object
sexe object
age int64
poids int64
dtype: object
=== description ===
age poids
count 6.000000 6.000000 # nombre de données
mean 23.000000 62.666667 # moyenne des données
std 12.649111 35.758449 # écart type
min 10.000000 25.000000 # valeur minimum
25% 15.750000 36.500000 # centiles
50% 19.000000 58.000000 #
75% 27.500000 78.750000 #
max 45.000000 120.000000 # valeur maximum
1.3. Manipulation d'un DataFrame
1.3.1. Renommer les colonnes
La variable inplace à vrai permet de ne pas refaire l'assignation du DataFrame.
Le fichier CSV suivant qui contient des données sur les iris de Fisher possède des noms
de colonnes que l'on désire modifier et une colonne "variety" que l'on désire transformer
en une valeur : 0 pour Setosa, 1 pour Versicolor et 2 pour Virginica.
Le paquet seaborn est une librairie de visualisation de données basée sur matplotlib. Elle permet par exemple d'afficher une matrice
de corrélation des données ou des pairplot qui donne un aperçu visuel des relations existantes entre les données.