How to Find the Most Expensive Streets in England and Wales With Python

On this page

Problem statement

"The most expensive street in the country" is a perennial headline, and HM Land Registry's Price Paid Data can answer it for England and Wales from every recorded sale. The answer depends on choices that headlines rarely state. Street names repeat across the country and so must be paired with a place. A single mansion sale can top a ranking of medians from one sale. Non-standard transactions distort it. And the ranking for one year differs from one over several.

This page ranks the streets of England and Wales by median sale price in 2024 from the Price Paid file. It defines a street by name and postcode district, sets a minimum number of sales, compares rankings by median and by mean, and shows how the result changes with the threshold.

Quick answer

Group standard sales by street and postcode district, require a minimum number of sales, and rank by median:

A["district_pc"] = A.postcode.str.split(" ").str[0]
S = A.dropna(subset=["street"]).groupby(["street", "district_pc", "town"]).price.agg(sales="size", median="median", mean="mean").reset_index()
top = S[S.sales >= 5].nlargest(10, "median")
print(f"street-district combinations: {len(S):,}; with 5 or more sales: {(S.sales >= 5).sum():,}")
print(top[["street", "district_pc", "town", "sales", "median"]].to_string(index=False))
street-district combinations: 338,089; with 5 or more sales: 30,146
            street district_pc   town  sales    median
     PARK CRESCENT         W1B LONDON      5 7900000.0
  GROSVENOR SQUARE         W1K LONDON      5 7850000.0
THE BISHOPS AVENUE          N2 LONDON      6 6750000.0
     CURZON STREET         W1J LONDON     11 6749970.0
   MULBERRY SQUARE        SW1W LONDON     18 6662500.0
 NEW OXFORD STREET        WC1A LONDON      7 6300000.0
    AYBROOK STREET         W1U LONDON     13 5975000.0
      MARRYAT ROAD        SW19 LONDON      5 5075000.0
     KNIGHTSBRIDGE         SW7 LONDON      5 4800000.0
         QUEENSWAY          W2 LONDON     58 4253000.0

The sales fall on 338,089 street and postcode-district combinations, only 30,146 of them with five or more sales. Among those, Park Crescent in W1B tops the ranking at a median of Β£7,900,000, ahead of Grosvenor Square and The Bishops Avenue. The whole top 10 is in London. Queensway in W2 makes the list with 58 sales, far more than any other street in it.

Horizontal bars of the ten streets with the highest median price and at least five sales Horizontal bars of the ten streets with the highest median price and at least five sales
Park Crescent, W1B, leads at Β£7.9M from five sales.

A minimum number of sales, median against mean, top streets

1. Why a minimum number of sales

Without a threshold, the top of the ranking is single sales:

one = S.nlargest(5, "median")
print(f"top 5 with no minimum: sales counts {one.sales.tolist()}; medians Β£{one['median'].min():,.0f} to Β£{one['median'].max():,.0f}")
for k in (3, 5, 10):
    best = S[S.sales >= k].nlargest(1, "median").iloc[0]
    print(f"minimum {k:>2} sales: top street {best.street.title()}, {best.district_pc} ({int(best.sales)} sales, median Β£{best['median']:,.0f})")
top 5 with no minimum: sales counts [3, 1, 1, 2, 1]; medians Β£18,750,000 to Β£36,750,000
minimum  3 sales: top street Grosvenor Place, SW1X (3 sales, median Β£36,750,000)
minimum  5 sales: top street Park Crescent, W1B (5 sales, median Β£7,900,000)
minimum 10 sales: top street Curzon Street, W1J (11 sales, median Β£6,749,970)

Without a minimum, the top five rest on one to three sales each, with medians from Β£18.75 million to Β£36.75 million. With a minimum of 3 sales Grosvenor Place leads, with 5 Park Crescent, with 10 Curzon Street: each threshold names a different "most expensive street".

The top street changes with the minimum number of sales. top median by sales threshold3+ salesGrosvenor Place Β£36.75M5+ salesPark Crescent Β£7.9M10+ salesCurzon Street Β£6.75M010M20M30M40MWith no minimum the top five have 1-3 sales each spatialworkflow.io
The leader changes with the threshold: Β£36.75M, Β£7.9M, Β£6.75M.

2. Median against mean

t5 = S[S.sales >= 5]
key = lambda d: set(zip(d.street, d.district_pc))
top_med, top_mean = t5.nlargest(20, "median"), t5.nlargest(20, "mean")
print(f"streets in both top-20 lists: {len(key(top_med) & key(top_mean))} of 20")
print(f"largest mean-to-median ratio in the top 20 by mean: {(top_mean['mean'] / top_mean['median']).max():.1f}")
streets in both top-20 lists: 14 of 20
largest mean-to-median ratio in the top 20 by mean: 6.7

Ranked by mean instead, 6 of the top 20 streets change, and in one of them the mean is 6.7 times the median, pulled up by very large sales.

3. Where the top streets are

