Pranav0111 commited on
Commit
68070f2
Β·
verified Β·
1 Parent(s): 7dd7fc1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +87 -65
app.py CHANGED
@@ -147,96 +147,118 @@ def generate_sample_data():
147
 
148
  # --- Page Rendering Functions ---
149
  def render_dashboard():
150
- st.header("πŸ“Š Comprehensive Business Performance Dashboard")
151
 
152
- # Generate sample data with more complex structure
153
- data = generate_sample_data()
154
- data['Profit_Margin'] = data['Revenue'] * np.random.uniform(0.1, 0.3, len(data))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
 
156
- # Top-level KPI Section
157
  col1, col2, col3, col4 = st.columns(4)
158
  with col1:
159
  st.metric("Total Revenue",
160
- f"${data['Revenue'].sum():,.2f}",
161
- delta=f"{data['Revenue'].pct_change().mean()*100:.2f}%")
162
  with col2:
163
  st.metric("Total Users",
164
- f"{data['Users'].sum():,}",
165
- delta=f"{data['Users'].pct_change().mean()*100:.2f}%")
166
  with col3:
167
  st.metric("Avg Engagement",
168
- f"{data['Engagement'].mean():.2%}",
169
- delta=f"{data['Engagement'].pct_change().mean()*100:.2f}%")
170
  with col4:
171
- st.metric("Profit Margin",
172
- f"{data['Profit_Margin'].mean():.2%}",
173
- delta=f"{data['Profit_Margin'].pct_change().mean()*100:.2f}%")
174
 
175
- # Visualization Grid
176
  col1, col2 = st.columns(2)
177
 
178
  with col1:
179
- st.subheader("Revenue & Profit Trends")
180
- fig_revenue = go.Figure()
181
- fig_revenue.add_trace(go.Scatter(
182
- x=data['Date'],
183
- y=data['Revenue'],
184
  mode='lines',
185
- name='Revenue',
186
  line=dict(color='blue')
187
  ))
188
- fig_revenue.add_trace(go.Scatter(
189
- x=data['Date'],
190
- y=data['Profit_Margin'],
191
  mode='lines',
192
- name='Profit Margin',
193
- line=dict(color='green')
194
  ))
195
- fig_revenue.update_layout(height=350)
196
- st.plotly_chart(fig_revenue, use_container_width=True)
197
 
198
  with col2:
199
- st.subheader("User Engagement Analysis")
200
- fig_engagement = px.scatter(
201
- data,
202
- x='Users',
203
- y='Engagement',
204
- color='Category',
205
- size='Revenue',
206
- hover_data=['Date'],
207
- title='User Engagement Dynamics'
 
 
 
 
 
208
  )
209
- fig_engagement.update_layout(height=350)
210
- st.plotly_chart(fig_engagement, use_container_width=True)
211
-
212
- # Category Performance
213
- st.subheader("Category Performance Breakdown")
214
- category_performance = data.groupby('Category').agg({
215
- 'Revenue': 'sum',
216
- 'Users': 'sum',
217
- 'Engagement': 'mean'
218
- }).reset_index()
219
-
220
- fig_category = px.bar(
221
- category_performance,
222
- x='Category',
223
- y='Revenue',
224
- color='Engagement',
225
- title='Revenue by Category with Engagement Overlay'
226
- )
227
- st.plotly_chart(fig_category, use_container_width=True)
228
 
229
- # Bottom Summary
230
- st.subheader("Quick Insights")
231
- insights_col1, insights_col2 = st.columns(2)
232
 
233
- with insights_col1:
234
- st.metric("Top Performing Category",
235
- category_performance.loc[category_performance['Revenue'].idxmax(), 'Category'])
 
 
236
 
237
- with insights_col2:
238
- st.metric("Highest Engagement Category",
239
- category_performance.loc[category_performance['Engagement'].idxmax(), 'Category'])
 
240
 
241
  def render_analytics():
242
  st.header("πŸ” Data Analytics")
 
147
 
148
  # --- Page Rendering Functions ---
149
  def render_dashboard():
150
+ st.header("πŸ“Š Advanced Business Intelligence Dashboard")
151
 
