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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +65 -87
app.py CHANGED
@@ -147,118 +147,96 @@ def generate_sample_data():
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")
 
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")