TP : Ajouter des méthodes dunder à DataFrameSimple
Instructions
Dans ce TP, vous allez étendre la classe DataFrameSimple
en y ajoutant des méthodes dunder (double underscore) pour implémenter des opérations avancées. Cela vous permettra de comprendre comment ces méthodes spéciales peuvent rendre vos objets plus puissants et flexibles.
Voici la classe DataFrameSimple
de base :
import numpy as np
class DataFrameSimple:
def __init__(self, data):
self.donnees = np.array(list(data.values())).T
self.colonnes = list(data.keys())
def afficher(self):
= " ".join(f"{col:>10}" for col in self.colonnes)
header = [" ".join(f"{val:10}" for val in row) for row in self.donnees[:5]]
rows return "\n".join([header] + rows)
def moyenne(self, nom_colonne):
return np.mean(self.select_colonne(nom_colonne))
def somme(self, nom_colonne):
return np.sum(self.select_colonne(nom_colonne))
def min(self, nom_colonne):
return np.min(self.select_colonne(nom_colonne))
def max(self, nom_colonne):
return np.max(self.select_colonne(nom_colonne))
def select_colonne(self, nom_colonne):
= self.colonnes.index(nom_colonne)
index return self.donnees[:, index]
Votre tâche est d’ajouter les méthodes dunder suivantes à cette classe :
__str__(self)
: Retourne une représentation en chaîne de caractères du DataFrame.__len__(self)
: Retourne le nombre de lignes du DataFrame.__getitem__(self, key)
: Permet l’accès aux colonnes par nom (ex:df['colonne']
).__setitem__(self, key, value)
: Permet de modifier une colonne par nom (ex:df['colonne'] = [1, 2, 3]
).__iter__(self)
: Permet d’itérer sur les noms de colonnes du DataFrame.__add__(self, other)
: Permet d’additionner le DataFrame avec un scalaire (int, float, np.float_) ou un autre DataFrame.
Pour la méthode __add__
, suivez ces règles : - Si other
est un scalaire (int, float, np.float_), ajoutez-le à toutes les valeurs numériques du DataFrame. - Si other
est un autre DataFrame, additionnez les valeurs correspondantes si les dimensions et les noms de colonnes correspondent. - Si other
est un numpy array de même dimension que les données, additionnez-le élément par élément. - Pour tout autre type, levez une exception TypeError.
Implémentation
Complétez la classe DataFrameSimple
ci-dessous en ajoutant les méthodes dunder demandées :
Tests Unitaires pour vérifier votre implémentation
Exécutez les tests unitaires ci-dessous pour vérifier votre implémentation :