命名一个数据框、一个输出和一个图表在一个循环中。

huangapple go评论89阅读模式
英文:

naming a dataframe, an output and a figure in a loop

问题

  1. 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 :

  1. 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]
  2. 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]
  3. 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"}
  4. 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"}
  5. for df in df_jour:
  6. df_clean = df.drop(columns = ["Moyennes", "Medianes", "écart-type"], axis=1).mean(axis=0).values
  7. print(df_clean)
  8. carte = np.reshape(df_clean, (8, 19))
  9. for name in NAME_jour:
  10. print(name)
  11. #plot
  12. ax = plt.imshow(carte, cmap='plasma')
  13. plt.title("Température moyenne {NAME_jour}".format(name))
  14. #légende
  15. cbar = plt.colorbar(location="bottom", label ="température en kelvin", fraction = 0.10)
  16. #grille
  17. plt.grid(False)
  18. #Sauvegarde de la figure en sortie
  19. plt.savefig('/mnt/Data/30_Stages_Encours/2023/ZonesHumides_Sarah/donnee_traitee/thermique/cartes/MOD{}.png').format(i)

One df looks like this :

  1. [ nan nan nan nan nan nan nan
  2. nan nan nan nan nan nan nan
  3. nan nan nan nan nan nan nan
  4. nan nan nan nan nan nan nan
  5. nan nan nan nan nan nan nan
  6. nan nan nan nan nan nan nan
  7. nan nan nan nan nan nan nan
  8. 281.93066 281.93066 281.9625 281.9625 nan nan nan
  9. nan nan nan nan nan nan 282.25616
  10. nan nan 282.13797 282.13797 282.0449 282.0405 282.0405
  11. 282.16513 282.18546 282.18546 nan nan nan nan
  12. 282.16705 282.0923 nan nan 282.26132 282.12674 282.12674
  13. nan nan 282.2211 282.21896 282.21896 282.43152 282.51382
  14. 282.51382 282.46732 282.46732 nan nan nan nan
  15. 282.03323 282.03323 282.1428 282.3119 282.3119 282.31226 282.31226
  16. 282.32877 282.38373 282.38373 282.69778 282.70245 282.70245 282.56158
  17. 282.56158 282.46973 nan nan nan nan nan
  18. 282.41928 282.58136 282.58136 282.75327 282.6079 282.6079 282.47507
  19. 282.47507 282.69797 282.89523 282.89523 282.8569 282.7391 nan
  20. nan nan nan nan nan nan 282.71594
  21. 282.71594 282.8112 282.74515 282.74515 282.64297 282.64297 nan
  22. 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 :

  1. 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]
  2. 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]
  3. 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"}
  4. 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"}
  5. for i,df in enumerate(df_jour):
  6. df_clean = df.drop(columns = ["Moyennes", "Medianes", "écart-type"], axis=1).mean(axis=0).values
  7. carte = np.reshape(df_clean, (8, 19))
  8. #vide le plot
  9. plt.clf()
  10. #plot
  11. ax = plt.imshow(carte, cmap='plasma')
  12. plt.title("Température moyenne " + str(NAME_jour[i]))
  13. #légende
  14. cbar = plt.colorbar(location="bottom", label ="température en kelvin", fraction = 0.10)
  15. #grille
  16. plt.grid(False)
  17. #Sauvegarde de la figure en sortie
  18. path = '/mnt/Data/30_Stages_Encours/2023/ZonesHumides_Sarah/donnee_traitee/thermique/cartes/MOD' + str(NAME_jour[i]) + '.png'
  19. plt.savefig(path)

but I got this error on this line " plt.title("Température moyenne " + str(NAME_jour[i]))"
:

  1. TypeError: 'set' object is not subscriptable

答案1

得分: 0

这部分的代码是用来生成一系列温度分布的图片,包括白天和夜晚的。我将不会翻译代码,只提供代码中的注释和文字描述的翻译。

  1. df_jour 是白天的温度数据,df_nuit 是夜晚的温度数据。
  2. NAME_jour 包含白天月份的名称,NAME_nuit 包含夜晚月份的名称。
  3. 循环遍历月份数据,并生成相应的温度分布图像。
  4. 图像保存在指定路径下,路径中包含了月份的名称。

如果你需要更多帮助或有其他问题,请随时提出。

英文:

This worked out fine :

  1. 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]
  2. 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]
  3. 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"]
  4. 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"]
  5. for i,df in enumerate(df_jour):
  6. df_clean = df.drop(columns = ["Moyennes", "Medianes", "écart-type"], axis=1).mean(axis=0).values
  7. carte = np.reshape(df_clean, (8, 19))
  8. #vide le plot
  9. plt.clf()
  10. #plot
  11. ax = plt.imshow(carte, cmap='plasma')
  12. plt.title("Température moyenne " + str(NAME_jour[i]))
  13. #légende
  14. cbar = plt.colorbar(location="bottom", label ="température en kelvin", fraction = 0.10)
  15. #grille
  16. plt.grid(False)
  17. #Sauvegarde de la figure en sortie
  18. path = '/mnt/Data/30_Stages_Encours/2023/ZonesHumides_Sarah/donnee_traitee/thermique/cartes/MOD' + str(NAME_jour[i]) + '.png'
  19. plt.savefig(path)

huangapple
  • 本文由 发表于 2023年5月22日 19:54:55
  • 转载请务必保留本文链接:https://go.coder-hub.com/76305917.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定