South African Number Formats

A friend of mine recently asked for help with Excel number formatting. His version of Excel was using a comma for the decimal point and it was irritating him as it seemed wrong. I then saw the use of spaces for the thousands separator and figured it was using the wrong region settings. It turned out that the region settings were correct and we had both been subjected to the Americanisation of a standard. I found that other people had experienced a similar problem. Technically speaking, the official format for numbers in South Africa is spaces for the thousands separator and a comma for the decimal mark.

1 234 567,89

The American variation that we had become used to is commas for the thousands separator and a full stop for the decimal point.


In programming, I have only ever seen the use of the full stop for the decimal mark, and no thousands separator. However when printing numbers for humans to read, its important to use the thousands separator and to use a number format that the largest group of readers will easily understand.

If your readers are South African, this handy JavaScript function will format your numbers correctly with 2 decimal places, which is mostly useful for displaying currency values. This code is a modified version of this script.

function za_format(number) {
  number = parseInt(number).toFixed(2);
  number += '';
  var x = number.split('.');
  var x1 = x[0];
  var x2 = x.length > 1 ? ',' + x[1] : '';
  var rgx = /(\d+)(\d{3})/;
  while (rgx.test(x1)) {
    x1 = x1.replace(rgx, '$1' + ' ' + '$2');
  return x1 + x2;

Rating our Presidents

As any person who reads the news in South Africa, I’m prone to the problem of having a two week memory of news that made headlines. But our brains fool us into thinking that we remember more of the past and are better able to predict the future. At the time of writing this (17 Feb 2013), the following news items about Jacob Zuma were published:

As with all quick news reports, it tends to focus on a particular issue that will be newsworthy and helps confirm people’s biases, whichever way they may lean. You seldom get a clear picture of the track record of a president, only a snapshot of current sentiment. It seems to me, the job of a president that wants to stay is power is to first manage public opinion, and then to be in charge of running the country. How do you tell if they are doing a good job on the second part? At this point, I read a lot of negative sentiment around Jacob Zuma. The usual “the country is falling apart” rhetoric mixed with cultural biases around his behaviour that is contrary to what is deemed acceptable.. Also there are our biases towards viewing short term change in economic indicators as representative of a longer term trend. When the Rand weakens against the dollar or inflation goes up, without looking at a much longer timeline, these data point blips shouldn’t matter. Any short term negative change is usually highlighted in the news and tends to cloud the view of actual job performance.

Continue reading “Rating our Presidents”

South African Census Data Explorer


With the publication of the final data for the South African 2011 Census, I built an interactive application using D3 and the published census data to try make the presentation of the information more useful. The issue with the census data is that it has either been summarised and presented in a PDF document with a particular view in mind, or you have to go digging into the data yourself to find what you are looking for. Assuming of course that you know what you are looking for before hand.

I was looking for a way to present a fair amount of information on a single screen while allowing interactivity and exploration. This allows you to play and discover new aspects of the data that you may not have previously thought about.

The first interesting anomaly I found was a decline in the number of children born in 2001. I have no idea why that is, if its a data problem or clear indication of alien abductions, but this presentation format allowed me to more easily think of questions to ask about the South African population.

census data point

The census data was pulled from the Statistics South Africa website and converted to JSON format using python. There was some inconsistency in the presentation format of the data between the different years, so some data had to be discarded. This was never more tha 1% of the total available data though.

The rest of the application is written entirely in Javascript using D3.