Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pandas as pd | |
| def get_market_submarket(df, google_ola): | |
| filtered_row = df[df['google_ola'] == google_ola].iloc[0] | |
| return filtered_row['rent_combined'], filtered_row['building_sf'], filtered_row['rented_sf'], filtered_row['market_costar'], filtered_row['full_submarket_costar'] | |
| def main(): | |
| st.set_page_config(initial_sidebar_state="collapsed", layout="wide") | |
| st.session_state['user_select_value'] = "" | |
| st.session_state['year_buit'] = 1999 | |
| st.session_state['submarket_val'] = "" | |
| st.session_state['market_val'] = "" | |
| def display_list_and_input(): | |
| option_choice = st.selectbox("Select a property address", df_options) | |
| return option_choice | |
| if 'user_select_value' not in st.session_state: | |
| st.session_state['user_select_value'] = "" | |
| if 'building_sf' not in st.session_state: | |
| st.session_state['building_sf'] = 0 | |
| if 'rented_sf' not in st.session_state: | |
| st.session_state['rented_sf'] = 0 | |
| if 'execution_dates' not in st.session_state: | |
| st.session_state['execution_dates'] = 2014 | |
| if 'LSF' not in st.session_state: | |
| st.session_state['LSF'] = 75000 | |
| if 'prediction' not in st.session_state: | |
| st.session_state['prediction'] = 0 | |
| st.title("Search") | |
| df_properties = pd.read_csv("all_data_with_market.csv", encoding='utf-8') | |
| df_options = st.session_state.get("df_options", [st.session_state['user_select_value']] + df_properties.google_ola.tolist()) | |
| # search_options = [""] + options | |
| selected_option = display_list_and_input() | |
| col_1_1, col_1_2 = st.columns([1, 2]) | |
| with col_1_1: | |
| st.write('Filter definition') | |
| min_property_size, max_property_size = st.slider('Property Size % Filter', min_value=-100, max_value=200, step = 10, | |
| value=(-50, 100)) | |
| min_property_lease_size, max_property_lease_size = st.slider('Lease Size % Filter', min_value=-100, max_value=300, step = 10, | |
| value=(-100, 300)) | |
| months_back = st.slider('Lease Range Filter (Last X Months)', min_value=0, max_value=36, | |
| value=(14)) | |
| st.session_state['min_property_size_perc'] = min_property_size | |
| st.session_state['max_property_size_perc'] = max_property_size | |
| st.session_state['min_property_lease_size_perc'] = min_property_lease_size | |
| st.session_state['max_property_lease_size_perc'] = max_property_lease_size | |
| st.session_state['months_back'] = months_back | |
| if selected_option != "": | |
| # user's filter for property size is a range in percentage around picked property | |
| min_size = (100 + st.session_state['min_property_size_perc']) / 100 * st.session_state['building_sf'] | |
| max_size = (100 + st.session_state['max_property_size_perc']) / 100 * st.session_state['building_sf'] | |
| # # user's filter for lease size is a range in percentage around picked lease | |
| lease_min_size = (100 + st.session_state['min_property_lease_size_perc']) / 100 * st.session_state['rented_sf'] | |
| lease_max_size = (100 + st.session_state['max_property_lease_size_perc']) / 100 * st.session_state['rented_sf'] | |
| #apply all filters | |
| 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_cnt = df_properties[mask].copy() | |
| # st.markdown(f"**Number of Rows After Applying Filters:** <span style='font-size:24px'>{len(df_properties_cnt)}</span>", unsafe_allow_html=True) | |
| # st.write("Number of Rows After Applying Filters : ", len(df_properties_cnt)) | |
| if st.button("Submit"): | |
| if selected_option == "": | |
| st.write(":red[Please choose the property address]") | |
| else: | |
| st.session_state['user_select_value'] = selected_option | |
| st.session_state['execution_dates'] = 2014 | |
| prediction, building_sf, rented_sf, market_val, submarket_val = get_market_submarket(df_properties, selected_option) | |
| st.session_state['market_val'] = market_val | |
| st.session_state['submarket_val'] = submarket_val | |
| st.session_state['building_sf'] = building_sf | |
| st.session_state['rented_sf'] = rented_sf | |
| st.session_state['prediction'] = prediction | |
| st.switch_page("pages/market_rent_estimation.py") | |
| if __name__ == "__main__": | |
| main() |