Bonjour à tous,

j'ai réalisé un code qui me permet de présenter des données sous la forme suivante :

Acquisition date Time of acquisition ch0_1 ch1_1
29/05/2017 23:55:43 26.92 19.40
29/05/2017 23:50:57 26.67 18.70
29/05/2017 23:46:12 26.75 19.20
29/05/2017 23:36:41 27.03 19.10
29/05/2017 23:31:54 26.75 18.60
29/05/2017 23:27:09 26.78 19.10
29/05/2017 23:20:49 26.84 18.90
29/05/2017 23:16:04 26.56 19.20
29/05/2017 23:11:18 26.70 19.10
29/05/2017 23:01:48 26.73 19.10
29/05/2017 22:57:03 26.70 18.90

J ai ensuite réalisé un code qui permet de calculer les moyennes des ces valeurs ( ch0_1, ch1_1) toutes les 15 min et le présenter sous la forme suivante :

Acquisition date Time of acquisition ch0_1 ch1_1
29/05/2017 22:45:00 26.85 19.10
29/05/2017 23:00:00 26.79 18.97
29/05/2017 23:15:00 26.83 19.07
29/05/2017 23:30:00 26.71 19.10
29/05/2017 23:45:00 26.73 19.07
30/05/2017 00:00:00 9999 9999

la moyenne des valeurs comprises entre 22:45:00 et 23:00:00 est 26.79(ch0_1) et 18.97(ch1_1). '9999' signifie qu'aucune valeur est trouvé dans l'intervalle donné

Le problème est que les valeurs comprises entre 23:45:00 et 23:59:00 du 29/05/2017 ne sont pas tenus en compte par le code : on voit apparaître '9999'( elles existent évidemment !! ). Si quelqu un aurait une idée, cela m aiderait énormément !! Merci

Voici le code réalisée :

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#read text file
data = pd.read_table('sensor_bis.txt', sep='\t')
#DataFrame
df = pd.DataFrame(data)
#Extraction of columns
df0=df['Acquisition date']
df1=df['Time of acquisition']
df2=df['ch0_1']
df3=df['ch1_1']
#definition of variables
ch0_1=[]
ch1_1=[]
date=[]
time=[]
#Initialization datetime.date object
ini=0
fin=int(len(df0)-1)#integer of initial data
date_i=df0[fin]
date_i=date_i.replace("/",' ')
date_i=date_i.split()
year_i=int(date_i[2])
month_i=int(date_i[1])
day_i=int(date_i[0])
time_i=df1[fin]
time_i=time_i.replace(":",' ')
time_i=time_i.split()
hour_i=int(time_i[0])
#min_i=int(time_i[1])
#sec_i=int(time_i[2])
#datetime object : "year_ / month_ / day_  00:00:00"
dt_i = datetime.datetime.combine(datetime.date(year=year_i, month=month_i, day=day_i), datetime.time(hour=hour_i, minute=0, second=0))
#list date and time
for i in range(fin):
    dt_i += datetime.timedelta(minutes=x)
    d=dt_i.date().strftime("%d/%m/%Y")
    t=dt_i.time().strftime("%H:%M:%S")
    date.append(d)
    time.append(t)
time.insert(0,"00:00:00")
#list parameters
for j in range(fin):
    var0=0
    var1=0
    filter_ =((df1 >= time[j-1]) & (df1 <= time[j]) & (df0 == date[j-1]) & (df2!=9999))
    var0='%.2f'%float(df2[filter_].mean())
    var0=var0.replace("nan",'9999')
    filter_ =((df1 <= time[j]) & (df1 >= time[j-1]) & (df0 == date[j]) & (df3!=9999))
    var1='%.2f'%float(df3[filter_].mean())
    var1=var1.replace("nan",'9999')
    ch0_1.append(var0)
    ch1_1.append(var1)