Property Data Analysis

In this post, we review property prices in Bloemfontein, South Africa
data cleaning
visualisation
spatial data
Author
Affiliation

University of the Free State

Published

16 June 2025

INTRODUCTION

see code
lapply(c('tidyverse','janitor','readxl','writexl',
         'gt','gtExtras','ggthemes','tmap','fishualize',
        'sf','rvest','httr2'),
        require,
        character.only=TRUE) |> 
    suppressWarnings() |> 
    suppressMessages()
theme_set(theme_minimal())
sf::sf_use_s2(FALSE)

It has been a while since I shared a new post on this site. Since today is a public holiday (2025-06-16), it’s opportune to do some basic maintainance. In recent weeks, I have been thinking about difficult analysis projects I have undertaken. Descriptive Analysis is still my bread-and-butter, however, one-a-while difficult analysis is required. The term difficult is loaded. It can range from a data sourcing issue, tooling issue to an interprepation issue or a combination of these dimensions.

For the sake of this post, let’s define difficulty as analysis that has an aspect of risk attached to it, specifically affecting another/others. In South African Public Administration Law, this would be akin to the concept administrative justice, where certain ethical/legal imperatives arise from such data analysis. In a Higher Education environment, this becomes especially important since some analysis projects can affect the insitutional access and success outcomes, such as admission requirements, resource allocation and graduation. The most difficult personal analysis, I have undertaken was in 2020-2021, when we were looking for a home.

BACKGROUND

With COVID-19 looming over the world, we were making major life decisions, including getting married and adopting new pets. We were also looking for a home. As any self-respecting professional couple would, it all started with a list. There were a set principles accompanying the purchase decision. Table 1 contains a summary of these priorities.

2021 Home-Search Priorities
order Requirements
1 Minimum of two bedrooms
2 Free Standing Property
3 Pet-Friendly
4 Affordability
5 Proximity to Work and Commerce
Table 1
Affordability

Logically, affordability should have been the first priority. In reality, it was not because humans are not perfectly rational.

The rest of the priorities were largely well-reasoned, a two bedroom minium was required to ensure sufficient space for guests. The free-standing property was financially sound to avoid increasingly exorbitant levies in Bloemfontein. Similarly, corporate bodies (HOA’s) can have spectacularly restrictive policies on pet-ownership. The distance to work/shopping centres had to remain largely the same to mitigate travelling costs.

With the list of priorities defined, the next task was data collection. Property data in South Africa is partially accessible at a cost. Here, we relied on several sources including the Municipal Intergrated Development Plan, property reports and Municipal Property Valuations. Each source offered an important dimension related to the property.

For example, the Municipal Integrated Development plan highlighted key public instructure spending priorities and their locations. At the time, the Municipality made public commitments to completing several projects aimed at enhancing spatial integration and fostering private property development through projects such as the ‘Vereeniging Extension Road’ and the ‘Hillside View Mixed Development’, see Gypseenia (2023) and Municipality (2020) . These two projects were important for the home selection decision as they were located in close proximity to the candidate neighborhoods in the South of Bloemfontein.

Property Fund Limited (2020, 57) indicated a fairly resilient retail market despite headwinds as a result of the COVID-19 pandemic, this fact coupled with a significant investment in Solar PV projects and several new anchor tenants at the Fleurdal mall demonstrated a growth trajectory for the region. These developments were also preceded by the establishments of several retail establishments.

In effect, the Vereeniging Extension Road project had a spillover effect on commercial activity in the South of Bloemfontein. It is worthwhile highlighting that while some of these commercial and public spending projects have since materialised, they have not been without their own hurdles including persistent delays in the completion of the Vereeniging Extension Road project, on-going delays in the Vista Park Park Mixed Development and Hillside View Mixed Development among other institutional challenges that continue at a municipal level.

The image contains a map-view of work-in-progress expansion of a new neighbourhood. The road infrastructure is largely complete however, there are few housing units.

Bloemfontein Incomplete Vista Park/ Hillside Extension projects.

NEIGHBOURHOOD DYNAMICS: FAUNA

