Modell mit 2 Bedingungen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
PyTo
User
Beiträge: 1
Registriert: Montag 25. Juli 2022, 13:45

Halihallo:),

Ich versuche gerade ein Modell zu basteln, welches das höchste Jahreseinkommen mit der gerningsten Belegungsrate eines Airbnb des unten dargstellten Dataframes aufweist. Dazu sage ich in dem Modell, dass das Jahreseinkommen mindestens über einem Grenzwert, in diesem Fall über dem Mittelwert liegen soll und dabei von diesen Werten die geringste Belegungsrate aufweisen soll. Leider funktioniert mein Modell nicht. Da der Grenzwert 15552.091202379906 beträgt, sollten nur die Zeilen betrachtet werden, welche über diesem Grenzwert im Jahreseinkommen liegen. Das Bedeutet Zeile 1 bis 12 Reinickendorf Shared room. Wenn ich von diesen Werten nun die geringste Belegungsrate nehme, muss dies Zeile 4 Charlottenburg-Wilm. Entire home/apt 0.680425 104.386792 0.650863 24798.633577 sein. Leider funktioniert mein Modell unten nicht. Hat jemand zufällig eine Idee, wo der Fehler liegt. Auch beim Output "Dies ist 47.14% höher als der Grenzwert", welches mir der Output des Modells liefert, stimmt der berechnete Wert überhaupt nicht :(. Auch hier bin ich leider ratlos.

Ich hoffe jmd hat ein guten Tipp, woran es in meinem Model hängt

Vielen Dank
Schöne Grüße
Leonie :)))


----------------Dataframe----------------------

neighbourhood_group room_type gebucht price Belegungsrate gewichtetes_Jahreseinkommen
0 Pankow Shared room 0.433333 208.466667 0.755342 57474.260000
1 Charlottenburg-Wilm. Private room 0.621697 128.621697 0.702787 32993.701351
2 Tempelhof - Schöneberg Private room 0.556777 113.495726 0.765293 31703.001023
3 Mitte Entire home/apt 0.618962 99.936494 0.705201 25723.501528
4 Charlottenburg-Wilm. Entire home/apt 0.680425 104.386792 0.650863 24798.633577
5 Friedrichshain-Kreuzberg Entire home/apt 0.480808 80.951111 0.792660 23420.840882
6 Pankow Entire home/apt 0.553320 80.499497 0.766469 22520.625120
7 Tempelhof - Schöneberg Entire home/apt 0.608089 79.023710 0.724541 20898.409731
8 Lichtenberg Entire home/apt 0.508532 69.211604 0.791930 20005.933057
9 Neukölln Entire home/apt 0.404797 64.221657 0.839350 19675.116720
10 Steglitz - Zehlendorf Entire home/apt 0.651786 76.004464 0.659711 18301.467833
11 Treptow - Köpenick Entire home/apt 0.560403 68.305369 0.721844 17996.631064
12 Reinickendorf Shared room 0.500000 57.000000 0.821918 17100.000000
13 Reinickendorf Entire home/apt 0.713043 62.121739 0.628493 14250.726957
14 Pankow Private room 0.534471 48.504924 0.793630 14050.663206
15 Lichtenberg Private room 0.550914 47.007833 0.802446 13768.262869
16 Friedrichshain-Kreuzberg Private room 0.457364 44.445568 0.841610 13653.133192
17 Mitte Private room 0.455420 41.992133 0.833680 12777.923392
18 Marzahn - Hellersdorf Entire home/apt 0.862500 74.862500 0.461233 12603.101875
19 Spandau Shared room 0.500000 37.000000 0.882877 11923.250000
20 Neukölln Private room 0.404478 35.179133 0.869651 11166.651211
21 Tempelhof - Schöneberg Shared room 0.625000 43.333333 0.659932 10437.916667
22 Treptow - Köpenick Private room 0.552901 36.300341 0.778671 10317.102121
23 Charlottenburg-Wilm. Shared room 0.520000 36.800000 0.745863 10018.432000
24 Friedrichshain-Kreuzberg Shared room 0.636364 39.127273 0.665903 9510.061488

---------------Modell-----------------------------------------------------------------------

#Modell welches das höchste Jahreseinkommen mit der geringsten Belegungsquote einbringt, um aufwand für Airbnb gering zu halten
#Grenzwert für das Jahreseinkommen (Einfacher Mittelwert)

grenz = dfana['gewichtetes_Jahreseinkommen'].mean()
grenz

15552.091202379906



#Das höchste Jahreseinkommen, welches über dem Grenzwert liegt und die geringste Belegungsquote hat

for i, row, in dfana[['gewichtetes_Jahreseinkommen', 'neighbourhood_group', 'room_type', 'Belegungsrate']].iterrows():
if dfana.loc[i, 'gewichtetes_Jahreseinkommen'] > grenz:
if dfana.loc[i, 'Belegungsrate'] < dfana.loc[i+1, 'Belegungsrate']:
print(f"Empfohlener Stadtteil: {dfana.loc[i, 'neighbourhood_group']}")
print(f"Empfohlener Raumtyp: {dfana.loc[i, 'room_type']}")
print(f"Geschätztes Jahreseinkommen: {dfana.loc[i, 'gewichtetes_Jahreseinkommen']}")
print(f"Dies ist {grenz/dfana.loc[i, 'gewichtetes_Jahreseinkommen']* 100:.2f}% höher als der Grenzwert")
break


Empfohlener Stadtteil: Charlottenburg-Wilm.
Empfohlener Raumtyp: Private room
Geschätztes Jahreseinkommen: 32993.70135077888
Dies ist 47.14% höher als der Grenzwert
einfachTobi
User
Beiträge: 512
Registriert: Mittwoch 13. November 2019, 08:38

Du kannst so verfahren, wie du es mit dem gewichteten Jahreseinkommen getan hast:

Code: Alles auswählen

grenzwert = dfana["gewichtetes_Jahreseinkommen"].mean()
ueber_grenzwert  = dfana[dfana["gewichtetes_Jahreseinkommen"] > grenzwert]
print(ueber_grenzwert[ueber_grenzwert["Belegungsrate"] == ueber_grenzwert["Belegungsrate"].min()])
Antworten