Python Pandas – Tuto (Partie N°1)

La librairie Pandas

La librairie Pandas est une librairie Python qui a pour objectif de vous faciliter la vie en matière de manipulation de données. C’est donc un élément indispensable qui faut maîtriser en tant que datascientiste. Les structures de données gérées par Pandas peuvent contenir tout type d’éléments  à savoir (dans le jargon Pandas) des Séries et DataFrame et des Panel. Dans le cadre de nos expérimentations on utilisera plutôt les Dataframe car ils offres une vue bidimentionnelle des données (comme un tableau excel), et c’est exactement ce que l’on va chercher à utiliser pour nos modèles.

Pour information :

  • Une Series Pandas est un vecteur étiqueté capable de contenir n’importe quel type d’objet (tableau à 1 dimension)
  • Un DataFrame est une matrice bidimensionnelle où les colonnes peuvent être de différents types (tableau à 2 dimensions)
  • Un Panel est une structure de données à trois dimensions.

Si vous avez opté pour une distribution de Python (Anaconda par exemplle) bonne nouvelle, vous n’avez rien à faire, cette librairie étant déjà présente dans ladite distribution … si ce n’est pas le cas la commande pip vous permettra de l’installer :

$ pip install pandas

L’autre bonne nouvelle est que cette librairie est conçue pour travailler avec deux autres librairies célèbres et indispensable : NumPy et matplotlib !

Dans le cadre de ce petit tuto je vous recommande d’utiliser Jupyter notebook (les sources sont disponibles plus bas) afin d’aller plus vite.

N’hésitez pas non plus à consulter la documentation officielle : https://pandas.pydata.org/pandas-docs/stable/api.html

Les types de données

Créons tout d’abord un jeu de données simple (DataFrame)

import pandas as pd
pd.DataFrame({'Colonne 1': [1], 'Colonne 2': [2]})

La première commande précise à Python que l’on va travailler avec la librairie Pandas.

La seconde ligne indique à Pandas de créer un tableau à deux dimensions.

Voici le résultat :

 Colonne 1 Colonne 2
012

les colonnes ont des beaux libellés mais si vous vouloez aussi etiquetter vos lignes il faudra le préciser avec la propriété index comme suit :

pd.DataFrame({'Colonne 1': [35, 41], 'Colonne 2': [1, 2]}, index=['Ligne 1', 'Ligne 2'])

Voici le résultat :

 Colonne 1 Colonne 2
Ligne 1
3541
Ligne 2412

C’est pas forcément le plus utile mais ça peut quand même servir, voici comment créer une série (vecteur) :

pd.Series(["Valeur1", "Valeur2", "Valeur3", "Valeur4"], index=["Index1", "Index2", "Index3", "Index4"], name='Ma série')

Voici le résultat :

Index1 Valeur1
Index2Valeur2
Index3Valeur3
Index4Valeur4
Name: Ma série, dtype: object

Par contre récupérer des données provenant d’un fichier csv, c’est plus utile, pour celà utilisez la commande read_csv :

csv = pd.read_csv("./datasets/housing/housing.csv")

Note: Si vous voulez plutôt lire une fichier excel, référez-vous à la commande read_excel.

Une fois lu le fichier, plusieurs commandes sont très utiles :

  • head() : permet d’afficher les premières lignes du DataFrame
  • tail() : idem mais pour les dernières lignes
  • describe() : Très utile, donne des indications sur les données (comptage, ecart type, valeur médiane, quantile, min, max, etc.). Attention ! certains indicateurs statistiques ne sont valables que pour les variables numériques (ex. moyenne, min, max, etc.), et inversemment pour les non-numériques (ex. top, freq, etc. ), d’où des « NaN » dans certaines situations. Pour récupérer toutes les statistiques, effectuer un df["colonne 1"].describe(include='all')
  • shape() : dimensions de l’objet
  • value_Counts() permet d’obtenir un tableau de valeurs + fréquence de distribution très utile : df["colonne 1"].value_counts()
  • etc.

Accéder aux données (DataFrame)

Récupérer un vecteur

On peut récupérer un vecteur colonne (une colonne du DataFrame) très simplement via :

csv.longitude ou csv["longitude"]

NB: csv est un DataFrame qui a une colonne étiquettée longitude.

Récupérer une cellule

csv.longitude[0]

ou

csv["longitude"][0]

Manipuler les données du DataFrame

Dans le même esprit on peut récupérer des morceaux du DataFrame via les commandes iloc() et loc():

Récupérer les 4 premières colonnes et les 3 premières lignes :

csv.iloc[:3, :4]

Filtrage sur colonnes (via labels) :

csv.loc[:, ('longitude', 'latitude')]

Manipuler les données caractères

Il est souvent utile de décomposer les chaines de caractères. pour cela Pandas offre plusieurs fonctions très pratique. La fonction split() par exemple permet de découper la chaine de caractère selon un séparateur.

Exemple :

monDataframe["index1"].str.split("-", expand=True)

Dans l’exemple ci-dessus on découpe la chaine de caractère correspondant à la colonne « index1 » du DataFrame mondataframe avec pour séparateur le caractère. Notez deux choses ici. l’attribut str permet en premier lieu de manipuler la donnée du DataFrame en tant que caractère. Deuxièmement l’option expand=True permet de renvoyer un nouveau DataFrame au lieu d’une série (c’est bien plus pratique pour la suite).

Consultez dans la documentation officielle Python les autres fonctions de gestion de caractères.

Les notebook Jupyter de ce tuto

Retrouvez les exemples et résultats ci-dessus dans les deux notebook jupyter sur mon Github

Suite du tuto (Partie N°2) ici

Partager cet article

6 Replies to “Python Pandas – Tuto (Partie N°1)”

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.