La POO en python : Les Descripteurs Avancés en Python : La bibliothèque Matplotlib : La bibliothèque Pandas :
class Livre: Les descripteurs sont des classes spéciales qui Fonction Usage Pour créer un dataframe à partir des fichiers de donnees :
def __init__(self, titre, pages): permettent de contrôler l'accès aux attributs d'un [Link](x, y) Trace une courbe *pandas.read_excel() ou pd.read_excel() : pour les fichiers
[Link] = titre objet grâce aux méthodes suivantes : (.xls).
[Link](labels, values) Diagramme à barres
[Link] = pages __get__(self, instance, owner) → Intercepte la *pd.read_csv() : pour les fichiers (.csv).
lecture d'un attribut. [Link](data, bins) Histogramme
def __str__(self): *pd.read_json() : pour les fichiers (.json).
__set__(self, instance, value) → Intercepte l'écriture [Link](x, y) Nuage de points
return f"Livre: {[Link]}" *pd.read_html(), pd.read_sql(), pd.read_....() ….
def __repr__(self): d'un attribut. Diagramme circulaire *C’est possible aussi de créer un DataFrame à partir d’un
[Link](sizes, labels)
__delete__(self, instance) → Intercepte la (camembert)
return f"Livre(titre='{[Link]}', pages={[Link]})" tableau : df =[Link]([1, 2, 3, 4, …
suppression d'un attribut [Link](), [Link](), Ajouter titres et
def __len__(self): La sélection :
Ils permettent de centraliser la logique [Link]() labels
return [Link] *df[‘column_name’]
d'accès aux attributs et sont très utiles pour
[Link]() Affiche la grille *df[num_row_start :num_row_end]
les validations de données
repr(obj) ou Représentation technique class TextNonVide: [Link]() Affiche la légende *[Link][num_row, ['column_name', 'column_name'], …]
__repr__
console (souvent pour debug) def __init__(self,text): NumPy : [Link]() Affiche la figure La modification :
__eq__ obj1 == obj2 Comparer deux objets [Link]=text Attributs : [Link]("[Link]") Sauvegarde la figure *[Link][num_row, "column_name"] = value
Retourner une "longueur" def __get__(self,instance,owner): * shape : Un tuple d'entiers indiquant le nombre dans un fichier Filtrer les données :
__len__ len(obj) return instance.__dict__.get([Link],None) d'éléments stockés le long de chaque dimension du * df[df[‘column_name’] == ‘value’], vous pouvez utilizer >, >=, <,
personnalisée [Link](data) Image/Heatmap
@property def __set__(self,instance,value): tableau. Pour un tableau 2D avec N lignes et M [Link](data, cmap='hot', interpolation='nearest') <=, et !=,
Permet de contrôler l'accès en lecture et en écriture d’un if value == '': colonnes, la forme sera (N,M). La longueur de ce utiliser le caractère & avec les parenthèses pour plusieurs
attribut, comme en Java avec get/set. raise ValueError("le text ne doit pas être tuple de forme est donc égale au nombre conditions, exemple :
vide") de dimensions du tableau. df[(df['column_name'] == 'value') & (df['column_name'] ==
instance.__dict__[[Link]]=value * size : le nombre d’elements de tableau. 'value')]
class Personne:
*ndim : Le nombre d'axes (dimensions/lignes) du La création de nouvelles colonnes à partie de colonnes
def __init__(self, nom):
class Utilisateur: tableau existantes :
self._nom = nom nom=TextNonVide("nom") df[‘column_name’] = df[‘column_name’] opération
prenom=TextNonVide("prenom") df[‘column_name’],
@property def __init__(self,nom,prenom):
def nom(self): l’opération peut être n’importe quelle opération arithmétique
[Link]=nom Manipulation des données :
return self._nom [Link]=prenom
* [Link]() : Afficher le début du DataFrame.
@[Link] *[Link]() : Afficher la fin du DataFrame
u=Utilisateur("aissaoui","hanane")
def nom(self, valeur): * [Link] : Afficher les noms des colonnes
print([Link])
if not valeur: print([Link]) Méthodes : * [Link]() : Statistiques rapides
raise ValueError("Le nom ne peut pas être vide.") [Link]="" [Link]() : Les tableaux NumPy peuvent être * [Link]([’column’, ‘column’, …]) : Eliminer certaines colonnes
self._nom = valeur définis à l'aide de séquences Python telles que des * df.[‘column’].value_counts() : Compter les répétitions
Exeptions : listes et des tuples. Les listes et les tuples sont * [Link]([‘column’]) : Analyse par groupe
Python stocke les attributs de l'instance dans un dictionnaire Exception Description définis à l'aide de [...] et (...), respectivement. Les * [Link](valeur_par_defaut) : compléter les données
interne __dict__. On peut voir cela avec : ZeroDivisionError listes et les tuples peuvent définir la création de manquants par une valeur par défaut
Division par zéro
print(v ._ dict_) ndarray * [Link]() : Eliminer les lignes dans lesquelles il manque
TypeError Mauvais type de donnée
[Link](nb_elt) : Renvoie un nouveau des données.
ValueError Valeur invalide tableau de forme et de type donnés, rempli de * Le trie : df.sort_values(by="column_name")
{'marque': 'Tesla', 'modele' : 'Model S', 'couleur': 'Rouge' }
IndexError Index hors limite d'une liste zéros. Cette fonction prend comme argument la * Applique rune function sur une colonne :
KeyError Clé inexistante dans un dictionnaire forme du tableau df['column_name'].apply(lambda x
__slots__ optimise la mémoire et empêche la création
AttributeError Attribut inexistant [Link](start,stop,pas) : Cette fonction : opération), exemple : df['column_name'].apply(lambda x : x
dynamique d'attributs. Utile pour les classes avec beaucoup
permet de construire un array à une dimension de * 2)
d'instances. ImportError Échec d’importation
manière simple similaire à la fonction range()
FileNotFoundError Fichier introuvable [Link] ((nb_bloc,nb_lig,nb_col),val) : df[ df['sex'] == 'male' ]
RuntimeError Erreur d'exécution générique Renvoie un nouveau tableau de forme donnés,
rempli avec une => Cela renvoie un nouveau DataFrame contenant uniquement
valeur donnée
les lignes où sex == 'male'.
[Link] ((debut,fin,nb_elt) : Est une
# 8. Afficher le nombre de passagers de sexe masculin
méthode qui permet de créer un tableau a une
nb_hommes = df[df['sex'] == 'male'].shape[0] (nb ligne)
dimension, et dans laquelle on va préciser un point
de début, un point de fin et le nombre d'éléments
qu'on veut avoir dans notre tableau, et ces
def lire_fichier(fichier): éléments sont régulièrement espacés.
try: [Link] (nb_lig,nb_col,nb_bloc) : Donne
fichier = open(fichier, 'r') une nouvelle forme à un tableau sans modifier ses
contenu = [Link]() données
Méthodes magiques : __getattr__, __setattr__, __delattr__ return contenu [Link] (axis) : renvoie la somme des
except FileNotFoundError: éléments d’un tableau
__getattr__(self, attr) : Déclenchée uniquement lorsqu'on print(f"Erreur : Le fichier '{fichier}' n'existe # Somme des colonnes (axis=0) axis=1 pr ligne
pas.") somme_colonnes = [Link](tableau, axis=0)
essaie d'accéder à un attribut
return None [Link]() : Renvoie à la fois un tableau qui
non défini.
finally: contient les diffèrent entités présentes dans notre
def __getattr__(self, name):
print("fermeture du fichier") tableau et le nombre de répétitions pour chacune
return f"{name} est inconnu"
__setattr__(self, attr, value) : Intercepte toutes les affectations de ces entités.
d'attributs, même celles déjà définies. uniques, counts = [Link](tab,
return_counts=True)
print(uniques[counts == 1])
# Valeurs communes
communes = np.intersect1d(a, b)
Méthode/Fonction Rôle
On utilise super().__setattr__(attr, value) pour éviter une boucle [Link](n) Matrice identité n × n
infinie Nombres aléatoires
[Link](dims)
uniformes entre 0 et 1
[Link](dims) Nombres aléatoires suivant
une distribution normale
[Link](a, b, Entiers aléatoires entre a et
size) b
[Link](nb_lig,nb_elt_pr_chaque_lig)
[Link](0, 5, 10) de NumPy génère un
tableau de 10 nombres aléatoires tirés d'une
distribution uniforme entre 0 et 5.