From 2018 to 2022, English urban councils saw almost double the level of electoral volatility. The median volatility climbed from 12.0 up to 22.5.
But the number of competing parties didn’t actually grow.
This difference only became clear after resolving a bug in how party categories were handled.
In this context, volatility tracks how much vote share shifted between party groups, while fragmentation measures how many parties were truly competing with a realistic chance of winning. A council can experience dramatic swings in voter support without becoming more fragmented — for instance, when one dominant party falters and another picks up most of those displaced voters.
The effective number of parties went up in just 18 out of 67 comparable authorities. The median shift in the fragmentation index remained slightly negative at -0.31. Votes moved substantially, but most of that movement happened within an already consolidating party system.
The initial analysis told a strikingly different story. It indicated that fragmentation had grown in 66 out of 67 councils and that median volatility had tripled. Those figures were incorrect. The mistake stemmed from treating ballot labels like “Labour Party” and “Labour and Co-operative Party” as distinct analytical parties. After normalising party families before calculating the metrics, the overall picture changed entirely.
What appeared to be a simple party-label issue was actually a deeper problem with how categories were modelled. And that error rippled through every metric that followed.
The revised narrative is less dramatic — but far more accurate and actionable.
Categories shape the model
Before diving into the results, it’s important to understand what went wrong, because this lesson extends well beyond election analysis.
Party labels aren’t just plain text. They reflect a complicated institutional landscape: coalitions, ballot wording choices, local party branding, national rebranding efforts, and inconsistent coding across data sources. If those labels are grouped incorrectly, every metric built on top of them can appear precise yet still be fundamentally flawed.
That’s precisely what occurred. Fragmentation was calculated before party families were normalised. In boroughs where both “Labour Party” and “Labour and Co-operative Party” appeared on the ballot, the Laakso-Taagepera formula counted them as separate parties. This artificially boosted the effective number of parties. The same issue could have affected UKIP, Reform UK, and Brexit Party labels as well.
The solution was conceptually straightforward: establish analytical party families first, then compute the metrics.
The pipeline now distinguishes between three separate identities:
- Metric party family: used for fragmentation, volatility, and swing calculations.
- Challenger party family: used for scenario modelling and identifying challenger parties.
- Display party label: used only for Tableau colours and labels.
Never allow display labels to bleed into your metric definitions. Never let raw strings define analytical categories without a clear, explicit mapping.
The gap between the original headline (“fragmentation rose in 66 of 67 councils”) and the corrected one (“fragmentation rose in only 18 of 67”) isn’t a minor rounding issue. It’s a categorisation error that cascaded through the entire pipeline. Every chart and every narrative conclusion changed once the fix was applied.
This principle applies well beyond elections. Product categories, job titles, company names, medical diagnosis codes, and merchant names all share the same vulnerability. If you normalise categories after aggregation, it’s already too late — the story has been distorted from the start.
How the analysis works
The project follows a pattern-first methodology: build the data pipeline, export the metrics, design the visualisation, and then let the data reveal which story it actually supports. The corrected fragmentation finding, the lack of a turnout correlation, and the geographic shift in Green Party gains all surfaced through diagnostic validation rather than from the original project plan.
The pipeline ingests ward-level election results from the DCLEAPIL v1.0 dataset (Leman 2025), sourced from Andrew Teale’s LEAP archive and Democracy Club data. It normalises party families, aggregates vote shares to the authority level, computes fragmentation and volatility metrics, and exports structured CSVs for an interactive Tableau dashboard.
The analysis spans 68 English metropolitan boroughs, London boroughs, and West Yorkshire authorities across five regions. Of these, 67 have comparable fragmentation data across the 2018-to-2022 period.
The core metrics are:
- Fragmentation Index: the Laakso-Taagepera effective number of parties, calculated from authority-level vote shares.
- Volatility Score: a composite metric combining a Pedersen-style absolute swing component with the change in fragmentation.
- Turnout Delta: percentage-point change in voter turnout over the same period.
- Party Swing: change in vote share by normalised party family.
This approach generalises to any domain where you need to derive metrics from messy categorical data and present them in a validated, reproducible visualisation. The full pipeline, calculated fields, and Tableau build guide are open-source.
The headline: volatility rose, fragmentation did not
The first dashboard panel maps volatility by authority. Circle size represents the volatility score. Colour indicates the change in fragmentation: teal where it increased, amber where it decreased.
The map reveals two things simultaneously. First, volatility genuinely increased — roughly 1.9 times higher than the previous period. Second, fragmentation did not rise in most places. Only 18 out of 67 comparable authorities had a higher effective number of parties in 2022 than in 2018.
The highest-volatility authorities were Solihull (67.6), Kingston upon Thames (60.3), Sutton (48.7), South Tyneside (47.4), and Havering (45.2). Five of the top eight are London boroughs, but the highest overall is Solihull. This isn’t purely a London phenomenon.
Data science takeaway: when two related metrics (volatility and fragmentation) move in opposite directions, the analytical story changes completely. Always verify that your headline metric and your supporting metrics align before publishing. The gap between the
Brexit consolidated the vote. 2022 did not undo it.
The second perspective tracks the effective number of parties at three stages: each council’s last election before 2018, the 2018 election itself, and 2022.
The original version of this chart was described as a V-shape: parties consolidating into 2018, then fragmenting again after 2022. The revised data does not back that up. A more accurate interpretation is consolidation followed by partial stabilisation.

