# Code Skript für Mein Profil #------------------------------------------------------------------------ # Datei local laufen lassen via: # streamlit run novap1/adaptive_module_part1_streamlit0904.py # Benötigte Pakete ----------------------------------------------------- import streamlit as st import pandas as pd import numpy as np from adaptive_modul_part1_functions import certainty, split_and_match,contains_value from sheets_helper import save_all, df_to_str #------------------------------------------------------------------------ params = st.query_params # dictionary-like object user_id = params.get("id", "NOID") ######################################################################## ###################### Load and Prepare Data ########################### ######################################################################## # If the data is stored in the format achieved via these steps in the future, # this part can be left out. # # NOTE: this used to run top-level, meaning Streamlit re-executed all of it # (including re-reading the 14MB finaldata1903.csv from disk) on EVERY # widget interaction. Wrapping it in @st.cache_data means it only runs # once per app "version" (until the underlying files change), and every # rerun after that just reuses the cached result instantly. @st.cache_data def load_data(): # set random seed for random elements that should stay identical for an # individual (replace 42 with ID). Seeding inside the cached function # keeps the tiebreaker values identical to the original behavior. np.random.seed(42) # load data 1-4 #data = pd.read_csv("Codierung_Angebote_Intervention.csv", sep=";", #nrows=4) # read csv data = pd.read_csv( "Intervention_Paper3.csv", sep=";" # replace with the sheet name ) # read excel exclude = [f"E{i}" for i in range(11, 27)] # E11 ... E26 data = data[~data['ID'].isin(exclude)] # Variable für Angebotsfilter data["pointsfil"] = 0 data["pointsfillist"] = "" # Add a random column to break ties data['random_tiebreaker'] = np.random.rand(len(data)) # recode special values data.replace(99, "Nan", inplace=True) # 99 = not applicable, changed to string data.replace(55, "ata", inplace=True) # 55 = applicable to all, changed to string # datastuds is only ever used for two dropdown option lists # (fachgruppe, studienort), so only load those columns instead of the # full 14MB file. datastuds = pd.read_csv("finaldata1903.csv", usecols=["fachgruppe", "studienort"]) # read m5 dataM5 = data.copy() # Add a random column to break ties dataM5['random_tiebreaker'] = np.random.rand(len(dataM5)) # Variable für Angebotsfilter dataM5["pointsfil"] = 0 dataM5["pointsfillist"] = "" # Variable für Bedarfe und Sortierung Bedarfe dataM5["pointsfilB"] = 0 dataM5["pointsfilBlist"] = "" dataM5["pointsfilBSORT"] = 0 dataM5["pointsfilBSORTlist"] = "" dataM5["pointsfilBS"] = 0 dataM5["pointsfilBSSORTlist"] = "" # recode special values dataM5.replace(99, "Nan", inplace=True) dataM5.replace(55, "ata", inplace=True) return data, datastuds, dataM5 data, datastuds, dataM5 = load_data() # Front Beginning of Streamlit UI ######################################################################## ############################# Streamlit ################################ ######################################################################## # The code below shows the logic behind the question and answering patterns. # Start-------------------------------------------- st.title("BWusste Studienwahl") #st.write("Stand: 01.07.25") st.write("Hallo und herzlich willkommen. Auf dieser Webseite kannst du, wenn du auf die Kästen clickst („Frageblock 1: Bildungsweg“) angeben, wie sehr du dich gerade mit einem Thema, welches mit deiner Studienwahl zusammenhängt, auseinandersetzen möchtest.") labels = { 1: "1 - Trifft überhaupt nicht zu", 2: "2", 3: "3", 4: "4", 5: "5", 6: "6", 7: "7 - Trifft voll und ganz zu" } # Frageblock 1 ########################################################## ######################################################################### expander1 = st.expander("Frageblock 1: Bildungsweg") #expander1.write("Überleg erstmal, was für dich als nächster Schritt auf deinem Bildungsweg passen könnte – egal ob Studium, Ausbildung, Duales Studium.") expander1.write( "Wie sicher bist du dir insgesamt, welchen Bildungsweg du einschlagen möchtest?") answer1 = expander1.select_slider( label=' ', options=[1, 2, 3, 4, 5, 6, 7], key="q1", value=1, format_func=lambda x: labels[x]) sec1 = certainty(answer1) answer2=expander1.multiselect('Welche(n) Bildungsweg(e) kannst du dir vorstellen?', ["Ausbildung", "Duales Studium", "Studium"], default=None, key="q2") if answer2: if "Duales Studium" in answer2: answer2="Duales Studium" else: answer2="Studium" #expander1.write(answer2) skip1 = expander1.checkbox("Ich weiß es noch nicht", key="s1") if skip1: sec1 = 1 answer2 = "None" if answer2==[]: sec1=1 expander1.write("⚠️ Bitte noch die Antwortfelder ausfüllen!", unsafe_allow_html=True) # Frageblock 2 ########################################################## ######################################################################### expander2 = st.expander("Frageblock 2: Interessen") expander2.write("Was begeistert dich? Was macht dir Spaß? Erzähl uns hier mehr über deine Interessen.") macrofield = sorted(datastuds["fachgruppe"].dropna().unique().tolist()) answer3 = expander2.multiselect('In welchen Bereichen liegen deine Interessen? Wähle einen oder mehrere Interessensbereiche aus oder beschreibe sie in deinen eigenen Worten.', macrofield, default=None, key="q3") answer5 ="n" if len(answer5)<2: answer5="1977" answer4 = expander2.select_slider( label="Wie sicher bist du dir schon darüber, in welchen Bereichen deine Interessen liegen?", options=[1, 2, 3, 4, 5, 6, 7], key="q4", value=1, format_func=lambda x: labels[x]) sec2 = certainty(answer4) skip2 = expander2.checkbox("Ich weiß es noch nicht", key="s2") if skip2: sec2 = 1 answer3 = ["None"] answer5 = "None" if answer3==[]: sec2=1 expander2.write("⚠️ Bitte noch die Antwortfelder ausfüllen!", unsafe_allow_html=True) # Frageblock 3 ########################################################## ######################################################################### expander3 = st.expander("Frageblock 3: Fähigkeiten") expander3.write("Was kannst du gut? Worin siehst du oder andere deine Stärken? Erzähl uns hier mehr über deine Fähigkeiten.") macrofield = sorted(datastuds["fachgruppe"].dropna().unique().tolist()) answer7 = expander3.multiselect('In welchen Bereichen liegen deine Fähigkeiten? Wähle einen oder mehrere Fähigkeitsbereiche aus oder beschreibe sie in deinen eigenen Worten.', macrofield, default=None, key="q7") answer9 = "n" if len(answer9)<2: answer9="1977" answer8 = expander3.select_slider( label="Wie sicher bist du dir schon darüber, in welchen Bereichen deine Fähigkeiten liegen?", options=[1, 2, 3, 4, 5, 6, 7], key="q8", value=1, format_func=lambda x: labels[x]) sec4 = certainty(answer8) skip3 = expander3.checkbox("Ich weiß es noch nicht", key="s3") if skip3: sec4 = 1 answer7 = ["None"] answer9 = "None" if answer7==[]: sec4=1 expander3.write("⚠️ Bitte noch die Antwortfelder ausfüllen!", unsafe_allow_html=True) # Frageblock 4 ########################################################## ######################################################################### expander4 = st.expander("Frageblock 4: Region") expander4.write("Home sweet home oder doch lieber Koffer packen? Jetzt geht es noch um die Frage, in welcher Region du deinen Bildungsweg fortführen möchtest.") answer11 = expander4.select_slider( label=" Wie sicher bist du dir insgesamt, wo du deinen Bildungsweg fortführen möchtest?", options=[1, 2, 3, 4, 5, 6, 7], key="q11", value=1, format_func=lambda x: labels[x]) sec6 = certainty(answer11) ort = sorted(datastuds["studienort"].dropna().unique().tolist()) answer12 = expander4.multiselect('Weißt du schon, wo?', ort, default=None, key="q12") skip4 = expander4.checkbox("Ich weiß es noch nicht", key="s4") if skip4: sec6 = 1 answer12 = ["None"] #info4 = expander4.checkbox("Weitere Informationen", key="i4") if answer12==[]: sec6=1 expander4.write("⚠️ Bitte noch die Antwortfelder ausfüllen!", unsafe_allow_html=True) # Angebots Filterung ########################################################### ################################################################################ filter=["online"] # Nach Nutzereingabe wird hier im Hintergund die Erstellung der Angebotsausgabe erzeugt ################################################################################ # Ergebnissblock 1 ################################################################################ #expanderres1 = st.expander("Empfehlung Bildungsweg") if sec1==7: datae1 = data.iloc[0:0].copy() datae1old=pd.concat([datae1]) #expanderres1.write("Keine Empfehlung") else: # Fokus Filter if answer2!=None: if answer2=="Studium": answer2list=[answer2, "ata"] else: answer2list=[answer2, "ata", "Studium", "Duales Studium"] else: answer2list=[answer2] if sec1==5: # Filter data datae1 = data.loc[ contains_value(data['Type_Studium_Ausbildung'], "Fokus") & split_and_match(data['Sicherheit_Studium_Ausbildung'], [str(sec1)]) & split_and_match(data['Auswahl_Studium_Ausbildung'], answer2list) ].copy() # Sorting R1 if answer2 != "Studium": datae1["rank1"] = 5 datae1.loc[split_and_match(datae1['Auswahl_Studium_Ausbildung'], ["Nan"]), "rank1"] = 4 datae1.loc[split_and_match(datae1['Auswahl_Studium_Ausbildung'], ["Studium"]), "rank1"] = 3 datae1.loc[split_and_match(datae1['Auswahl_Studium_Ausbildung'], ["ata"]), "rank1"] = 2 datae1.loc[split_and_match(datae1['Auswahl_Studium_Ausbildung'], ["Duales Studium"]), "rank1"] = 1 else: datae1["rank1"] = 4 datae1.loc[split_and_match(datae1['Auswahl_Studium_Ausbildung'], ["Nan"]), "rank1"] = 3 datae1.loc[split_and_match(datae1['Auswahl_Studium_Ausbildung'], ["ata"]), "rank1"] = 2 datae1.loc[split_and_match(datae1['Auswahl_Studium_Ausbildung'], ["Studium"]), "rank1"] = 1 if sec1==1: datae1 = data.loc[contains_value(data['Type_Studium_Ausbildung'], "Fokus")& split_and_match(data['Sicherheit_Studium_Ausbildung'], [str(sec1)]) ].copy() #Sorting R1 datae1["rank1"]=1 #EinbezugFilter--------------------------------------------------- #Interessen #answer3.append("ata") answer5list=[answer5] if sec2 in [5,7] and sec4 in [5,7]: answer3M=answer3+answer7 answer5listM=answer5list+[answer9] datae1 = datae1.loc[split_and_match(datae1['Fachgruppe_Interessen'],answer3M+ ["Nan","ata"]) | split_and_match(datae1['Studienbereich_Interessen'],answer5listM+ ["Nan","ata"]) ].copy() #Sorting R2 # General Ranking Case datae1["rank2"] = 6 datae1.loc[ split_and_match(datae1['Fachgruppe_Interessen'], ["Nan"]) & split_and_match(datae1['Studienbereich_Interessen'], ["Nan"]), "rank2" ] = 5 datae1.loc[ split_and_match(datae1['Fachgruppe_Interessen'], ["ata"]) & split_and_match(datae1['Studienbereich_Interessen'], ["ata"]), "rank2" ] = 4 datae1.loc[ split_and_match(datae1['Fachgruppe_Interessen'], answer3M) & ~split_and_match(datae1['Studienbereich_Interessen'], answer5listM), "rank2" ] = 3 datae1.loc[ ~split_and_match(datae1['Fachgruppe_Interessen'], answer3M) & split_and_match(datae1['Studienbereich_Interessen'], answer5listM), "rank2" ] = 2 datae1.loc[ split_and_match(datae1['Fachgruppe_Interessen'], answer3M) & split_and_match(datae1['Studienbereich_Interessen'], answer5listM), "rank2" ] = 1 elif sec2 in [5, 7]: answer3M = answer3 answer5listM = answer5list datae1 = datae1.loc[ split_and_match(datae1['Fachgruppe_Interessen'], answer3M + ["Nan", "ata"]) | split_and_match(datae1['Studienbereich_Interessen'], answer5listM + ["Nan", "ata"]) ].copy() datae1["rank2"] = 6 datae1.loc[ split_and_match(datae1['Fachgruppe_Interessen'], ["Nan"]) & split_and_match(datae1['Studienbereich_Interessen'], ["Nan"]), "rank2" ] = 5 datae1.loc[ split_and_match(datae1['Fachgruppe_Interessen'], ["ata"]) & split_and_match(datae1['Studienbereich_Interessen'], ["ata"]), "rank2" ] = 4 datae1.loc[ split_and_match(datae1['Fachgruppe_Interessen'], answer3M) & ~split_and_match(datae1['Studienbereich_Interessen'], answer5listM), "rank2" ] = 3 datae1.loc[ ~split_and_match(datae1['Fachgruppe_Interessen'], answer3M) & split_and_match(datae1['Studienbereich_Interessen'], answer5listM), "rank2" ] = 2 datae1.loc[ split_and_match(datae1['Fachgruppe_Interessen'], answer3M) & split_and_match(datae1['Studienbereich_Interessen'], answer5listM), "rank2" ] = 1 if sec2 == 1: datae1["rank2"] = 6 datae1.loc[ split_and_match(datae1['Fachgruppe_Interessen'], ["ata"]) & ~split_and_match(datae1['Studienbereich_Interessen'], ["ata"]), "rank2" ] = 5 datae1.loc[ split_and_match(datae1['Fachgruppe_Interessen'], answer3) & ~split_and_match(datae1['Studienbereich_Interessen'], answer5list), "rank2" ] = 4 datae1.loc[ ~split_and_match(datae1['Fachgruppe_Interessen'], answer3) & split_and_match(datae1['Studienbereich_Interessen'], answer5list), "rank2" ] = 3 datae1.loc[ split_and_match(datae1['Fachgruppe_Interessen'], answer3) & split_and_match(datae1['Studienbereich_Interessen'], answer5list), "rank2" ] = 2 datae1.loc[ split_and_match(datae1['Fachgruppe_Interessen'], ["Nan"]) & split_and_match(datae1['Studienbereich_Interessen'], ["Nan"]), "rank2" ] = 1 # Fähigkeiten answer9list=[answer9] if sec4 in [5,7] and sec2 in [5,7]: answer7M=answer3+answer7 answer9listM=answer5list+[answer9] datae1 = datae1.loc[split_and_match(datae1['Fachgruppe_Fähigkeiten'],answer7M+ ["Nan","ata"]) | split_and_match(datae1['Studienbereich_Fähigkeiten'],answer9listM+ ["Nan","ata"]) ].copy() #Sorting R3 datae1["rank3"]=6 datae1.loc[split_and_match(datae1['Fachgruppe_Fähigkeiten'],["Nan"]) & split_and_match(datae1['Studienbereich_Fähigkeiten'],["Nan"]) , "rank3"]=5 datae1.loc[split_and_match(datae1['Fachgruppe_Fähigkeiten'], ["ata"]) & split_and_match(datae1['Studienbereich_Fähigkeiten'], ["ata"]) , "rank3"]=4 datae1.loc[split_and_match(datae1['Fachgruppe_Fähigkeiten'], answer7M) & ~split_and_match(datae1['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=3 datae1.loc[~split_and_match(datae1['Fachgruppe_Fähigkeiten'], answer7M) & split_and_match(datae1['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=2 datae1.loc[split_and_match(datae1['Fachgruppe_Fähigkeiten'], answer7M) & split_and_match(datae1['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=1 elif sec4 in [5,7]: answer7M=answer7 answer9listM=answer9list datae1 = datae1.loc[split_and_match(datae1['Fachgruppe_Fähigkeiten'], answer7M+ ["Nan","ata"]) | split_and_match(datae1['Studienbereich_Fähigkeiten'], answer9listM+ ["Nan","ata"]) ].copy() #Sorting R3 datae1["rank3"]=6 datae1.loc[split_and_match(datae1['Fachgruppe_Fähigkeiten'], ["Nan"]) & split_and_match(datae1['Studienbereich_Fähigkeiten'], ["Nan"]) , "rank3"]=5 datae1.loc[split_and_match(datae1['Fachgruppe_Fähigkeiten'], ["ata"]) & split_and_match(datae1['Studienbereich_Fähigkeiten'], ["ata"]) , "rank3"]=4 datae1.loc[split_and_match(datae1['Fachgruppe_Fähigkeiten'], answer7M) & ~split_and_match(datae1['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=3 datae1.loc[~split_and_match(datae1['Fachgruppe_Fähigkeiten'], answer7M) & split_and_match(datae1['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=2 datae1.loc[split_and_match(datae1['Fachgruppe_Fähigkeiten'], answer7M) & split_and_match(datae1['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=1 if sec4==1: # Sorting R3 datae1["rank3"]=6 datae1.loc[split_and_match(datae1['Fachgruppe_Fähigkeiten'], ["ata"]) & ~split_and_match(datae1['Studienbereich_Fähigkeiten'], ["ata"]) , "rank3"]=4 datae1.loc[split_and_match(datae1['Fachgruppe_Fähigkeiten'], answer7) & ~split_and_match(datae1['Studienbereich_Fähigkeiten'], answer9list) , "rank3"]=4 datae1.loc[~split_and_match(datae1['Fachgruppe_Fähigkeiten'], answer7) & split_and_match(datae1['Studienbereich_Fähigkeiten'], answer9list) , "rank3"]=3 datae1.loc[split_and_match(datae1['Fachgruppe_Fähigkeiten'], answer7) & split_and_match(datae1['Studienbereich_Fähigkeiten'], answer9list) , "rank3"]=2 datae1.loc[split_and_match(datae1['Fachgruppe_Fähigkeiten'], ["Nan"]) & split_and_match(datae1['Studienbereich_Fähigkeiten'], ["Nan"]) , "rank3"]=1 # Ort if sec6 == 7: datae1 = datae1.loc[split_and_match(datae1['Auswahl_Orte'], answer12 + ["Nan","ata"]) ].copy() datae1["rank4"]=4 datae1.loc[split_and_match(datae1['Auswahl_Orte'], ["Nan"]) , "rank4"]=3 datae1.loc[split_and_match(datae1['Auswahl_Orte'], ["ata"]) , "rank4"]=2 datae1.loc[split_and_match(datae1['Auswahl_Orte'], answer12) , "rank4"]=1 if sec6 == 5: datae1["rank4"]=4 datae1.loc[split_and_match(datae1['Auswahl_Orte'], ["Nan"]) , "rank4"]=3 datae1.loc[split_and_match(datae1['Auswahl_Orte'], ["ata"]) , "rank4"]=2 datae1.loc[split_and_match(datae1['Auswahl_Orte'], answer12) , "rank4"]=1 if sec6==1: datae1["rank4"]=4 datae1.loc[split_and_match(datae1['Auswahl_Orte'], ["ata"]) , "rank4"]=3 datae1.loc[split_and_match(datae1['Auswahl_Orte'], answer12) , "rank4"]=2 datae1.loc[split_and_match(datae1['Auswahl_Orte'], ["Nan"]) , "rank4"]=1 # Data output datae1old=pd.concat([datae1]).copy() df_sorted = datae1.sort_values(by=["rank1","rank2","rank3","rank4",'random_tiebreaker'], ascending=True).copy() #expanderres1.dataframe(df_sorted[["Link", "ID","Sicherheit_Studium_Ausbildung", "Type_Studium_Ausbildung","Regelmäßigkeit_Angebot","Zeitaufwand_Angebot","rank1","rank2","rank3","rank4",'random_tiebreaker',"pointsfil","pointsfillist"]]) ################################################################################ # Ergebnissblock 2 ################################################################################ #expanderres2 = st.expander("Empfehlung Interessen") if sec2==7: datae2 = data.iloc[0:0].copy() datae2old=pd.concat([datae2]) #expanderres2.write("Keine Empfehlung") else: # Fokus Filter answer5list=[answer5] if sec2==5: datae2 = data.loc[contains_value(data['Type_Interessen'],"Fokus")& split_and_match(data['Sicherheit_Interessen'],[str(sec2)]) & ( split_and_match(data['Fachgruppe_Interessen'],answer3+["ata"]) | split_and_match(data['Studienbereich_Interessen'], answer5list+["ata"]) ) ].copy() #Sorting R1 datae2["rank1"]=5 datae2.loc[split_and_match(datae2['Fachgruppe_Interessen'], ["ata"]) & split_and_match(datae2['Studienbereich_Interessen'], ["ata"]) , "rank1"]=4 datae2.loc[split_and_match(datae2['Fachgruppe_Interessen'], answer3) & ~split_and_match(datae2['Studienbereich_Interessen'], answer5list) , "rank1"]=3 datae2.loc[ ~split_and_match(datae2['Fachgruppe_Interessen'], answer3) & split_and_match(datae2['Studienbereich_Interessen'], answer5list) , "rank1"]=2 datae2.loc[split_and_match(datae2['Fachgruppe_Interessen'], answer3) & split_and_match(datae2['Studienbereich_Interessen'], answer5list) , "rank1"]=1 if sec2==1: datae2 = data.loc[contains_value(data['Type_Interessen'],"Fokus")& split_and_match(data['Sicherheit_Interessen'], [str(sec2)]) ].copy() #Sorting R1 datae2["rank1"]=1 #EinbezugFilter----------------------------------------------- # Fähigkeiten answer9list=[answer9] if sec4 in [5,7]: #Sorting R2 datae2["rank2"]=6 datae2.loc[split_and_match(datae2['Fachgruppe_Fähigkeiten'], ["Nan"]) & split_and_match(datae2['Studienbereich_Fähigkeiten'], ["Nan"]) , "rank2"]=5 datae2.loc[split_and_match(datae2['Fachgruppe_Fähigkeiten'], ["ata"]) & split_and_match(datae2['Studienbereich_Fähigkeiten'], ["ata"]) , "rank2"]=4 datae2.loc[split_and_match(datae2['Fachgruppe_Fähigkeiten'], answer7) & ~split_and_match(datae2['Studienbereich_Fähigkeiten'], answer9list) , "rank2"]=3 datae2.loc[~split_and_match(datae2['Fachgruppe_Fähigkeiten'], answer7) & split_and_match(datae2['Studienbereich_Fähigkeiten'], answer9list) , "rank2"]=2 datae2.loc[split_and_match(datae2['Fachgruppe_Fähigkeiten'], answer7) & split_and_match(datae2['Studienbereich_Fähigkeiten'], answer9list) , "rank2"]=1 if sec4==1: # Sorting R2 datae2["rank2"]=6 datae2.loc[split_and_match(datae2['Fachgruppe_Fähigkeiten'], ["ata"]) & split_and_match(datae2['Studienbereich_Fähigkeiten'], ["ata"]) , "rank2"]=5 datae2.loc[split_and_match(datae2['Fachgruppe_Fähigkeiten'], answer7) & ~split_and_match(datae2['Studienbereich_Fähigkeiten'], answer9list) , "rank2"]=4 datae2.loc[~split_and_match(datae2['Fachgruppe_Fähigkeiten'], answer7) & split_and_match(datae2['Studienbereich_Fähigkeiten'], answer9list) , "rank2"]=3 datae2.loc[split_and_match(datae2['Fachgruppe_Fähigkeiten'], answer7) & split_and_match(datae2['Studienbereich_Fähigkeiten'], answer9list) , "rank2"]=2 datae2.loc[split_and_match(datae2['Fachgruppe_Fähigkeiten'], ["Nan"]) & split_and_match(datae2['Studienbereich_Fähigkeiten'], ["Nan"]) , "rank2"]=1 # Studium if answer2!=None: if answer2=="Studium": answer2list=[answer2] else: answer2list=[answer2, "Studium", "Duales Studium"] else: answer2list=[answer2] if sec1 in [5,7]: datae2 = datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], answer2list+ ["Nan","ata"]) ].copy() # Sorting R3 if answer2!="Studium": datae2["rank3"]=5 datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank3"]=4 datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["Studium"]) , "rank3"]=3 datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank3"]=2 datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["Duales Studium"]) , "rank3"]=1 else: datae2["rank3"]=4 datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank3"]=3 datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank3"]=2 datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], answer2list) , "rank3"]=1 if sec1==1: # Sorting R3 if answer2!="Studium": datae2["rank3"]=5 datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["Studium"]) , "rank3"]=4 datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank3"]=3 datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["Duales Studium"]) , "rank3"]=2 datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank3"]=1 else: datae2["rank3"]=4 datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank3"]=3 datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], answer2list) , "rank3"]=2 datae2.loc[split_and_match(datae2['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank3"]=1 # Ort if sec6 == 7: datae2 = datae2.loc[split_and_match(datae2['Auswahl_Orte'], answer12 + ["Nan","ata"]) ].copy() datae2["rank4"]=4 datae2.loc[split_and_match(datae2['Auswahl_Orte'], ["Nan"]) , "rank4"]=3 datae2.loc[split_and_match(datae2['Auswahl_Orte'], ["ata"]) , "rank4"]=2 datae2.loc[split_and_match(datae2['Auswahl_Orte'], answer12) , "rank4"]=1 if sec6 == 5: datae2["rank4"]=4 datae2.loc[split_and_match(datae2['Auswahl_Orte'], ["Nan"]) , "rank4"]=3 datae2.loc[split_and_match(datae2['Auswahl_Orte'], ["ata"]) , "rank4"]=2 datae2.loc[split_and_match(datae2['Auswahl_Orte'], answer12) , "rank4"]=1 if sec6==1: datae2["rank4"]=4 datae2.loc[split_and_match(datae2['Auswahl_Orte'], ["ata"]) , "rank4"]=3 datae2.loc[split_and_match(datae2['Auswahl_Orte'], answer12) , "rank4"]=2 datae2.loc[split_and_match(datae2['Auswahl_Orte'], ["Nan"]) , "rank4"]=1 # Data output datae2old=pd.concat([datae2]).copy() df_sorted = datae2.sort_values(by=["rank1","rank2","rank3","rank4",'random_tiebreaker'], ascending=True).copy() #expanderres2.dataframe(df_sorted[["Link", "ID","Sicherheit_Interessen", "Fachgruppe_Interessen", "Type_Interessen","Regelmäßigkeit_Angebot","Zeitaufwand_Angebot","rank1","rank2","rank3","rank4",'random_tiebreaker',"pointsfil","pointsfillist"]]) ################################################################################ # Ergebnissblock 2S ################################################################################ #expanderres2S = st.expander("Empfehlung InteressenS") if sec2 ==1: dataes = data.iloc[0:0].copy() dataesold=pd.concat([dataes]) #expanderres2S.write("Keine Empfehlung") elif sec4==7 & sec2 ==7: dataes = data.iloc[0:0].copy() dataesold=pd.concat([dataes]) #expanderres2S.write("Keine Empfehlung") elif sec4==7: dataes = data.iloc[0:0].copy() dataesold=pd.concat([dataes]) #expanderres2S.write("Keine Empfehlung") else: # Fokus Filter answer5list=[answer5] if sec2 in [5,7]: dataes = data.loc[contains_value(data['Type_Fähigkeiten'],"Fokus")& split_and_match(data['Sicherheit_Fähigkeiten'], [str(sec2)]) & ( split_and_match(data['Fachgruppe_Fähigkeiten'], answer3+["ata"]) | split_and_match(data['Studienbereich_Fähigkeiten'], answer5list+["ata"]) ) ].copy() #Sorting R1 dataes["rank1"]=5 dataes.loc[split_and_match(dataes['Fachgruppe_Fähigkeiten'], ["ata"]) & split_and_match(dataes['Studienbereich_Fähigkeiten'], ["ata"]) , "rank1"]=4 dataes.loc[split_and_match(dataes['Fachgruppe_Fähigkeiten'], answer3) & ~split_and_match(dataes['Studienbereich_Fähigkeiten'], answer5list) , "rank1"]=3 dataes.loc[ ~split_and_match(dataes['Fachgruppe_Fähigkeiten'], answer3) & split_and_match(dataes['Studienbereich_Fähigkeiten'], answer5list) , "rank1"]=2 dataes.loc[split_and_match(dataes['Fachgruppe_Fähigkeiten'], answer3) & split_and_match(dataes['Studienbereich_Fähigkeiten'], answer5list) , "rank1"]=1 #EinbezugFilter-------------------------------------------- # Interessen answer9list=[answer9] if sec4 in [5,7]: #Sorting R2 dataes["rank2"]=6 dataes.loc[split_and_match(dataes['Fachgruppe_Interessen'], ["Nan"]) & split_and_match(dataes['Studienbereich_Interessen'], ["Nan"]) , "rank2"]=5 dataes.loc[split_and_match(dataes['Fachgruppe_Interessen'], ["ata"]) & split_and_match(dataes['Studienbereich_Interessen'], ["ata"]) , "rank2"]=4 dataes.loc[split_and_match(dataes['Fachgruppe_Interessen'], answer7) & ~split_and_match(dataes['Studienbereich_Interessen'], answer9list) , "rank2"]=3 dataes.loc[~split_and_match(dataes['Fachgruppe_Interessen'], answer7) & split_and_match(dataes['Studienbereich_Interessen'], answer9list) , "rank2"]=2 dataes.loc[split_and_match(dataes['Fachgruppe_Interessen'], answer7) & split_and_match(dataes['Studienbereich_Interessen'], answer9list) , "rank2"]=1 if sec4==1: # Sorting R2 dataes["rank2"]=6 dataes.loc[split_and_match(dataes['Fachgruppe_Interessen'], ["ata"]) & split_and_match(dataes['Studienbereich_Interessen'], ["ata"]) , "rank2"]=5 dataes.loc[split_and_match(dataes['Fachgruppe_Interessen'], answer7) & ~split_and_match(dataes['Studienbereich_Interessen'], answer9list) , "rank2"]=4 dataes.loc[~split_and_match(dataes['Fachgruppe_Interessen'], answer7) & split_and_match(dataes['Studienbereich_Interessen'], answer9list) , "rank2"]=3 dataes.loc[split_and_match(dataes['Fachgruppe_Interessen'], answer7) & split_and_match(dataes['Studienbereich_Interessen'], answer9list) , "rank2"]=2 dataes.loc[split_and_match(dataes['Fachgruppe_Interessen'], ["Nan"]) & split_and_match(dataes['Studienbereich_Interessen'], ["Nan"]) , "rank2"]=1 # Studium if answer2!=None: if answer2=="Studium": answer2list=[answer2] else: answer2list=[answer2, "Studium", "Duales Studium"] else: answer2list=[answer2] if sec1 in [5,7]: dataes = dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], answer2list+ ["Nan","ata"]) ].copy() # Sorting R3 if answer2!="Studium": dataes["rank3"]=5 dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank3"]=4 dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["Studium"]) , "rank3"]=3 dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank3"]=2 dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["Duales Studium"]) , "rank3"]=1 else: dataes["rank3"]=4 dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank3"]=3 dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank3"]=2 dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], answer2list) , "rank3"]=1 if sec1==1: # Sorting R3 if answer2!="Studium": dataes["rank3"]=5 dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["Studium"]) , "rank3"]=4 dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank3"]=3 dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["Duales Studium"]) , "rank3"]=2 dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank3"]=1 else: dataes["rank3"]=4 dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank3"]=3 dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], answer2list) , "rank3"]=2 dataes.loc[split_and_match(dataes['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank3"]=1 # Ort if sec6 == 7: dataes = dataes.loc[split_and_match(dataes['Auswahl_Orte'], answer12 + ["Nan","ata"]) ].copy() dataes["rank4"]=4 dataes.loc[split_and_match(dataes['Auswahl_Orte'], ["Nan"]) , "rank4"]=3 dataes.loc[split_and_match(dataes['Auswahl_Orte'], ["ata"]) , "rank4"]=2 dataes.loc[split_and_match(dataes['Auswahl_Orte'], answer12) , "rank4"]=1 if sec6 == 5: dataes["rank4"]=4 dataes.loc[split_and_match(dataes['Auswahl_Orte'], ["Nan"]) , "rank4"]=3 dataes.loc[split_and_match(dataes['Auswahl_Orte'], ["ata"]) , "rank4"]=2 dataes.loc[split_and_match(dataes['Auswahl_Orte'], answer12) , "rank4"]=1 if sec6==1: dataes["rank4"]=4 dataes.loc[split_and_match(dataes['Auswahl_Orte'], ["ata"]) , "rank4"]=3 dataes.loc[split_and_match(dataes['Auswahl_Orte'], answer12) , "rank4"]=2 dataes.loc[split_and_match(dataes['Auswahl_Orte'], ["Nan"]) , "rank4"]=1 # Data output dataesold=pd.concat([dataes]).copy() df_sorted = dataes.sort_values(by=["rank1","rank2","rank3","rank4",'random_tiebreaker'], ascending=True).copy() #expanderres2S.dataframe(df_sorted[["Link", "ID","Sicherheit_Fähigkeiten", "Fachgruppe_Fähigkeiten", "Type_Fähigkeiten","Regelmäßigkeit_Angebot","Zeitaufwand_Angebot","rank1","rank2","rank3","rank4",'random_tiebreaker',"pointsfil","pointsfillist"]]) ############################################################### # Ergebnissblock 3 ############################################################### #expanderres3 = st.expander("Empfehlung Fähigkeiten") if sec4==7: datae3 = data.iloc[0:0].copy() datae3old=pd.concat([datae3]).copy() #expanderres3.write("Keine Empfehlung") else: # Fokus Filter answer9list=[answer9] if sec4==5: datae3 = data.loc[contains_value(data['Type_Fähigkeiten'],"Fokus")& split_and_match(data['Sicherheit_Fähigkeiten'], [str(sec4)]) & ( split_and_match(data['Fachgruppe_Fähigkeiten'], answer7+["ata"]) | split_and_match(data['Studienbereich_Fähigkeiten'], answer9list+["ata"]) ) ].copy() #Sorting R1 datae3["rank1"]=5 datae3.loc[split_and_match(datae3['Fachgruppe_Fähigkeiten'], ["ata"]) & split_and_match(datae3['Studienbereich_Fähigkeiten'], ["ata"]) , "rank1"]=4 datae3.loc[split_and_match(datae3['Fachgruppe_Fähigkeiten'], answer7) & ~split_and_match(datae3['Studienbereich_Fähigkeiten'], answer9list) , "rank1"]=3 datae3.loc[ ~split_and_match(datae3['Fachgruppe_Fähigkeiten'], answer7) & split_and_match(datae3['Studienbereich_Fähigkeiten'], answer9list) , "rank1"]=2 datae3.loc[split_and_match(datae3['Fachgruppe_Fähigkeiten'], answer7) & split_and_match(datae3['Studienbereich_Fähigkeiten'], answer9list) , "rank1"]=1 if sec4==1: datae3 = data.loc[contains_value(data['Type_Fähigkeiten'],"Fokus")& split_and_match(data['Sicherheit_Fähigkeiten'], [str(sec4)]) ].copy() #Sorting R1 datae3["rank1"]=1 #EinbezugFilter--------------------------------------------------------- # Interessen answer5list=[answer9] if sec2 in [5,7]: #Sorting R2 datae3["rank2"]=6 datae3.loc[split_and_match(datae3['Fachgruppe_Interessen'], ["Nan"]) & split_and_match(datae3['Studienbereich_Interessen'], ["Nan"]) , "rank2"]=5 datae3.loc[split_and_match(datae3['Fachgruppe_Interessen'], ["ata"]) & split_and_match(datae3['Studienbereich_Interessen'], ["ata"]) , "rank2"]=4 datae3.loc[split_and_match(datae3['Fachgruppe_Interessen'], answer3) & ~split_and_match(datae3['Studienbereich_Interessen'], answer5list) , "rank2"]=3 datae3.loc[~split_and_match(datae3['Fachgruppe_Interessen'], answer3) & split_and_match(datae3['Studienbereich_Interessen'], answer5list) , "rank2"]=2 datae3.loc[split_and_match(datae3['Fachgruppe_Interessen'], answer3) & split_and_match(datae3['Studienbereich_Interessen'], answer5list) , "rank2"]=1 if sec2==1: # Sorting R2 datae3["rank2"]=6 datae3.loc[split_and_match(datae3['Fachgruppe_Interessen'], ["ata"]) & split_and_match(datae3['Studienbereich_Interessen'], ["ata"]) , "rank2"]=5 datae3.loc[split_and_match(datae3['Fachgruppe_Interessen'], answer3) & ~split_and_match(datae3['Studienbereich_Interessen'], answer5list) , "rank2"]=4 datae3.loc[~split_and_match(datae3['Fachgruppe_Interessen'], answer3) & split_and_match(datae3['Studienbereich_Interessen'], answer5list) , "rank2"]=3 datae3.loc[split_and_match(datae3['Fachgruppe_Interessen'], answer3) & split_and_match(datae3['Studienbereich_Interessen'], answer5list) , "rank2"]=2 datae3.loc[split_and_match(datae3['Fachgruppe_Interessen'], ["Nan"]) & split_and_match(datae3['Studienbereich_Interessen'], ["Nan"]) , "rank2"]=1 # Studium if answer2!=None: if answer2=="Studium": answer2list=[answer2] else: answer2list=[answer2, "Studium", "Duales Studium"] else: answer2list=[answer2] if sec1 in [5,7]: datae3 = datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], answer2list+ ["Nan","ata"]) ].copy() # Sorting R3 if answer2!="Studium": datae3["rank3"]=5 datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank3"]=4 datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["Studium"]) , "rank3"]=3 datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank3"]=2 datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["Duales Studium"]) , "rank3"]=1 else: datae3["rank3"]=4 datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank3"]=3 datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank3"]=2 datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], answer2list) , "rank3"]=1 if sec1==1: # Sorting R3 if answer2!="Studium": datae3["rank3"]=5 datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["Studium"]) , "rank3"]=4 datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank3"]=3 datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["Duales Studium"]) , "rank3"]=2 datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank3"]=1 else: datae3["rank3"]=4 datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank3"]=3 datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], answer2list) , "rank3"]=2 datae3.loc[split_and_match(datae3['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank3"]=1 # Ort if sec6 == 7: datae3 = datae3.loc[split_and_match(datae3['Auswahl_Orte'], answer12 + ["Nan","ata"]) ].copy() datae3["rank4"]=4 datae3.loc[split_and_match(datae3['Auswahl_Orte'], ["Nan"]) , "rank4"]=3 datae3.loc[split_and_match(datae3['Auswahl_Orte'], ["ata"]) , "rank4"]=2 datae3.loc[split_and_match(datae3['Auswahl_Orte'], answer12) , "rank4"]=1 if sec6 == 5: datae3["rank4"]=4 datae3.loc[split_and_match(datae3['Auswahl_Orte'], ["Nan"]) , "rank4"]=3 datae3.loc[split_and_match(datae3['Auswahl_Orte'], ["ata"]) , "rank4"]=2 datae3.loc[split_and_match(datae3['Auswahl_Orte'], answer12) , "rank4"]=1 if sec6==1: datae3["rank4"]=4 datae3.loc[split_and_match(datae3['Auswahl_Orte'], ["ata"]) , "rank4"]=3 datae3.loc[split_and_match(datae3['Auswahl_Orte'], answer12) , "rank4"]=2 datae3.loc[split_and_match(datae3['Auswahl_Orte'], ["Nan"]) , "rank4"]=1 # Data output datae3old=pd.concat([datae3]).copy() df_sorted = datae3.sort_values(by=["rank1","rank2","rank3","rank4",'random_tiebreaker'], ascending=True).copy() #expanderres3.dataframe(df_sorted[["Link", "ID","Sicherheit_Fähigkeiten", "Fachgruppe_Fähigkeiten", "Type_Fähigkeiten","Regelmäßigkeit_Angebot","Zeitaufwand_Angebot","rank1","rank2","rank3","rank4",'random_tiebreaker',"pointsfil","pointsfillist"]]) ################################################################# # Ergebnissblock 3S ################################################################# #expanderres3S = st.expander("Empfehlung FähigkeitenS") if sec4==1: datae3s = data.iloc[0:0].copy() datae3sold=pd.concat([datae3s]).copy() #expanderres3S.write("Keine Empfehlung") elif sec4==7 & sec2 ==7: datae3s = data.iloc[0:0].copy() datae3sold=pd.concat([datae3s]).copy() #expanderres3S.write("Keine Empfehlung") elif sec2==7: datae3s = data.iloc[0:0].copy() datae3sold=pd.concat([datae3s]).copy() #expanderres3S.write("Keine Empfehlung") else: # Fokus Filter answer9list=[answer9] if sec4 in [5,7]: datae3s = data.loc[contains_value(data['Type_Interessen'],"Fokus")& split_and_match(data['Sicherheit_Interessen'], [str(sec4)]) & ( split_and_match(data['Fachgruppe_Interessen'], answer7+["ata"]) | split_and_match(data['Studienbereich_Interessen'], answer9list+["ata"]) ) ].copy() #Sorting R1 datae3s["rank1"]=5 datae3s.loc[split_and_match(datae3s['Fachgruppe_Interessen'], ["ata"]) & split_and_match(datae3s['Studienbereich_Interessen'], ["ata"]) , "rank1"]=4 datae3s.loc[split_and_match(datae3s['Fachgruppe_Interessen'], answer7) & ~split_and_match(datae3s['Studienbereich_Interessen'], answer9list) , "rank1"]=3 datae3s.loc[ ~split_and_match(datae3s['Fachgruppe_Interessen'], answer7) & split_and_match(datae3s['Studienbereich_Interessen'], answer9list) , "rank1"]=2 datae3s.loc[split_and_match(datae3s['Fachgruppe_Interessen'], answer7) & split_and_match(datae3s['Studienbereich_Interessen'], answer9list) , "rank1"]=1 #EinbezugFilter--------------------------------------------------------------- # Interessen answer5list=[answer9] if sec2 in [5]: #Sorting R2 datae3s["rank2"]=6 datae3s.loc[split_and_match(datae3s['Fachgruppe_Fähigkeiten'], ["Nan"]) & split_and_match(datae3s['Studienbereich_Fähigkeiten'], ["Nan"]) , "rank2"]=5 datae3s.loc[split_and_match(datae3s['Fachgruppe_Fähigkeiten'], ["ata"]) & split_and_match(datae3s['Studienbereich_Fähigkeiten'], ["ata"]) , "rank2"]=4 datae3s.loc[split_and_match(datae3s['Fachgruppe_Fähigkeiten'], answer3) & ~split_and_match(datae3s['Studienbereich_Fähigkeiten'], answer5list) , "rank2"]=3 datae3s.loc[~split_and_match(datae3s['Fachgruppe_Fähigkeiten'], answer3) & split_and_match(datae3s['Studienbereich_Fähigkeiten'], answer5list) , "rank2"]=2 datae3s.loc[split_and_match(datae3s['Fachgruppe_Fähigkeiten'], answer3) & split_and_match(datae3s['Studienbereich_Fähigkeiten'], answer5list) , "rank2"]=1 if sec2==1: # Sorting R2 datae3s["rank2"]=6 datae3s.loc[split_and_match(datae3s['Fachgruppe_Fähigkeiten'], ["ata"]) & split_and_match(datae3s['Studienbereich_Fähigkeiten'], ["ata"]) , "rank2"]=5 datae3s.loc[split_and_match(datae3s['Fachgruppe_Fähigkeiten'], answer3) & ~split_and_match(datae3s['Studienbereich_Fähigkeiten'], answer5list) , "rank2"]=4 datae3s.loc[~split_and_match(datae3s['Fachgruppe_Fähigkeiten'], answer3) & split_and_match(datae3s['Studienbereich_Fähigkeiten'], answer5list) , "rank2"]=3 datae3s.loc[split_and_match(datae3s['Fachgruppe_Fähigkeiten'], answer3) & split_and_match(datae3s['Studienbereich_Fähigkeiten'], answer5list) , "rank2"]=2 datae3s.loc[split_and_match(datae3s['Fachgruppe_Fähigkeiten'], ["Nan"]) & split_and_match(datae3s['Studienbereich_Fähigkeiten'], ["Nan"]) , "rank2"]=1 # Studium if answer2!=None: if answer2=="Studium": answer2list=[answer2] else: answer2list=[answer2, "Studium", "Duales Studium"] else: answer2list=[answer2] if sec1 in [5,7]: datae3s = datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], answer2list+ ["Nan","ata"]) ].copy() # Sorting R3 if answer2!="Studium": datae3s["rank3"]=5 datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank3"]=4 datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["Studium"]) , "rank3"]=3 datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank3"]=2 datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["Duales Studium"]) , "rank3"]=1 else: datae3s["rank3"]=4 datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank3"]=3 datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank3"]=2 datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], answer2list) , "rank3"]=1 if sec1==1: # Sorting R3 if answer2!="Studium": datae3s["rank3"]=5 datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["Studium"]) , "rank3"]=4 datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank3"]=3 datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["Duales Studium"]) , "rank3"]=2 datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank3"]=1 else: datae3s["rank3"]=4 datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank3"]=3 datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], answer2list) , "rank3"]=2 datae3s.loc[split_and_match(datae3s['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank3"]=1 # Ort if sec6 == 7: datae3s = datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], answer12 + ["Nan","ata"]) ].copy() datae3s["rank4"]=4 datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], ["Nan"]) , "rank4"]=3 datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], ["ata"]) , "rank4"]=2 datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], answer12) , "rank4"]=1 if sec6 == 5: datae3s["rank4"]=4 datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], ["Nan"]) , "rank4"]=3 datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], ["ata"]) , "rank4"]=2 datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], answer12) , "rank4"]=1 if sec6==1: datae3s["rank4"]=4 datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], ["ata"]) , "rank4"]=3 datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], answer12) , "rank4"]=2 datae3s.loc[split_and_match(datae3s['Auswahl_Orte'], ["Nan"]) , "rank4"]=1 # Data output datae3sold=pd.concat([datae3s]).copy() df_sorted = datae3s.sort_values(by=["rank1","rank2","rank3","rank4",'random_tiebreaker'], ascending=True).copy() #expanderres3S.dataframe(df_sorted[["Link","ID", "Sicherheit_Interessen", "Fachgruppe_Interessen", "Type_Interessen","Regelmäßigkeit_Angebot","Zeitaufwand_Angebot","rank1","rank2","rank3","rank4",'random_tiebreaker',"pointsfil"]]) ########################################################### # Ergebnissblock 4 ########################################################### #expanderres4 = st.expander("Empfehlung Region") if sec6==7: datae4 = data.iloc[0:0].copy() datae4old=pd.concat([datae4]).copy() #expanderres4.write("Keine Empfehlung") else: #Filter Fokus if sec6 == 5: datae4 = data.loc[contains_value(data['Type_Orte'],"Fokus")& split_and_match(data['Sicherheit_Orte'],[str(sec6)]) & split_and_match(data['Auswahl_Orte'], answer12+["ata"]) ].copy() #Sorting R1 datae4["rank1"]=4 datae4.loc[split_and_match(datae4['Auswahl_Orte'], ["Nan"]) , "rank1"]=3 datae4.loc[split_and_match(datae4['Auswahl_Orte'], ["ata"]) , "rank1"]=2 datae4.loc[split_and_match(datae4['Auswahl_Orte'], answer12) , "rank1"]=1 if sec6==1: #Sorting R1 datae4 = data.loc[contains_value(data['Type_Orte'],"Fokus")& split_and_match(data['Sicherheit_Orte'],[str(sec6)]) ].copy() datae4["rank1"]=1 #EinbezugFilter # Interessen answer5list=[answer5] if sec2 in [5,7] and sec4 in [5,7]: answer3M=answer3+answer7 answer5listM=answer5list+[answer9] datae4 = datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], answer3M+ ["Nan","ata"]) | split_and_match(datae4['Studienbereich_Interessen'], answer5listM+ ["Nan","ata"]) ].copy() #Sorting R2 datae4["rank2"]=6 datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], ["Nan"]) & split_and_match(datae4['Studienbereich_Interessen'], ["Nan"]) , "rank2"]=5 datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], ["ata"]) & split_and_match(datae4['Studienbereich_Interessen'], ["ata"]) , "rank2"]=4 datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], answer3M) & ~split_and_match(datae4['Studienbereich_Interessen'], answer5listM) , "rank2"]=3 datae4.loc[~split_and_match(datae4['Fachgruppe_Interessen'], answer3M) & split_and_match(datae4['Studienbereich_Interessen'], answer5listM) , "rank2"]=2 datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], answer3M) & split_and_match(datae4['Studienbereich_Interessen'], answer5listM) , "rank2"]=1 elif sec2 in [5,7]: answer3M=answer3 answer5listM=answer5list datae4 = datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], answer3M+ ["Nan","ata"]) | split_and_match(datae4['Studienbereich_Interessen'], answer5listM+ ["Nan","ata"]) ].copy() #Sorting R2 datae4["rank2"]=6 datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], ["Nan"]) & split_and_match(datae4['Studienbereich_Interessen'], ["Nan"]) , "rank2"]=5 datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], ["ata"]) & split_and_match(datae4['Studienbereich_Interessen'], ["ata"]) , "rank2"]=4 datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], answer3M) & ~split_and_match(datae4['Studienbereich_Interessen'], answer5listM) , "rank2"]=3 datae4.loc[~split_and_match(datae4['Fachgruppe_Interessen'], answer3M) & split_and_match(datae4['Studienbereich_Interessen'], answer5listM) , "rank2"]=2 datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], answer3M) & split_and_match(datae4['Studienbereich_Interessen'], answer5listM) , "rank2"]=1 if sec2==1: # Sorting R2 datae4["rank2"]=6 datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], ["ata"]) & ~split_and_match(datae4['Studienbereich_Interessen'], ["ata"]) , "rank2"]=5 datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], answer3) & ~split_and_match(datae4['Studienbereich_Interessen'], answer5list) , "rank2"]=4 datae4.loc[~split_and_match(datae4['Fachgruppe_Interessen'], answer3) & split_and_match(datae4['Studienbereich_Interessen'], answer5list) , "rank2"]=3 datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], answer3) & split_and_match(datae4['Studienbereich_Interessen'], answer5list) , "rank2"]=2 datae4.loc[split_and_match(datae4['Fachgruppe_Interessen'], ["Nan"]) & split_and_match(datae4['Studienbereich_Interessen'], ["Nan"]) , "rank2"]=1 # Fähigkeiten answer9list=[answer9] if sec4 in [5,7] and sec2 in [5,7]: answer7M=answer3+answer7 answer9listM=answer5list+[answer9] datae4 = datae4.loc[split_and_match(datae4['Fachgruppe_Fähigkeiten'], answer7M+ ["Nan","ata"]) | split_and_match(datae4['Studienbereich_Fähigkeiten'], answer9listM+ ["Nan","ata"]) ].copy() #Sorting R3 datae4["rank3"]=6 datae4.loc[split_and_match(datae4['Fachgruppe_Fähigkeiten'], ["Nan"]) & split_and_match(datae4['Studienbereich_Fähigkeiten'], ["Nan"]) , "rank3"]=5 datae4.loc[split_and_match(datae4['Fachgruppe_Fähigkeiten'], ["ata"]) & split_and_match(datae4['Studienbereich_Fähigkeiten'], ["ata"]) , "rank3"]=4 datae4.loc[split_and_match(datae4['Fachgruppe_Fähigkeiten'], answer7M) & ~split_and_match(datae4['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=3 datae4.loc[~split_and_match(datae4['Fachgruppe_Fähigkeiten'], answer7M) & split_and_match(datae4['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=2 datae4.loc[split_and_match(datae4['Fachgruppe_Fähigkeiten'], answer7M) & split_and_match(datae4['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=1 elif sec4 in [5,7]: answer7M=answer7 answer9listM=answer9list datae4 = datae4.loc[split_and_match(datae4['Fachgruppe_Fähigkeiten'], answer7M+ ["Nan","ata"]) | split_and_match(datae4['Studienbereich_Fähigkeiten'], answer9listM+ ["Nan","ata"]) ].copy() #Sorting R3 datae4["rank3"]=6 datae4.loc[split_and_match(datae4['Fachgruppe_Fähigkeiten'], ["Nan"]) & split_and_match(datae4['Studienbereich_Fähigkeiten'], ["Nan"]) , "rank3"]=5 datae4.loc[split_and_match(datae4['Fachgruppe_Fähigkeiten'], ["ata"]) & split_and_match(datae4['Studienbereich_Fähigkeiten'], ["ata"]) , "rank3"]=4 datae4.loc[split_and_match(datae4['Fachgruppe_Fähigkeiten'], answer7M) & ~split_and_match(datae4['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=3 datae4.loc[~split_and_match(datae4['Fachgruppe_Fähigkeiten'], answer7M) & split_and_match(datae4['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=2 datae4.loc[split_and_match(datae4['Fachgruppe_Fähigkeiten'], answer7M) & split_and_match(datae4['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=1 if sec4==1: # Sorting R3 datae4["rank3"]=6 datae4.loc[split_and_match(datae4['Fachgruppe_Fähigkeiten'], ["ata"]) & ~split_and_match(datae4['Studienbereich_Fähigkeiten'], ["ata"]) , "rank3"]=4 datae4.loc[split_and_match(datae4['Fachgruppe_Fähigkeiten'], answer7) & ~split_and_match(datae4['Studienbereich_Fähigkeiten'], answer9list) , "rank3"]=4 datae4.loc[~split_and_match(datae4['Fachgruppe_Fähigkeiten'], answer7) & split_and_match(datae4['Studienbereich_Fähigkeiten'], answer9list) , "rank3"]=3 datae4.loc[split_and_match(datae4['Fachgruppe_Fähigkeiten'], answer7) & split_and_match(datae4['Studienbereich_Fähigkeiten'], answer9list) , "rank3"]=2 datae4.loc[split_and_match(datae4['Fachgruppe_Fähigkeiten'], ["Nan"]) & split_and_match(datae4['Studienbereich_Fähigkeiten'], ["Nan"]) , "rank3"]=1 # Studium if answer2!=None: if answer2=="Studium": answer2list=[answer2] else: answer2list=[answer2, "Studium", "Duales Studium"] else: answer2list=[answer2] if sec1 in [5,7]: datae4 = datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], answer2list+ ["Nan","ata"]) ].copy() # Sorting R3 if answer2!="Studium": datae4["rank4"]=5 datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank4"]=4 datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["Studium"]) , "rank4"]=3 datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank4"]=2 datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["Duales Studium"]) , "rank4"]=1 else: datae4["rank4"]=4 datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank4"]=3 datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank4"]=2 datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], answer2list) , "rank4"]=1 if sec1==1: # Sorting R3 if answer2!="Studium": datae4["rank4"]=5 datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["Studium"]) , "rank4"]=4 datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank4"]=3 datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["Duales Studium"]) , "rank4"]=2 datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank4"]=1 else: datae4["rank4"]=4 datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank4"]=3 datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], answer2list) , "rank4"]=2 datae4.loc[split_and_match(datae4['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank4"]=1 # Data output datae4old=pd.concat([datae4]).copy() df_sorted = datae4.sort_values(by=["rank1","rank2","rank3","rank4",'random_tiebreaker'], ascending=True).copy() #expanderres4.dataframe(df_sorted[["Link","ID", "Sicherheit_Orte", "Type_Orte","Regelmäßigkeit_Angebot","Zeitaufwand_Angebot","rank1","rank2","rank3","rank4",'random_tiebreaker',"pointsfil"]]) ##################################################################################### #############################Mehr Orientierung und Unterstützung##################### ##################################################################################### st.title("Mehr Orientierung und Unterstützung") st.write("Sich für einen Beruf bzw. für ein Studium zu entscheiden, ist eine komplexe Angelegenheit. Welche nächsten Schritte sind für Dich gerade besonders wichtig? Welche Informationen und welche Unterstützung könntest Du jetzt brauchen? Wähle die Begriffe aus, die Dich interessieren und klicke danach auf „weiter“.") # Fragen bedarflist = [] bedarf_dict = {} # Bedarfsauswahl -------------------------------------------- # Column 1 with st.expander("Selbsterkenntnis"): #if answer4>=5: bedarflist.append("Sicherheit_Interessen_") bedarf_dict["Sicherheit_Interessen_"] = "Sicherheit_Interessen_" #if answer8>=5: bedarflist.append("Sicherheit_Fähigkeiten") bedarf_dict["Sicherheit_Fähigkeiten"] = "Sicherheit_Fähigkeiten" B1 = st.select_slider(label='Ich möchte als Nächstes verstehen, welche Werte mir bei der Berufswahl wichtig sind.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B1", value=1, format_func=lambda x: labels[x]) if B1>=5: bedarflist.append("Werte") bedarf_dict["Werte"] = "Werte" B2 = st.select_slider(label='Ich möchte als Nächstes erlernen, wie ich mit den beruflichen Erwartungen meiner Eltern oder anderer Bezugspersonen an mich selbstbestimmt umgehen kann.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B2", value=1, format_func=lambda x: labels[x]) if B2>=5: bedarflist.append("Eltern_und_andere_Bezugspersonen") bedarf_dict["Eltern_und_andere_Bezugspersonen"] = "Eltern_und_andere_Bezugspersonen" B3 = st.select_slider(label='Ich möchte als Nächstes eine berufliche Zielvorstellung entwickeln.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B3", value=1, format_func=lambda x: labels[x]) if B3>=5: bedarflist.append("berufliche_Zielvorstellungen") bedarf_dict["berufliche_Zielvorstellungen"] = "berufliche_Zielvorstellungen" B4 = st.select_slider(label='Ich möchte als Nächstes herausfinden, ob ich für einen Ausbildungs- oder Studiengang geeignet bin.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B4", value=1, format_func=lambda x: labels[x]) if B4>=5: bedarflist.append("Eignung") bedarf_dict["Eignung"] = "Eignung" B5 = st.select_slider(label='Ich möchte als Nächstes eine Hilfsmittelkompetenz erlernen, damit ich mit einer Einschränkung eine Ausbildung oder ein Studium absolvieren kann.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B5", value=1, format_func=lambda x: labels[x]) if B5>=5: bedarflist.append("Hilfsmittelkompetenz") bedarf_dict["Hilfsmittelkompetenz"] = "Hilfsmittelkompetenz" B6 = st.select_slider(label='Ich möchte als Nächstes üben, eine Entscheidung zu treffen.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B6", value=1, format_func=lambda x: labels[x]) if B6>=5: bedarflist.append("Entscheidung") bedarf_dict["Entscheidung"] = "Entscheidung" with st.expander("Bildungsgangbedarfe"): bedarflist.append("Sicherheit_Studium_Ausbildung_") bedarf_dict["Sicherheit_Studium_Ausbildung_"] = "Sicherheit_Studium_Ausbildung_" B7 = st.select_slider(label='Ich möchte als Nächstes mich mit dem Einfluss von Stereotypen (z.B. ein Psychologiestudium bedeutet man wird Psychotherapeut:in) auseinandersetzen.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B7", value=1, format_func=lambda x: labels[x]) if B7>=5: bedarflist.append("Einfluss_Stereotypen") bedarf_dict["Einfluss_Stereotypen"] = "Einfluss_Stereotypen" B8 = st.select_slider(label='Ich möchte als Nächstes verschiedene Ausbildungs- und/oder Studiengänge (Schreiner, Tischler, Literaturwissenschaften, Molekulare Biotechnologie, ...) kennenlernen.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B8", value=1, format_func=lambda x: labels[x]) if B8>=5: bedarflist.append("versch._Bildungsgänge_kennenlernen") bedarf_dict["versch._Bildungsgänge_kennenlernen"] = "versch._Bildungsgänge_kennenlernen" B82 = st.select_slider(label='Ich möchte als Nächstes herausfinden, welche Hochschulart (Angewandte Hochschule, Pädagogische, Volluniversität, …) zu mir passt.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B82", value=1, format_func=lambda x: labels[x]) if B82>=5: bedarflist.append("Hochschulart") bedarf_dict["Hochschulart"] = "Hochschulart" B9 = st.select_slider(label='Ich möchte als Nächstes herausfinden, was die Anforderungen für einen Ausbildungsgang und/oder ein Studium sind.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B9", value=1, format_func=lambda x: labels[x]) if B9>=5: bedarflist.append("Anforderungen") bedarf_dict["Anforderungen"] = "Anforderungen" B10 = st.select_slider(label='Ich möchte als Nächstes unterschiedliche Ausbildungsbereiche (Handwerk, kaufmännische Ausbildungen, IT, ...) und/oder unterschiedliche Studienfelder (Geisteswissenschaften, Naturwissenschaften, ...) kennenlernen.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B10", value=1, format_func=lambda x: labels[x]) if B10>=5: bedarflist.append("Studienfelder") bedarf_dict["Studienfelder"] = "Studienfelder" B11 = st.select_slider(label='Ich möchte als Nächstes herausfinden, wie eine Ausbildung und/oder ein Studium aufgebaut ist.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B11", value=1, format_func=lambda x: labels[x]) if B11>=5: bedarflist.append("Aufbau") bedarf_dict["Aufbau"] = "Aufbau" B12 = st.select_slider(label='Ich möchte als Nächstes herausfinden, welche Arten von Freiwilligendiensten es gibt.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B12", value=1, format_func=lambda x: labels[x]) if B12>=5: bedarflist.append("Arten_von_Freiwilligendiensten") bedarf_dict["Arten_von_Freiwilligendiensten"] = "Arten_von_Freiwilligendiensten" with st.expander("Berufsbedarfe"): B13 = st.select_slider(label='Ich möchte als Nächstes verschiedene Berufe kennenlernen.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B13", value=1, format_func=lambda x: labels[x]) if B13>=5: bedarflist.append("verschiedene_Berufe_kennenlernen") bedarf_dict["verschiedene_Berufe_kennenlernen"] = "verschiedene Berufe kennenlernen" B14 = st.select_slider(label='Ich möchte als Nächstes herausfinden, in welchem Berufsfeld (Dienstleistung, Gesundheitswesen, ...) ich arbeiten möchte.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B14", value=1, format_func=lambda x: labels[x]) if B14>=5: bedarflist.append("Berufsfelder_kennenlernen") bedarf_dict["Berufsfelder_kennenlernen"] = "Berufsfelder_kennenlernen" B15 = st.select_slider(label='Ich möchte als Nächstes herausfinden, wie viel Geld man in einem Beruf verdient.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B15", value=1, format_func=lambda x: labels[x]) if B15>=5: bedarflist.append("Verdienst") bedarf_dict["Verdienst"] = "Verdienst" B16 = st.select_slider(label='Ich möchte als Nächstes herausfinden, wie sich der Arbeitsmarkt in der Zukunft entwickelt.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B16", value=1, format_func=lambda x: labels[x]) if B16>=5: bedarflist.append("Arbeitsmarkt_der_Zukunft") bedarf_dict["Arbeitsmarkt_der_Zukunft"] = "Arbeitsmarkt_der_Zukunft" B17 = st.select_slider(label='Ich möchte als Nächstes unterschiedliche Karrierewege kennenlernen.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B17", value=1, format_func=lambda x: labels[x]) if B17>=5: bedarflist.append("Karrierewege") bedarf_dict["Karrierewege"] = "Karrierewege" with st.expander("Finanzierungsbedarfe"): B18 = st.select_slider(label='Ich möchte als Nächstes herausfinden, wie ich eine Ausbildung oder ein (duales) Studium finanzieren kann.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B18", value=1, format_func=lambda x: labels[x]) if B18>=5: bedarflist.append("Finanzierung") bedarf_dict["Finanzierung"] = "Finanzierung" B19 = st.select_slider(label='Ich möchte als Nächstes herausfinden, welche Stiftungen es zur Ausbildungs- und Studienfinanzierung gibt.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B19", value=1, format_func=lambda x: labels[x]) if B19>=5: bedarflist.append("Stipendien") bedarf_dict["Stipendien"] = "Stipendien" with st.expander("Bewerbungs- und Zulassungsbedarfe"): B20 = st.select_slider(label='Ich möchte als Nächstes herausfinden, in welchem Zeitraum ich mich für den Ausbildungs- oder Studiengang bewerben muss, den ich aufnehmen möchte.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B20", value=1, format_func=lambda x: labels[x]) if B20>=5: bedarflist.append("Bewerbungszeiträume") bedarf_dict["Bewerbungszeiträume"] = "Bewerbungszeiträume" B21 = st.select_slider(label='Ich möchte als Nächstes herausfinden, was die Zugangsvoraussetzungen für den Ausbildungs- oder Studiengang sind, für den ich mich bewerben möchte.' ,options=[1, 2, 3, 4, 5, 6, 7], key="B21", value=1, format_func=lambda x: labels[x]) if B21>=5: bedarflist.append("Bewerbungs-_und_Zulassungsvoraussetzungen") bedarf_dict["Bewerbungs-_und_Zulassungsvoraussetzungen"] = "Bewerbungs-_und_Zulassungsvoraussetzungen" #Merkmale Filter----------------------------------------- filter=["online"] # Filter einbezug und sortierung ####################################### ######################################################################## dataM5AM=dataM5.copy() answer5list=[answer5] if sec2 in [5,7] and sec4 in [5,7]: answer3M=answer3+answer7 answer5listM=answer5list+[answer9] dataM5AM = dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3M+ ["Nan","ata"]) | split_and_match(datae1['Studienbereich_Interessen'], answer5listM+ ["Nan","ata"]) ].copy() #Sorting R2 dataM5AM["rank2"]=6 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], ["Nan"]) & split_and_match(dataM5AM['Studienbereich_Interessen'], ["Nan"]) , "rank2"]=5 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], ["ata"]) & split_and_match(dataM5AM['Studienbereich_Interessen'], ["ata"]) , "rank2"]=4 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3M) & ~split_and_match(dataM5AM['Studienbereich_Interessen'], answer5listM) , "rank2"]=3 dataM5AM.loc[~split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3M) & split_and_match(dataM5AM['Studienbereich_Interessen'], answer5listM) , "rank2"]=2 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3M) & split_and_match(dataM5AM['Studienbereich_Interessen'], answer5listM) , "rank2"]=1 elif sec2 in [5,7]: answer3M=answer3 answer5listM=answer5list dataM5AM = dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3M+ ["Nan","ata"]) | split_and_match(dataM5AM['Studienbereich_Interessen'], answer5listM+ ["Nan","ata"]) ].copy() #Sorting R2 dataM5AM["rank2"]=6 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], ["Nan"]) & split_and_match(dataM5AM['Studienbereich_Interessen'], ["Nan"]) , "rank2"]=5 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], ["ata"]) & split_and_match(dataM5AM['Studienbereich_Interessen'], ["ata"]) , "rank2"]=4 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3M) & ~split_and_match(dataM5AM['Studienbereich_Interessen'], answer5listM) , "rank2"]=3 dataM5AM.loc[~split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3M) & split_and_match(dataM5AM['Studienbereich_Interessen'], answer5listM) , "rank2"]=2 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3M) & split_and_match(dataM5AM['Studienbereich_Interessen'], answer5listM) , "rank2"]=1 if sec2==1: # Sorting R2 dataM5AM["rank2"]=6 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], ["ata"]) & split_and_match(dataM5AM['Studienbereich_Interessen'], ["ata"]) , "rank2"]=5 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3) & ~split_and_match(dataM5AM['Studienbereich_Interessen'], answer5list) , "rank2"]=4 dataM5AM.loc[~split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3) & split_and_match(dataM5AM['Studienbereich_Interessen'], answer5list) , "rank2"]=3 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], answer3) & split_and_match(dataM5AM['Studienbereich_Interessen'], answer5list) , "rank2"]=2 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Interessen'], ["Nan"]) & split_and_match(dataM5AM['Studienbereich_Interessen'], ["Nan"]) , "rank2"]=1 # Fähigkeiten answer9list=[answer9] if sec4 in [5,7] and sec2 in [5,7]: answer7M=answer3+answer7 answer9listM=answer5list+[answer9] dataM5AM = dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Fähigkeiten'], answer7M+ ["Nan","ata"]) | split_and_match(dataM5AM['Studienbereich_Fähigkeiten'], answer9listM+ ["Nan","ata"]) ].copy() #Sorting R3 dataM5AM["rank3"]=6 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Fähigkeiten'], ["Nan"]) & split_and_match(dataM5AM['Studienbereich_Fähigkeiten'], ["Nan"]) , "rank3"]=5 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Fähigkeiten'], ["ata"]) & split_and_match(dataM5AM['Studienbereich_Fähigkeiten'], ["ata"]) , "rank3"]=4 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Fähigkeiten'], answer7M) & ~split_and_match(dataM5AM['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=3 dataM5AM.loc[~split_and_match(dataM5AM['Fachgruppe_Fähigkeiten'], answer7M) & split_and_match(dataM5AM['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=2 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Fähigkeiten'], answer7M) & split_and_match(dataM5AM['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=1 elif sec4 in [5,7]: answer7M=answer7 answer9listM=answer9list dataM5AM = dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Fähigkeiten'], answer7M+ ["Nan","ata"]) | split_and_match(dataM5AM['Studienbereich_Fähigkeiten'], answer9listM+ ["Nan","ata"]) ].copy() #Sorting R3 dataM5AM["rank3"]=6 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Fähigkeiten'], ["Nan"]) & split_and_match(dataM5AM['Studienbereich_Fähigkeiten'], ["Nan"]) , "rank3"]=5 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Fähigkeiten'], ["ata"]) & split_and_match(dataM5AM['Studienbereich_Fähigkeiten'], ["ata"]) , "rank3"]=4 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Fähigkeiten'], answer7M) & ~split_and_match(dataM5AM['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=3 dataM5AM.loc[~split_and_match(dataM5AM['Fachgruppe_Fähigkeiten'], answer7M) & split_and_match(dataM5AM['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=2 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Fähigkeiten'], answer7M) & split_and_match(dataM5AM['Studienbereich_Fähigkeiten'], answer9listM) , "rank3"]=1 if sec4==1: # Sorting R3 dataM5AM["rank3"]=6 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Fähigkeiten'], ["ata"]) & split_and_match(dataM5AM['Studienbereich_Fähigkeiten'], ["ata"]) , "rank3"]=5 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Fähigkeiten'], answer7) & ~split_and_match(dataM5AM['Studienbereich_Fähigkeiten'], answer9list) , "rank3"]=4 dataM5AM.loc[~split_and_match(dataM5AM['Fachgruppe_Fähigkeiten'], answer7) & split_and_match(dataM5AM['Studienbereich_Fähigkeiten'], answer9list) , "rank3"]=3 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Fähigkeiten'], answer7) & split_and_match(dataM5AM['Studienbereich_Fähigkeiten'], answer9list) , "rank3"]=2 dataM5AM.loc[split_and_match(dataM5AM['Fachgruppe_Fähigkeiten'], ["Nan"]) & split_and_match(dataM5AM['Studienbereich_Fähigkeiten'], ["Nan"]) , "rank3"]=1 # Studium if answer2!=None: if answer2=="Studium": answer2list=[answer2] else: answer2list=[answer2, "Studium", "Duales Studium"] else: answer2list=[answer2] if sec1 in [5,7]: dataM5AM = dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], answer2list+ ["Nan","ata"]) ].copy() # Sorting R4 if answer2!="Studium": dataM5AM["rank4"]=5 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank4"]=4 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["Studium"]) , "rank4"]=3 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank4"]=2 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["Duales Studium"]) , "rank4"]=1 else: dataM5AM["rank4"]=4 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank4"]=3 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank4"]=2 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], answer2list) , "rank4"]=1 if sec1==1: # Sorting R4 if answer2!="Studium": dataM5AM["rank4"]=5 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["Studium"]) , "rank4"]=4 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank4"]=3 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["Duales Studium"]) , "rank4"]=2 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank4"]=1 else: dataM5AM["rank4"]=4 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["ata"]) , "rank4"]=3 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], answer2list) , "rank4"]=2 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Studium_Ausbildung'], ["Nan"]) , "rank4"]=1 # Ort if sec6 == 7: dataM5AM = dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], answer12 + ["Nan","ata"]) ].copy() dataM5AM["rank5"]=4 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], ["Nan"]) , "rank5"]=3 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], ["ata"]) , "rank5"]=2 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], answer12) , "rank5"]=1 if sec6 == 5: dataM5AM["rank5"]=4 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], ["Nan"]) , "rank5"]=3 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], ["ata"]) , "rank5"]=2 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], answer12) , "rank5"]=1 if sec6==1: dataM5AM["rank5"]=4 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], ["ata"]) , "rank5"]=3 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], answer12) , "rank5"]=2 dataM5AM.loc[split_and_match(dataM5AM['Auswahl_Orte'], ["Nan"]) , "rank5"]=1 st.title("Ergebnistabelle") st.write("Im folgenden Bereich erhältst du eine Übersicht unterschiedlicher Angebote, die hilfreich in deiner aktuellen Situation zur Studienorientierung sein können. Bitte öffne die nachfolgende Tabelle, suche Dir für Dich passende Angebote aus und bearbeite diese in den nächsten 60 Minuten. Merke dir dabei die Listenposition des von dir bearbeiteten Angebotes, bzw. der Angebote, weil Du in der Nachbefragung danach gefragt werden wirst.") # Angebote die Bedarfe erfüllen filtern bedarflist = [col for col in bedarflist if (dataM5AM[col] == 1).any()] #st.write(bedarflist) for l in bedarflist: dataM5AM.loc[dataM5AM[l]==1, 'pointsfilB'] += 1 dataM5AM.loc[dataM5AM[l]==1, 'pointsfilBSORT'] += 1 dataM5AM.loc[dataM5AM[l]==1, 'pointsfilBSORTlist'] += ";"+str(l) dataM5AM.loc[dataM5AM[l]==1, 'pointsfilBlist'] += ";"+str(l) #B1_e = st.expander("Empfehlung") dataW=dataM5AM[dataM5AM["pointsfilB"]>0].copy() dataWsave=dataW.copy() dataWsave=dataWsave.sort_values( by=["pointsfilB","pointsfilBSORT","rank2","rank3","rank4","rank5","random_tiebreaker"], ascending=False ).reset_index(drop=True).copy() more=None IDs="NONE" # B2 Block if bedarflist: #bedarfspecified = st.multiselect('Welche von den ausgewählten Interessen willst du nutzen?', list(bedarf_dict.values()), default=None, #key="qbs") #matching_keys = [key for key, value in bedarf_dict.items() if value in bedarfspecified] #bedarfspecified = [col for col in matching_keys if (dataM5AM[col] == 1).any()] if bedarflist==[]: st.write("Sorry dafür haben wir nichts in der momentanen Auswahl.") else: #for l in bedarfspecified: #dataW.loc[dataW[l]==1, 'pointsfilBS'] += 1 #dataW.loc[dataW[l]==1, 'pointsfilBSSORTlist'] += ";"+str(l) #dataWS = dataW[dataW["pointsfilBS"]>0] # Sort and add Platz column (same rank if only random_tiebreaker differs) dataWS=dataW dataWS = dataWS.sort_values( by=["pointsfilB","pointsfilBSORT","rank2","rank3","rank4","rank5","random_tiebreaker"], ascending=False ).reset_index(drop=True) dataWS.insert(0, 'Platz', dataWS[["pointsfilB","pointsfilBSORT","rank2","rank3","rank4","rank5"]] .apply(tuple, axis=1) .rank(method='dense', ascending=True) .astype(int) ) B2_e = st.expander("**Angebotsempfehlung: Klicke hier für Orientierungsangebote, die dir helfen.**") with B2_e: cols = ["Link","Art_Angebot", "Inhalt_Angebot", "Anbieter_Angebot", "Auswahl_Orte", "Zeitaufwand_Angebot"] column_config = { "Link": st.column_config.LinkColumn( "Link", display_text="🔗 Öffnen", width=90 ), "Art_Angebot": st.column_config.TextColumn( "Art", width=80 ), "Inhalt_Angebot": st.column_config.TextColumn( "Inhalt", width=150 ), "Anbieter_Angebot": st.column_config.TextColumn( "Anbieter", width=100 ), "Auswahl_Orte": st.column_config.TextColumn( "Orte", width=100 ), "Zeitaufwand_Angebot": st.column_config.TextColumn( "Zeitaufwand", width=100 ), } st.dataframe( dataWS[cols].head(10), column_config=column_config, hide_index=True, use_container_width=True ) IDs = "_".join(dataWS["ID"].head(10).astype(str).tolist()) if "more" not in st.session_state: st.session_state.more = False if len(dataWS) > 10: if st.button("Zeige mehr an", key="B2_mehr"): st.session_state.more = True # ← persist the click if st.session_state.more: # ← use session state, not the button return value st.dataframe( dataWS[cols].iloc[10:20], column_config=column_config, hide_index=True, use_container_width=True, ) IDs = "_".join(dataWS["ID"].head(10).astype(str).tolist()) ########################################################################## # SAVE TO GOOGLE SHEETS ########################################################################## # ── Collect outputs safely ────────────────────────────────────── def safe_df_str(var_name, df_var, cols): try: return df_to_str(df_var, cols) except Exception: return "nicht verfügbar" out_cols_1 = ["Link","ID","rank1","rank2","rank3","rank4"] out_cols_2 = ["Link","ID","rank1","rank2","rank3","rank4"] out_cols_3 = ["Link","ID","rank1","rank2","rank3","rank4"] out_cols_4 = ["Link","ID","rank1","rank2","rank3","rank4"] out_cols_M5 = ["Link","ID","Art_Angebot", "Inhalt_Angebot","Anbieter_Angebot", "Auswahl_Orte", "Zeitaufwand_Angebot","pointsfilB","pointsfilBlist","rank2","rank3","rank4","rank5","random_tiebreaker"] out_cols_M5B = ["Link","ID","Platz","Art_Angebot", "Inhalt_Angebot","Anbieter_Angebot", "Auswahl_Orte", "Zeitaufwand_Angebot","pointsfilB","pointsfilBlist","rank2","rank3","rank4","rank5","random_tiebreaker"] with B2_e: linkbutton= st.button("**Weiter machen mit der Nachbefragung**") if linkbutton: payload = { # ── Inputs Block 1 ────────────────────────────────────────── "q1_bildungsweg_sicherheit": answer1, "q2_bildungsweg_auswahl": answer2, "s1_weiss_nicht": skip1, # ── Inputs Block 2 ────────────────────────────────────────── "q3_interessen": ", ".join(answer3) if isinstance(answer3, list) else answer3, "q4_interessen_sicherheit": answer4, "s2_weiss_nicht": skip2, # ── Inputs Block 3 ────────────────────────────────────────── "q7_faehigkeiten": ", ".join(answer7) if isinstance(answer7, list) else answer7, "q8_faehigkeiten_sicherheit": answer8, "s3_weiss_nicht": skip3, # ── Inputs Block 4 ────────────────────────────────────────── "q11_region_sicherheit": answer11, "q12_region_orte": ", ".join(answer12) if isinstance(answer12, list) else answer12, "s4_weiss_nicht": skip4, # ── Filter Block 1 ────────────────────────────────────────── "filter_angebotsmerkmale": ", ".join(filter) if filter else "", # ── Bedarf sliders ────────────────────────────────────────── "B1": B1, "B2": B2, "B3": B3, "B4": B4, "B5": B5, "B6": B6, "B7": B7, "B8": B8, "B82": B82,"B9": B9, "B10": B10,"B11": B11, "B12": B12,"B13": B13,"B14": B14,"B15": B15, "B16": B16,"B17": B17,"B18": B18,"B19": B19, "B20": B20,"B21": B21, "bedarflist_auto": ", ".join(bedarflist), "bedarflist_manual": ", ".join(bedarfspecified) if 'bedarfspecified' in dir() else "", # ── Filter M5 ─────────────────────────────────────────────── "filter_M5": ", ".join(filter) if filter else "", # ── Outputs ───────────────────────────────────────────────── "more10":st.session_state.more, "out_empfehlung_bildungsweg": safe_df_str("e1", datae1old.head(10), out_cols_1), "out_empfehlung_interessen": safe_df_str("e2", datae2old.head(10), out_cols_2), "out_empfehlung_interessenS": safe_df_str("e2s", dataesold.head(10), out_cols_2), "out_empfehlung_faehigkeiten": safe_df_str("e3", datae3old.head(10), out_cols_3), "out_empfehlung_faehigkeitenS": safe_df_str("e3s", datae3sold.head(10), out_cols_3), "out_empfehlung_region": safe_df_str("e4", datae4old.head(10), out_cols_4), #"out_empfehlung_M5_B1": safe_df_str("m5", dataWsave.head(20), out_cols_M5), "out_empfehlung_M5_B2": safe_df_str("m5b2", dataWS.head(20) if 'dataWS' in dir() else None, out_cols_M5B), } save_all(user_id, payload) print("Alles gespeichert!") link= "https://sosci.sowi.uni-mannheim.de/osa_2026/?q=Bedarfe26_Till_post&id="+user_id+"&en="+IDs+"&bn="+str(answer1)+"__" +str(answer2)+"__"+str(skip1)+"__" +str(", ".join(answer3) if isinstance(answer3, list) else answer3)+"__"+str(answer4)+"__"+str(skip2)+"__"+str(", ".join(answer7) if isinstance(answer7, list) else answer7)+"__"+str(answer8)+"__"+str(skip3)+"__"+str(answer11)+"__"+str(", ".join(answer12) if isinstance(answer12, list) else answer12)+"__"+str(skip4)+"__"+str(B1)+"__"+str(B2)+"__"+str(B3)+"__"+str(B4)+"__"+str(B5)+"__"+str(B6)+"__"+str(B7)+"__"+str(B8)+"__"+str(B82)+"__"+str(B9)+"__"+str(B10)+"__"+str(B11)+"__"+str(B12)+"__"+str(B13)+"__"+str(B14)+"__"+str(B15)+"__"+str(B16)+"__"+str(B17)+"__"+str(B18)+"__"+str(B19)+"__"+str(B20)+"__"+str(B21)+"__"+str(st.session_state.more) #if bedarflist: st.markdown( f'