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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
| # Initialisation boucle while
cycle_avant = -10
pos_avant = 1
plt.figure(figsize=(15, 7))
pyplot.gcf().subplots_adjust(left = 0.1, bottom = 0.3, right = 0.8, top = 0.9, wspace = 0.08, hspace = 0.35)
#Calcul du débit moyen, max, min, dépassement moyen d'un cycle complet de filtration
for Periode in dfCycle.index:
#Extraction des débits sur la période du cycle complet de filtration
dtDebCyc = dfCycle.iloc[Periode,0]
dtFinCyc = dfCycle.iloc[Periode,1]
#calcul de la moyenne, max, min
#print(dtDeb, dtFin)
dfDebitCycle = dfDebitFiltration.iloc[dfDebitFiltration.index.searchsorted(dtDebCyc):dfDebitFiltration.index.searchsorted(dtFinCyc)]
#Parenthèse pour graphiques 10 cycles avant et 10 cycle après les lavages à la soude
# Premier lavage à la soude 142j = 27/11/2014 19:58:09
if pos_avant <= 10:
while dtDebCyc == (datetime(year=2014, month=11, day=19, hour=15, minute=22, second=53)) or dtDebCyc == (datetime(year=2014, month=11, day=20, hour=6, minute=53, second=38)) or dtDebCyc == (datetime(year=2014, month=11, day=20, hour=22, minute=7, second=47)) or dtDebCyc == (datetime(year=2014, month=11, day=21, hour=8, minute=47, second=52)) or dtDebCyc == (datetime(year=2014, month=11, day=24, hour=8, minute=48, second=34)) or dtDebCyc == (datetime(year=2014, month=11, day=25, hour=6, minute=34, second=31)) or dtDebCyc == (datetime(year=2014, month=11, day=25, hour=21, minute=12, second=2)) or dtDebCyc == (datetime(year=2014, month=11, day=26, hour=11, minute=26, second=3)) or dtDebCyc == (datetime(year=2014, month=11, day=27, hour=2, minute=21, second=20)) or dtDebCyc == (datetime(year=2014, month=11, day=27, hour=19, minute=58, second=9)):
dfDebitCycle['Date (j)'] = dfDebitCycle.index- dtDebCyc
dfDebitCycle['Date (j)'] = dfDebitCycle['Date (j)'] / np.timedelta64(1, 's')/60/60
plt.subplot(2,5,pos_avant) # je divise la figure en 4 colonnes et je représente le graphique 1 dans la première colonne
plt.scatter(dfDebitCycle['Date (j)'], dfDebitCycle['Débit'], facecolor='none', edgecolor='blue', label='Q', marker='o', s = 10)
print(pos_avant, 'position')
print(cycle_avant, 'cycle')
#plt.xlim(0, 24)
#plt.ylim(10000, 40000)
#plt.yticks([21.8, 22.1, 22.4, 22.7, 23, 23.3]) # Fixe le pas de temps des graduations
plt.xticks(fontsize=10)
plt.yticks(fontsize=10)
plt.xlabel('t (h)', fontsize=10)
plt.ylabel('Débit (m$^3$/h)', fontsize=10)
plt.title(repr(cycle_avant) + ' j' , fontsize=10)
plt.show()
cycle_avant = cycle_avant +1
pos_avant = pos_avant +1
break
if pos_avant == 11:
plt.show()
path = 'C:/Users/b_gonzal/Desktop/Beatriz/Thèse/Lavages (Méca Fluides)/Bilan matière lavages/Optimisation modèle accu solide_14-02-2022/'
os.chdir(path)
plt.savefig('Débit_10j_avant_LS1.png', dpi =600, bbox_inches='tight') # bbox_inches='tight' permet de ne pas couper des zones du graphique (ajuste la taille de la figure)
plt.savefig('Débit_10j_avant_LS1.pdf', dpi=600, bbox_inches='tight') # bbox_inches='tight' permet de ne pas couper des zones du graphique (ajuste la taille de la figure)
# Initialisation boucle while
cycle_apres = 1
pos_apres = 1
plt.figure(figsize=(15, 7))
pyplot.gcf().subplots_adjust(left = 0.1, bottom = 0.3, right = 0.8, top = 0.9, wspace = 0.08, hspace = 0.35)
while dtDebCyc == (datetime(year=2014, month=12, day=1, hour=10, minute=21, second=59)) or dtDebCyc == (datetime(year=2014, month=12, day=1, hour=14, minute=12, second=18)) or dtDebCyc == (datetime(year=2014, month=12, day=2, hour=0, minute=0, second=21)) or dtDebCyc == (datetime(year=2014, month=12, day=2, hour=13, minute=17, second=19)) or dtDebCyc == (datetime(year=2014, month=12, day=3, hour=2, minute=13, second=21)) or dtDebCyc == (datetime(year=2014, month=12, day=3, hour=21, minute=52, second=29)) or dtDebCyc == (datetime(year=2014, month=12, day=4, hour=13, minute=33, second=25)) or dtDebCyc == (datetime(year=2014, month=12, day=5, hour=9, minute=57, second=28)) or dtDebCyc == (datetime(year=2014, month=12, day=6, hour=1, minute=46, second=31)) or dtDebCyc == (datetime(year=2014, month=12, day=6, hour=22, minute=42, second=32)):
dfDebitCycle['Date (j)'] = dfDebitCycle.index- dtDebCyc
dfDebitCycle['Date (j)'] = dfDebitCycle['Date (j)'] / np.timedelta64(1, 's')/60/60
plt.subplot(2,5,pos_apres) # je divise la figure en 5 colonnes
plt.scatter(dfDebitCycle.index-dtDebCyc, dfDebitCycle['Débit'], facecolor='none', edgecolor='blue', label='Q', marker='o', s = 10)
print(pos_apres, 'position')
print(cycle_apres, 'cycle')
#plt.xlim(0, 24)
#plt.ylim(10000, 40000)
#plt.yticks([21.8, 22.1, 22.4, 22.7, 23, 23.3]) # Fixe le pas de temps des graduations
plt.xticks(fontsize=10)
plt.yticks(fontsize=10)
plt.xlabel('t (h)', fontsize=10)
plt.ylabel('Débit (m$^3$/h)', fontsize=10)
plt.title(repr(cycle_apres) + ' j' , fontsize=16)
plt.show()
cycle_apres = cycle_apres +1
pos_apres = pos_apres +1
break
if pos_apres == 11:
plt.show()
path = 'C:/Users/b_gonzal/Desktop/Beatriz/Thèse/Lavages (Méca Fluides)/Bilan matière lavages/Optimisation modèle accu solide_14-02-2022/'
os.chdir(path)
plt.savefig('Débit_10j_après_LS1.png', dpi=600, bbox_inches='tight') # bbox_inches='tight' permet de ne pas couper des zones du graphique (ajuste la taille de la figure)
plt.savefig('Débit_10j_après_LS1.pdf', dpi=600, bbox_inches='tight') # bbox_inches='tight' permet de ne pas couper des zones du graphique (ajuste la taille de la figure)
# Deuxième lavage à la soude 292j = 26/04/2015 10:37:39
# Troisième lavage à la soude 544j = 04/01/2016 07:29:54
# Quatrième lavage à la soude 729j = 05/07/2016 23:02:52
# Arrondi de la date à l'heure inférieure ("floor", utiliser "ceil" si on veut arrondir à l'heure supérieure)
dfDebitCycleHoraire =dfDebitCycle
dfDebitCycleHoraire['Date Horaire'] = dfDebitCycleHoraire.index
dfDebitCycleHoraire['Date Horaire'] = dfDebitCycleHoraire['Date Horaire'].apply(lambda x: x.floor('60 min'))
if (not(dfDebitCycle.empty)):
DebitInitialCycle = dfDebitFiltration.iloc[dfDebitFiltration.index.searchsorted(dtDebCyc),0]
#Calcul Débit initial de cycle de filtration
dfDebitInitialCycle = pd.DataFrame({'': [dtDebCyc, dtFinCyc, float(DebitInitialCycle)]}, index = ['Début cycle filtration', 'Fin cycle filtration', 'Débit initial']).transpose()
#Concaténation des périodes dans un dataframe complet
dfQinitialCycle = pd.concat([dfQinitialCycle, dfDebitInitialCycle], axis=0)
if(not(dfDebitCycle.empty)):
# Moyenne du cycle, max et min
dfMoyenneCycle = pd.DataFrame({'': [dtDebCyc, dtFinCyc, float(dfDebitCycle['Débit'].mean()), float(dfDebitCycle['Débit'].max()), float(dfDebitCycle['Débit'].min())]}, index = ['Début cycle filtration', 'Fin cycle filtration', 'Débit moyen', 'Débit max', 'Débit min']).transpose()
#Concaténation des moyennes dans un dataframe complet
dfMoyenne = pd.concat([dfMoyenne, dfMoyenneCycle], axis=0)
# Moyenne du cycle, max et min horaires
dfDebitCycle_i_Horaire = dfDebitCycleHoraire.pivot_table('Débit', 'Date Horaire', aggfunc=np.mean)
dfMoyenneCycleHoraire = pd.DataFrame({'': [dtDebCyc, dtFinCyc, float(dfDebitCycleHoraire.pivot_table('Débit', 'Date Horaire', aggfunc=np.mean)['Débit'].mean()), float(dfDebitCycleHoraire.pivot_table('Débit', 'Date Horaire', aggfunc=np.mean)['Débit'].max()), float(dfDebitCycleHoraire.pivot_table('Débit', 'Date Horaire', aggfunc=np.mean)['Débit'].min())]}, index = ['Début cycle filtration', 'Fin cycle filtration', 'Débit moyen horaire', 'Débit max horaire', 'Débit min horaire']).transpose()
dfMoyenneHoraire = pd.concat([dfMoyenneHoraire, dfMoyenneCycleHoraire], axis=0)
#Ajout d'un index
dfMoyenne.index = range(1,len(dfMoyenne)+1)
dfMoyenneHoraire.index = range(1,len(dfMoyenneHoraire)+1)
dfQinitialCycle.index = range(1,len(dfQinitialCycle)+1)
#Mise en forme des colonnes
#dfMoyenne['Début cycle filtration'] = dfMoyenne['Début cycle filtration'].apply(lambda x: x.strftime('%d/%m/%Y %H:%M:%S'))
#dfMoyenne['Fin cycle filtration'] = dfMoyenne['Fin cycle filtration'].apply(lambda x: x.strftime('%d/%m/%Y %H:%M:%S'))
#dfMoyenneHoraire['Début cycle filtration'] = dfMoyenneHoraire['Début cycle filtration'].apply(lambda x: x.strftime('%d/%m/%Y %H:%M:%S'))
#dfMoyenneHoraire['Fin cycle filtration'] = dfMoyenneHoraire['Fin cycle filtration'].apply(lambda x: x.strftime('%d/%m/%Y %H:%M:%S'))
#dfQinitialCycle['Début cycle filtration'] = dfQinitialCycle['Début cycle filtration'].apply(lambda x: x.strftime('%d/%m/%Y %H:%M:%S'))
#dfQinitialCycle['Fin cycle filtration'] = dfQinitialCycle['Fin cycle filtration'].apply(lambda x: x.strftime('%d/%m/%Y %H:%M:%S'))
#dfMoyenne['Débit moyen'] = dfMoyenne['Débit moyen'].astype(float).round()
dfMoyenneHoraire['(Qmax-Qmin)/Qmoyen'] = (dfMoyenneHoraire['Débit max horaire'] - dfMoyenneHoraire['Débit min horaire'])/dfMoyenneHoraire['Débit moyen horaire'] |
Partager