top50 = S[S.sales >= 5].nlargest(50, "median")
print("postcode areas of the top 50:", top50.district_pc.str.extract(r"^([A-Z]+)")[0].value_counts().head(6).to_dict())
print(f"top 50 outside London postcode areas (not E, EC, N, NW, SE, SW, W, WC): {(~top50.district_pc.str.extract(r'^([A-Z]+)')[0].isin(['E', 'EC', 'N', 'NW', 'SE', 'SW', 'W', 'WC'])).sum()}")
postcode areas of the top 50: {'W': 17, 'SW': 17, 'NW': 10, 'N': 1, 'WC': 1, 'OX': 1}
top 50 outside London postcode areas (not E, EC, N, NW, SE, SW, W, WC): 3

Of the top 50 streets with five or more sales, 17 are in W and 17 in SW postcodes, and 10 in NW. Only 3 are outside London's postcode areas.

The most expensive streets outside London

The data used on this page

HM Land Registry Price Paid Data for 2024, standard sales (category A), Β© Crown copyright 2026, Open Government Licence v3.0.

from pathlib import Path

import pandas as pd
import requests

Path("data").mkdir(exist_ok=True)
CSV = Path("data/pp-2024.csv")
if not CSV.exists():
    r = requests.get("http://prod1.publicdata.landregistry.gov.uk.s3-website-eu-west-1.amazonaws.com/pp-2024.csv", timeout=1800); r.raise_for_status(); CSV.write_bytes(r.content)
COLS = ["transaction_id", "price", "date", "postcode", "property_type", "old_new", "duration", "paon", "saon",
        "street", "locality", "town", "district", "county", "ppd_category", "record_status"]
A = pd.read_csv(CSV, header=None, names=COLS, usecols=["price", "postcode", "street", "town", "ppd_category"]).query("ppd_category == 'A'").dropna(subset=["postcode"]).copy()
print(f"{len(A):,} standard sales with a postcode")
763,740 standard sales with a postcode

There are 763,740 standard sales with a postcode.

Example 1: the most expensive streets outside London

LONDON = {"E", "EC", "N", "NW", "SE", "SW", "W", "WC"}
area = S.district_pc.str.extract(r"^([A-Z]+)")[0]
out = S[(S.sales >= 5) & ~area.isin(LONDON)].nlargest(5, "median")
print(out[["street", "district_pc", "town", "sales", "median"]].to_string(index=False))
         street district_pc        town  sales    median
      PARK TOWN         OX2      OXFORD      5 3100000.0
   THE RIDGEWAY         EN6 POTTERS BAR      6 2675000.0
KIPPINGTON ROAD        TN13   SEVENOAKS      8 2602544.5
   THE VINEYARD        TW10    RICHMOND      6 2470000.0
      MILL LANE         SL6  MAIDENHEAD      5 2450000.0

Outside London, Park Town in Oxford leads at Β£3,100,000, followed by streets in Potters Bar, Sevenoaks, Richmond and Maidenhead.

Scatter of street median price against number of sales, log axes, with the five-sale threshold Scatter of street median price against number of sales, log axes, with the five-sale threshold
The highest medians belong to streets with one or two sales.

Three choices behind a street ranking

From all street and postcode district combinations to the top ten. how the ranking narrowsstreet-district groups338,089Γ· 11with 5+ sales30,146Γ· 603top 5050Γ· 5top 1010band width is log-scaled47 of the top 50 are in London postcode areas spatialworkflow.io
30,146 groups have five or more sales.

A street ranking turns individual sales into a statistic per street, and its credibility rests on three choices. A street must be identified uniquely: names like High Street or Church Road appear thousands of times, so pair the name with a postcode district or town. The statistic must resist single sales: the median of at least five sales is a common minimum for published rankings, and even then a street of five sales in one year may be one development. And only standard sales belong in a ranking of what homes cost, since category B includes transfers to companies and bulk sales at prices that are not individual home prices.

With those choices made, the results say as much about the data as about the streets. The most expensive streets are concentrated in central London postcodes and a few commuter-belt areas, but the exact order moves from year to year with what happened to sell. Rankings over several years, or using a higher minimum, are more stable, and showing the number of sales next to each median lets readers judge each entry.

Spelling, flats and privacy

Checks before publishing a most-expensive-streets list. before ranking streetsstreet + postcode districtnot the street name alonea minimum count5 sales heremedian, not meanmean/median up to 6.7standard sales onlycategory Ashow the countsQueensway: 58 salesOutside London: Park Town, Oxford, Β£3.1M spatialworkflow.io
Outside London the leader is Park Town, Oxford, at Β£3.1M.
  • Spelling: street names are upper case but can vary ("ST" vs "SAINT"); normalise before grouping.
  • Flats: a block of new flats on one street can dominate its sales; check property types for top entries.
  • Several years: pool 3 to 5 years of files for a more stable ranking of streets with few sales.
  • Privacy: individual sale prices are public, but a ranking of medians reveals less about any one household than listing sales.

FAQ

What is the most expensive street in England?

By 2024 median price of standard sales with at least five sales, the top streets are in central London postcode districts; the exact order depends on the threshold and the year.

How do I rank streets by house price in Python?

Group Price Paid sales by street and postcode district, require a minimum number of sales, and sort by median price.

Why use a minimum number of sales?

With one or two sales, a single expensive house decides a street's median.

Why combine street name with postcode district?

Street names repeat across the country; the postcode district makes each street unique.