import streamlit as st import pandas as pd import csv st.logo( "images/ledesma-logo.png", icon_image="images/ledesma-logo.png", ) st.image("images/ledesma-logo.png", width=300) st.markdown("

Comparador de precios vs competencia

", unsafe_allow_html=True) st.divider() st.subheader("Sucursales:") df = pd.read_csv("products.csv") stores = pd.read_csv("sucursales.csv") provinces = stores['provincia'].unique() provinces_dict = { 'Ciudad Autónoma de Buenos Aires': 'AR-C', 'La Rioja': 'AR-F', 'Santiago del Estero': 'AR-G', 'Catamarca': 'AR-K', 'Neuquén': 'AR-Q', 'Río Negro': 'AR-R', 'Santa Fe': 'AR-S', 'Tucumán': 'AR-T', 'Chubut': 'AR-U', 'Córdoba': 'AR-X', 'Santa Cruz': 'AR-Z' } provinces_dataframe = pd.DataFrame({ 'provincia':['AR-C','AR-F','AR-G','AR-K','AR-Q','AR-R','AR-S','AR-T','AR-U','AR-X','AR-Z'], 'provincia_nombre':['Ciudad Autónoma de Buenos Aires','La Rioja','Santiago del Estero','Catamarca','Neuquén','Río Negro','Santa Fe','Tucumán','Chubut','Córdoba','Santa Cruz'] }) provinces_list = ['Ciudad Autónoma de Buenos Aires','La Rioja','Santiago del Estero','Catamarca','Neuquén','Río Negro','Santa Fe','Tucumán','Chubut','Córdoba','Santa Cruz'] sucursales_seleccionadas = st.multiselect('Selecciona provincias de interes', provinces_list, placeholder="Elige una opcion") # check if sucursales_seleccionadas no es null if sucursales_seleccionadas: for sucursal_seleccionada in sucursales_seleccionadas: #st.write(f'**{sucursal_seleccionada}**') province_code = provinces_dict[sucursal_seleccionada] stores_selected = stores[stores['provincia']==province_code] stores_selected = stores_selected[['banderaDescripcion','direccion', 'localidad']] stores_selected.columns = ['Marca','Direccion', 'Localidad'] #st.write(stores_selected) province_codes = [provinces_dict[sucursal_seleccionada] for sucursal_seleccionada in sucursales_seleccionadas] selected_provinces = stores[stores['provincia'].isin(province_codes)] store_codes = selected_provinces['sucursalId'].to_list() st.map(selected_provinces,latitude='lat', longitude='lng', color="#00a3e0", use_container_width=True) tab1, tab2, tab3 = st.tabs(["Stevia 50u", "Stevia 96u", "Stevia 200u"]) products = pd.read_csv("Products_unique.csv") product_stores_original = pd.read_csv("Store-Products.csv") def show_stats(product, competitors_list, product_stores_original, store_codes, provinces_dataframe, stores, cuantity): product_row = products[products['id']==product] st.text(product_row['nombre'].values[0]) st.image(f"images/ledesma{cuantity}u.png", width=200) product_stores_original = product_stores_original[product_stores_original['id_sucursal'].isin(store_codes)] #save to csv #TODO REMOVE THIS product_stores_original_test = product_stores_original.copy() product_stores_original_test.rename(columns={'id_sucursal': 'sucursalId'}, inplace=True) product_stores_original_test = pd.merge(product_stores_original_test, stores, on='sucursalId', how='inner') product_stores_original_test = pd.merge(product_stores_original_test, provinces_dataframe, on='provincia', how='inner') product_stores_original_test_filtered = product_stores_original_test[product_stores_original_test['id_producto'].isin(competitors_list + [product])] st.subheader("Comparativa de productos en las regiones seleccionadas") if product_stores_original_test_filtered.empty: st.warning("No se encontraron precios para los productos en las regiones seleccionadas") else: product_stores_original_test_filtered.to_csv(f"product_stores_original_test_filtered_{cuantity}.csv",index=False) st.bar_chart(product_stores_original_test_filtered,x='provincia_nombre',y='precio_lista',color='nombre_producto', stack=False, horizontal=True) competitors = product_stores_original[product_stores_original['id_producto'].isin(competitors_list)] product_presentation = product_stores_original[product_stores_original['id_producto'].isin([product])] if product_presentation.empty: st.warning("No se encontraron precios para el producto de Ledesma en las regiones seleccionadas") else: st.subheader("Precio del producto en las regiones seleccionadas") product_presentation.rename(columns={'id_sucursal': 'sucursalId'}, inplace=True) product_presentation = pd.merge(product_presentation, stores, on='sucursalId', how='inner') product_presentation = pd.merge(product_presentation, provinces_dataframe, on='provincia', how='inner') st.bar_chart(product_presentation,x='banderaDescripcion',y='precio_lista', stack=False,color='provincia_nombre') st.divider() if competitors.empty: st.warning("No se encontraron precios para los productos de la competencia en las regiones seleccionadas") else: ###### ###### st.subheader("Precio de los productos de la competencia en las regiones seleccionadas") competitors_50_brands = competitors['marca_producto'].unique() #reemplazar sucursalID por id competitors.rename(columns={'id_sucursal': 'sucursalId'}, inplace=True) competitors_join = pd.merge(competitors, stores, on='sucursalId', how='inner') competitors_join = pd.merge(competitors_join, provinces_dataframe, on='provincia', how='inner') print("competitors_join") print(competitors_join.columns) for brand in competitors_50_brands: st.write(brand) st.bar_chart(competitors_join[competitors_join['marca_producto']==brand],x='banderaDescripcion',y='precio_lista',color='provincia_nombre', stack=False) with tab1: ledesma_50_u = 7799086000266 competitors_ledesma_50_u = [7792129003620, 7791720030493, 7794940000758, 7790150812747] show_stats(ledesma_50_u, competitors_ledesma_50_u, product_stores_original, store_codes, provinces_dataframe, stores,50) with tab2: ledesma_100_u = 7799086000051 competitors_ledesma_100_u = [7794940000765, 7792129003637, 7791720030509, 7790150812761] show_stats(ledesma_100_u, competitors_ledesma_100_u, product_stores_original, store_codes, provinces_dataframe, stores,96) with tab3: ledesma_200_u = 7799086000198 competitors_ledesma_200_u = [7794940000772, 7792129003507, 7792129003644, 7790150812785] show_stats(ledesma_200_u, competitors_ledesma_200_u, product_stores_original, store_codes, provinces_dataframe, stores,200) st.divider() with st.expander("Regla de comparacion :pencil:"): col1, col2 , col3 = st.columns([1,2,1]) with col1: st.write("Producto") st.write("Competidores") with col2: st.write("Azucar Ledesma 1 kg :pencil:") st.button("Agregar competidores") st.text_area(label='Competidores agregados',value="Azucar La Perla 1 kg") col1, col2 , col3 = st.columns([1,2,1]) with col1: st.write("Ubicaciones :world_map:") st.button("Agregar sucursales") st.text_area(label='Ubicaciones incluidas',value="C. Pellegrini 3250,Hipermercado Carrefour,Rosario") col1, col2 , col3 = st.columns([1,3,1]) with col1: combo = st.selectbox( "Criterio", ("Menor precio", "Mayor precio"), ) with col2: if combo == "Menor precio": st.text_input("Notificar si el precio del producto es **menor** por un porcentaje de") if combo == "Mayor precio": st.text_input("Notificar si el precio del producto es **mayor** por un porcentaje de") st.checkbox("Notificar via email",value=True) st.button("Guardar regla")