diff --git a/pymath/stat/dataset.py b/pymath/stat/dataset.py index 8ca0fff..81db07c 100644 --- a/pymath/stat/dataset.py +++ b/pymath/stat/dataset.py @@ -7,9 +7,9 @@ # # -from math import sqrt, cos, ceil +from math import sqrt, ceil -class Dataset(): +class Dataset(list): """ Classe réprésentant un série statistique avec rendu latex """ def __init__(self, data = [], data_name = "Valeurs"): @@ -19,9 +19,9 @@ class Dataset(): :param data: values of the data set :param data_name: name of the data set """ - self.data = list(data) + list.__init__(self, data) - self.data_name = data_name + self_name = data_name def add_data(self, data): """Add datas to the data set @@ -29,19 +29,16 @@ class Dataset(): :param data: datas """ try: - self.data += data + self += data except TypeError: - self.data += [data] + self += [data] def sort(self, *args, **kwrds): """ Apply sort to data """ - self.data.sort(*args, **kwrds) - - def __len__(self): - return len(self.data) + self.sort(*args, **kwrds) def sum(self): - return sum(self.data) + return sum(self) def mean(self): return self.sum()/len(self) @@ -49,10 +46,10 @@ class Dataset(): def deviation(self): """ Compute the deviation (not normalized) """ mean = self.mean() - return sum([(x - mean)**2 for x in self.data]) + return sum([(x - mean)**2 for x in self]) def variance(self): - return self.deviation()/len(self.data) + return self.deviation()/len(self) def sd(self): """ Compute the standard deviation """ @@ -64,7 +61,7 @@ class Dataset(): :return: (min, Q1, Me, Q3, Max) """ - return (min(self.data) , self.quartile(1) , self.quartile(2) , self.quartile(3), max(self.data)) + return (min(self) , self.quartile(1) , self.quartile(2) , self.quartile(3), max(self)) def quartile(self, quartile = 1): """ @@ -82,7 +79,7 @@ class Dataset(): """ position = self.posi_quartile(quartile)[0] # À vérifier... - return self.data[position] + return self[position] def posi_quartile(self, quartile = 1): @@ -215,7 +212,7 @@ On a ainsi $Q_{q} = {val_q}$ """ d_per_line = len(self) // nbr_lines d_last_line = len(self) % d_per_line - splited_data = [self.data[x:x+d_per_line] for x in range(0, len(self.data), d_per_line)] + splited_data = [self[x:x+d_per_line] for x in range(0, len(self), d_per_line)] # On ajoute les éléments manquant pour la dernière line if d_last_line: splited_data[-1] += [' ']*(d_per_line - d_last_line)