ABCABCABC999 commited on
Commit
cbc1bb9
Β·
verified Β·
1 Parent(s): 5639617

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +53 -17
app.py CHANGED
@@ -5,12 +5,19 @@ import joblib
5
  # Load model and data
6
  @st.cache_resource
7
  def load_model_and_data():
8
- model = joblib.load("Quarterly_Sales_Revenue_model_v1_0.joblib")
9
- data = pd.read_csv("SuperKart_local.csv")
 
 
 
10
  return model, data
11
 
12
  # Prediction logic
13
- def predict_total_sales_by_store(store_ids, df, model):
 
 
 
 
14
  feature_cols = [
15
  'Product_Id', 'Store_Id', 'Product_Type', 'Product_Sugar_Content',
16
  'Store_Type', 'Store_Location_City_Type', 'Store_Size',
@@ -18,31 +25,60 @@ def predict_total_sales_by_store(store_ids, df, model):
18
  'Store_Establishment_Year', 'Total_Historical_Sales',
19
  'Num_Past_Transactions', 'Average_Historical_Sales'
20
  ]
21
- results = []
22
  for store_id in store_ids:
23
  store_df = df[df['Store_Id'] == store_id].copy()
 
24
  if store_df.empty:
25
- results.append((store_id, 0.0))
26
  continue
 
27
  X_input = store_df[feature_cols]
28
- predicted_sales = model.predict(X_input).sum()
29
- results.append((store_id, round(predicted_sales, 2)))
30
- return results
 
 
31
 
32
- # Load
 
 
 
 
 
33
  model, df = load_model_and_data()
34
 
35
  # UI
36
- st.title("🧾 Predict Total Quarterly Sales per Store")
37
- store_ids = st.multiselect("Select Store ID(s)", sorted(df["Store_Id"].unique()))
 
 
 
38
 
39
- if st.button("Predict Sales"):
 
40
  if not store_ids:
41
  st.warning("Please select at least one Store ID.")
42
  else:
43
- results = predict_total_sales_by_store(store_ids, df, model)
44
- st.subheader("πŸ“Š Predicted Sales:")
45
- for store_id, sales in results:
46
- #st.write(f"πŸ›’ Store {store_id}: ${sales:,.2f}")
47
- st.write(f"πŸ›’ Store {store_id}: β‚Ή{sales:,.2f}")
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
 
 
 
 
5
  # Load model and data
6
  @st.cache_resource
7
  def load_model_and_data():
8
+ model = joblib.load("deployment_files/Quarterly_Sales_Revenue_model_v1_0.joblib")
9
+ #model = joblib.load("Quarterly_Sales_Revenue_model_v1_0.joblib")
10
+
11
+ data = pd.read_csv("deployment_files/SuperKart_local.csv")
12
+
13
  return model, data
14
 
15
  # Prediction logic
16
+ def predict_quarterly_sales_by_store_and_product(store_ids, df, model):
17
+ store_results = []
18
+ product_results = []
19
+ total_sales = 0.0
20
+
21
  feature_cols = [
22
  'Product_Id', 'Store_Id', 'Product_Type', 'Product_Sugar_Content',
23
  'Store_Type', 'Store_Location_City_Type', 'Store_Size',
 
25
  'Store_Establishment_Year', 'Total_Historical_Sales',
26
  'Num_Past_Transactions', 'Average_Historical_Sales'
27
  ]
28
+
29
  for store_id in store_ids:
30
  store_df = df[df['Store_Id'] == store_id].copy()
31
+
32
  if store_df.empty:
33
+ store_results.append((store_id, 0.0))
34
  continue
35
+
36
  X_input = store_df[feature_cols]
37
+ y_pred = model.predict(X_input)
38
+
39
+ store_total_sales = sum(y_pred)
40
+ store_results.append((store_id, round(store_total_sales, 2)))
41
+ total_sales += store_total_sales
42
 
43
+ for product_id, sales in zip(store_df['Product_Id'], y_pred):
44
+ product_results.append((store_id, product_id, round(sales, 2)))
45
+
46
+ return store_results, product_results, round(total_sales, 2)
47
+
48
+ # Load model and data
49
  model, df = load_model_and_data()
50
 
51
  # UI
52
+ st.title("πŸ“ˆ Predict Quarterly Sales by Store and Product")
53
+
54
+ # Dropdowns
55
+ store_ids = st.multiselect("🏬 Select Store ID(s)", sorted(df["Store_Id"].unique()))
56
+ product_ids = st.multiselect("πŸ“¦ Select Product ID(s) (optional)", sorted(df["Product_Id"].unique()))
57
 
58
+ # Predict button
59
+ if st.button("Predict Quarterly Sales"):
60
  if not store_ids:
61
  st.warning("Please select at least one Store ID.")
62
  else:
63
+ store_results, product_results, total_sales = predict_quarterly_sales_by_store_and_product(store_ids, df, model)
64
+
65
+ # Display Store-wise sales
66
+ st.subheader("πŸͺ Store-wise Total Quarterly Sales")
67
+ for store, sales in store_results:
68
+ st.write(f"πŸ›’ Store {store}: β‚Ή{sales:,.2f}")
69
+
70
+ # Display Product-wise sales (optional filter)
71
+ st.subheader("πŸ“¦ Product-wise Sales (Filtered by Selected Stores)")
72
+ filtered_products = product_results
73
+ if product_ids:
74
+ filtered_products = [r for r in product_results if r[1] in product_ids]
75
+
76
+ if filtered_products:
77
+ product_df = pd.DataFrame(filtered_products, columns=["Store_Id", "Product_Id", "Predicted_Sales"])
78
+ st.dataframe(product_df)
79
+ else:
80
+ st.info("No product sales to display for selected filters.")
81
 
82
+ # Display total sales
83
+ st.subheader("πŸ“Š Total Quarterly Sales Across All Selected Stores")
84
+ st.success(f"β‚Ή{total_sales:,.2f}")