Problème pour réaliser des moyennes sous datetime
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:
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) |