precios-demo / app.py
GianJSX's picture
Update app.py
2f07243 verified
raw
history blame
No virus
7.95 kB
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("<h2 style='text-align: left;'>Comparador de precios vs competencia</h1>", 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")