This assignment assesses students' ability to perform transit operations analysis using Excel across four progressive skill tiers: basic aggregation (SUM, AVERAGE), conditional aggregation (SUMIF), PivotTables and charts for visualisation, and Python in Excel for programmatic data wrangling, statistics, and matplotlib visualisation. Students work across three sheets — Operations (raw data), Analysis (formula and PivotTable work), and Dashboard (charts and Python outputs) — reinforcing cross-sheet referencing, absolute vs. relative addressing, and the distinction between Excel-native and Python-native workflows. By the end, students should be able to build a complete analytical pipeline from raw operational records to a visual executive dashboard.
In general, award partial credit whenever a student demonstrates meaningful understanding of the required technique even if the implementation is incomplete. A correct formula placed in the wrong cell earns approximately 60% of the question points — the student understood the formula but misread the instructions. A correct numeric value typed as a hard-coded constant always earns 0 points, because the core learning objective is formula construction, not arithmetic. For multi-part questions (Task 3 with four cells, Task 9 with multiple chart elements), award proportional partial credit based on the fraction of correct sub-components. For Python in Excel tasks, award partial credit if the code is structurally correct but produces an error due to a minor typo in a column name, as this demonstrates understanding of the approach. Do not award partial credit for completely blank cells or for answers that reference the wrong sheet entirely with no evident attempt to cross-reference Operations data.
1. Click the Analysis sheet tab. 2. Click cell B2. 3. Type =SUM( then click the Operations sheet tab. 4. Select cells K2 through K81 (all 80 TotalRiders values) using the mouse or by typing the range. 5. Close the parenthesis and press Enter. The formula bar should read =SUM(Operations!K2:K81). 6. Verify the result is a plausible total (in the tens of thousands range for 80 routes).
Award full 5 points only if a SUM formula referencing Operations!K2:K81 (or an equivalent full-column range that correctly captures all 80 rows) is present in B2. Award 3 out of 5 if the formula is correct but placed in the wrong cell (e.g. B3). Award 0 points if the cell contains a hard-coded number with no formula, regardless of whether the value is correct. Award 4 out of 5 if the range is off by one row (e.g. K2:K80) but the formula structure is otherwise correct.
Why is it important to use a formula rather than typing the total directly, especially in a live transit operations dashboard that might be refreshed with new data each week?
1. Click cell B3 on the Analysis sheet. 2. Begin typing =ROUND( 3. Inside the ROUND, type AVERAGE( 4. Click the Operations sheet tab and select N2:N81. 5. Close the AVERAGE parenthesis with ). 6. Type a comma and then 2. 7. Close the ROUND parenthesis and press Enter. The formula bar should read =ROUND(AVERAGE(Operations!N2:N81),2). 8. Confirm the result displays exactly two decimal places.
Award full 5 points for =ROUND(AVERAGE(Operations!N2:N81),2) or equivalent range in B3. Award 3 out of 5 if AVERAGE is present and correctly references Operations!N2:N81 but ROUND is missing. Award 3 out of 5 if both functions are present but placed in the wrong cell. Award 0 points for a hard-coded value even if numerically correct. Deduct 1 point if the decimal places argument is wrong (e.g. 0 or 1 instead of 2).
When reporting fuel efficiency metrics to a transit authority, why might you choose to round averages to 2 decimal places specifically, and could over-rounding or under-rounding ever mislead stakeholders?
1. Click cell B6 on the Analysis sheet. 2. Type =SUMIF( 3. Click the Operations sheet, select C2:C81, then press F4 to make it absolute: Operations!$C$2:$C$81. 4. Type a comma. 5. Click back to Analysis sheet and click cell A6 (leave this relative — no dollar signs). 6. Type a comma. 7. Click Operations sheet, select K2:K81, press F4: Operations!$K$2:$K$81. 8. Close parenthesis and press Enter. 9. Click B6 again, copy (Ctrl+C). 10. Select B7:B9 and paste (Ctrl+V). Each cell should reference the corresponding zone label in A7, A8, A9. 11. Verify that B6 through B9 each show different non-zero totals.
Award full 10 points if all four cells B6:B9 contain SUMIF formulas with absolute references on Operations ranges and relative references on A6:A9, and produce correct zone totals. Award 7 out of 10 if the formula logic is correct but absolute references are missing and only B6 is correct (the fill-down produced wrong results). Award 5 out of 10 if all four cells contain hard-coded zone names as string literals in the criteria argument but the rest of the formula is correct. Award 3 out of 10 if only one correct formula exists in B6 and the others are missing or wrong. A correct formula placed in wrong rows (e.g. B5:B8) earns at most 6 out of 10.
What are the trade-offs between using SUMIF with zone labels in helper cells (A6:A9) versus hard-coding the zone names as strings directly in the formula? How does the helper-cell approach improve maintainability?
1. Click cell B12 on the Analysis sheet. 2. Type =SUMIF( 3. Select Operations!P2:P81 (IncidentReported column), press F4, type ,"Yes", 4. Select Operations!J2:J81 (OnTimeTrips), press F4, close parenthesis. 5. Type / 6. Type SUMIF( 7. Select Operations!P2:P81 again (absolute), type ,"Yes", 8. Select Operations!I2:I81 (CompletedTrips), absolute, close parenthesis. 9. Press Enter. The formula bar should read =SUMIF(Operations!$P$2:$P$81,"Yes",Operations!$J$2:$J$81)/SUMIF(Operations!$P$2:$P$81,"Yes",Operations!$I$2:$I$81). 10. With B12 selected, go to Home > Number group and click the Percentage (%) button to format as a percentage.
Award full 10 points for the correct two-SUMIF ratio in B12, formatted as a percentage. Award 7 out of 10 if the formula logic is correct but the cell is not formatted as a percentage (raw decimal shown). Award 5 out of 10 if only one SUMIF is used and the denominator is a total count (e.g. 80) rather than a conditional sum of CompletedTrips. Award 3 out of 10 if AVERAGEIF is used instead of the ratio approach but references the correct columns. A hard-coded percentage value earns 0 points regardless of accuracy.
Why might an on-time performance rate calculated only for incident days be a useful KPI for a transit authority, and what decisions might it inform compared to the overall on-time rate?
1. Click anywhere in the Operations sheet data or select the full range A1:P81. 2. Go to Insert tab > PivotTable > From Table/Range. 3. Confirm the range is Operations!$A$1:$P$81. 4. Select 'Existing Worksheet' and type or click Analysis!$D$2 as the location. 5. Click OK. 6. In the PivotTable Fields pane, drag RouteCode to the Rows area. 7. Drag VehicleType to the Columns area. 8. Drag FuelUsedGallons to the Values area. 9. Click the dropdown arrow on 'Sum of FuelUsedGallons' in the Values area, select 'Value Field Settings', and change the summarise function to Average. Click OK. 10. Right-click any value cell inside the PivotTable, select 'Number Format', choose Number with 2 decimal places, click OK.
Award full 15 points if a PivotTable exists on the Analysis sheet with RouteCode in rows, VehicleType in columns, Average of FuelUsedGallons in values, formatted to 2 decimal places, starting at or very near D2. Award 10 out of 15 if the PivotTable is correctly configured but placed in the wrong starting cell (not D2) or on the wrong sheet. Award 8 out of 15 if Sum is used instead of Average but all other aspects are correct. Award 5 out of 15 if a PivotTable exists but rows and columns are swapped. No partial credit for a manually typed cross-tab table that mimics a PivotTable.
How does a PivotTable's ability to quickly swap rows and columns help a transit analyst explore hypotheses about fuel usage patterns compared to writing SUMIF or AVERAGEIF formulas manually?
1. Click the Analysis sheet tab. 2. Select cells A6:B9 (zone labels and totals). 3. Go to Insert tab > Charts group > Insert Bar or Column Chart > Clustered Bar (the horizontal bar option, first in the Bar row). 4. A chart will appear on the Analysis sheet. 5. Click the chart to select it. 6. Go to Chart Design tab > Move Chart > Object in 'Dashboard'. Click OK. 7. On the Dashboard sheet, the chart will appear. Click and drag it so the top-left corner aligns with cell A2. 8. Drag the bottom-right resize handle to fit within H20. 9. Click the chart title text box (default may say 'TotalRiders' or similar) and type 'Total Ridership by Zone'. 10. Click outside the chart to deselect.
Award full 15 points if a clustered Bar chart (horizontal bars) exists on the Dashboard sheet within A2:H20, sourced from the zone summary data, with the correct title. Award 10 out of 15 if a Column chart (vertical bars) is used instead of a Bar chart but all other requirements are met — the student chose the wrong orientation. Award 8 out of 15 if the chart type and data are correct but the chart is on the Analysis sheet instead of Dashboard. Award 5 out of 15 if the chart exists on Dashboard but uses the wrong data source (e.g. raw Operations data). Deduct 2 points if the title is missing or significantly misspelled. Do not penalise for minor chart formatting choices (colours, gridlines).
When would you choose a horizontal bar chart over a vertical column chart for communicating data to a transit authority board, and does the number of categories or the length of category labels influence this decision?
1. Click cell A22 on the Dashboard sheet. 2. Press Ctrl+Shift+Alt+P (or go to Formulas > Python) to open a Python in Excel cell. 3. Type the following Python code: df = xl("Operations!A1:P81", headers=True) — this loads all Operations data into a pandas DataFrame. 4. On a new line, write the groupby and agg call: result = df.groupby("RouteCode", as_index=False).agg(CompletedTrips=("CompletedTrips", "sum"), TotalRiders=("TotalRiders", "sum"), AvgFuelGallons=("FuelUsedGallons", "mean")). 5. Round: result["AvgFuelGallons"] = result["AvgFuelGallons"].round(2). 6. Return: result.sort_values("RouteCode").reset_index(drop=True). 7. Press Ctrl+Enter to execute. 8. Excel should spill a DataFrame table starting at A22 with columns RouteCode, CompletedTrips, TotalRiders, AvgFuelGallons.
Award full 15 points if: (a) a PY formula exists in A22, (b) the output DataFrame has exactly the four specified columns in any order, (c) all 8 RouteCodes are present, (d) AvgFuelGallons is rounded to 2 decimal places, (e) results are sorted ascending by RouteCode. Award 10 out of 15 if the DataFrame is correct but not sorted or not rounded. Award 8 out of 15 if the column names do not match exactly (e.g. 'FuelUsedGallons' instead of 'AvgFuelGallons') but the data is correct. Award 5 out of 15 if a PY formula exists but returns a Python object preview (not spilled as a DataFrame) — the student may need to right-click and choose 'Show as Array'. A hard-coded table earns 0 points.
How does Python in Excel's xl() function bridge the gap between Excel's grid and pandas DataFrames, and what advantages does this offer compared to building the same summary with PivotTables or SUMIF formulas?
1. Click cell A42 on the Dashboard sheet. 2. Open a Python in Excel cell (Ctrl+Shift+Alt+P). 3. Type: df = xl("Operations!A1:P81", headers=True). 4. On the next line, define the column list: cols = ["ScheduledTrips", "CompletedTrips", "TotalRiders", "FuelUsedGallons", "AvgSpeedMPH"]. 5. On the final line, return: df[cols].corr().round(3). 6. Press Ctrl+Enter. 7. Excel should spill a 5x5 correlation matrix with row and column labels matching the five variable names. Diagonal values should all be 1.000.
Award full 10 points if a PY formula in A42 returns a 5x5 correlation matrix with the correct five column/row labels and values rounded to 3 decimal places. Award 7 out of 10 if the matrix is correct but rounded to 2 decimal places. Award 5 out of 10 if only a subset of the five columns is included (e.g. only 3 columns). Award 3 out of 10 if the formula returns a Python object preview rather than a spilled matrix — student needs to choose 'Show as Array'. A hard-coded matrix earns 0 points.
Looking at the correlation matrix output, which pairs of operational variables show the strongest relationships, and what might that imply for route planning or resource allocation decisions at TVRTA?
1. Click cell A55 on the Dashboard sheet. 2. Open a Python in Excel cell. 3. First line: import matplotlib.pyplot as plt (note: in Python in Excel, matplotlib may be pre-imported, but explicit import is safer). 4. Load data: df = xl("Operations!A1:P81", headers=True). 5. Create pivot: pivot = df.groupby(["Zone", "VehicleType"])["TotalRiders"].mean().unstack(). This produces a DataFrame with Zone as index, VehicleType columns (Articulated, MiniBus, Standard), and mean TotalRiders as values. 6. Create figure: fig, ax = plt.subplots(figsize=(8, 5)). 7. Plot: pivot.plot(kind="bar", ax=ax). 8. Set title: ax.set_title("Avg Ridership by Zone and Vehicle Type"). 9. Set x label: ax.set_xlabel("Zone"). 10. Set y label: ax.set_ylabel("Average Riders"). 11. Set legend: ax.legend(title="VehicleType"). 12. Layout: plt.tight_layout(). 13. Final line (return): fig. 14. Press Ctrl+Enter. Excel should embed a bar chart image in A55.
Award full 15 points if: (a) a PY formula is in A55, (b) Excel renders an embedded chart image (not a Python object preview), (c) the chart is a grouped bar chart showing Zone on x-axis and Average Riders on y-axis, (d) chart title is 'Avg Ridership by Zone and Vehicle Type' or very close, (e) x and y axis labels are present, (f) a legend is present. Award 10 out of 15 if the chart renders correctly but title, axis labels, or legend is missing (deduct 1-2 points per missing element). Award 7 out of 15 if a chart image appears but it is not grouped by VehicleType (e.g. only one series per zone). Award 3 out of 15 if the code runs without error but returns a Python object preview rather than a rendered image — student needs to right-click and select 'Show as Image'. Hard-coded or screenshot-pasted images earn 0 points.
What additional customisations to this matplotlib chart (e.g. colour palette, value labels on bars, figure size, error bars) would make it more suitable for inclusion in an executive report, and how do these differ from what Excel's built-in charting tools offer?