Cumulative Frequency Calculator
Enter class frequencies (comma-separated) and the starting lower boundary to generate the full cumulative frequency table instantly.
For an interactive graph, try the ogive graph maker or the frequency distribution table maker.
What Is Cumulative Frequency?
Cumulative frequency is the running total of frequencies as you move through a frequency distribution. Each entry sums all frequencies up to and including that class interval. The final cumulative frequency always equals N, the total number of observations in the dataset.
It answers the question: "How many data points fall at or below this value?" — which a standard frequency table cannot answer directly.
The word "cumulative" means increasing by accumulation: each new entry in the table adds to whatever came before it. Think of filling a jar with marbles one layer at a time. After each layer goes in, the cumulative frequency tells you the total number of marbles in the jar so far — not just how many were in that one layer.
Three properties hold without exception. Cumulative frequency never decreases — it either rises or stays flat when a class has zero observations, never falls. The final cumulative frequency always equals N, giving you a built-in check on your arithmetic. And cumulative frequency only makes sense for ordered data (ordinal, interval, or ratio scale). Applying it to nominal categories like eye colour or political party produces a number with no interpretable meaning, because the "order" you impose is arbitrary.
For the broader context, this topic sits within descriptive statistics — the set of techniques for summarizing and describing datasets before making inferences. Cumulative frequency is closely related to relative frequency and to frequency distributions more generally.
Frequency vs. Cumulative Frequency: The Key Difference
| Frequency | Cumulative Frequency | |
|---|---|---|
| What it counts | How many observations fall in this class | How many fall at or below this class |
| Direction | Each class independently | Running total — always increasing |
| Last value | Frequency of the final class only | Always equals N |
| Question answered | "How many scored 60–70?" | "How many scored 70 or below?" |
| Graph type | Histogram, frequency polygon | Ogive (cumulative frequency curve) |
Cumulative frequency tables also feed directly into finding the median, quartiles, and percentiles from grouped data. The interpolation formula for the median from a frequency table requires the cumulative frequency up to the median class — you cannot find it without the CF column.
Less Than and Greater Than Cumulative Frequency
There are two forms of cumulative frequency, and they answer opposite questions. Both are built from the same base frequency table; what changes is the direction of accumulation.
Less Than CF (More Common)
Add frequencies from the lowest class upward. Each entry tells you how many observations are less than or equal to the upper boundary of that class. The ogive rises from left to right in an S-shape.
Greater Than CF
Start from N and subtract each frequency as you move upward — or equivalently, add from the highest class downward. Each entry tells you how many observations are greater than or equal to the lower boundary of that class.
Worked Example: Less Than Cumulative Frequency
Marks scored out of 100 by 40 students:
| Class Interval | Frequency (f) | Less Than CF | Reading |
|---|---|---|---|
| 0–20 | 3 | 3 | 3 students scored ≤ 20 |
| 20–40 | 7 | 10 | 10 students scored ≤ 40 |
| 40–60 | 12 | 22 | 22 students scored ≤ 60 |
| 60–80 | 11 | 33 | 33 students scored ≤ 80 |
| 80–100 | 7 | 40 | 40 = N ✓ |
Worked Example: Greater Than Cumulative Frequency
Using the same 40-student dataset:
| Class Interval | Frequency (f) | Greater Than CF | Reading |
|---|---|---|---|
| 0–20 | 3 | 40 | 40 students scored ≥ 0 |
| 20–40 | 7 | 37 | 37 students scored ≥ 20 |
| 40–60 | 12 | 30 | 30 students scored ≥ 40 |
| 60–80 | 11 | 18 | 18 students scored ≥ 60 |
| 80–100 | 7 | 7 | 7 students scored ≥ 80 |
The Intersection Property: Both Ogives Always Meet at the Median
When you plot both the less-than and greater-than ogives on the same graph, they cross at exactly one point. The x-coordinate of that intersection is the median. This is not coincidence — it is a consequence of what the median means.
At the median, exactly half the data falls below it (so the less-than CF equals N/2) and exactly half falls above it (so the greater-than CF also equals N/2). Two curves that both pass through a cumulative value of N/2 at the same x-value must cross there — and they do so at only one point. This gives you a graphical method to find the median that requires no arithmetic at all.
How to Calculate Cumulative Frequency — Step by Step
Method 1: Ungrouped (Discrete) Data
With ungrouped data, each row in your table represents a single distinct value rather than a class interval.
Books read per week by 20 students
Sort values in ascending order and count how often each appears to build the frequency table.
For the first row: CF = f₁. So if 3 students read 0 books, CF₁ = 3.
For each subsequent row: CFn = CFn-1 + fn. Add the current frequency to the previous running total.
Check: the final cumulative frequency must equal N = 20. If it does not, you made an arithmetic error somewhere.
| Books (x) | Frequency (f) | Cumulative Frequency | Working |
|---|---|---|---|
| 0 | 3 | 3 | 3 |
| 1 | 6 | 9 | 3 + 6 |
| 2 | 5 | 14 | 9 + 5 |
| 3 | 4 | 18 | 14 + 4 |
| 4 | 2 | 20 | 18 + 2 = N ✓ |
Reading: "14 students read 2 books or fewer per week."
Method 2: Grouped (Continuous) Data
The process is identical, but you must identify the upper class boundary of each interval — not the class midpoint — before plotting any graph.
Test scores of 50 students (used throughout this guide)
| Class | Frequency (f) | Upper Boundary | Cumulative Frequency | Working |
|---|---|---|---|---|
| 10–20 | 4 | 20 | 4 | 4 |
| 20–30 | 8 | 30 | 12 | 4 + 8 |
| 30–40 | 14 | 40 | 26 | 12 + 14 |
| 40–50 | 13 | 50 | 39 | 26 + 13 |
| 50–60 | 11 | 60 | 50 | 39 + 11 = N ✓ |
After completing any cumulative frequency table, verify that the last entry equals N. This single check catches every possible addition error. If the numbers do not match, work back through the table row by row until you find where the total diverges.
How to Draw a Cumulative Frequency Graph (Ogive)
The cumulative frequency graph goes by several names: ogive, cumulative frequency curve, cumulative frequency polygon. The ogive (pronounced "OH-jive") is the standard term in statistics. It is an S-shaped curve — a sigmoid — that rises from the lower-left of the graph to the upper-right.
Why Upper Class Boundaries, Not Midpoints — The Critical Rule
You must plot cumulative frequency against the upper class boundary, not the class midpoint. The cumulative frequency for a class represents all observations up to the end of that class — and the end is the upper boundary, not the middle. Plotting against the midpoint implies the cumulative total is reached halfway through the class, which is incorrect.
| On the x-axis, plot | Correct | Incorrect |
|---|---|---|
| x-axis value | Upper class boundary (20, 30, 40…) | Class midpoint (15, 25, 35…) |
| y-axis value | Cumulative frequency | Individual class frequency |
| Starting point | (lower boundary of first class, 0) | The first data point |
Step-by-Step Ogive Construction
Using the 50-student example from above:
Less-Than Ogive for Test Scores (N = 50)
Build the CF table with upper boundaries. Already done above: boundaries are 20, 30, 40, 50, 60 with CFs of 4, 12, 26, 39, 50.
Add the starting point. The ogive must begin at (10, 0) — the lower boundary of the first class paired with a cumulative frequency of zero. Without this, the curve is wrong from the start.
Plot all points: (10, 0), (20, 4), (30, 12), (40, 26), (50, 39), (60, 50).
Connect with a smooth S-shaped curve. Do not use straight-line segments — the curve should flow smoothly through each point. The lower portion curves upward; the upper portion curves outward and flattens. (Note: some curricula accept straight-line segments and call the result a cumulative frequency polygon. Check your syllabus.)
Label axes: x-axis = "Test Score," y-axis = "Cumulative Frequency."
Verify visually: the curve should start at lower-left, rise steeply through the middle classes (where most data clusters), and flatten toward the upper-right where it reaches (60, 50).
Cumulative Frequency Ogive — 50 Students, Test Scores
Red dashed lines show the median; purple dashed lines show Q₁ and Q₃ — all read by locating positions on the y-axis first, then dropping to the x-axis.
What the Ogive Shape Tells You
A steep section in the ogive means many data points fall within that x-range — the frequencies are high there. A flat section means few observations. The classic S-shape you see with normally distributed data reflects the fact that most observations cluster around the centre, with fewer in each tail. A curve that rises sharply at the left then flattens early indicates a right-skewed distribution.
Using the Ogive to Find Median, Quartiles, and Percentiles
The ogive's practical value is that it lets you read positional statistics — median, quartiles, deciles, percentiles — directly off the graph without sorting raw data or applying formulas. The procedure is always the same: find the relevant value on the y-axis first, then project horizontally to the curve, then drop vertically to the x-axis.
Finding the Median
Calculate N/2. For 50 students: N/2 = 25.
Locate 25 on the y-axis (cumulative frequency axis).
Draw a horizontal line from 25 to where it meets the ogive curve.
Drop a vertical line from that intersection to the x-axis.
Read the x-value. For this dataset: median ≈ 37.
Students frequently locate N/4 on the x-axis (the data axis) instead of the y-axis (the cumulative frequency axis). Always start on the y-axis. Find the value there first, then move horizontally to the curve, then drop to x. Never start on the x-axis when reading the ogive.
Finding Quartiles and IQR
The same procedure works for both quartiles. Locate the relevant cumulative frequency on the y-axis, project to the curve, and read off the x-value.
| Quartile | y-axis position (N = 50) | Interpretation |
|---|---|---|
| Q₁ (Lower Quartile) | N/4 = 12.5 | 25% of data falls below Q₁ |
| Q₂ (Median) | N/2 = 25 | 50% of data falls below Q₂ |
| Q₃ (Upper Quartile) | 3N/4 = 37.5 | 75% of data falls below Q₃ |
Once you have Q₁ and Q₃ from the ogive, the interquartile range is simply IQR = Q₃ − Q₁. You can also use these three values directly to build a box plot — the five-number summary adds the minimum and maximum.
Finding Percentiles
The P-th percentile is the value below which P% of the data falls. To locate it on the ogive, calculate the y-axis position as (P/100) × N, then follow the same projection procedure.
| Percentile | y-axis position (N = 50) |
|---|---|
| 10th percentile | (10/100) × 50 = 5 |
| 40th percentile | (40/100) × 50 = 20 |
| 90th percentile | (90/100) × 50 = 45 |
For more on positional statistics, see the dedicated pages on percentiles and measures of central tendency.
Finding Deciles
Deciles divide data into 10 equal parts. No top-5 result for this keyword covers deciles from cumulative frequency. The D-th decile sits at position (D/10) × N on the y-axis.
| Decile | y-axis position (N = 50) | Equivalent percentile |
|---|---|---|
| D₁ (1st decile) | 5 | 10th percentile |
| D₅ (5th decile) | 25 | Median (50th percentile) |
| D₉ (9th decile) | 45 | 90th percentile |
Relative Cumulative Frequency and Cumulative Percentage
Relative cumulative frequency scales the running total to a proportion of N, making comparisons between datasets with different sample sizes possible.
0 to 1.0Cumulative %1.0 (or 100%)Four-Column Frequency Table
| Class | f | Relative f (f/N) | CF | Relative CF (CF/N) | Cumulative % |
|---|---|---|---|---|---|
| 10–20 | 4 | 0.08 | 4 | 0.08 | 8% |
| 20–30 | 8 | 0.16 | 12 | 0.24 | 24% |
| 30–40 | 14 | 0.28 | 26 | 0.52 | 52% |
| 40–50 | 13 | 0.26 | 39 | 0.78 | 78% |
| 50–60 | 11 | 0.22 | 50 | 1.00 | 100% |
The CDF Connection
Relative cumulative frequency is the empirical cumulative distribution function (ECDF) of the dataset. When you plot relative CF on the y-axis (0 to 1) instead of raw CF, you get the empirical CDF — the same concept underlying probability distributions. The value at any x tells you the estimated probability that a randomly chosen observation falls below x. On a relative CF ogive, the median is always at y = 0.50, regardless of sample size. This connection leads naturally into continuous cumulative distribution functions.
All Four Frequency Types: A Summary
| Type | Formula | Question answered | Final value |
|---|---|---|---|
| Frequency | f | How many in this class? | Varies |
| Relative Frequency | f / N | What proportion in this class? | Sums to 1.0 |
| Cumulative Frequency | Σfᵢ up to k | How many at or below this class? | N |
| Relative Cumulative Frequency | CF / N | What proportion at or below? | 1.0 |
Cumulative Frequency in Python, R, and Excel
No top-5 result for this keyword provides working code. This section covers all three common tools.
Python (pandas + numpy + matplotlib)
import pandas as pd import numpy as np import matplotlib.pyplot as plt # Raw test score data scores = [15, 23, 18, 42, 55, 38, 29, 47, 61, 35, 28, 44, 52, 37, 19, 48, 63, 31, 26, 41] # Step 1: Define class boundaries bins = [10, 20, 30, 40, 50, 60, 70] # Step 2: Build frequency counts freq, edges = np.histogram(scores, bins=bins) # Step 3: Assemble the frequency table df = pd.DataFrame({ 'Class': [f"{int(edges[i])}–{int(edges[i+1])}" for i in range(len(freq))], 'Upper_Boundary': edges[1:], 'Frequency': freq }) # Step 4: Cumulative frequency df['Cumulative_Freq'] = df['Frequency'].cumsum() # Step 5: Relative cumulative frequency n = df['Frequency'].sum() df['Relative_CF'] = df['Cumulative_Freq'] / n df['Cumulative_Pct'] = df['Relative_CF'] * 100 print(df.to_string(index=False)) # Step 6: Plot the ogive (starting point at lower boundary = 10) x = [bins[0]] + list(df['Upper_Boundary']) y = [0] + list(df['Cumulative_Freq']) plt.figure(figsize=(8, 5)) plt.plot(x, y, marker='o', color='steelblue', linewidth=2, label='Less-than ogive') plt.axhline(y=n/2, color='red', linestyle='--', label=f'Median line (N/2 = {n//2})') plt.xlabel('Test Score') plt.ylabel('Cumulative Frequency') plt.title('Cumulative Frequency Ogive') plt.legend() plt.grid(True, alpha=0.3) plt.tight_layout() plt.show()
R
# Raw data scores <- c(15, 23, 18, 42, 55, 38, 29, 47, 61, 35, 28, 44, 52, 37, 19, 48, 63, 31, 26, 41) # Define class boundaries breaks <- c(10, 20, 30, 40, 50, 60, 70) # Frequency table cut_scores <- cut(scores, breaks=breaks, right=TRUE, include.lowest=TRUE) freq_table <- table(cut_scores) # Cumulative frequency (use cumsum) cum_freq <- cumsum(freq_table) # Relative cumulative frequency n <- sum(freq_table) rel_cum <- cum_freq / n # Assemble display data frame df <- data.frame( Class = names(freq_table), Frequency = as.vector(freq_table), CumFreq = as.vector(cum_freq), RelativeCF = round(as.vector(rel_cum), 3), CumPct = round(as.vector(rel_cum) * 100, 1) ) print(df) # Plot ogive x <- c(breaks[1], breaks[-1]) y <- c(0, as.vector(cum_freq)) plot(x, y, type="l", lwd=2, col="steelblue", xlab="Test Score", ylab="Cumulative Frequency", main="Cumulative Frequency Ogive") points(x, y, pch=16, col="steelblue") abline(h=n/2, lty=2, col="red") grid()
Excel
| Task | Formula / Method |
|---|---|
| Cumulative frequency from raw data | =SUM($B$2:B2) in column C, drag down |
| Cumulative frequency with FREQUENCY | =FREQUENCY(data_range, bins_range) then cumulative SUM |
| Relative cumulative frequency | =C2/SUM($B$2:$B$6) |
| Cumulative percentage | =C2/SUM($B$2:$B$6)*100 |
| Ogive (line chart) | Insert → Charts → Line → plot CF column vs. upper boundaries |
Key step for the running SUM formula: in cell C2 type =B2. In C3 type =C2+B3. Drag C3 down through the rest of the frequency column. Each cell adds the class frequency to the previous total, giving you the cumulative frequency column automatically.
Pareto Chart: Cumulative Frequency in Business
A Pareto chart puts cumulative frequency to work in quality management and business analysis. It overlays a bar chart of individual frequencies (sorted largest to smallest) with a line chart of the cumulative frequency, making the 80/20 rule visible at a glance.
The rule, named after economist Vilfredo Pareto, states that roughly 80% of effects come from 20% of causes. In a factory tracking defects, a small number of defect types typically account for most of the total defect count. The cumulative frequency line makes it immediate which categories to address first.
Factory Defect Analysis (N = 100 defects)
| Defect Type | Count | Cumulative Count | Cumulative % |
|---|---|---|---|
| Scratches | 45 | 45 | 45% |
| Dents | 30 | 75 | 75% |
| Misalignments | 15 | 90 | 90% |
| Color errors | 8 | 98 | 98% |
| Other | 2 | 100 | 100% |
The Pareto chart tells management that fixing scratches and dents alone would eliminate 75% of all defects — before touching the remaining three categories. That is cumulative frequency making a resource allocation decision.
For an interactive version, the Pareto chart maker lets you enter your own data and see both the bar chart and the cumulative percentage line together.
Common Cumulative Frequency Mistakes
Exam mark schemes repeatedly cite these eight errors. Each one has a specific correct procedure that makes the mistake impossible once you know to watch for it.
Real-World Applications of Cumulative Frequency
Education — Exam Analysis
Grade boundaries, pass rates, and median scores all come directly from cumulative frequency tables. "What percentage of students passed?" requires knowing the CF at the pass mark.
Business — Pareto Analysis
The 80/20 rule lives in cumulative frequency. Pareto charts show which 20% of issues cause 80% of problems, guiding where to spend limited resources first.
Finance — Risk Analysis
Value at Risk (VaR) calculations use cumulative frequency distributions of asset returns to answer: "What percentage of days produced a loss below this threshold?"
Engineering — Exceedance Frequency
In hydrology, greater-than cumulative frequency becomes "exceedance frequency" — how often a river level exceeds a critical value. This feeds flood risk design standards.
Healthcare — Growth Charts
Children's height and weight percentile charts are built from cumulative frequency distributions. The 95th percentile is the value below which 95% of the reference population falls.
Quality Control — Six Sigma
Cumulative frequency ogives show what proportion of manufactured products fall within specification limits, feeding directly into process capability (Cpk) calculations.
Practice Problems with Worked Solutions
Build the cumulative frequency table for goals scored per match in a football season.
| Goals | Frequency |
|---|---|
| 0 | 5 |
| 1 | 8 |
| 2 | 10 |
| 3 | 6 |
| 4 | 3 |
| 5 | 2 |
CF column: 5, 13, 23, 29, 32, 34. Since N = 34 and the final CF = 34, the table is correct. Reading: 23 matches had 2 goals or fewer. 29 matches had 3 goals or fewer.
Ages of 60 library visitors are grouped as shown. Complete the CF column, then answer: (a) How many visitors were under 40? (b) What percentage were 50 or older?
| Age Group | Frequency | Cumulative Frequency |
|---|---|---|
| 20–30 | 8 | 8 |
| 30–40 | 14 | 22 |
| 40–50 | 20 | ? |
| 50–60 | 12 | ? |
| 60–70 | 6 | ? |
CF column completes as: 8, 22, 42, 54, 60. (a) Visitors under 40: CF at upper boundary 40 = 22. (b) Visitors 50 or older: 60 − 54 = 6 in the 60–70 group, plus 12 in the 50–60 group = 18. That is 18/60 = 30%.
From the 50-student test score example used throughout this page, estimate from the ogive: (a) the median, (b) Q₁, (c) Q₃, (d) the IQR, (e) the 90th percentile.
(a) Median: locate N/2 = 25 on y-axis → ogive hits roughly at x ≈ 37. (b) Q₁: locate N/4 = 12.5 on y-axis → x ≈ 29. (c) Q₃: locate 3N/4 = 37.5 on y-axis → x ≈ 46. (d) IQR = Q₃ − Q₁ ≈ 46 − 29 = 17. (e) 90th percentile: locate (90/100) × 50 = 45 on y-axis → x ≈ 54.
Using the 40-student marks data from the Types section, construct both the less-than and greater-than CF tables. What is the x-coordinate where both ogives intersect?
Less-than CF: 3, 10, 22, 33, 40. Greater-than CF: 40, 37, 30, 18, 7. Plot both curves. They cross where both equal N/2 = 20. Reading from the less-than ogive, CF = 20 corresponds to approximately x = 58 marks — which is the estimated median. You can verify: the median class is 40–60 (CF crosses 20 in this interval). Using the interpolation formula: Median = 40 + ((20 − 10) / 12) × 20 ≈ 56.7.
Extend the 50-student table with columns for relative frequency, cumulative frequency, and relative cumulative frequency. What percentage of students scored between 30 and 50?
Relative CF at 50 (upper boundary of 40–50 class) = 39/50 = 0.78. Relative CF at 30 (upper boundary of 20–30 class) = 12/50 = 0.24. Students in the 30–50 range = CF(50) − CF(30) = 39 − 12 = 27, which is 27/50 = 54% of students. (Note: this equals the sum of the 30–40 frequency 14 and 40–50 frequency 13 = 27, confirming the result.)
Frequently Asked Questions
Cumulative frequency is the running total of frequencies in a frequency distribution. Each entry sums all frequencies from the first class up to and including the current class interval. It answers the question "how many observations fall at or below this value?" and its final entry always equals the total number of observations N.
CFk = f₁ + f₂ + f₃ + ··· + fk, where CFk is the cumulative frequency up to the kth class and fi is the frequency of the ith class. In practice: the first row's CF equals its frequency; every subsequent row's CF equals the previous CF plus the current class frequency.
Frequency counts observations within a single class interval. Cumulative frequency counts all observations up to and including that class — it is the running total. The last class frequency tells you how many fell in that one band; the last cumulative frequency always equals N, the full dataset size.
Less-than cumulative frequency adds frequencies from the lowest class upward, so each entry counts observations at or below the upper boundary of that class. Greater-than cumulative frequency works from the highest class downward, so each entry counts observations at or above the lower boundary. Both start at the same data; the direction of accumulation differs.
A cumulative frequency graph is called an ogive (pronounced OH-jive). When the plotted points are connected with a smooth curve, it forms an S-shape — a sigmoid. When straight-line segments connect the points instead, the result is a cumulative frequency polygon, which some curricula accept in place of a smooth curve.
Because the cumulative frequency for a class represents all observations up to the end of that class — and the end is the upper boundary, not the midpoint. Plotting against the midpoint would imply the running total is reached halfway through the class, which overstates the cumulative count for the lower half of the class and understates it for the upper half.
Calculate N/2. Locate that value on the y-axis (cumulative frequency axis). Draw a horizontal line from that point to where it meets the ogive curve. From that intersection, drop a vertical line to the x-axis. The x-value you read off is the estimated median.
They always intersect at the median. At that point, exactly half the data falls below the value — so the less-than CF equals N/2 — and exactly half falls above — so the greater-than CF also equals N/2. The two curves meet at one x-value where both pass through N/2, and that x-value is the median.
For Q₁: locate N/4 on the y-axis, project horizontally to the curve, drop to the x-axis. For Q₃: locate 3N/4 on the y-axis and repeat. The IQR = Q₃ − Q₁. The critical rule is always to start from the y-axis, not the x-axis.
Relative cumulative frequency = CFk / N. It expresses the running total as a proportion of the total number of observations, ranging from 0 to 1.0. Multiplied by 100 it gives the cumulative percentage. It is equivalent to the empirical cumulative distribution function (ECDF) of the dataset.
No. Cumulative frequency only makes sense for ordered data — ordinal, interval, or ratio scales. With nominal categories like eye colour or political party, the "order" you apply is arbitrary. Changing the order changes the cumulative frequencies, producing different tables from identical data. The running total has no interpretable meaning when the ordering is arbitrary.
Use numpy.histogram() to bin the raw data, then apply pandas' .cumsum() to the frequency array. The code section above provides a complete working example including the ogive plot.
In the row alongside your first frequency, type =B2. In the next row type =C2+B3 and drag that formula down through all frequency rows. Each cell adds the current class frequency to the previous running total, giving you the CF column. To plot the ogive, select the upper boundaries and the CF column, then insert a line chart.
Plotting cumulative frequency against the class midpoint instead of the upper class boundary. This shifts every plotted point to the left, making the ogive look shallower than it should be and producing incorrect readings for the median and quartiles. Always use the upper boundary on the x-axis.
Because cumulative frequency counts all observations that fall at or below each class, and the final class by definition contains or is above all observations. Once you have included every class, you have counted every observation exactly once. Since total observations = N, the final cumulative total must equal N. If it does not, an arithmetic error exists in the table.
Key Takeaways
Cumulative frequency is the running total of frequencies. Each entry answers "how many fall at or below this class?"
The formula: CFk = f₁ + f₂ + ··· + fk. The final entry must always equal N — use this as your check.
Two types exist: less-than CF (adds upward from lowest class) and greater-than CF (adds downward from highest class).
The less-than and greater-than ogives intersect at exactly the median — a graphical median-finding method that needs no arithmetic.
Always plot CF against the upper class boundary on the x-axis. Plotting against the midpoint is the single most common exam error.
The ogive starts at (lower boundary of first class, 0) — never at the first data point.
Read median at y = N/2, quartiles at N/4 and 3N/4, percentiles at (P/100) × N — always starting from the y-axis, not the x-axis.
Relative CF = CF / N. It ranges from 0 to 1 and is equivalent to the empirical CDF of the dataset.
In Python, use numpy.histogram() + .cumsum(). In R, use cumsum(table()). In Excel, use a running SUM formula dragged down the CF column.
Cumulative frequency only works for ordered data (ordinal, interval, ratio). It has no valid meaning applied to nominal categories.