英文:
naming a dataframe, an output and a figure in a loop
问题
TypeError: 'set' object is not subscriptable
英文:
I'm trying to compute dataframes, plot then and save them in the same loop but I have a hard time naming them in a proper manner.
I tried :
df_jour = [janvier_jour, fevrier_jour, mars_jour, avril_jour, mai_jour, juin_jour, juillet_jour, aout_jour, septembre_jour, octobre_jour, novembre_jour, decembre_jour]
df_nuit = [janvier_nuit, fevrier_nuit, mars_nuit, avril_nuit, mai_nuit, juin_nuit, juillet_nuit, aout_nuit, septembre_nuit, octobre_nuit, novembre_nuit, decembre_nuit]
NAME_jour = {"en janvier de jour", "en février de jour", "en mars de jour", "en avril de jour", "en mai de jour", "en juin de jour", "en juillet de jour", "en août de jour", "en septembre de jour", "en octobre de jour", "en novembre de jour", "en décembre de jour"}
NAME_nuit = {"en janvier de nuit", "en février de nuit", "en mars de nuit", "en avril de nuit", "en mai de nuit", "en juin de nuit", "en juillet de nuit", "en août de nuit", "en septembre de nuit", "en octobre de nuit", "en novembre de nuit", "en décembre de nuit"}
for df in df_jour:
df_clean = df.drop(columns = ["Moyennes", "Medianes", "écart-type"], axis=1).mean(axis=0).values
print(df_clean)
carte = np.reshape(df_clean, (8, 19))
for name in NAME_jour:
print(name)
#plot
ax = plt.imshow(carte, cmap='plasma')
plt.title("Température moyenne {NAME_jour}".format(name))
#légende
cbar = plt.colorbar(location="bottom", label ="température en kelvin", fraction = 0.10)
#grille
plt.grid(False)
#Sauvegarde de la figure en sortie
plt.savefig('/mnt/Data/30_Stages_Encours/2023/ZonesHumides_Sarah/donnee_traitee/thermique/cartes/MOD{}.png').format(i)
One df looks like this :
[ nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
281.93066 281.93066 281.9625 281.9625 nan nan nan
nan nan nan nan nan nan 282.25616
nan nan 282.13797 282.13797 282.0449 282.0405 282.0405
282.16513 282.18546 282.18546 nan nan nan nan
282.16705 282.0923 nan nan 282.26132 282.12674 282.12674
nan nan 282.2211 282.21896 282.21896 282.43152 282.51382
282.51382 282.46732 282.46732 nan nan nan nan
282.03323 282.03323 282.1428 282.3119 282.3119 282.31226 282.31226
282.32877 282.38373 282.38373 282.69778 282.70245 282.70245 282.56158
282.56158 282.46973 nan nan nan nan nan
282.41928 282.58136 282.58136 282.75327 282.6079 282.6079 282.47507
282.47507 282.69797 282.89523 282.89523 282.8569 282.7391 nan
nan nan nan nan nan nan 282.71594
282.71594 282.8112 282.74515 282.74515 282.64297 282.64297 nan
282.9823 282.9823 nan nan nan]
This got me a key error..
I want my titles and outputs to be from the NAME_jour list with the same index as my dataframes. This won't work also because it's going to be named with the last element of the list.
I tried to do everything in the same loop with enumerate but can't figure out how to enumerate with something else then 0,1,2,3...
I tried :
df_jour = [janvier_jour, fevrier_jour, mars_jour, avril_jour, mai_jour, juin_jour, juillet_jour, aout_jour, septembre_jour, octobre_jour, novembre_jour, decembre_jour]
df_nuit = [janvier_nuit, fevrier_nuit, mars_nuit, avril_nuit, mai_nuit, juin_nuit, juillet_nuit, aout_nuit, septembre_nuit, octobre_nuit, novembre_nuit, decembre_nuit]
NAME_jour = {"en janvier de jour", "en février de jour", "en mars de jour", "en avril de jour", "en mai de jour", "en juin de jour", "en juillet de jour", "en août de jour", "en septembre de jour", "en octobre de jour", "en novembre de jour", "en décembre de jour"}
NAME_nuit = {"en janvier de nuit", "en février de nuit", "en mars de nuit", "en avril de nuit", "en mai de nuit", "en juin de nuit", "en juillet de nuit", "en août de nuit", "en septembre de nuit", "en octobre de nuit", "en novembre de nuit", "en décembre de nuit"}
for i,df in enumerate(df_jour):
df_clean = df.drop(columns = ["Moyennes", "Medianes", "écart-type"], axis=1).mean(axis=0).values
carte = np.reshape(df_clean, (8, 19))
#vide le plot
plt.clf()
#plot
ax = plt.imshow(carte, cmap='plasma')
plt.title("Température moyenne " + str(NAME_jour[i]))
#légende
cbar = plt.colorbar(location="bottom", label ="température en kelvin", fraction = 0.10)
#grille
plt.grid(False)
#Sauvegarde de la figure en sortie
path = '/mnt/Data/30_Stages_Encours/2023/ZonesHumides_Sarah/donnee_traitee/thermique/cartes/MOD' + str(NAME_jour[i]) + '.png'
plt.savefig(path)
but I got this error on this line " plt.title("Température moyenne " + str(NAME_jour[i]))"
:
TypeError: 'set' object is not subscriptable
答案1
得分: 0
这部分的代码是用来生成一系列温度分布的图片,包括白天和夜晚的。我将不会翻译代码,只提供代码中的注释和文字描述的翻译。
df_jour
是白天的温度数据,df_nuit
是夜晚的温度数据。NAME_jour
包含白天月份的名称,NAME_nuit
包含夜晚月份的名称。- 循环遍历月份数据,并生成相应的温度分布图像。
- 图像保存在指定路径下,路径中包含了月份的名称。
如果你需要更多帮助或有其他问题,请随时提出。
英文:
This worked out fine :
df_jour = [janvier_jour, fevrier_jour, mars_jour, avril_jour, mai_jour, juin_jour, juillet_jour, aout_jour, septembre_jour, octobre_jour, novembre_jour, decembre_jour]
df_nuit = [janvier_nuit, fevrier_nuit, mars_nuit, avril_nuit, mai_nuit, juin_nuit, juillet_nuit, aout_nuit, septembre_nuit, octobre_nuit, novembre_nuit, decembre_nuit]
NAME_jour = ["en janvier de jour", "en février de jour", "en mars de jour", "en avril de jour", "en mai de jour", "en juin de jour", "en juillet de jour", "en août de jour", "en septembre de jour", "en octobre de jour", "en novembre de jour", "en décembre de jour"]
NAME_nuit = ["en janvier de nuit", "en février de nuit", "en mars de nuit", "en avril de nuit", "en mai de nuit", "en juin de nuit", "en juillet de nuit", "en août de nuit", "en septembre de nuit", "en octobre de nuit", "en novembre de nuit", "en décembre de nuit"]
for i,df in enumerate(df_jour):
df_clean = df.drop(columns = ["Moyennes", "Medianes", "écart-type"], axis=1).mean(axis=0).values
carte = np.reshape(df_clean, (8, 19))
#vide le plot
plt.clf()
#plot
ax = plt.imshow(carte, cmap='plasma')
plt.title("Température moyenne " + str(NAME_jour[i]))
#légende
cbar = plt.colorbar(location="bottom", label ="température en kelvin", fraction = 0.10)
#grille
plt.grid(False)
#Sauvegarde de la figure en sortie
path = '/mnt/Data/30_Stages_Encours/2023/ZonesHumides_Sarah/donnee_traitee/thermique/cartes/MOD' + str(NAME_jour[i]) + '.png'
plt.savefig(path)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论