├── metadata.txt ├── README.md ├── datapackage.json ├── data-extant.csv ├── scripts └── process.py └── data.csv /metadata.txt: -------------------------------------------------------------------------------- 1 | [DEFAULT] 2 | id = browser_stats 3 | title: W3Schools Browser Statistics (Monthly) 4 | version: 2008-10 5 | description: 6 | Openness: Source indicates no restrictions on data so licensing as PD. 7 | source: W3Schools 8 | created: 2008-11-02 9 | license: OKD Compliant::Open Data Commons Public Domain Dedication and License (PDDL) 10 | tags: browser statistics usage firefox format-csv 11 | creator: Rufus Pollock 12 | url: http://www.openeconomics.net/store/view/browser_stats 13 | download_url: http://www.openeconomics.net/store/browser_stats/data 14 | download_url_source: http://knowledgeforge.net/econ/hg/tip/file/econdata/browser_stats 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | badge 2 | 3 | Web browser usage statistics over time. 4 | 5 | ## Data 6 | 7 | Primary data source is [W3Schools browser statistics](http://www.w3schools.com/browsers/browsers_stats.asp). The data provided comes from the log files of W3Schools' servers. 8 | 9 | `data.csv` contains usage statistics for both current browsers as well as several now-defunct browsers. 10 | 11 | `data-extant.csv` only includes data for current browsers. 12 | 13 | ## Preparation 14 | 15 | This package includes `scripts/process.py` to scrape the data. Currently it is required to manually change the index to match which calendar year's table data to act on. 16 | 17 | ## License 18 | 19 | Non-commerical use of this data appears to be covered under W3Schools' Fair Use in their [Terms of Use](http://www.w3schools.com/about/about_copyright.asp), but please review these terms or contact W3Schools yourself to clarify terms for your specific usage. 20 | -------------------------------------------------------------------------------- /datapackage.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "browser-stats", 3 | "title": "Web Browser Usage Statistics", 4 | "licenses": [ 5 | { 6 | "id": "odc-pddl", 7 | "name": "Public Domain Dedication and License", 8 | "version": "1.0", 9 | "url": "http://opendatacommons.org/licenses/pddl/1.0/" 10 | } 11 | ], 12 | "sources": [{ 13 | "title": "W3 Schools", 14 | "web": "http://www.w3schools.com/browsers/browsers_stats.asp" 15 | }], 16 | "resources": [ 17 | { 18 | "name": "data", 19 | "path": "data.csv", 20 | "format": "csv", 21 | "mediatype": "text/csv", 22 | "schema": { 23 | "fields": [ 24 | { 25 | "id": "Date", 26 | "description": "", 27 | "format": "yyyy-mm", 28 | "type": "date" 29 | }, 30 | { 31 | "id": "AOL", 32 | "description": "", 33 | "format": "percent", 34 | "type": "number" 35 | }, 36 | { 37 | "id": "Chrome", 38 | "description": "", 39 | "format": "percent", 40 | "type": "number" 41 | }, 42 | { 43 | "id": "Firefox", 44 | "description": "", 45 | "format": "percent", 46 | "type": "number" 47 | }, 48 | { 49 | "id": "Internet Explorer", 50 | "description": "", 51 | "format": "percent", 52 | "type": "number" 53 | }, 54 | { 55 | "id": "Moz-All", 56 | "description": "", 57 | "format": "percent", 58 | "type": "number" 59 | }, 60 | { 61 | "id": "Mozilla", 62 | "description": "", 63 | "format": "percent", 64 | "type": "number" 65 | }, 66 | { 67 | "id": "Netscape", 68 | "description": "", 69 | "format": "percent", 70 | "type": "number" 71 | }, 72 | { 73 | "id": "Opera", 74 | "description": "", 75 | "format": "percent", 76 | "type": "number" 77 | }, 78 | { 79 | "id": "Safari", 80 | "description": "", 81 | "format": "percent", 82 | "type": "number" 83 | } 84 | ] 85 | } 86 | }, 87 | { 88 | "name": "data-extant.csv", 89 | "path": "data-extant.csv", 90 | "format": "csv", 91 | "mediatype": "text/csv", 92 | "schema": { 93 | "fields": [ 94 | { 95 | "id": "Date", 96 | "description": "", 97 | "format": "yyyy-mm", 98 | "type": "date" 99 | }, 100 | { 101 | "id": "Chrome", 102 | "description": "", 103 | "format": "percent", 104 | "type": "number" 105 | }, 106 | { 107 | "id": "Firefox", 108 | "description": "", 109 | "format": "percent", 110 | "type": "number" 111 | }, 112 | { 113 | "id": "Internet Explorer", 114 | "description": "", 115 | "format": "percent", 116 | "type": "number" 117 | }, 118 | { 119 | "id": "Opera", 120 | "description": "", 121 | "format": "percent", 122 | "type": "number" 123 | }, 124 | { 125 | "id": "Safari", 126 | "description": "", 127 | "format": "percent", 128 | "type": "number" 129 | } 130 | ] 131 | } 132 | } 133 | ], 134 | "views": [ 135 | { 136 | "resources": ["data"], 137 | "name": "Browser Stats", 138 | "specType": "simple", 139 | "spec": { 140 | "type": "line", 141 | "group": "Date", 142 | "series": [ "Chrome", "Internet Explorer", "Firefox", "Safari", "Opera" ] 143 | } 144 | } 145 | ] 146 | } 147 | -------------------------------------------------------------------------------- /data-extant.csv: -------------------------------------------------------------------------------- 1 | Date,Chrome,Firefox,Internet Explorer,Opera,Safari 2 | 2002-01,,,85.8,, 3 | 2002-03,,,86.1,, 4 | 2002-05,,,86.7,, 5 | 2002-07,,,84.5,, 6 | 2002-09,,,83.5,, 7 | 2002-11,,,83.4,, 8 | 2003-01,,,84.6,0, 9 | 2003-03,,,88,1.2, 10 | 2003-05,,,87.7,1.4, 11 | 2003-07,,,87.2,1.7, 12 | 2003-09,,,86.6,1.8, 13 | 2003-11,,,84.9,1.9, 14 | 2004-01,,,84.7,1.5, 15 | 2004-03,,,82.8,1.4, 16 | 2004-05,,,81.9,1.6, 17 | 2004-07,,,80.4,1.6, 18 | 2004-09,,,79,1.7, 19 | 2004-11,,,76.2,1.6, 20 | 2005-01,,16.6,74.5,1.9, 21 | 2005-03,,18.9,72.5,1.9, 22 | 2005-05,,21,71.6,1.3, 23 | 2005-07,,19.8,73.8,1.2, 24 | 2005-09,,18,75.5,1.2, 25 | 2005-11,,23.6,68.9,1.5, 26 | 2006-01,,25,66,1.6, 27 | 2006-03,,24.5,64.7,1.5, 28 | 2006-05,,25.7,63,1.5, 29 | 2006-07,,25.5,62.4,1.4, 30 | 2006-09,,27.3,62.1,1.6, 31 | 2006-11,,29.9,60.6,1.5, 32 | 2007-01,,31,58.6,1.5,1.7 33 | 2007-03,,31.8,58.7,1.6,1.6 34 | 2007-05,,33.7,58.9,1.7,1.5 35 | 2007-07,,34.5,58.5,1.9,1.5 36 | 2007-09,,35.4,57.2,1.5,1.6 37 | 2007-11,,36.3,56,1.6,1.8 38 | 2008-01,0,36.4,54.7,1.4,1.9 39 | 2008-02,0,36.5,54.7,1.4,2 40 | 2008-03,0,37,53.9,1.4,2.1 41 | 2008-04,0,39.1,54.8,1.4,2.2 42 | 2008-05,0,39.8,54.4,1.5,2.4 43 | 2008-06,0,41,54.2,1.7,2.6 44 | 2008-07,0,42.6,52.4,1.9,2.5 45 | 2008-08,0,43.7,51,2.1,2.6 46 | 2008-09,3.1,42.6,49,2,2.7 47 | 2008-10,3,44,47.4,2.2,2.8 48 | 2008-11,3.1,44.2,47,2.3,2.7 49 | 2008-12,3.6,44.4,46,2.4,2.7 50 | 2009-01,3.9,45.5,44.8,2.3,3 51 | 2009-02,4,46.4,43.6,2.2,3 52 | 2009-03,4.2,46.5,43.3,2.3,3.1 53 | 2009-04,4.9,47.1,42.1,2.2,3 54 | 2009-05,5.5,47.7,41,2.2,3 55 | 2009-06,6,47.3,40.7,2.1,3.1 56 | 2009-07,6.5,47.9,39.4,2.1,3.3 57 | 2009-08,7,47.4,39.3,2.1,3.3 58 | 2009-09,7.1,46.6,39.6,2.2,3.6 59 | 2009-10,8,47.5,37.5,2.3,3.8 60 | 2009-11,8.5,47,37.7,2.3,3.8 61 | 2009-12,9.8,46.4,37.2,2.3,3.6 62 | 2010-01,10.8,46.3,36.2,2.2,3.7 63 | 2010-02,11.6,46.5,35.3,2.1,3.8 64 | 2010-03,12.3,46.2,34.9,2.2,3.7 65 | 2010-04,13.6,46.4,33.4,2.2,3.7 66 | 2010-05,14.5,46.9,32.2,2.2,3.5 67 | 2010-06,15.9,46.6,31,2.1,3.6 68 | 2010-07,16.7,46.4,30.4,2.3,3.4 69 | 2010-08,17,45.8,30.7,2.3,3.5 70 | 2010-09,17.3,45.1,31.1,2.2,3.7 71 | 2010-10,19.2,44.1,29.7,2.2,3.9 72 | 2010-11,20.5,44,28.6,2.3,4 73 | 2010-12,22.4,43.5,27.5,2.2,3.8 74 | 2011-01,23.8,42.8,26.6,2.5,4 75 | 2011-02,24.1,42.4,26.5,2.5,4.1 76 | 2011-03,25,42.2,25.8,2.5,4 77 | 2011-04,25.6,42.9,24.3,2.6,4.1 78 | 2011-05,25.9,42.4,24.9,2.4,4 79 | 2011-06,27.9,42.2,23.2,2.4,3.7 80 | 2011-07,29.4,42,22,2.4,3.6 81 | 2011-08,30.3,40.6,22.4,2.3,3.8 82 | 2011-09,30.5,39.7,22.9,2.2,4 83 | 2011-10,32.3,38.7,21.7,2.4,4.2 84 | 2011-11,33.4,38.1,21.2,2.4,4.2 85 | 2011-12,34.6,37.7,20.2,2.5,4.2 86 | 2012-01,35.3,37.1,20.1,2.4,4.3 87 | 2012-02,36.3,36.6,19.5,2.3,4.5 88 | 2012-03,37.3,36.3,18.9,2.3,4.4 89 | 2012-04,38.3,35.8,18.3,2.3,4.5 90 | 2012-05,39.3,35.2,18.1,2.2,4.3 91 | 2012-06,41.7,34.4,16.7,2.2,4.1 92 | 2012-07,42.9,33.7,16.3,2.1,3.9 93 | 2012-08,43.7,32.8,16.2,2.2,4 94 | 2012-09,44.1,32.2,16.4,2.1,4.2 95 | 2012-10,44.9,31.8,16.1,2,4.3 96 | 2012-11,46.3,31.2,15.1,2,4.4 97 | 2012-12,46.9,31.1,14.7,2.1,4.2 98 | 2013-01,48.4,30.2,14.3,1.9,4.2 99 | 2013-02,50,29.6,13.5,1.8,4.1 100 | 2013-03,51.7,28.5,13,1.8,4.1 101 | 2013-04,52.7,27.9,12.7,1.7,4 102 | 2013-05,52.9,27.7,12.6,1.6,4 103 | 2013-06,52.1,28.9,12,1.7,3.9 104 | 2013-07,52.8,28.9,11.8,1.6,3.6 105 | 2013-08,52.9,28.2,11.8,1.8,3.9 106 | 2013-09,53.2,27.8,12.1,1.7,3.9 107 | 2013-10,54.1,27.2,11.7,1.7,3.8 108 | 2013-11,54.8,26.8,10.5,1.8,4 109 | 2013-12,55.8,26.8,9,1.9,3.8 110 | 2014-01,55.7,26.9,10.2,1.8,3.9 111 | 2014-02,56.4,26.4,9.8,1.9,4 112 | 2014-03,57.5,25.6,9.7,1.8,3.9 113 | 2014-04,58.4,25,9.4,1.8,4 114 | 2014-05,59.2,24.9,8.9,1.8,3.8 115 | 2014-06,59.3,25.1,8.8,1.8,3.7 116 | 2014-07,59.8,24.9,8.5,1.7,3.5 117 | 2014-08,60.1,24.7,8.3,1.8,3.7 118 | 2014-09,59.6,24,9.9,1.6,3.6 119 | 2014-10,60.4,23.4,9.5,1.6,3.9 120 | 2014-11,60.1,23.4,9.8,1.6,3.7 121 | 2014-12,61.6,23.6,8,1.6,3.7 122 | 2015-01,61.9,23.4,7.8,1.6,3.8 123 | 2015-02,62.5,22.9,8,1.5,3.9 124 | 2015-03,63.7,22.1,7.7,1.5,3.9 125 | 2015-04,63.9,21.6,8.0,1.5,3.8 126 | 2015-05,64.9,21.5,7.1,1.6,3.8 127 | 2015-06,64.8,21.3,7.1,1.8,3.8 128 | 2015-07,63.3,21.6,6.5,2.5,4.9 129 | 2015-08,64.0,21.2,6.6,2.2,4.5 130 | 2015-09,65.9,20.6,7.2,1.4,3.6 131 | 2015-10,66.5,20.0,6.9,1.4,3.8 132 | 2015-11,67.4,19.2,6.8,1.5,3.9 133 | 2015-12,68.0,19.1,6.3,1.5,3.7 134 | 2016-01,68.4,18.8,6.2,1.4,3.7 135 | 2016-02,69.0,18.6,6.2,1.3,3.7 136 | 2016-03,69.9,17.8,6.1,1.3,3.6 137 | 2016-04,70.4,17.5,5.8,1.3,3.7 138 | 2016-05,71.4,16.9,5.7,1.2,3.6 139 | -------------------------------------------------------------------------------- /scripts/process.py: -------------------------------------------------------------------------------- 1 | import os 2 | import csv 3 | import urllib 4 | 5 | import dateutil.parser 6 | 7 | import datautil as D 8 | import datautil.tabular 9 | 10 | cache = 'cache' 11 | if not(os.path.exists(cache)): 12 | os.makedirs(cache) 13 | cachepath = os.path.join(cache, 'browser_stats.asp') 14 | URL = 'http://www.w3schools.com/browsers/browsers_stats.asp' 15 | 16 | class Parser: 17 | def __init__(self): 18 | self.browsers = [] 19 | self.dates = [] 20 | self.results = {} 21 | 22 | def execute(self): 23 | urllib.urlretrieve(URL, cachepath) 24 | html = open(cachepath) 25 | reader = datautil.tabular.HtmlReader() 26 | tdata = reader.read(html, table_index=0) 27 | self.parse(tdata) 28 | self.dump() 29 | 30 | def dump(self): 31 | tdata = datautil.tabular.TabularData() 32 | tdata.header = ['Date'] + self.browsers 33 | self.dates.sort() 34 | for dd in self.dates: 35 | row = [dd] + [ self.results[b].get(dd, '') for b in self.browsers ] 36 | tdata.data.append(row) 37 | fileobj = file('data.csv', 'w') 38 | writer = datautil.tabular.CsvWriter() 39 | writer.write(tdata, fileobj) 40 | fileobj.close() 41 | 42 | def parse(self, tdata): 43 | self.browsers = set() 44 | values = {} 45 | for idx, row in enumerate(tdata.data): 46 | if idx == 0 or tdata.data[idx-1][0] == '': 47 | self.browsers.update(set(row[1:])) 48 | self.browsers.discard('') 49 | self.browsers = list(self.browsers) 50 | self.browsers.append('Moz-All') 51 | self.browsers.sort() 52 | for k in self.browsers: 53 | self.results[k] = {} 54 | section = [] 55 | for row in tdata.data: 56 | if row[0] == '': 57 | self.parse_section(section) 58 | section = [] 59 | else: 60 | section.append(row) 61 | self.parse_section(section) 62 | # add in extra 63 | for browser,date_dict in self.results.items(): 64 | for dd,v in date_dict.items(): 65 | if browser.startswith('N') or browser in ['Fx', 'Firefox', 66 | 'Moz', 'Mozilla']: 67 | self.results['Moz-All'][dd] = \ 68 | self.results['Moz-All'].get(dd, 0) \ 69 | + v 70 | 71 | def parse_section(self, section): 72 | year = int(section[0][0]) 73 | for row in section[1:]: 74 | month = dateutil.parser.parse(row[0], default=datetime.datetime.now() 75 | .replace(day=1, hour=0, minute=0, second=0, microsecond=0)).month 76 | date = '%d-%02d' % (year, month) 77 | self.dates.append(date) 78 | for idx, value in enumerate(row[1:]): 79 | browser = section[0][idx+1] 80 | # have some columns with empty name and no entries 81 | if browser == '': 82 | continue 83 | v = value.replace('%', '') 84 | if v: v = float(v) 85 | else: v = 0.0 86 | self.results[browser][date] = v 87 | 88 | def test_1(): 89 | p = Parser() 90 | p.execute() 91 | assert len(p.browsers) == 20, len(p.browsers) 92 | ie7 = p.results['IE7'] 93 | assert len(ie7) == 27, len(ie7) 94 | assert ie7['2008-01'] == 21.2, ie7['2008-01'] 95 | aol = p.results['AOL'] 96 | assert len(aol) == 6, len(aol) 97 | assert os.path.exists('data.csv') 98 | 99 | import datetime 100 | def plot(): 101 | import pylab 102 | reader = datautil.tabular.CsvReader() 103 | tdata = reader.read(open('data.csv')) 104 | transposed = zip(*tdata.data) 105 | dates = transposed[0] 106 | transposed = D.floatify_matrix(transposed) 107 | dates = [ dateutil.parser.parse(d) for d in dates ] 108 | ms = transposed[tdata.header.index('MS (All)')] 109 | moz = transposed[tdata.header.index('Moz (All)')] 110 | fx = transposed[tdata.header.index('Fx')] 111 | pylab.plot_date(dates, ms, fmt='k-.', label='IE (All)') 112 | pylab.plot_date(dates, moz, fmt='b-', label='Moz (All)') 113 | pylab.plot_date(dates, fx, fmt='r--', label='Fx') 114 | ayear = datetime.timedelta(days=365) 115 | xmax = dates[-1] + ayear 116 | xmin = dates[0] - ayear 117 | pylab.xlim(xmax=xmax, xmin=xmin) 118 | pylab.ylim(ymax=100) 119 | pylab.ylabel('Market Share') 120 | pylab.xlabel('Date') 121 | pylab.legend() 122 | pylab.savefig('browser_stats_ms_moz.png') 123 | 124 | import optparse 125 | import sys 126 | if __name__ == '__main__': 127 | usage = '''%prog {action} 128 | 129 | extract: extract the data into data.csv 130 | plot: plot local browser stats picture using matplotlib 131 | (requires extraction first) 132 | 133 | You can run tests using nosetests. 134 | ''' 135 | parser = optparse.OptionParser(usage) 136 | options, args = parser.parse_args() 137 | if not args: 138 | parser.print_help() 139 | sys.exit(1) 140 | if args[0] == 'extract': 141 | p = Parser() 142 | p.execute() 143 | if args[0] == 'plot': 144 | plot() 145 | 146 | -------------------------------------------------------------------------------- /data.csv: -------------------------------------------------------------------------------- 1 | Date,AOL,Chrome,Firefox,Internet Explorer,Moz-All,Mozilla,Netscape,Opera,Safari 2 | 2002-01,2.8,,,85.8,7.9,,7.9,, 3 | 2002-03,3,,,86.1,7.7,,7.7,, 4 | 2002-05,2.8,,,86.7,7.3,,7.3,, 5 | 2002-07,3.5,,,84.5,7.3,,7.3,, 6 | 2002-09,4.5,,,83.5,8,,8,, 7 | 2002-11,5.2,,,83.4,8,,8,, 8 | 2003-01,,,,84.6,8,4,4,0, 9 | 2003-03,,,,88,7.6,4.2,3.4,1.2, 10 | 2003-05,,,,87.7,7.9,4.6,3.3,1.4, 11 | 2003-07,,,,87.2,8.4,5.7,2.7,1.7, 12 | 2003-09,,,,86.6,8.9,6.2,2.7,1.8, 13 | 2003-11,,,,84.9,9.8,7.2,2.6,1.9, 14 | 2004-01,,,,84.7,7.9,5.5,2.4,1.5, 15 | 2004-03,,,,82.8,10.7,7.9,2.8,1.4, 16 | 2004-05,,,,81.9,11.9,9.5,2.4,1.6, 17 | 2004-07,,,,80.4,14.8,12.6,2.2,1.6, 18 | 2004-09,,,,79,15.7,13.7,2,1.7, 19 | 2004-11,,,,76.2,18.2,16.5,1.7,1.6, 20 | 2005-01,,,16.6,74.5,21.1,3.4,1.1,1.9, 21 | 2005-03,,,18.9,72.5,23.2,3.3,1,1.9, 22 | 2005-05,,,21,71.6,24.8,3.1,0.7,1.3, 23 | 2005-07,,,19.8,73.8,22.9,2.6,0.5,1.2, 24 | 2005-09,,,18,75.5,20.9,2.5,0.4,1.2, 25 | 2005-11,,,23.6,68.9,26.8,2.8,0.4,1.5, 26 | 2006-01,,,25,66,28.6,3.1,0.5,1.6, 27 | 2006-03,,,24.5,64.7,27.4,2.4,0.5,1.5, 28 | 2006-05,,,25.7,63,28.3,2.3,0.3,1.5, 29 | 2006-07,,,25.5,62.4,28.2,2.3,0.4,1.4, 30 | 2006-09,,,27.3,62.1,30,2.3,0.4,1.6, 31 | 2006-11,,,29.9,60.6,32.6,2.5,0.2,1.5, 32 | 2007-01,,,31,58.6,32.5,1.5,,1.5,1.7 33 | 2007-03,,,31.8,58.7,33.1,1.3,,1.6,1.6 34 | 2007-05,,,33.7,58.9,35,1.3,,1.7,1.5 35 | 2007-07,,,34.5,58.5,35.9,1.4,,1.9,1.5 36 | 2007-09,,,35.4,57.2,36.6,1.2,,1.5,1.6 37 | 2007-11,,,36.3,56,37.5,1.2,,1.6,1.8 38 | 2008-01,,0,36.4,54.7,36.4,,,1.4,1.9 39 | 2008-02,,0,36.5,54.7,36.5,,,1.4,2 40 | 2008-03,,0,37,53.9,37,,,1.4,2.1 41 | 2008-04,,0,39.1,54.8,39.1,,,1.4,2.2 42 | 2008-05,,0,39.8,54.4,39.8,,,1.5,2.4 43 | 2008-06,,0,41,54.2,41,,,1.7,2.6 44 | 2008-07,,0,42.6,52.4,42.6,,,1.9,2.5 45 | 2008-08,,0,43.7,51,43.7,,,2.1,2.6 46 | 2008-09,,3.1,42.6,49,42.6,,,2,2.7 47 | 2008-10,,3,44,47.4,44,,,2.2,2.8 48 | 2008-11,,3.1,44.2,47,44.2,,,2.3,2.7 49 | 2008-12,,3.6,44.4,46,44.4,,,2.4,2.7 50 | 2009-01,,3.9,45.5,44.8,45.5,,,2.3,3 51 | 2009-02,,4,46.4,43.6,46.4,,,2.2,3 52 | 2009-03,,4.2,46.5,43.3,46.5,,,2.3,3.1 53 | 2009-04,,4.9,47.1,42.1,47.1,,,2.2,3 54 | 2009-05,,5.5,47.7,41,47.7,,,2.2,3 55 | 2009-06,,6,47.3,40.7,47.3,,,2.1,3.1 56 | 2009-07,,6.5,47.9,39.4,47.9,,,2.1,3.3 57 | 2009-08,,7,47.4,39.3,47.4,,,2.1,3.3 58 | 2009-09,,7.1,46.6,39.6,46.6,,,2.2,3.6 59 | 2009-10,,8,47.5,37.5,47.5,,,2.3,3.8 60 | 2009-11,,8.5,47,37.7,47,,,2.3,3.8 61 | 2009-12,,9.8,46.4,37.2,46.4,,,2.3,3.6 62 | 2010-01,,10.8,46.3,36.2,46.3,,,2.2,3.7 63 | 2010-02,,11.6,46.5,35.3,46.5,,,2.1,3.8 64 | 2010-03,,12.3,46.2,34.9,46.2,,,2.2,3.7 65 | 2010-04,,13.6,46.4,33.4,46.4,,,2.2,3.7 66 | 2010-05,,14.5,46.9,32.2,46.9,,,2.2,3.5 67 | 2010-06,,15.9,46.6,31,46.6,,,2.1,3.6 68 | 2010-07,,16.7,46.4,30.4,46.4,,,2.3,3.4 69 | 2010-08,,17,45.8,30.7,45.8,,,2.3,3.5 70 | 2010-09,,17.3,45.1,31.1,45.1,,,2.2,3.7 71 | 2010-10,,19.2,44.1,29.7,44.1,,,2.2,3.9 72 | 2010-11,,20.5,44,28.6,44,,,2.3,4 73 | 2010-12,,22.4,43.5,27.5,43.5,,,2.2,3.8 74 | 2011-01,,23.8,42.8,26.6,42.8,,,2.5,4 75 | 2011-02,,24.1,42.4,26.5,42.4,,,2.5,4.1 76 | 2011-03,,25,42.2,25.8,42.2,,,2.5,4 77 | 2011-04,,25.6,42.9,24.3,42.9,,,2.6,4.1 78 | 2011-05,,25.9,42.4,24.9,42.4,,,2.4,4 79 | 2011-06,,27.9,42.2,23.2,42.2,,,2.4,3.7 80 | 2011-07,,29.4,42,22,42,,,2.4,3.6 81 | 2011-08,,30.3,40.6,22.4,40.6,,,2.3,3.8 82 | 2011-09,,30.5,39.7,22.9,39.7,,,2.2,4 83 | 2011-10,,32.3,38.7,21.7,38.7,,,2.4,4.2 84 | 2011-11,,33.4,38.1,21.2,38.1,,,2.4,4.2 85 | 2011-12,,34.6,37.7,20.2,37.7,,,2.5,4.2 86 | 2012-01,,35.3,37.1,20.1,37.1,,,2.4,4.3 87 | 2012-02,,36.3,36.6,19.5,36.6,,,2.3,4.5 88 | 2012-03,,37.3,36.3,18.9,36.3,,,2.3,4.4 89 | 2012-04,,38.3,35.8,18.3,35.8,,,2.3,4.5 90 | 2012-05,,39.3,35.2,18.1,35.2,,,2.2,4.3 91 | 2012-06,,41.7,34.4,16.7,34.4,,,2.2,4.1 92 | 2012-07,,42.9,33.7,16.3,33.7,,,2.1,3.9 93 | 2012-08,,43.7,32.8,16.2,32.8,,,2.2,4 94 | 2012-09,,44.1,32.2,16.4,32.2,,,2.1,4.2 95 | 2012-10,,44.9,31.8,16.1,31.8,,,2,4.3 96 | 2012-11,,46.3,31.2,15.1,31.2,,,2,4.4 97 | 2012-12,,46.9,31.1,14.7,31.1,,,2.1,4.2 98 | 2013-01,,48.4,30.2,14.3,30.2,,,1.9,4.2 99 | 2013-02,,50,29.6,13.5,29.6,,,1.8,4.1 100 | 2013-03,,51.7,28.5,13,28.5,,,1.8,4.1 101 | 2013-04,,52.7,27.9,12.7,27.9,,,1.7,4 102 | 2013-05,,52.9,27.7,12.6,27.7,,,1.6,4 103 | 2013-06,,52.1,28.9,12,28.9,,,1.7,3.9 104 | 2013-07,,52.8,28.9,11.8,28.9,,,1.6,3.6 105 | 2013-08,,52.9,28.2,11.8,28.2,,,1.8,3.9 106 | 2013-09,,53.2,27.8,12.1,27.8,,,1.7,3.9 107 | 2013-10,,54.1,27.2,11.7,27.2,,,1.7,3.8 108 | 2013-11,,54.8,26.8,10.5,26.8,,,1.8,4 109 | 2013-12,,55.8,26.8,9,26.8,,,1.9,3.8 110 | 2014-01,,55.7,26.9,10.2,26.9,,,1.8,3.9 111 | 2014-02,,56.4,26.4,9.8,26.4,,,1.9,4 112 | 2014-03,,57.5,25.6,9.7,25.6,,,1.8,3.9 113 | 2014-04,,58.4,25,9.4,25,,,1.8,4 114 | 2014-05,,59.2,24.9,8.9,24.9,,,1.8,3.8 115 | 2014-06,,59.3,25.1,8.8,25.1,,,1.8,3.7 116 | 2014-07,,59.8,24.9,8.5,24.9,,,1.7,3.5 117 | 2014-08,,60.1,24.7,8.3,24.7,,,1.8,3.7 118 | 2014-09,,59.6,24,9.9,24,,,1.6,3.6 119 | 2014-10,,60.4,23.4,9.5,23.4,,,1.6,3.9 120 | 2014-11,,60.1,23.4,9.8,23.4,,,1.6,3.7 121 | 2014-12,,61.6,23.6,8,23.6,,,1.6,3.7 122 | 2015-01,,61.9,23.4,7.8,23.4,,,1.6,3.8 123 | 2015-02,,62.5,22.9,8,22.9,,,1.5,3.9 124 | 2015-03,,63.7,22.1,7.7,22.1,,,1.5,3.9 125 | 2015-04,,63.9,21.6,8.0,21.6,,,1.5,3.8 126 | 2015-05,,64.9,21.5,7.1,21.5,,,1.6,3.8 127 | 2015-06,,64.8,21.3,7.1,21.3,,,1.8,3.8 128 | 2015-07,,63.3,21.6,6.5,21.6,,,2.5,4.9 129 | 2015-08,,64.0,21.2,6.6,21.2,,,2.2,4.5 130 | 2015-09,,65.9,20.6,7.2,20.6,,,1.4,3.6 131 | 2015-10,,66.5,20.0,6.9,20.0,,,1.4,3.8 132 | 2015-11,,67.4,19.2,6.8,19.2,,,1.5,3.9 133 | 2015-12,,68.0,19.1,6.3,19.1,,,1.5,3.7 134 | 2016-01,,68.4,18.8,6.2,18.8,,,1.4,3.7 135 | 2016-02,,69.0,18.6,6.2,18.6,,,1.3,3.7 136 | 2016-03,,69.9,17.8,6.1,17.8,,,1.3,3.6 137 | 2016-04,,70.4,17.5,5.8,17.5,,,1.3,3.7 138 | 2016-05,,71.4,16.9,5.7,16.9,,,1.2,3.6 139 | --------------------------------------------------------------------------------