antonymilne Claude commited on
Commit
0511d44
·
1 Parent(s): 22e2ea0

Simplify overview_by_order_status function

Browse files

- Refactor overview_by_order_status to use COLUMN_TO_AGGFUNC constant
- Rename value_col parameter to column for consistency
- Remove redundant title setting in update_layout
- Update target in app.py to use "column" parameter name

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

Files changed (2) hide show
  1. app.py +1 -1
  2. charts.py +5 -23
app.py CHANGED
@@ -115,7 +115,7 @@ overview_page = vm.Page(
115
  targets=[
116
  "region_bar_chart.value_col",
117
  "category_bar_chart.value_col",
118
- "order_status_pie_chart.value_col",
119
  "month_line_chart.column",
120
  "segment_bar_chart.value_col",
121
  ],
 
115
  targets=[
116
  "region_bar_chart.value_col",
117
  "category_bar_chart.value_col",
118
+ "order_status_pie_chart.column",
119
  "month_line_chart.column",
120
  "segment_bar_chart.value_col",
121
  ],
charts.py CHANGED
@@ -318,38 +318,20 @@ def overview_by_month(data_frame, column="Sales"):
318
 
319
 
320
  @capture("graph")
321
- def overview_by_order_status(data_frame, value_col="Sales"):
322
- """Pie chart showing distribution by Order Status."""
323
- if value_col == "Order ID":
324
- status_metric = (
325
- data_frame.groupby("Order Status", as_index=False)["Order ID"]
326
- .nunique()
327
- .rename(columns={"Order ID": "Orders"})
328
- )
329
- agg_col = "Orders"
330
- elif value_col == "Customer ID":
331
- status_metric = (
332
- data_frame.groupby("Order Status", as_index=False)["Customer ID"]
333
- .nunique()
334
- .rename(columns={"Customer ID": "Customers"})
335
- )
336
- agg_col = "Customers"
337
- else:
338
- status_metric = data_frame.groupby("Order Status", as_index=False)[value_col].sum()
339
- agg_col = value_col
340
 
341
  fig = px.pie(
342
- status_metric,
343
  names="Order Status",
344
- values=agg_col,
345
  color="Order Status",
346
- title=f"{agg_col} by Order Status",
347
  color_discrete_map={"In Transit": PRIMARY_COLOR, "Processing": ORANGE_COLOR, "Delivered": GREEN_COLOR},
348
  hole=0.6,
349
  )
350
 
351
  fig.update_layout(
352
- title=f"{agg_col} | By Order Status",
353
  legend={"yanchor": "bottom", "y": -0.2, "xanchor": "right", "orientation": "v"},
354
  )
355
 
 
318
 
319
 
320
  @capture("graph")
321
+ def overview_by_order_status(data_frame, column="Sales"):
322
+ grouped_df = data_frame.groupby("Order Status", as_index=False).agg({column: COLUMN_TO_AGGFUNC[column]})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
323
 
324
  fig = px.pie(
325
+ grouped_df,
326
  names="Order Status",
327
+ values=column,
328
  color="Order Status",
329
+ title=f"{column} | By Order Status",
330
  color_discrete_map={"In Transit": PRIMARY_COLOR, "Processing": ORANGE_COLOR, "Delivered": GREEN_COLOR},
331
  hole=0.6,
332
  )
333
 
334
  fig.update_layout(
 
335
  legend={"yanchor": "bottom", "y": -0.2, "xanchor": "right", "orientation": "v"},
336
  )
337