152
+ # Enhanced Data Generation with Predictive Elements
153
+ def generate_predictive_data():
154
+ dates = pd.date_range(start='2024-01-01', end='2024-02-15', freq='D')
155
+ base_data = pd.DataFrame({
156
+ 'Date': dates,
157
+ 'Revenue': np.random.normal(1000, 100, len(dates)),
158
+ 'Users': np.random.randint(100, 200, len(dates)),
159
+ 'Engagement': np.random.uniform(0.5, 0.9, len(dates)),
160
+ 'Category': np.random.choice(['Digital', 'Physical', 'Service'], len(dates))
161
+ })
162
+
163
+ # Simple predictive modeling
164
+ base_data['Predicted_Revenue'] = base_data['Revenue'] * np.linspace(1, 1.2, len(dates))
165
+ base_data['Revenue_Trend'] = np.where(base_data['Predicted_Revenue'] > base_data['Revenue'], 'Positive', 'Negative')
166
+
167
+ return base_data
168
+
169
+ # Data Preparation
170
+ data = generate_predictive_data()
171
+
172
+ # Sidebar Filters
173
+ st.sidebar.header("Dashboard Filters")
174
+ selected_categories = st.sidebar.multiselect(
175
+ "Select Categories",
176
+ options=data['Category'].unique(),
177
+ default=data['Category'].unique()
178
+ )
179
+
180
+ date_range = st.sidebar.date_input(
181
+ "Select Date Range",
182
+ [data['Date'].min(), data['Date'].max()]
183
+ )
184
+
185
+ # Filter Data
186
+ filtered_data = data[
187
+ (data['Category'].isin(selected_categories)) &
188
+ (data['Date'].between(date_range[0], date_range[1]))
189
+ ]
190
 
191
+ # KPI Metrics
192
  col1, col2, col3, col4 = st.columns(4)
193
  with col1:
194
  st.metric("Total Revenue",
195
+ f"${filtered_data['Revenue'].sum():,.2f}",
196
+ delta=f"{filtered_data['Revenue'].pct_change().mean()*100:.2f}%")
197
  with col2:
198
  st.metric("Total Users",
199
+ f"{filtered_data['Users'].sum():,}",
200
+ delta=f"{filtered_data['Users'].pct_change().mean()*100:.2f}%")
201
  with col3:
202
  st.metric("Avg Engagement",
203
+ f"{filtered_data['Engagement'].mean():.2%}")
 
204
  with col4:
205
+ st.metric("Predicted Trend",
206
+ filtered_data['Revenue_Trend'].mode()[0])
 
207
 
208
+ # Advanced Visualizations
209
  col1, col2 = st.columns(2)
210
 
211
  with col1:
212
+ st.subheader("Revenue Forecast")
213
+ forecast_fig = go.Figure()
214
+ forecast_fig.add_trace(go.Scatter(
215
+ x=filtered_data['Date'],
216
+ y=filtered_data['Revenue'],
217
  mode='lines',
218
+ name='Actual Revenue',
219
  line=dict(color='blue')
220
  ))
221
+ forecast_fig.add_trace(go.Scatter(
222
+ x=filtered_data['Date'],
223
+ y=filtered_data['Predicted_Revenue'],
224
  mode='lines',
225
+ name='Predicted Revenue',
226
+ line=dict(color='red', dash='dot')
227
  ))
228
+ st.plotly_chart(forecast_fig, use_container_width=True)
 
229
 
230
  with col2:
231
+ st.subheader("Category Performance")
232
+ category_performance = filtered_data.groupby('Category').agg({
233
+ 'Revenue': ['sum', 'mean'],
234
+ 'Users': 'sum',
235
+ 'Engagement': 'mean'
236
+ }).reset_index()
237
+ category_performance.columns = ['Category', 'Total_Revenue', 'Avg_Revenue', 'Total_Users', 'Avg_Engagement']
238
+
239
+ perf_fig = px.bar(
240
+ category_performance,
241
+ x='Category',
242
+ y='Total_Revenue',
243
+ color='Avg_Engagement',
244
+ hover_data=['Total_Users', 'Avg_Revenue']
245
  )
246
+ st.plotly_chart(perf_fig, use_container_width=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
247
 
248
+ # Predictive Insights
249
+ st.subheader("Predictive Insights")
250
+ col1, col2 = st.columns(2)
251
 
252
+ with col1:
253
+ top_category = category_performance.loc[category_performance['Total_Revenue'].idxmax()]
254
+ st.metric("Top Revenue Category",
255
+ top_category['Category'],
256
+ delta=f"${top_category['Total_Revenue']:,.2f}")
257
 
258
+ with col2:
259
+ growth_prediction = filtered_data['Predicted_Revenue'].mean() / filtered_data['Revenue'].mean() - 1
260
+ st.metric("Revenue Growth Prediction",
261
+ f"{growth_prediction:.2%}")
262
 
263
  def render_analytics():
264
  st.header("πŸ” Data Analytics")