|
@@ -280,12 +280,14 @@ class genererTableau ():
|
|
|
|
|
|
return en_tete
|
|
|
|
|
|
- def _generer_en_tete_detail(self, variable):
|
|
|
+ def _generer_en_tete_detail(self, variable, iqr=False, extremes=False):
|
|
|
|
|
|
"""
|
|
|
Genere l'en-tête d'un tableau Descriptif
|
|
|
Input :
|
|
|
axes : liste des axes d'analyse
|
|
|
+ iqr, boolean: Si true, intègle les intervalles interquartiles
|
|
|
+ extremes, boolean: Si true, intègle les valeurs extrêmes
|
|
|
Output : None
|
|
|
"""
|
|
|
|
|
@@ -301,6 +303,19 @@ class genererTableau ():
|
|
|
## Pour les variables quantitatives
|
|
|
if type_variable == "quantitative":
|
|
|
en_tete = en_tete + ["n", "mean", "std", "IC 95%"]
|
|
|
+
|
|
|
+ extremes_iqr = [
|
|
|
+ ("min", extremes),
|
|
|
+ ("Q25", iqr),
|
|
|
+ ("median", iqr),
|
|
|
+ ("Q75", iqr),
|
|
|
+ ("max", extremes),
|
|
|
+ ]
|
|
|
+
|
|
|
+ for title, rule in extremes_iqr:
|
|
|
+ if rule:
|
|
|
+ en_tete.append(title)
|
|
|
+
|
|
|
elif type_variable == "qualitative":
|
|
|
en_tete.append("n")
|
|
|
en_tete = en_tete + self.liste_modalites_variables[variable]
|
|
@@ -408,13 +423,15 @@ class genererTableau ():
|
|
|
|
|
|
return(lignes)
|
|
|
|
|
|
- def _generer_lignes_detail(self, variable, axe = None):
|
|
|
+ def _generer_lignes_detail(self, variable, axe = None, extremes=False, iqr=False):
|
|
|
|
|
|
"""
|
|
|
Genere des ligne d'analyse d'un tableau détaillé pour une variable
|
|
|
Input :
|
|
|
variable : nom de la variable
|
|
|
axe : axe sur lesquels générer les ligne
|
|
|
+ iqr, boolean: Si true, intègle les intervalles interquartiles
|
|
|
+ extremes, boolean: Si true, intègle les valeurs extrêmes
|
|
|
"""
|
|
|
|
|
|
lignes = []
|
|
@@ -428,8 +445,25 @@ class genererTableau ():
|
|
|
ligne.append(self._generer_str_valeur(self.data[variable]["global"]["mean"])) # Moyenne
|
|
|
ligne.append(self._generer_str_valeur(self.data[variable]["global"]["std"])) # Ecart type
|
|
|
ligne.append(self._generer_str_ci(self.data[variable]["global"]["ci_95"])) # IC à 95%
|
|
|
+
|
|
|
+ extremes_iqr = [
|
|
|
+ ("min", extremes),
|
|
|
+ ("Q25", iqr),
|
|
|
+ ("median", iqr),
|
|
|
+ ("Q75", iqr),
|
|
|
+ ("max", extremes),
|
|
|
+ ]
|
|
|
+
|
|
|
+ for value, rule in extremes_iqr:
|
|
|
+ if rule:
|
|
|
+ ligne.append(
|
|
|
+ self._generer_str_valeur(
|
|
|
+ self.data[variable]["global"][value]
|
|
|
+ )
|
|
|
+ )
|
|
|
+
|
|
|
ligne = ligne + ["", "", ""] # Blanc technique
|
|
|
-
|
|
|
+
|
|
|
lignes.append(ligne)
|
|
|
else:
|
|
|
# On vérifie l'axe
|
|
@@ -459,7 +493,23 @@ class genererTableau ():
|
|
|
ligne.append(self._generer_str_valeur(donnees_axe[valeur_axe]["mean"])) # Moyenne
|
|
|
ligne.append(self._generer_str_valeur(donnees_axe[valeur_axe]["std"])) # Ecart type
|
|
|
ligne.append(self._generer_str_ci(donnees_axe[valeur_axe]["ci_95"])) # IC à 95%
|
|
|
-
|
|
|
+
|
|
|
+ extremes_iqr = [
|
|
|
+ ("min", extremes),
|
|
|
+ ("Q25", iqr),
|
|
|
+ ("median", iqr),
|
|
|
+ ("Q75", iqr),
|
|
|
+ ("max", extremes),
|
|
|
+ ]
|
|
|
+
|
|
|
+ for value, rule in extremes_iqr:
|
|
|
+ if rule:
|
|
|
+ ligne.append(
|
|
|
+ self._generer_str_valeur(
|
|
|
+ self.data[variable]["global"][value]
|
|
|
+ )
|
|
|
+ )
|
|
|
+
|
|
|
ligne = ligne + ["", "", ""] # Blanc technique
|
|
|
lignes.append(ligne)
|
|
|
else:
|
|
@@ -607,7 +657,7 @@ class genererTableau ():
|
|
|
|
|
|
return(sortie)
|
|
|
|
|
|
- def tableau_detail_variable (self, chemin, variable, axes = None, format_sortie = "csv"):
|
|
|
+ def tableau_detail_variable (self, chemin, variable, axes = None, iqr=False, extremes=False, format_sortie = "csv"):
|
|
|
|
|
|
"""
|
|
|
Décrit le contenu d'une variable selon un axe ou plusieurs axes donnés.
|
|
@@ -617,6 +667,8 @@ class genererTableau ():
|
|
|
chemin : chemin du fichier de sortie
|
|
|
variable : nom de la variable à traiter
|
|
|
axes : liste des axes d'analyse
|
|
|
+ iqr, boolean: Si True, inclus les intervalles interquartiles
|
|
|
+ extremes, boolean: Si True, inclus les extremes (min, max)
|
|
|
format_sortie :
|
|
|
'tsv' pour un tableau séparé par une tabulation
|
|
|
'csv' pour un tableau séparé par une virgule
|
|
@@ -635,14 +687,14 @@ class genererTableau ():
|
|
|
# Récupération des donnée
|
|
|
|
|
|
# Génération de l'en-tête
|
|
|
- en_tete = self._generer_en_tete_detail(variable)
|
|
|
+ en_tete = self._generer_en_tete_detail(variable, extremes=extremes, iqr=iqr)
|
|
|
|
|
|
# Création du tableau
|
|
|
tableau = []
|
|
|
tableau.append(en_tete)
|
|
|
|
|
|
# On génère la première ligne d'analyse
|
|
|
- tableau = tableau + self._generer_lignes_detail(variable, None)
|
|
|
+ tableau = tableau + self._generer_lignes_detail(variable, None, extremes=extremes, iqr=iqr)
|
|
|
|
|
|
# Ligne vide
|
|
|
tableau.append(["" for x in range(len(tableau[-1]))])
|
|
@@ -650,7 +702,7 @@ class genererTableau ():
|
|
|
# Ajout des axes
|
|
|
if axes is not None:
|
|
|
for axe in axes:
|
|
|
- tableau = tableau + self._generer_lignes_detail(variable, axe)
|
|
|
+ tableau = tableau + self._generer_lignes_detail(variable, axe, extremes=extremes, iqr=iqr)
|
|
|
|
|
|
# Generation de la sortie
|
|
|
sortie = self._generer_sortie(chemin, tableau, format_sortie)
|