The cursory analysis of listed home price values on a popular property listing website revealed notable differences in property sizes, distance to amenities and demographics, hence neighbourhoods in the South of Bloemfontein were most viable. Fichard Park served as benchmark for comparison, however, the average selling price in the neighbourhood was beyond the realm of a ‘financially prudent’ decision. Nonetheless, the neighbourhood had several listed properties with that matched the list of priorities. The next part of the search was to find a neighbourhood with similar attributes at a lower average selling price, Fauna was the second best option.

DEMOGRAPHICS

A property report (May 2021) revealed that most property owners in the suburb were aged between 50 - 64 years accounting for 45.45 percent of owners. Only 6 percent of property owners fell within the age category of 18 - 35 years. Figure 1 summarises the age distribution of property owners in the neighbourhood in 2021. This trend is line with the rest of the city. Notably, youthful property ownership is largely supplemented by Sectional Scheme compared to Free-Standing properties.

Figure 1: Age Distribution of Property Owners in Fauna

PROPERTY MARKET VALUE

Another dimension worth considering is the Municipal Property Valuations Roll, a document published by the municipality and serves as the basis for municipal rates and levies. Figure 2, illustrates the point pattern analysis results using an ensemble modelling from Inverse Distance Weighting, Voronoi Analysis, Nearest Neighbour and Closest Neighbour approaches relying on Pebesma (2004) ’s gstat package and the visualisation through the tmap package.

Raster image of Fauna Market Value estimates

Ensemble Market Value Estimates (Rands)
Figure 2

From the visualisation, there are distinct sub-markets within the neighbourhood. The differences in market value correspond with varying property sizes throughout the neighbourhood. The South of the Neighbourhood has a cluster of Sectional Schemes naturally, the corresponding market values are lower than those found in full-title properties. The lowest market value estimate in the neighbourhood is R600 000 while the highest value is R1 400 000. Most market value estimates are in the range R800 000 - R1 000 000.

OVERALL BLOEMFONTEIN PROPERTY MARKET

Department of Agriculture and Development (2025) provides a set of statistics that are germaine to monitoring property trends. Here, caution should be excersised when interpreting the numbers. The Deeds Office has regional centres where property transactions are recorded. In other words, Bloemfontein’s property trends are inclusive of the broader Mangaung Metropolitan Municipality and neighbouring towns. Figure 3, summarises some of the key statistics from the Deeds Office for the Bloemfontein office, in the two decade period from 2004 - 2024 the number of transfers handled by the office have decreasing from 40 000 in 2004 to only 9 906 in 2024.

In 2021, there was 23 percent increase in property transfers, however, this increase must be viewed as a lag due to lockdown restrictions that occurred from 2020 - 2021. The non-inflation adjusted value (Rand - Billions) of the property transfers had several fluctuations averaging R15 Billion rands. The statistics do not delienate residential property transfers and commercial transactions. Nonetheless, we can observe a level of stagnation in the Bloemfontein property market. Figure 4 benchmarks the Mangaung Residential Property Price Index (RPPI) against the aggregate National RPPI and two metropolitan cities, the City of Cape Town and the City of Johannesburg. The visualisations are stratified across Freehold and Sectional Title Properties. The City of Cape Town has sustained price growth while in recent years both Mangaung (Bloemfontein) and the City of Johannesburg have lagged behind the national trend. These patterns are apparent before accounting for inflation.

see code
read_csv(file = "./1995_2024_Bloemfontein_Transfers_Number_of_Bonds_2025-06-19.csv") |> 
    filter(year >=2004) |>
    ggplot()+
    geom_line(aes(year,transfers,group=1))+
    geom_smooth(aes(year,transfers),method = "gam",se=FALSE)+
    scale_x_continuous(
        breaks = c(2004,2007,2010,2013, 2016, 2019, 2022),
        limits = c(2004,2024)
    )+
    scale_y_continuous(
        labels = scales::label_number()
    )+
    labs(
     title = paste0("2004 - 2024 Bloemfontein Property Transfer Trends"),
     subtitle = paste0("Annual number of property transfers recorded in the Bloemfontein Deeds Office"),
     x = "",
     y = "Number of Property Transfers",
     caption = "Source: Deeds.gov.za"
    )+
    hrbrthemes::theme_ipsum()
