Python Pandas – Tuto (Partie N°1) 6


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 :

ShellSession
$ 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)

Python
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 :

Python
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) :

Python
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 :

Python
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 :

Python
csv.longitude ou csv["longitude"]

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

Récupérer une cellule

Python
csv.longitude[0]

ou

Python
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 :

Python
csv.iloc[:3, :4]

Filtrage sur colonnes (via labels) :

Python
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 :

Python
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


A propos de Benoit Cayla

Ingénieur en informatique avec plus de 20 ans d’expérience dans la gestion et l’utilisation de données, Benoit CAYLA a mis son expertise au profit de projets très variés tels que l’intégration, la gouvernance, l’analyse, l’IA, la mise en place de MDM ou de solution PIM pour le compte de diverses entreprises spécialisées dans la donnée (dont IBM, Informatica et Tableau). Ces riches expériences l’ont naturellement conduit à intervenir dans des projets de plus grande envergure autour de la gestion et de la valorisation des données, et ce principalement dans des secteurs d’activités tels que l’industrie, la grande distribution, l’assurance et la finance. Également, passionné d’IA (Machine Learning, NLP et Deep Learning), l’auteur a rejoint Blue Prism en 2019 et travaille aujourd’hui en tant qu’expert data/IA et processus. Son sens pédagogique ainsi que son expertise l’ont aussi amené à animer un blog en français (datacorner.fr) ayant pour but de montrer comment comprendre, analyser et utiliser ses données le plus simplement possible.

Laissez un commentaire

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

6 commentaires sur “Python Pandas – Tuto (Partie N°1)