Pragya Jatav commited on
Commit
0a4f4cb
·
1 Parent(s): 3620944
Streamlit_functions.py CHANGED
@@ -858,6 +858,35 @@ def media_data():
858
  media_df = pd.DataFrame(extracted_data)
859
  return media_df
860
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
861
 
862
  def elasticity(media_df):
863
  fig = go.Figure()
@@ -869,7 +898,7 @@ def elasticity(media_df):
869
  orientation='h', # Setting the orientation to horizontal
870
  marker_color='rgba(75, 136, 257, 1)',
871
  text= media_df['coeff'].round(2),
872
- textposition="outside"
873
  ))
874
 
875
  # Updating layout for better visualization
@@ -888,6 +917,7 @@ def elasticity(media_df):
888
  gridcolor='gray', # Setting y-axis gridline color to gray
889
  zeroline=False, # Hiding the y-axis zero line
890
  ),
 
891
  # plot_bgcolor='black',
892
  # paper_bgcolor='black',
893
  # font=dict(color='lightgray') # Changing font color to white for better contrast
@@ -909,7 +939,7 @@ def half_life(media_df):
909
  orientation='h', # Setting the orientation to horizontal
910
  marker_color='rgba(75, 136, 257, 1)',
911
  text= media_df['coeff'].round(2),
912
- textposition="outside"
913
  ))
914
 
915
  # Updating layout for better visualization
@@ -927,7 +957,7 @@ def half_life(media_df):
927
  showgrid=False,
928
  gridcolor='gray', # Setting y-axis gridline color to gray
929
  zeroline=False, # Hiding the y-axis zero line
930
- ),
931
  # plot_bgcolor='black',
932
  # paper_bgcolor='black',
933
  # font=dict(color='lightgray') # Changing font color to white for better contrast
 
858
  media_df = pd.DataFrame(extracted_data)
859
  return media_df
860
 
861
+ def elasticity_and_media(media_df):
862
+ # Create subplots
863
+ fig = make_subplots(rows=1, cols=2, subplot_titles=("Chart 1", "Chart 2"))
864
+ fig.add_trace(
865
+ go.Bar(
866
+ x=media_df['coeff'],
867
+ y=media_df['category'],
868
+ orientation='h', # Setting the orientation to horizontal
869
+ marker_color='rgba(75, 136, 257, 1)',
870
+ text= media_df['coeff'].round(2),
871
+ textposition="outside"
872
+ ),row=1, col=1
873
+ )
874
+
875
+ fig.add_trace(
876
+ go.Bar(
877
+ x=media_df[media_df['half_life'].isnull()==False]['half_life'],
878
+ y=media_df[media_df['half_life'].isnull()==False]['category'],
879
+ orientation='h', # Setting the orientation to horizontal
880
+ marker_color='rgba(75, 136, 257, 1)',
881
+ text= media_df['coeff'].round(2),
882
+ textposition="outside"
883
+ ),row=1, col=2
884
+ )
885
+ fig.update_layout(
886
+ margin=dict(l=40, r=40, t=40, b=40), # Adjust the margins
887
+ )
888
+
889
+ return fig
890
 
891
  def elasticity(media_df):
892
  fig = go.Figure()
 
898
  orientation='h', # Setting the orientation to horizontal
899
  marker_color='rgba(75, 136, 257, 1)',
900
  text= media_df['coeff'].round(2),
901
+ textposition="auto"
902
  ))
903
 
904
  # Updating layout for better visualization
 
917
  gridcolor='gray', # Setting y-axis gridline color to gray
918
  zeroline=False, # Hiding the y-axis zero line
919
  ),
920
+ margin=dict(r=10)
921
  # plot_bgcolor='black',
922
  # paper_bgcolor='black',
923
  # font=dict(color='lightgray') # Changing font color to white for better contrast
 
939
  orientation='h', # Setting the orientation to horizontal
940
  marker_color='rgba(75, 136, 257, 1)',
941
  text= media_df['coeff'].round(2),
942
+ textposition="auto"
943
  ))
944
 
945
  # Updating layout for better visualization
 
957
  showgrid=False,
958
  gridcolor='gray', # Setting y-axis gridline color to gray
959
  zeroline=False, # Hiding the y-axis zero line
960
+ ),margin=dict(l=20)
961
  # plot_bgcolor='black',
962
  # paper_bgcolor='black',
963
  # font=dict(color='lightgray') # Changing font color to white for better contrast
__pycache__/Streamlit_functions.cpython-310.pyc CHANGED
Binary files a/__pycache__/Streamlit_functions.cpython-310.pyc and b/__pycache__/Streamlit_functions.cpython-310.pyc differ
 
__pycache__/classes.cpython-310.pyc CHANGED
Binary files a/__pycache__/classes.cpython-310.pyc and b/__pycache__/classes.cpython-310.pyc differ
 
