Introduction à Python
  • Back to Main Website
  • Home
  • Comprendre Et Installer Python
    • Comprendre Et Installer Python
    • Histoire du Langage
    • Exécution d’un Programme Python
    • Versions et Compilation de Python
    • Le PATH
    • Path.. et environnements virtuels!
    • Les IDEs
    • Les Notebooks

    • Quelques IDEs en Python
    • VsCode - L’IDE Flexible et Polyvalent
    • Spyder - Un IDE Orienté Science des Données
    • PyCharm - L’IDE orienté Python

    • Travaux Pratiques
    • TP Guidé - Installer plusieurs versions de python avec pyenv
    • TP - Construire son python depuis la source
  • Syntaxes et Concepts de Base
    • Syntaxes et Concepts de Base
    • Syntaxe et objets de Base Python
    • Fonctions et Modules
    • Introduction à la POO en Python

    • Travaux Pratiques
    • Exercices d’applications
    • Base de la POO: Exercice
  • Les Librairies Python
    • Les Librairies Python
    • Installer et importer des librairies en Python
    • Les DataFrames
    • Exemple sur pandas
    • Calcul Scientifique et Optimization
    • Machine Learning
    • Recupérer des données du net
    • Python - Aussi un language pour servir des données
    • Visualiser et présenter ces données avec Python

    • Travaux Pratiques
    • TP-3 Libraries
    • TP - Utiliser pandas
  • Bonne pratiques, Dangers, et Astuces
    • Bonne pratiques, Dangers, et Astuces
    • Mutabilité et Scope
    • Typage en Python
    • Asynchronie et Multiprocessing

    • Travaux Pratiques
    • Modern Portfolio Theory - Practical Work
    • Modern Portfolio Theory - Practical Work - Corrected version
    • TP Python for Finance: Introduction to Option Pricing
    • TP Python for Finance: Introduction to Option Pricing - Corrected Version
    • TP - Creer un outil de récupération de donnée
  • Concepts avancés
    • Concepts avancés
    • L’arbre Syntaxique Abstrait ou AST
    • Python Orienté Objet - Les Dunders
    • Python Orienté Objet - les Design Patterns

    • Travaux Pratiques
    • TP-5
  • Sujets de Projets possibles
    • Projets
    • Projets Introduction à Python - Millésime 2024
    • Projets Introduction à Python - Millésime 2025
  • Code source
  1. Exemple sur pandas
  • Les Librairies Python
  • Installer et importer des librairies en Python
  • Les DataFrames
  • Exemple sur pandas
  • Calcul Scientifique et Optimization
  • Machine Learning
  • Recupérer des données du net
  • Python - Aussi un language pour servir des données
  • Visualiser et présenter ces données avec Python
  • Travaux Pratiques
    • TP-3 Libraries
    • TP - Utiliser pandas

Exemple sur pandas

Author

Remi Genet

Published

2025-02-12