library(rvest)

new_table <- read_html("https://www.deeds.gov.za/statistics.php") |> 
    html_table(".table.table-striped",header=FALSE,trim=TRUE)

new_table <- new_table[[4]] |> 
    mutate(year = str_extract(X1,"\\d{4}")) |> 
    fill(year,.direction = "down") |> 
    filter(!str_detect(X1,"\\d{4}"),
         str_detect(X1,"^Purchase")) |> 
    select(year,X2) |> 
    mutate(X2 = str_replace_all(X2,",","")|>as.double()) |> 
    rename(
       total_purchase_price_billions = X2
    ) |> 
    mutate(
        year = as.integer(year)
    )

new_table |> 
    filter(year >=2004 &
            year < 2025) |> 
    mutate(
        total_purchase_price_billions = total_purchase_price_billions/1e9
    ) |> 
    ggplot()+
    geom_line(aes(year,total_purchase_price_billions,group=1))+
    geom_smooth(aes(year,total_purchase_price_billions),method = "gam",se=FALSE)+
    scale_x_continuous(
        breaks = c(2004,2007,2010,2013,2016,2019,2022),
        limits = c(2004,2024)
    )+
    scale_y_continuous(
        labels = scales::label_currency(scale = 1e9,prefix="R",big.mark=" ")
    )+
    labs(
     title = paste0("2004 - 2024 Bloemfontein Property Transfer Trends"),
     subtitle = paste0("Annual value (Billions - Rands) of property transfers recorded in the Bloemfontein Deeds Office"),
     x = "",
     y = "Total Purchase Price",
     caption = "Source: Deeds.gov.za"
    )+
    hrbrthemes::theme_ipsum()

Number of Transfers

Transfer Value (R - Billions)
Figure 3: Bloemfontein Overview
see code
SA_Property_Index = read_csv(file = "./RESIDENTIAL property Price Indices 2010 to 2024.csv") |> 
    clean_names() 

SA_Property_Index_Long <- SA_Property_Index[!SA_Property_Index$h05 %in% c("Gauteng","Free State","Limpopo",
                            "Mpumalanga","North West","KwaZulu-Natal",
                            "Northern Cape","Western Cape","Eastern Cape"),] |> 
            pivot_longer(
                cols = starts_with("m"),
                values_to = "index",
                names_to = "period"
            )

SA_Property_Index_Long <- SA_Property_Index_Long[,-grep(pattern = "h00|h01|h02|h17|h18|h25",colnames(SA_Property_Index_Long))] |> 
    rename(variable_id =h03,
           sub_index = h04,
           regional_name = h05)

SA_Property_Index_Long <- SA_Property_Index_Long |> 
    mutate(
        period = str_remove(period,"^m") |> ym(),
        date = zoo::as.yearmon(period)
    )

Sectional Title Properties

Freehold Properties
Figure 4: 2010 - 2025 Residential Property Price Index

THE NATIONAL PROPERTY LANDSCAPE

Nationally, the picture is not much different. Despite an increase in the Residential Property Index, these are largely due to property transfers in the Western Cape, particularly the City of Cape Town and the City of Johannesburg (Gauteng), the South African property market largely muted.

Figure 5, illustrates the prime lending rate for the period 2002 to 2024. Note several interest rate cycles occurred in the period, however, their impact on the property market has been limited. In other words, changes in the prime lending rate do not necessarily translate to complementary changes in the property market. This assertion is supported by Figure 6, since the global financial crisis, bank mortage advances to households have remained largely stable with quarter-on-quarter change ranging between 0% - 2%.

see code
Repo_Rate <- Repo_Rate |> 
    mutate(
        period = as.Date(period),
        date = zoo::as.yearqtr(period),
        value = as.double(value)) 


