Aller au contenu

Prise en main de Pandas - Le guide ultime


Pandas est une libraire Open Source sous licence BSD. Il s'agit d'une librairie de manipulaion et d'analyse de données en python. Elle est très intuitive et facile à prendre.

Installation

Pandas est disponible sur Pypi, vous pouvez l'installer via pip. Si vous utilisez Aanaconda, il est installé par défaut.

pip install pandas

Importation

Une fois installé, il ne manque plus qu'à l'importer.

import pandas as pd
Vous pouvez vérifier la version de Pandas
print(pd.__version__)

pandas.Series

pandas.DataFrame

Un DataFrame est l'équivalent des table de base de données relationnelle ou d'un tableau Excel. Un dataframe est organisé en lignes et colonne. Chaque colonne a un type donné et ne peut

2. Lecture d'un fichier

    1. Texte (CSV, TXT)
    1. Json
    1. Excel
    1. Pickle

Importer des doonnées avec Pandas

Pandas permet d'importer des données depuis de sources différentes.
Retrouvez l'ensemble du projet sur github (https://github.com/joekakone/Get-data-with-Pandas.git)

import sqlite3
import pandas as pd

1. TXT: Plain Text

data = pd.read_table("ble.txt", sep=";")
data.head()
parcelle variete phyto rdt
0 1 V1 Avec 5652
1 2 V1 Avec 5583
2 3 V1 Avec 5612
3 4 V1 Avec 5735
4 5 V1 Avec 5704

2. CSV: Comma Separated Values

data = pd.read_csv("results.csv")
data.head()
date home_team away_team home_score away_score tournament city country neutral
0 1872-11-30 Scotland England 0 0 Friendly Glasgow Scotland False
1 1873-03-08 England Scotland 4 2 Friendly London England False
2 1874-03-07 Scotland England 2 1 Friendly Glasgow Scotland False
3 1875-03-06 England Scotland 2 2 Friendly London England False
4 1876-03-04 Scotland England 3 0 Friendly Glasgow Scotland False

3. JSON: JavaScript Object Notation

data = pd.read_json("covid19.json")
data.head()
Country_Region Confirmed Deaths Recovered Active
0 Benin 5143 65 4119 959
1 Burkina Faso 11763 139 11130 494
2 Cabo Verde 14948 142 14470 336
3 Cote d'Ivoire 31825 185 30056 1584
4 Gambia 4543 143 3933 467

4. HTML: HyperText Markup Language

data = pd.read_html("table.html")[0]
data.head()
# First Name Last Name Username
0 1 Mark Otto @mdo
1 2 Jacob Thornton @fat
2 3 Larry the Bird @twitter
3 4 Mark Otto @mdo
4 5 Jacob Thornton @fat

5. XML: Extensible Markup Language

data = pd.read_xml("iris.xml")
data.head()
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa

6. Excel

data = pd.read_excel("Global Library Data.xlsx", sheet_name="Country Data")
data.head()
Country Region Expenditures \n(US Dollars) Total Libraries Total Librarians Total Volumes Total Users
0 Afghanistan Asia NaN 150 NaN 577300 48133.0
1 Albania Europe 134036.0 2107 32.0 12398795 581298.0
2 Algeria Africa 641176.0 760 56.0 4363718 1430.0
3 American Samoa Oceania NaN 32 NaN 170009 NaN
4 Andorra Europe 5777651.0 39 6.0 222869 16596.0

7. Sqlite Database

# Connect to database
conn = sqlite3.connect("ipldatabase.sqlite")
data = pd.read_sql_query("SELECT * FROM Player;", con=conn)
# Close connection
conn.close()
data.head()
Player_Id Player_Name DOB Batting_hand Bowling_skill Country_Name
0 1 SC Ganguly 1972-07-08 00:00:00 1 1.0 1
1 2 BB McCullum 1981-09-27 00:00:00 2 1.0 4
2 3 RT Ponting 1974-12-19 00:00:00 2 1.0 5
3 4 DJ Hussey 1977-07-15 00:00:00 2 2.0 5
4 5 Mohammad Hafeez 1980-10-17 00:00:00 2 2.0 6

Prise en main des données

Les dataframes Pandas disposent de plusieurs méthodes qui permettent de prendre en main les données très rapidement.

# Méthode Description
1 .head affiche les premières n lignes (5 par défaut)
2 .tail affiche les dernières n lignes (5 par défaut)
3 .sample affiche n lignes tirées au hasard (1 par défaut)
3 .info affiche les types des colonnes et le nombres de valeurs non nulles
4 .describe affiche un réumé statistique des colonnes numériques
5 .shape retourne le nombre de lignes et de colonnes

Sélection

Il s'agit de

Projection

La projection est similaire à la sélection, il s'agit de sélectionner quelques colonnes, on projette ainsi les données sur un colonne. Imaginez que vos colonnes représentent les coordonnées, alors cette notion de projection prend tout son sens.

Restriction et Filtrage

Je vous propose de voir cela avec un exemple. Nous voulons voir seulement les lignes dont la note en mathématiques est supérieure à 10 par exemple. Alors nous procédons à une restriction avec la condition. Vous l'aurez compris Restriction -> Condition. Pour le besoin de certains traitements, l'on désire avoir

df_students.loc[df_students['Name']=='Aisha']
df_students[df_students['Name']=='Aisha']
df_students[df_students.Name == 'Aisha']
df_students.query('Name=="Aisha"')
df_students.query('Name=="Aisha"')

Trier les données

df_students = df_students.sort_values(by='Grade', ascending=False)
df_students

Tableau des effectifs

Nous attaquons ici, la statistique descriptive.

Aggrégation

Concaténation ou Union de tables

Conca

Jointure de tables

Une jointure de tables

Tableau croisé

Si vous êtes un utilisateur de Microsoft Excel alors vous connaissez très bien les tableaux croisés dynamiques. Pandas implémente également cette fonctionnalité.

Remplacer les valeurs manquantes

df_students.isnull()
df_students.isnull().sum()
df_students[df_students.isnull().any(axis=1)]
df_students.StudyHours = df_students.StudyHours.fillna(df_students.StudyHours.mean())
df_students

8. Visualisation

Pandas permet également de construire des visuels. Pour cela Pandas utilise Matplotlib en arrière-plan.

df_students.plot.bar(x='Name', y='StudyHours', color='teal', figsize=(6,4))

Partagez sur les réseaux sociaux

Commentaires