Tier medians illustrate the trend: London dropped from 2.87 to 2.16. Metropolitan boroughs fell from 3.22 to 2.65 (with a small rise from the 2018 low of 2.62). West Yorkshire saw a steep decline from 4.13 to 2.01.
The 2022 cycle was turbulent, but it did not produce a broad splintering of the party system.
The mechanism: Conservative collapse, uneven absorption
The party-swing chart shows how volatility can increase even as fragmentation declines.
Across 67 councils, the median party-family swing between 2018 and 2022 was: Labour +8.5 percentage points, Conservative -8.3, Liberal Democrats -2.3. Every other party shifted by less than 0.3 points in either direction.
These swings are based on normalised party families. Labour and Labour Co-operative are combined, as are UKIP, Reform UK, and Brexit Party labels. Without this normalisation, the raw figures would show deceptive Labour Co-operative gains alongside Labour losses in the same borough. The normalisation approach is documented in the data source metadata.
At the median, this is a story of Conservative losses flowing to Labour, not a third-party surge. But medians smooth over geography. Labour picked up the typical Conservative loss, while Liberal Democrats and Greens made dramatic gains in particular councils.
Applying an insurgency filter of at least a 5-point gain from a 2018 base of at least 2%: Liberal Democrats surged in 9 councils, Greens in 7, and the Yorkshire Party in 1. Independents and Reform/UKIP did not meet the threshold in this period.

Data science takeaway: choosing thresholds in categorical filters demands the same care as tuning model hyperparameters. The first insurgency filter (5pp swing, no baseline floor) flagged 12 Green “surge” councils. Closer inspection showed 5 were low-base artefacts: parties jumping from 0.5% to 5.5%. Introducing a 2% baseline floor cut the count to 7 and completely changed the geographic picture. The key finding (Northern metros, not inner London) only became visible once the filter was fixed. Any threshold applied before reaching a headline conclusion should be stress-tested by examining the edge cases it lets through.
That is the mechanism: uneven absorption. Where Labour cleanly absorbed Conservative losses, volatility increased but fragmentation often declined. Where a third party captured part of the loss, local competition grew more complex.
The Green story is geographic, not national
The Green median swing was +0.1 percentage points. That figure is both accurate and misleading.
It is accurate because the typical council did not experience a large Green advance. It is misleading because Green support shifted geographically.
In several inner London boroughs, Greens dropped sharply:
| Council | 2018 Green % | 2022 Green % | Swing |
| Islington | 16.4 | 1.6 | -14.8 |
| Hackney | 16.7 | 4.9 | -11.9 |
| Lambeth | 18.8 | 7.8 | -11.0 |
Table 1: Inner London Green retreat, 2018 to 2022. Three boroughs where Greens held double-digit vote share in 2018 experienced sharp declines by 2022.
At the same time, Greens surged in Northern and Midlands authorities along with Westminster:
| Council | 2018 Green % | 2022 Green % | Swing |
| Calderdale | 4.2 | 18.2 | +14.0 |
| Bolton | 2.6 | 12.1 | +9.5 |
| Westminster | 2.1 | 11.5 | +9.4 |
| Bury | 3.3 | 12.4 | +9.1 |
| Gateshead | 4.3 | 12.2 | +8.0 |
| Wolverhampton | 2.6 | 10.3 | +7.8 |
| Barnsley | 3.7 | 9.3 | +5.6 |
Table 2: Green surge councils, 2018 to 2022. Seven authorities where Greens gained 5 or more percentage points from a base of at least 2%. Six are Northern and Midlands metropolitan boroughs. Westminster is the only London borough on the list.
The inner London Green surge appears to have taken place before 2018. Between 2018 and 2022, some of that vote shifted back toward Labour. Meanwhile, Greens built support from lower bases in post-industrial metros.
The dataset cannot prove what motivated voters. But it demonstrates that a national Green median is the wrong lens. A flat aggregate median can conceal large offsetting movements across subgroups. The real pattern is a redistribution of support across places, and you need the authority-level view to uncover it.
Regional volatility: group-level summaries are not explanations
Median volatility by region: North East 27.8, Yorkshire 25.7, London 22.0, North West 16.0, West Midlands 15.6.