Repo_Rate |> 
ggplot(aes(date,value))+
    geom_line()+
    labs(
        title = paste0("2002 - 2025 South African Reserve Bank - Prime Lending Rate"),
        subtitle = paste0("Benchmark rate at which private banks lend out to the public"),
        y = "Prime Lending Rate (%)",
        caption = paste0("Data Source: SARB 2025")
    )+
    zoo::scale_x_yearqtr(
       breaks= seq(min(Repo_Rate$date),max(Repo_Rate$date),by=2.50),
        format = "%YQ%q")+ 
    scale_y_continuous(
        limits = c(6.5,17.5)
    )+
    hrbrthemes::theme_ipsum()

Prime Lending Rate (%)
Figure 5: Prime Lending Rate
see code
Household_Mortgage |> 
ggplot(aes(date,change))+
    geom_line()+
    labs(
        title = paste0("2002 - 2025 South African Reserve Bank - Mortage Advances to Households"),
        subtitle = paste0("Mortgage loan or advance means any loan or advance granted by the reporting bank to a person,\nwhich loan or advance is repaid by the obligor in whole or in part in instalments during a specified period\nin the future and in terms of which loan or advance a mortgage bond in respect of a specified\nproperty is registered in favour of the reporting bank,which mortgage bond serves as collateral\n in respect of the loan or advance to be repaid by the obligor during the said specified period in the future."),
        y = "Percentage Change (%)",
        caption = paste0("Data Source: SARB 2025")
    )+
    zoo::scale_x_yearqtr(
       breaks= seq(min(Household_Mortgage$date),max(Household_Mortgage$date),by=2.75),
        format = "%YQ%q")+
    hrbrthemes::theme_ipsum()+
    scale_y_continuous(
        breaks = c(-2,0,2,4,6,8,10,12)
    )+
    theme(
        plot.title = element_text(face="bold",size=14),
        plot.subtitle = element_text(size=11,face="italic")
    )

Figure 6: Mortage Advances Change (%)

DIFFICULT ANALYSIS

Based on the analysis of properties in Bloemfontein and the overall property market. There are a few interesting observations in relation to the property search. The previous owners increased their initial investment by 14 percent. Given recent selling prices in the neighbourhood, the premium paid to purchase the property was largely justified.

Financing the house is complicated by factors beyond any individual’s control. The South African economy has been estranged to growth for the better part of two decades. Consequently, most industries, including the property market have stagnated or have experienced persistent decline.

The property was purchased at abnormally low lending rates, which are unlikely to return bar the occurrence of black swan event. Mortgages are a long term commitment, changing local, national and international dynamics can influence the cost of financing and the property’s value.

A new property search would include a lot more Spatial Data Science, the purchase of extensive property data, geological assessment data and consultation with domain experts. The list of priorities would probably be amended as well to include other objectives more aligned with our life stage.

References

Department of Agriculture, Land Reform, and Rural Development. 2025. ‘Interesting Statistics Property Trends’. https://www.deeds.gov.za/statistics.php.
Gypseenia, Lion. 2023. ‘The Bridge That Leads to Nowhere’. Bloemfontein Courant, February. https://www.bloemfonteincourant.co.za/the-bridge-that-leads-nowhere/.
Municipality, Mangaung Metropolitan. 2020. ‘Mangaung Metropolitan Municipality: Built Environment Performance Plan 2020-21/2022-23’. Bloemfontein. https://www.mangaung.co.za/wp-content/uploads/2020/06/3.Council-Annexure-30-June-2020-61.1A-IDP-Annexure-A-Final-BEPP-June-2020.pdf.
Pebesma, Edzer. 2004. ‘Multivariable Geostatistics in s: The Gstat Package’. Computers & Geosciences 30: 683–91.
Property Fund Limited, Investec. 2020. ‘Intergrated Annual Report’. Johannesburg, South Africa. https://assets.ctfassets.net/lwj37n970879/bF1gPeb2ek5j0GXCkNpqT/0d48a480501b2f7422e53eec95fdf87e/Annual_Report_31_March_2020.pdf.