import pandas as pd
data = [
    {'beer_name': 'a', 'type': 'blonde', 'price': 2},
    {'beer_name': 'b', 'type': 'blonde', 'price': 2},
    {'beer_name': 'c', 'type': 'blonde', 'price': 3},
    {'beer_name': 'd', 'type': 'brune', 'price': 4},
    {'beer_name': 'e', 'type': 'ale', 'price': 2}
]
df = pd.DataFrame(data)  # créer un dataframe à partir d'une liste de dict
df
beer_name type price
0 a blonde 2
1 b blonde 2
2 c blonde 3
3 d brune 4
4 e ale 2
df.columns
Index(['beer_name', 'type', 'price'], dtype='object')
type(df)
pandas.core.frame.DataFrame
# Créer un dataframe à partir d'un dict de list:
df2 = pd.DataFrame({
    'x': [1,2,3,5],
    'y': [4,22,33,5]
})
df2
x y
0 1 4
1 2 22
2 3 33
3 5 5
df2.shape
(4, 2)
df2.columns
Index(['x', 'y'], dtype='object')
df2.x
0    1
1    2
2    3
3    5
Name: x, dtype: int64
type(df2.x)
pandas.core.series.Series
l = [1, 2, 3, None]
s = pd.Series(l)
l
[1, 2, 3, None]
s
0    1.0
1    2.0
2    3.0
3    NaN
dtype: float64
s.mean()
2.0
df2['x']  
0    1
1    2
2    3
3    5
Name: x, dtype: int64
df2['x'] + 10
0    11
1    12
2    13
3    15
Name: x, dtype: int64
df2['x'] + df2['y']
0     5
1    24
2    36
3    10
dtype: int64
df2['x'] > 2  # renvoie une série de booléens
0    False
1    False
2     True
3     True
Name: x, dtype: bool
(df2['x'] > 2) & (df2['x'] < 5)  # on peut combiner les séries de booléens avec & et |
0    False
1    False
2     True
3    False
Name: x, dtype: bool
df
beer_name type price
0 a blonde 2
1 b blonde 2
2 c blonde 3
3 d brune 4
4 e ale 2
df['price']
0    2
1    2
2    3
3    4
4    2
Name: price, dtype: int64
bool_serie = df['price'] > 2
bool_serie
0    False
1    False
2     True
3     True
4    False
Name: price, dtype: bool
# on peut se servir de la syntaxe [] avec une série de booléens pour filtrer des lignes:
df[bool_serie]
beer_name type price
2 c blonde 3
3 d brune 4
# Ici on extrait les lignes qui on un price <= 2 + celles qui ont un price > 3
df[(df['price'] > 3) | (df['price'] <= 2)]
beer_name type price
0 a blonde 2
1 b blonde 2
3 d brune 4
4 e ale 2
s = df.price
s
0    2
1    2
2    3
3    4
4    2
Name: price, dtype: int64
s.sort_values()
0    2
1    2
4    2
2    3
3    4
Name: price, dtype: int64
df.sort_values('price')
beer_name type price
0 a blonde 2
1 b blonde 2
4 e ale 2
2 c blonde 3
3 d brune 4
df.sort_values(['type', 'price'])  # tri sur plusieurs colonnes
beer_name type price
4 e ale 2
0 a blonde 2
1 b blonde 2
2 c blonde 3
3 d brune 4
dfsorted = df.sort_values(['type', 'price'])
dfsorted
beer_name type price
4 e ale 2
0 a blonde 2
1 b blonde 2
2 c blonde 3
3 d brune 4
dfsorted.sort_index()  # trier par l'index
beer_name type price
0 a blonde 2
1 b blonde 2
2 c blonde 3
3 d brune 4
4 e ale 2
df['type']  # une colonne qui contient des str
0    blonde
1    blonde
2    blonde
3     brune
4       ale
Name: type, dtype: object
# L'attribut .str permet d'accéder aux méthodes des str habituelles:
df['type'].str.startswith('b')
0     True
1     True
2     True
3     True
4    False
Name: type, dtype: bool
df
beer_name type price
0 a blonde 2
1 b blonde 2
2 c blonde 3
3 d brune 4
4 e ale 2
df[['price', 'type']]  # prendre un sous-ensemble des colonnes
price type
0 2 blonde
1 2 blonde
2 3 blonde
3 4 brune
4 2 ale
df.loc[[0, 2]]  # extrait les lignes à l'index 0 et 2
beer_name type price
0 a blonde 2
2 c blonde 3
df.loc[0:2]  # extrait les lignes aux index 0, 1, et 2 *inclus*
beer_name type price
0 a blonde 2
1 b blonde 2
2 c blonde 3
# extrait les lignes aux index 1, 2, et 3 *inclus*, avec les colonnes price et type:
df.loc[1:3, ['price', 'type']]  
price type
1 2 blonde
2 3 blonde
3 4 brune
df['plop'] = [10, 11, 12, 13, 14]  # ajout d'une colonne
df
beer_name type price plop
0 a blonde 2 10
1 b blonde 2 11
2 c blonde 3 12
3 d brune 4 13
4 e ale 2 14
df2 = df.set_index('plop')  # on place la colonne 'plop' en index
df2
beer_name type price
plop
10 a blonde 2
11 b blonde 2
12 c blonde 3
13 d brune 4
14 e ale 2
df2.loc[10:12, 'beer_name':'price']
beer_name type price
plop
10 a blonde 2
11 b blonde 2
12 c blonde 3
df_with_beername_index = df.set_index('beer_name')
df_with_beername_index
type price plop
beer_name
a blonde 2 10
b blonde 2 11
c blonde 3 12
d brune 4 13
e ale 2 14
df_with_beername_index.loc[['a', 'c'], ['price', 'plop']]
price plop
beer_name
a 2 10
c 3 12
df_with_type_index = df.set_index('type')
df_with_type_index
beer_name price plop
type
blonde a 2 10
blonde b 2 11
blonde c 3 12
brune d 4 13
ale e 2 14
df_with_type_index.loc['blonde']
beer_name price plop
type
blonde a 2 10
blonde b 2 11
blonde c 3 12
# iloc est similaire à loc sauf qu'il prend en paramètre les positions des lignes/colonnes,
# contrairement à loc qui prend leurs valeurs.
df_with_type_index.iloc[:2, 1:]  # extrait les lignes 0 à 2 (exclue) et les colonnes 1 et suivantes
price plop
type
blonde 2 10
blonde 2 11
df 
beer_name type price plop
0 a blonde 2 10
1 b blonde 2 11
2 c blonde 3 12
3 d brune 4 13
4 e ale 2 14
# Extrait la valeur de la 1ère cellule:
df.iloc[0, 0]
'a'
dfbis = df.copy()
dfbis
beer_name type price plop
0 a blonde 2 10
1 b blonde 2 11
2 c blonde 3 12
3 d brune 4 13
4 e ale 2 14
# Concaténer 2 dataframes:
pd.concat([
    df,
    dfbis
])
beer_name type price plop
0 a blonde 2 10
1 b blonde 2 11
2 c blonde 3 12
3 d brune 4 13
4 e ale 2 14
0 a blonde 2 10
1 b blonde 2 11
2 c blonde 3 12
3 d brune 4 13
4 e ale 2 14
df_with_type_index
beer_name price plop
type
blonde a 2 10
blonde b 2 11
blonde c 3 12
brune d 4 13
ale e 2 14
df_with_type_index.reset_index()
type beer_name price plop
0 blonde a 2 10
1 blonde b 2 11
2 blonde c 3 12
3 brune d 4 13
4 ale e 2 14
for elem in df.index:
    print(elem)