The West Midlands contains the most volatile council in the dataset (Solihull at 67.6) yet has the lowest regional median. Grouping by region helped frame the analysis, but it also revealed why group-level summaries fall short as explanations.
Council-level factors dominate regional geography.
Turnout and voter swings showed no clear link
I anticipated that councils seeing big swings in party support would also see a drop in voter turnout.
Looking at 67 local authorities, the Pearson correlation between turnout change and electoral volatility is -0.12 (p = 0.35). When narrowed to the 64 authorities that held elections, the correlation is r = -0.15, p = 0.25. Neither result is statistically meaningful.

Data science takeaway: sharing null results stops misleading narratives from taking hold. The original analysis plan assumed turnout and volatility would move in opposite directions. When the numbers came back at r = -0.12 (p = 0.35), the headline was adjusted rather than the data being reworked to fit. Both analytical scopes are presented openly. Null results are often overlooked in data work. Allowing evidence to challenge assumptions is easy to advocate but genuinely difficult to follow through on.
What the revised analysis reveals
English councils saw a sharp rise in voter switching between 2018 and 2022. Median volatility climbed from 12.0 to 22.5. Yet the effective number of parties did not grow in most areas. Fragmentation went up in only 18 out of 67 comparable authorities, and the median shift stayed slightly negative.
Local electoral upheaval can be dramatic without leading to a more divided party landscape. Voters changed allegiances, but in many cases they shifted from one leading party to another. Where smaller parties made gains, those advances were localised and patchy rather than part of a broad national trend.
The deeper lesson lies upstream: how you define your categories shapes the entire analysis. If those definitions are flawed, every resulting chart will tell a persuasive but misleading story.
Data sources and licensing
The core election results are drawn from the DCLEAPIL v1.0 dataset (Leman, Jason, 2025), published under CC BY-SA 4.0. Additional data from the House of Commons Library is used under Open Parliament Licence v3.0. All derived datasets and pipeline code are released under the MIT licence. Full data provenance is recorded in DATA_SOURCE_METADATA.md.
Methodology notes
68 authorities were included in scope. 67 had comparable fragmentation figures for the 2018-to-2022 period (Rotherham was excluded from fragmentation index comparisons). Fragmentation is measured using the Laakso-Taagepera index. Volatility combines Pedersen-style swing with changes in fragmentation. Party swings are calculated using normalised analytical groupings. The insurgency filter excludes Labour and Conservatives and applies a 2% baseline threshold for 2018. Any causal interpretation is analytical rather than definitive; the data records outcomes, not voter motivations.
What comes next
A follow-up analysis will model 2026 scenarios: a baseline of continued trends, assumptions around a Reform local surge, and a major-party reconsolidation pathway. These are scenario projections built on algebraic assumptions, not predictions.
The key question: if Conservative losses persist, does Labour pick up those voters once more, or do the geographically focused Liberal Democrat and Green advances extend into additional councils? And does that pattern of voter absorption eventually drive fragmentation higher, or does the party system keep consolidating even as individual councils experience heavy churn?
That distinction between churn and fragmentation is precisely what this project is built to track.
The interactive dashboard is live on Tableau Public, and the complete data pipeline is available at github.com/Wisabi-Analytics/civic-lens.
Obinna Iheanachor is a Senior AI/Data Engineer and founder of Wisabi Analytics, a UK-based data engineering and AI consultancy. He produces content on production AI systems, data pipelines, and applied analytics at @DataSenseiObi on X and Wisabi Analytics on YouTube. Civic Lens is an open-source political data project at github.com/Wisabi-Analytics/civic-lens.



