File size: 4,709 Bytes
86ed73b
9aedd08
a9f7371
 
c9d3d23
 
b920ced
c9d3d23
86ed73b
1b4c833
9a9bb14
 
 
 
 
0888f10
86ed73b
 
 
 
 
 
 
c3372b1
 
 
 
86ed73b
 
 
 
36dfd92
 
 
86ed73b
 
6d6fe0c
86ed73b
 
 
 
 
ad1a420
 
 
 
ad8ac47
8e8b49c
069cffd
a1f0692
be0bdcd
8e8b49c
be0bdcd
 
069cffd
 
2473da5
77121f6
860a9c5
 
77121f6
 
860a9c5
645ce19
069cffd
 
860a9c5
 
069cffd
8e7f6c4
2bff3e4
c93395c
86ed73b
 
c4dc07b
12e1aef
3aa4bc2
36dfd92
3aa4bc2
36dfd92
3aa4bc2
c3372b1
3aa4bc2
 
c3372b1
 
36dfd92
3aa4bc2
 
86ed73b
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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()