0
1
2
3
4
df.set_index(['type', 'price']).sort_index()
beer_name plop
type price
ale 2 e 14
blonde 2 a 10
2 b 11
3 c 12
brune 4 d 13
df.to_csv('output.csv', index=False)  # exporter le dataframe dans un fichier csv
pd.read_csv('output.csv')  # créer un dataframe à partir d'un csv
beer_name type price plop
0 a blonde 2 10
1 b blonde 2 11
2 c blonde 3 12
3 d brune 4 13
4 e ale 2 14
pd.read_csv('output2.csv')
beer_name price type good
0 a 2 blonde non renseigne
1 b 2 blonde oui
2 c 3 blonde oui
3 d 4 brune non renseigne
4 e 2 ale non renseigne
5 x 1 blonde oui
# read_csv dispose de plein d'options
pd.read_csv('output2.csv', na_values=['non renseigne'], true_values=['oui'])
beer_name price type good
0 a 2 blonde NaN
1 b 2 blonde True
2 c 3 blonde True
3 d 4 brune NaN
4 e 2 ale NaN
5 x 1 blonde True
Back to top
Les DataFrames
Calcul Scientifique et Optimization

Introduction à Python, Rémi Genet.
Licence
Code source disponible sur Github

 

Site construit avec et Quarto
Inspiration pour la mise en forme du site ici
Code source disponible sur GitHub