This is day 3 of "One CSV, 30 stories":http://blog.whatfettle.com/2014/10/13/one-csv-thirty-stories/ a series of articles exploring "price paid data":https://www.gov.uk/government/statistical-data-sets/price-paid-data-downloads from the Land Registry found on GOV.UK. The code for this and the other articles is available as open source from "GitHub":https://github.com/psd/price-paid-data
"Yesterday":http://blog.whatfettle.com/2014/10/15/one-csv-thirty-stories-2-counting-things/ we counted the occurrence of values in each column and made some frequency data. Processing the files and writing up the findings took me a bit longer than I'd have liked. Today I've a seat on the train and aim to use my commute home to timebox some quick and dirty histograms. These are a cinch in awk for anyone who grew up playing with BASIC which in my case involved chewing up rolls of paper on my VI form college's teletype link to a "Univac 1100/60":http://en.wikipedia.org/?title=UNIVAC_1100/60 in Teesside Polytechnic:
bc. $ head -25 price.tsv | awk 'NR == 1 {
width = 60
max = $1;
}
{
title = $2;
size = width * ($1 / max);
bar = "";
for (i = 0; i < size; i++)
bar = bar"#";
count = sprintf("(%d)", $1);
printf "%-10s %10s %s\n", title, count, bar;
}'
which gives:
bc. 250000 (208199) #################################################################
125000 (185912) ###########################################################
120000 (163323) ###################################################
60000 (159519) ##################################################
110000 (147645) ###############################################
150000 (145214) ##############################################
115000 (140833) ############################################
135000 (134731) ###########################################
175000 (131334) ##########################################
85000 (131223) #########################################
130000 (129597) #########################################
105000 (129336) #########################################
165000 (126161) ########################################
95000 (126004) ########################################
145000 (124379) #######################################
75000 (123968) #######################################
140000 (123893) #######################################
160000 (123451) #######################################
90000 (123340) #######################################
100000 (120306) ######################################
80000 (119776) ######################################
155000 (115309) ####################################
185000 (111410) ###################################
180000 (111090) ###################################
65000 (109939) ###################################
Putting this awk script into it's own file "histogram.awk":https://github.com/psd/price-paid-data/blob/master/bin/histogram.awk gives us a command we can use again and again, allowing us to compare new versus old builds:
bc. $ bin/histogram.awk < data/new.tsv
N (17351417) ############################################################
Y (1974154) #######
freehold (F) versus leaseholds (L) versus uncategorised (U):
bc. $ head -10 data/duration.tsv | bin/histogram.awk
F (14871813) #################################################################
L (4450166) ####################
U (3592) #
and the distribution of prices paid is a typical long-tail:
bc. $ head -80 data/price.tsv | bin/histogram.awk
250000 (208199) #################################################################
125000 (185912) ###########################################################
120000 (163323) ###################################################
60000 (159519) ##################################################
110000 (147645) ###############################################
150000 (145214) ##############################################
115000 (140833) ############################################
135000 (134731) ###########################################
175000 (131334) ##########################################
85000 (131223) #########################################
130000 (129597) #########################################
105000 (129336) #########################################
165000 (126161) ########################################
95000 (126004) ########################################
145000 (124379) #######################################
75000 (123968) #######################################
140000 (123893) #######################################
160000 (123451) #######################################
90000 (123340) #######################################
100000 (120306) ######################################
80000 (119776) ######################################
155000 (115309) ####################################
185000 (111410) ###################################
180000 (111090) ###################################
65000 (109939) ###################################
170000 (109751) ###################################
70000 (106529) ##################################
55000 (103816) #################################
200000 (100245) ################################
50000 (98030) ###############################
210000 (96644) ###############################
195000 (96202) ###############################
190000 (95358) ##############################
220000 (94951) ##############################
225000 (94851) ##############################
45000 (94356) ##############################
40000 (88038) ############################
215000 (85757) ###########################
230000 (82970) ##########################
245000 (82390) ##########################
235000 (79704) #########################
240000 (78959) #########################
205000 (76377) ########################
59950 (75494) ########################
35000 (70778) #######################
58000 (65743) #####################
30000 (64087) #####################
52000 (63009) ####################
68000 (61675) ####################
275000 (60762) ###################
78000 (60281) ###################
249950 (60125) ###################
72000 (58979) ###################
42000 (58826) ###################
48000 (58184) ###################
59000 (57247) ##################
57000 (56613) ##################
54000 (56264) ##################
118000 (56147) ##################
82000 (55993) ##################
56000 (55033) ##################
53000 (55025) ##################
38000 (54752) ##################
67000 (52000) #################
87000 (51853) #################
112000 (51682) #################
285000 (51649) #################
92000 (51467) #################
88000 (51394) #################
300000 (51274) #################
46000 (51099) ################
280000 (50749) ################
84000 (49414) ################
43000 (49405) ################
47000 (49340) ################
64000 (49208) ################
83000 (49149) ################
74000 (48966) ################
73000 (48934) ################
270000 (48631) ################
Streets are something worth exploring another day, there's real history in them names:
bc. $ head -20 street.tsv | ../bin/histogram.awk
(284236) #################################################################
HIGH STREET (111407) ##########################
STATION ROAD (61918) ###############
LONDON ROAD (41652) ##########
CHURCH ROAD (35596) #########
CHURCH STREET (35022) #########
MAIN STREET (34270) ########
PARK ROAD (29846) #######
VICTORIA ROAD (25819) ######
CHURCH LANE (23414) ######
QUEENS ROAD (21434) #####
NEW ROAD (21423) #####
MAIN ROAD (21308) #####
MANOR ROAD (21069) #####
THE STREET (21068) #####
WEST STREET (17359) ####
GREEN LANE (17231) ####
MILL LANE (16908) ####
THE GREEN (16886) ####
THE AVENUE (16853) ####
and the other address fields are something we also need to dig into further because they're pretty inconsistent. I assume that's due to the longevity of this data, and differences in how the data is recorded by different people over the years:
bc. $ head -10 data/locality.tsv | bin/histogram.awk
(4354411) #################################################################
LONDON (915332) ##############
BIRMINGHAM (112836) ##
MANCHESTER (102982) ##
LIVERPOOL (101127) ##
LEEDS (90163) ##
BRISTOL (89995) ##
SHEFFIELD (77372) ##
BOURNEMOUTH (61337) #
SOUTHAMPTON (57342) #
bc. $ head -10 town.tsv | ../bin/histogram.awk
LONDON (1499904) #################################################################
MANCHESTER (312555) ##############
BRISTOL (296232) #############
BIRMINGHAM (285479) #############
NOTTINGHAM (251575) ###########
LEEDS (217870) ##########
LIVERPOOL (190190) #########
SHEFFIELD (183048) ########
LEICESTER (169283) ########
SOUTHAMPTON (161070) #######
bc. $ head -10 district.tsv | ../bin/histogram.awk
BIRMINGHAM (287828) #################################################################
LEEDS (257632) ###########################################################
BRADFORD (173120) ########################################
SHEFFIELD (155900) ####################################
MANCHESTER (154451) ###################################
CITY OF BRISTOL (149031) ##################################
WANDSWORTH (134851) ###############################
KIRKLEES (131368) ##############################
LIVERPOOL (126932) #############################
EAST RIDING OF YO (125271) #############################
bc. $ head -10 county.tsv | ../bin/histogram.awk
GREATER LONDON (2520251) #################################################################
GREATER MANCHESTE (843778) ######################
WEST MIDLANDS (739206) ####################
WEST YORKSHIRE (733941) ###################
KENT (544938) ###############
ESSEX (544377) ###############
HAMPSHIRE (516377) ##############
SURREY (450990) ############
LANCASHIRE (435968) ############
HERTFORDSHIRE (426834) ############
Time's up! "Tomorrow":http://blog.whatfettle.com/2014/10/17/one-csv-thirty-stories-day-4-scattering/ we should make some timelines and dig more deeply into those prices.