Spaces:
Sleeping
Sleeping
Update pages/market_rent_estimation.py
Browse files- pages/market_rent_estimation.py +11 -19
pages/market_rent_estimation.py
CHANGED
|
@@ -21,14 +21,15 @@ def main():
|
|
| 21 |
st.set_page_config(initial_sidebar_state="collapsed", layout="wide")
|
| 22 |
tab1, tab2 = st.tabs(["Comps", "Combined estimation"])#, "Market distributions", "Rexy"])
|
| 23 |
|
| 24 |
-
distances_matrix = np.load('
|
| 25 |
-
df_properties = pd.read_csv("
|
| 26 |
|
| 27 |
|
| 28 |
# update the values of date and price of the historical lease to today date and nan value for price
|
| 29 |
row_index = (df_properties[df_properties['google_ola'] == st.session_state['user_select_value']].index)[0]
|
| 30 |
-
df_properties.loc[row_index, ["months_since", "rent_combined", "execution_date"]] = [0,
|
| 31 |
-
|
|
|
|
| 32 |
|
| 33 |
# user's filter for property size is a range in percentage around picked property
|
| 34 |
min_size = (100 + st.session_state['min_property_size_perc']) / 100 * st.session_state['building_sf']
|
|
@@ -39,26 +40,17 @@ def main():
|
|
| 39 |
lease_max_size = (100 + st.session_state['max_property_lease_size_perc']) / 100 * st.session_state['rented_sf']
|
| 40 |
|
| 41 |
#apply all filters
|
| 42 |
-
|
| 43 |
-
mask = (df_properties['rented_sf'] >= lease_min_size) & (df_properties['rented_sf'] <= lease_max_size) & (df_properties['building_sf'] >= min_size) & (df_properties['building_sf'] <= max_size) & (df_properties['months_since'] <= st.session_state['months_back']) & (df_properties['market_costar'] <= st.session_state['market_val'])
|
| 44 |
df_properties_filtered = df_properties[mask]
|
| 45 |
|
| 46 |
# create distances matrix for remaining rows
|
| 47 |
-
|
| 48 |
-
|
|
|
|
|
|
|
|
|
|
| 49 |
|
| 50 |
-
# row_index = df_properties_filtered.index.get_loc(st.session_state['user_select_value'])
|
| 51 |
df_properties_filtered = df_properties_filtered.reset_index()
|
| 52 |
-
row_index = (df_properties_filtered[df_properties_filtered['google_ola'] == st.session_state['user_select_value']].index)[0]
|
| 53 |
-
distances = distances_matrix_filtered[row_index]
|
| 54 |
-
sorted_indices = np.argsort(distances)
|
| 55 |
-
sorted_distances = distances[sorted_indices]
|
| 56 |
-
sorted_indexes = df_properties_filtered.index[sorted_indices]
|
| 57 |
-
reordered_df_properties_filtered = df_properties_filtered.loc[sorted_indexes]
|
| 58 |
-
|
| 59 |
-
first_row_coords = (reordered_df_properties_filtered.loc[row_index, 'lat'],
|
| 60 |
-
reordered_df_properties_filtered.loc[row_index, 'long'])
|
| 61 |
-
|
| 62 |
reordered_df_properties_filtered['distance_from_first (km)'] = reordered_df_properties_filtered.apply(calculate_distance, axis=1)
|
| 63 |
|
| 64 |
|
|
|
|
| 21 |
st.set_page_config(initial_sidebar_state="collapsed", layout="wide")
|
| 22 |
tab1, tab2 = st.tabs(["Comps", "Combined estimation"])#, "Market distributions", "Rexy"])
|
| 23 |
|
| 24 |
+
distances_matrix = np.load('all_data_with_market.npy')
|
| 25 |
+
df_properties = pd.read_csv("all_data_with_market.csv", encoding='utf-8')
|
| 26 |
|
| 27 |
|
| 28 |
# update the values of date and price of the historical lease to today date and nan value for price
|
| 29 |
row_index = (df_properties[df_properties['google_ola'] == st.session_state['user_select_value']].index)[0]
|
| 30 |
+
df_properties.loc[row_index, ["months_since", "rent_combined", "execution_date"]] = [0, 0, None]
|
| 31 |
+
first_row_coords = (df_properties.loc[row_index, 'lat'],
|
| 32 |
+
df_properties.loc[row_index, 'long'])
|
| 33 |
|
| 34 |
# user's filter for property size is a range in percentage around picked property
|
| 35 |
min_size = (100 + st.session_state['min_property_size_perc']) / 100 * st.session_state['building_sf']
|
|
|
|
| 40 |
lease_max_size = (100 + st.session_state['max_property_lease_size_perc']) / 100 * st.session_state['rented_sf']
|
| 41 |
|
| 42 |
#apply all filters
|
| 43 |
+
mask = (df_properties['rented_sf'] >= lease_min_size) & (df_properties['rented_sf'] <= lease_max_size) & (df_properties['building_sf'] >= min_size) & (df_properties['building_sf'] <= max_size) & (df_properties['months_since'] <= st.session_state['months_back']) & (df_properties['market_costar'] == st.session_state['market_val'])
|
|
|
|
| 44 |
df_properties_filtered = df_properties[mask]
|
| 45 |
|
| 46 |
# create distances matrix for remaining rows
|
| 47 |
+
filltered_rows_embeding = distances_matrix[mask]
|
| 48 |
+
selected_row_embeding = distances_matrix[row_index]
|
| 49 |
+
distances_to_properties = np.linalg.norm(filltered_rows_embeding - selected_row_embeding, axis=1)
|
| 50 |
+
df_properties_filtered["score_pred"] = distances_to_properties
|
| 51 |
+
reordered_df_properties_filtered = df_properties_filtered.sort_values("score_pred", ascending=False)
|
| 52 |
|
|
|
|
| 53 |
df_properties_filtered = df_properties_filtered.reset_index()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
reordered_df_properties_filtered['distance_from_first (km)'] = reordered_df_properties_filtered.apply(calculate_distance, axis=1)
|
| 55 |
|
| 56 |
|