Tobi-ewl commited on
Commit
a1e65ce
·
verified ·
1 Parent(s): e13f91b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -6
app.py CHANGED
@@ -602,13 +602,8 @@ elif modus == "Upload csv-Datei":
602
  }
603
  for col in hsystem_colnames:
604
  df_out[col] = df_out[col].replace(heizsystem_namensmap)
605
-
606
- # Übersicht Platz 1-Lösungen
607
- guenstigste_namen = df_out["Heizsystem_Name_1"].value_counts()
608
- summary_str = "Günstigste Lösung: " + ", ".join([f"{name} ({count})" for name, count in guenstigste_namen.items()])
609
-
610
  st.success("Berechnung abgeschlossen!")
611
- st.info(summary_str)
612
 
613
  if annuitaeten_gesamt:
614
  # Verbinde alle Einzel-DFs zu einem großen Table
@@ -657,6 +652,41 @@ elif modus == "Upload csv-Datei":
657
  file_name="heizsysteme_batch_ergebnis.csv",
658
  mime="text/csv"
659
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
660
  except Exception as e:
661
  st.error(f"Fehler beim Einlesen/Berechnen: {e}")
662
 
 
602
  }
603
  for col in hsystem_colnames:
604
  df_out[col] = df_out[col].replace(heizsystem_namensmap)
605
+
 
 
 
 
606
  st.success("Berechnung abgeschlossen!")
 
607
 
608
  if annuitaeten_gesamt:
609
  # Verbinde alle Einzel-DFs zu einem großen Table
 
652
  file_name="heizsysteme_batch_ergebnis.csv",
653
  mime="text/csv"
654
  )
655
+ # Nach dem Batch, nach dem Download-Button usw.:
656
+ if annuitaeten_objekt_map:
657
+ objekt_ids = list(annuitaeten_objekt_map.keys())
658
+ select_id = st.selectbox("Objekt für Detaildarstellung auswählen", objekt_ids)
659
+ if select_id and select_id in annuitaeten_objekt_map:
660
+ df_einzel = annuitaeten_objekt_map[select_id]
661
+ # Für Einzelchart gestapelt:
662
+ df_stacked = df_einzel[["Name", "Annuität_NK", "Annuität_NV", "Annuität_NB"]].melt(
663
+ id_vars="Name",
664
+ value_vars=["Annuität_NK", "Annuität_NV", "Annuität_NB"],
665
+ var_name="Kostenart",
666
+ value_name="Wert"
667
+ )
668
+ df_stacked["Kostenart"] = df_stacked["Kostenart"].replace({
669
+ "Annuität_NK": "Kapitalgebundene Kosten",
670
+ "Annuität_NV": "Bedarfsgebundene Kosten",
671
+ "Annuität_NB": "Betriebsgebundene Kosten"
672
+ })
673
+ kostenart_order = ["Kapitalgebundene Kosten", "Bedarfsgebundene Kosten", "Betriebsgebundene Kosten"]
674
+ df_stacked["Kostenart"] = pd.Categorical(df_stacked["Kostenart"], categories=kostenart_order, ordered=True)
675
+ color_scale = alt.Scale(domain=kostenart_order, range=["#00386c", "#004c93", "#0069c8"])
676
+ sortierte_names = df_einzel.sort_values("Annuität")["Name"]
677
+
678
+ st.markdown(f"#### Annualisierte Kosten für Objekt {select_id}")
679
+ st.altair_chart(
680
+ alt.Chart(df_stacked)
681
+ .mark_bar()
682
+ .encode(
683
+ x=alt.X("Wert:Q", title="Annualisierte Kosten (€)", stack="zero"),
684
+ y=alt.Y("Name:N", title="Heizsystem", sort=list(sortierte_names)),
685
+ color=alt.Color("Kostenart:N", scale=color_scale, title="Kostenart"),
686
+ tooltip=["Name", "Kostenart", "Wert"]
687
+ ).properties(height=350, width=650),
688
+ use_container_width=True
689
+ )
690
  except Exception as e:
691
  st.error(f"Fehler beim Einlesen/Berechnen: {e}")
692