classes.py CHANGED
@@ -61,6 +61,7 @@ class Channel:
61
  bounds,channel_bounds_min,channel_bounds_max,
62
  conversion_rate=1,
63
  modified_spends=None,
 
64
  penalty=True,
65
  ):
66
  self.name = name
@@ -74,6 +75,13 @@ class Channel:
74
  else:
75
  self.modified_spends = modified_spends
76
 
 
 
 
 
 
 
 
77
  self.response_curve_type = response_curve_type
78
  self.response_curve_params = response_curve_params
79
  self.bounds = bounds
@@ -87,7 +95,7 @@ class Channel:
87
  # self.actual_sales = self.response_curve(self.actual_spends)#sales.copy()#
88
  self.actual_total_spends = self.actual_spends.sum()
89
  self.actual_total_sales = self.actual_sales.sum()
90
- self.modified_sales = self.calculate_sales()
91
  self.modified_total_spends = self.modified_spends.sum()
92
  self.modified_total_sales = self.modified_sales.sum()
93
  self.delta_spends = self.modified_total_spends - self.actual_total_spends
@@ -266,8 +274,8 @@ class Scenario:
266
  return total_modified_spends
267
 
268
  def calculate_actual_total_sales(self):
269
- total_actual_sales = 0 #self.constant.sum() +
270
- # # print(self.correction)
271
  for channel in self.channels.values():
272
  total_actual_sales += channel.actual_total_sales
273
  # # print(channel.actual_total_sales)
@@ -275,7 +283,9 @@ class Scenario:
275
  return total_actual_sales
276
 
277
  def calculate_modified_total_sales(self):
 
278
  total_modified_sales = 0 #self.constant.sum() + self.correction.sum()
 
279
  for channel in self.channels.values():
280
  # print(channel,channel.modified_total_sales)
281
  total_modified_sales += channel.modified_total_sales
 
61
  bounds,channel_bounds_min,channel_bounds_max,
62
  conversion_rate=1,
63
  modified_spends=None,
64
+ modified_sales=None,
65
  penalty=True,
66
  ):
67
  self.name = name
 
75
  else:
76
  self.modified_spends = modified_spends
77
 
78
+ if modified_sales is None:
79
+ # self.modified_sales = self.calculate_sales()
80
+ self.modified_sales = self.actual_sales.copy()
81
+ else:
82
+ self.modified_sales = self.calculate_sales()
83
+ # self.modified_spends = modified_spends
84
+
85
  self.response_curve_type = response_curve_type
86
  self.response_curve_params = response_curve_params
87
  self.bounds = bounds
 
95
  # self.actual_sales = self.response_curve(self.actual_spends)#sales.copy()#
96
  self.actual_total_spends = self.actual_spends.sum()
97
  self.actual_total_sales = self.actual_sales.sum()
98
+
99
  self.modified_total_spends = self.modified_spends.sum()
100
  self.modified_total_sales = self.modified_sales.sum()
101
  self.delta_spends = self.modified_total_spends - self.actual_total_spends
 
274
  return total_modified_spends
275
 
276
  def calculate_actual_total_sales(self):
277
+ total_actual_sales = 0#self.constant.sum() + self.correction.sum()
278
+ print("a")
279
  for channel in self.channels.values():
280
  total_actual_sales += channel.actual_total_sales
281
  # # print(channel.actual_total_sales)
 
283
  return total_actual_sales
284
 
285
  def calculate_modified_total_sales(self):
286
+
287
  total_modified_sales = 0 #self.constant.sum() + self.correction.sum()
288
+ # print(total_modified_sales)
289
  for channel in self.channels.values():
290
  # print(channel,channel.modified_total_sales)
291
  total_modified_sales += channel.modified_total_sales
pages/1_Model_Quality.py CHANGED
@@ -20,6 +20,7 @@ col1, col2 = st.columns(2)
20
 
21
  st.dataframe(sf.model_metrics_table_func(),hide_index = True,use_container_width=True)
22
 
 
23
  with col1:
24
  st.plotly_chart(sf.elasticity(media_df))
25
  with col2:
 
20
 
21
  st.dataframe(sf.model_metrics_table_func(),hide_index = True,use_container_width=True)
22
 
23
+ st.plotly_chart(sf.elasticity_and_media(media_df))
24
  with col1:
25
  st.plotly_chart(sf.elasticity(media_df))
26
  with col2:
summary_df.pkl CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:3f7c369a1c873502ccb8c5ea2caa32211c854be174030515980f0b600180698f
3
  size 1822
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9b4eac3b946dbc2110dc592ef0ca72a418abaeddfca33d0f2c8dee3b2f4d3246
3
  size 1822