Bonjour

je suis en période de stage et je voudrais nettoyer une base de donnée ,
en effet j'ai une base de donnée d'une dizaine de variables et d'un millier de données je veux pour les variables les plus significatifs enlever les observations qui me biaise ma distribution le problème c'est que mon étude devra être faite en divisant les données selon une variable qui est l'angle

donc prendre pour chaque angles les données de chaque variables et dessiner la distribution calculer le 99 eme centile et le 1 er et enlever les points hors cette zone

voici le fichier sur quoi je travaille test.xlsx

et le code que j'ai réalisé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
#!/usr/bin/python
# -*- coding: utf-8 -*-
#####        importation des bibliothéques          #####
import pickle
import numpy as np 
import matplotlib.pyplot as plt
from scipy import stats
from utils.struct import filter_data
import seaborn as sns 
sns.set(context="paper",font="monospace")
import pdb
from sklearn.feature_selection import SelectKBest, chi2, f_regression
 
#####       importation de données   #####
 
data=load(open("test.xlsx","rb"))
 
mesures_names_tri =  ['var1', 'var2','var3','var4' ]
 
####### rejet de valeur extrémes
print len(data['var1'])
angles=np.unique(data['var4'])
#for mesure_name in mesures_names_tri:
mesure1=np.empty(1,float)
for ang in angles:  
           i_angle= [data['var4'] ==  ang]                 
           mesure=data['var1'][i_angle]                     
           k= stats.scoreatpercentile(mesure,99)
           l= stats.scoreatpercentile(mesure,1)          
           for i in range(len(data['var1'][i_angle])):
               mesure= np.delete(mesure,np.where(mesure < l) ,0)   
               mesure= np.delete(mesure,np.where(mesure > k) ,0)    
           mesure1=np.append(mesure1,mesure)
print (len(mesure1))