Service Industry#
A small spreadsheet puclished by the UK Office for National Statistcs, makes heavy use of whitespace and inconsistent and fairly irregular spatial relationships between concepts. There’s also some fairly semantically lackluster things scattered throughout, i.e <date> ->
(see cell A21).
So while neither particuarly big nor structually complex there are a few processing steps needed to make this source legible as tidy data.
Note - you could go into quite some detail capturing nuances of footnotes against values if needed, for our purposes here I’m keeping in the bounds of extracting the basic data table.
Tutorial Structure#
With these example tutorials I’m going to comment heavily and cover nuances in a follow up section (with liberal targetted previews as needed) as it’s the easiest way to grapple with new ideas. It may also be worth opening up these notebooks yourself (they’re in ./jupyterbook
in the tidychef github repo) so you can run, alter and generally have a play about with this yourself as part of your learning.
We’ll cover:
source data
requirements, what we’re aiming to do here
show the full script (all logic commented)
output the selection preview
nuances (where applicable)
view the output
This sequencing is necessary as the output for some of the example is really long so that necessitates it coming last. If you’re viewing this via a jupyter book (i.e on the site) you can navigate between the above sections via your right hand menu.
Note - these tutorial scripts might seem verbose due all the comments but that’s ok (this is a tutorial after all). If you take them out you end up with a fairly succinct and human readable encapsulation of what would otherwise (with existing tools) be a rather convoluted and fragile set of instructions to express.
In virtually all cases I’ll make heavy use of preview
and bounded
to only look at relevant parts of what can be quite large datasets. Downloads links are provided for the source data.
Source#
For this example we’re extracting the table “TOPS19” as shown below (note - preview cropped for reasons of practicality):
from tidychef import acquire, preview
from tidychef.selection import XlsSelectable
table: XlsSelectable = acquire.xls.http("https://raw.githubusercontent.com/mikeAdamss/tidychef/main/tests/fixtures/xls/service-industry.xls", tables="TOPSI9")
preview(table, bounded="A1:Q22")
TOPSI9
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | |
1 | TOPSI9 | UK Production Turnover | |||||||||||||||
2 | Turnover in Production and Services Industries | ||||||||||||||||
3 | Current price, not seasonally adjusted | £ million | |||||||||||||||
4 | Back to Contents | Manufacture of air and spacecraft and related machinery | |||||||||||||||
5 | Building of ships and boats | Manufacture of other transport equipment | |||||||||||||||
6 | Manufacture of furniture | Other manufacturing | |||||||||||||||
7 | |||||||||||||||||
8 | 30.1 | 30.3 | 30.2/4/9 (30OTHER) | 31 | 32 | ||||||||||||
9 | JQR4 | JQS8 | JQU4 | JQV2 | JQV5 | ||||||||||||
10 | |||||||||||||||||
11 | 2012.0 | 4787.6 | 21632.8 | 2162.2 | 6722.5 | 8784.8 | |||||||||||
12 | 2013.0 | 4484.8 | 24556.8 | 2487.0 | 6821.2 | 9217.7 | |||||||||||
13 | 2014.0 | 4656.2 | 23227.9 | 2417.0 | 7661.3 | 9422.9 | |||||||||||
14 | 2015.0 | 4774.6 | 25425.3 | 2293.0 | 8011.8 | 8830.2 | |||||||||||
15 | 2016.0 | 4540.6 | 27401.9 | 2381.1 | 8472.3 | 9902.8 | |||||||||||
16 | |||||||||||||||||
17 | |||||||||||||||||
18 | 2015.0 | Q3 | 1106.1 | 5633.2 | 579.2 | 2032.2 | 2194.0 | ||||||||||
19 | Q4 | 1216.9 | 7392.4 | 543.3 | 2075.8 | 2248.9 | |||||||||||
20 | |||||||||||||||||
21 | 2016 -> | Q1 | 964.4 | 5697.7 | 603.5 | 2014.8 | 2488.6 | ||||||||||
22 | Q2 | 1623.8 | 6897.4 | 637.5 | 2070.6 | 2433.5 |
From an xlsx source which can be downloaded here.
Requirements#
We’ll take the line 4 and 5 headers as “Production”.
Time is an add amalgamation of columns A+B so we’ll tidy up and concatentate them.
We’ll take row 9 as “CDID” (as I happen to know that’s the name of this particular type of identifier).
We’ll take the main observations as “Observations”
We’ll clean off the sub table at the bottom as unneccesary for our purpose here.
from typing import List
from tidychef import acquire, against, preview, filters
from tidychef.direction import up, down, left, right
from tidychef.output import Column, TidyData
from tidychef.selection import XlsSelectable
table: XlsSelectable = acquire.xls.http("https://raw.githubusercontent.com/mikeAdamss/tidychef/main/tests/fixtures/xls/service-industry.xls", tables="TOPSI9")
# We have an extended footer section (almost a separate table) under the main table, we're gonna select it here
# just so we can remove it from the other selections
unwanted = table.excel_ref('A').filter(filters.contains_string("Average")).expand(right).expand(down)
# - (a) Find the row with a cell containing the string "ships"
# - (b) Extrude (expand but only one row) the selection down
# - (c) Extrude up we now have the ships row along with the row above and below it
# - (d) remove any blank cells from the selection
product = table.cell_containing_string("ships",strict=False).extrude(down).extrude(up).expand(right).is_not_blank().label_as("Producton")
# -----------------
# Approach to time:
# We're gonna take time as "year" and "time_qualifier" (quarter, month or blank) and concatentate them
# in the TidyData class, to give us a "Time" column of time_qualifer+year e.g '2019', 'Q1 2019', 'Jul 2019'.
# -----------------
# Get numeric values from column A.Expand down from them (to sweep up the odd -> annotations) and remove
# anything we might have swept up from the footer section
year = table.column('A').is_numeric().expand(down).is_not_blank().label_as("Year") - unwanted
# We'll cover this in nuances
time_qualifier = year.shift(right).expand(down).is_not_blank().label_as("Time Qualifier") - unwanted | year.shift(right)
# Get rows 8-10 then use a regex to find the CDID's (cells with four upper case characters)
# We're taking the rows 8,10 (currently wither side of the row we want) as a bit of future proofing
# against layout changes.
cdid = table.excel_ref('8:10').re(r"^[A-Z]{3}\d$").assert_single_row().label_as("CDID")
# Use a waffle to the observations.
observations = cdid.waffle(down, time_qualifier).is_not_blank().label_as("Observations")
# Create a bounded preview inline but also write the full preview to path
preview(product, year, time_qualifier, cdid, observations)
tidy_data = TidyData(
observations,
Column(product.attach_directly(down)),
Column(year.attach_closest(down), apply=lambda x: x[:4], validate=against.is_numeric), # lets both strip and make sure we've stripped the '->'
Column(time_qualifier.attach_directly(right)),
Column(cdid.attach_directly(down)),
Column.horizontal_condition("Time", lambda x: (x["Time Qualifier"] + " " + x["Year"]).strip()),
drop=["Year", "Time Qualifier"]
)
tidy_data.to_csv("service-industry.csv")
Producton |
Year |
Time Qualifier |
CDID |
Observations |
TOPSI9
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | |
1 | TOPSI9 | UK Production Turnover | |||||||||||||||||||
2 | Turnover in Production and Services Industries | ||||||||||||||||||||
3 | Current price, not seasonally adjusted | £ million | |||||||||||||||||||
4 | Back to Contents | Manufacture of air and spacecraft and related machinery | |||||||||||||||||||
5 | Building of ships and boats | Manufacture of other transport equipment | |||||||||||||||||||
6 | Manufacture of furniture | Other manufacturing | |||||||||||||||||||
7 | |||||||||||||||||||||
8 | 30.1 | 30.3 | 30.2/4/9 (30OTHER) | 31 | 32 | ||||||||||||||||
9 | JQR4 | JQS8 | JQU4 | JQV2 | JQV5 | ||||||||||||||||
10 | |||||||||||||||||||||
11 | 2012.0 | 4787.6 | 21632.8 | 2162.2 | 6722.5 | 8784.8 | |||||||||||||||
12 | 2013.0 | 4484.8 | 24556.8 | 2487.0 | 6821.2 | 9217.7 | |||||||||||||||
13 | 2014.0 | 4656.2 | 23227.9 | 2417.0 | 7661.3 | 9422.9 | |||||||||||||||
14 | 2015.0 | 4774.6 | 25425.3 | 2293.0 | 8011.8 | 8830.2 | |||||||||||||||
15 | 2016.0 | 4540.6 | 27401.9 | 2381.1 | 8472.3 | 9902.8 | |||||||||||||||
16 | |||||||||||||||||||||
17 | |||||||||||||||||||||
18 | 2015.0 | Q3 | 1106.1 | 5633.2 | 579.2 | 2032.2 | 2194.0 | ||||||||||||||
19 | Q4 | 1216.9 | 7392.4 | 543.3 | 2075.8 | 2248.9 | |||||||||||||||
20 | |||||||||||||||||||||
21 | 2016 -> | Q1 | 964.4 | 5697.7 | 603.5 | 2014.8 | 2488.6 | ||||||||||||||
22 | Q2 | 1623.8 | 6897.4 | 637.5 | 2070.6 | 2433.5 | |||||||||||||||
23 | Q3 | 824.3 | 6443.6 | 563.5 | 2232.6 | 2407.6 | |||||||||||||||
24 | Q4 | 1128.1 | 8363.2 | 576.6 | 2154.3 | 2573.1 | |||||||||||||||
25 | |||||||||||||||||||||
26 | 2017.0 | Q1 | 1124.4 | 6984.0 | 646.4 | 2194.9 | 2722.0 | ||||||||||||||
27 | Q2 | 1510.7 | 7904.9 | 706.2 | 2081.7 | 2406.6 | |||||||||||||||
28 | Q3 | 1216.6 | 7113.8 | 672.7 | 2262.1 | 2562.4 | |||||||||||||||
29 | |||||||||||||||||||||
30 | |||||||||||||||||||||
31 | 2015.0 | Jul | 338.7 | 1913.5 | 201.0 | 714.3 | 738.7 | ||||||||||||||
32 | Aug | 386.1 | 1715.4 | 175.7 | 611.8 | 644.9 | |||||||||||||||
33 | Sep | 381.3 | 2004.3 | 202.5 | 706.1 | 810.4 | |||||||||||||||
34 | Oct | 324.9 | 2243.1 | 178.8 | 712.9 | 756.6 | |||||||||||||||
35 | Nov | 339.6 | 2113.0 | 172.9 | 766.4 | 757.9 | |||||||||||||||
36 | Dec | 552.4 | 3036.3 | 191.6 | 596.5 | 734.4 | |||||||||||||||
37 | |||||||||||||||||||||
38 | 2016 -> | Jan | 233.0 | 1579.7 | 146.9 | 577.3 | 772.0 | ||||||||||||||
39 | Feb | 251.3 | 1801.9 | 195.0 | 686.3 | 844.6 | |||||||||||||||
40 | Mar | 480.1 | 2316.1 | 261.6 | 751.2 | 872.0 | |||||||||||||||
41 | Apr | 920.0 | 1896.1 | 180.8 | 701.1 | 818.4 | |||||||||||||||
42 | May | 356.0 | 2401.2 | 196.3 | 680.9 | 789.9 | |||||||||||||||
43 | Jun | 347.8 | 2600.1 | 260.4 | 688.6 | 825.2 | |||||||||||||||
44 | |||||||||||||||||||||
45 | Jul | 233.2 | 2098.4 | 170.7 | 704.6 | 789.3 | |||||||||||||||
46 | Aug | 227.0 | 2127.5 | 164.4 | 751.3 | 755.3 | |||||||||||||||
47 | Sep | 364.1 | 2217.7 | 228.4 | 776.7 | 863.0 | |||||||||||||||
48 | Oct | 254.2 | 2557.6 | 201.5 | 776.1 | 841.6 | |||||||||||||||
49 | Nov | 312.9 | 2493.2 | 166.8 | 793.7 | 908.1 | |||||||||||||||
50 | Dec | 561.0 | 3312.4 | 208.3 | 584.5 | 823.4 | |||||||||||||||
51 | |||||||||||||||||||||
52 | 2017.0 | Jan | 229.1 | 1742.7 | 193.0 | 662.8 | 839.8 | ||||||||||||||
53 | Feb | 319.6 | 2344.4 | 202.0 | 718.7 | 869.1 | |||||||||||||||
54 | Mar | 575.7 | 2896.9 | 251.4 | 813.4 | 1013.1 | |||||||||||||||
55 | Apr | 363.0 | 2072.1 | 213.8 | 659.9 | 736.7 | |||||||||||||||
56 | May | 322.6 | 2622.0 | 233.8 | 717.2 | 814.1 | |||||||||||||||
57 | Jun | 825.1 | 3210.8 | 258.6 | 704.6 | 855.8 | |||||||||||||||
58 | |||||||||||||||||||||
59 | Jul | 310.6 | 2172.8 | 222.4 | 710.4 | 837.3 | |||||||||||||||
60 | Aug | 470.8 | 2281.0 | 206.0 | 788.0 | 823.9 | |||||||||||||||
61 | Sep | 435.2 | 2660.0 | 244.3 | 763.7 | 901.2 | |||||||||||||||
62 | |||||||||||||||||||||
63 | |||||||||||||||||||||
64 | Average for 3 months up to | ||||||||||||||||||||
65 | |||||||||||||||||||||
66 | 2016 Sep | 274.8 | 2147.9 | 187.8 | 744.2 | 802.5 | |||||||||||||||
67 | |||||||||||||||||||||
68 | Average for 3 months up to | ||||||||||||||||||||
69 | |||||||||||||||||||||
70 | 2017 Sep | 405.5 | 2371.3 | 224.2 | 754.0 | 854.1 | |||||||||||||||
71 | |||||||||||||||||||||
72 | Percentage change1 to | ||||||||||||||||||||
73 | |||||||||||||||||||||
74 | 2017 Sep | 47.6 | 10.4 | 19.4 | 1.3 | 6.4 | |||||||||||||||
75 | |||||||||||||||||||||
76 | † Indicates the earliest period in the series that has been revised. | ||||||||||||||||||||
77 | -> Marks an increase in data coverage of our | Business Register, to include a population of solely PAYE based businesses. | |||||||||||||||||||
78 | Industry group estimates most affected in these tables: 14; 16; 56; 68.3; 69.1; 69.2; 70.2; 74; 78; 81.2; 82; 86, and 96.01-03 | ||||||||||||||||||||
79 | 1 Percentages are based on values rounded to four decimal places | ||||||||||||||||||||
80 | |||||||||||||||||||||
81 | |||||||||||||||||||||
82 | |||||||||||||||||||||
83 | |||||||||||||||||||||
84 |
Nuances#
Extracting the time qualifer#
I mainly wanted to detail this as it’s a good example of using union during an extraction to handle an awkward scenario. Here’s the line in question:
time_qualifier = year.shift(right).expand(down).is_not_blank().label_as("time2") - unwanted | year.shift(right)
Now we’ll step through what’s actually happening here.
# Lets get the left side of the selection
examp1e1 = year.shift(right).expand(down).is_not_blank().label_as("Time Qualifier - left side of union") - unwanted
preview(examp1e1, bounded="A5:H22")
Time Qualifier - left side of union |
TOPSI9
A | B | C | D | E | F | G | H | |
5 | Building of ships and boats | |||||||
6 | ||||||||
7 | ||||||||
8 | 30.1 | 30.3 | ||||||
9 | JQR4 | JQS8 | ||||||
10 | ||||||||
11 | 2012.0 | 4787.6 | 21632.8 | |||||
12 | 2013.0 | 4484.8 | 24556.8 | |||||
13 | 2014.0 | 4656.2 | 23227.9 | |||||
14 | 2015.0 | 4774.6 | 25425.3 | |||||
15 | 2016.0 | 4540.6 | 27401.9 | |||||
16 | ||||||||
17 | ||||||||
18 | 2015.0 | Q3 | 1106.1 | 5633.2 | ||||
19 | Q4 | 1216.9 | 7392.4 | |||||
20 | ||||||||
21 | 2016 -> | Q1 | 964.4 | 5697.7 | ||||
22 | Q2 | 1623.8 | 6897.4 |
So this gives us some but not all of the selections we need.
Notice we’re missing a selection for B11:B15. All columns must have a cell to lookup, even if that cell is blank (blank is fine "" + year
just ends up with year, which is the right result in this scenario). So we need to find a way to add those missing four blank cells to the selection.
Which brings us the right side of the union statement - lets see what it resolves to.
right_side_of_union = year.shift(right).label_as("Time Qualifier - right side of union")
preview(right_side_of_union, bounded="A5:H22")
Time Qualifier - right side of union |
TOPSI9
A | B | C | D | E | F | G | H | |
5 | Building of ships and boats | |||||||
6 | ||||||||
7 | ||||||||
8 | 30.1 | 30.3 | ||||||
9 | JQR4 | JQS8 | ||||||
10 | ||||||||
11 | 2012.0 | 4787.6 | 21632.8 | |||||
12 | 2013.0 | 4484.8 | 24556.8 | |||||
13 | 2014.0 | 4656.2 | 23227.9 | |||||
14 | 2015.0 | 4774.6 | 25425.3 | |||||
15 | 2016.0 | 4540.6 | 27401.9 | |||||
16 | ||||||||
17 | ||||||||
18 | 2015.0 | Q3 | 1106.1 | 5633.2 | ||||
19 | Q4 | 1216.9 | 7392.4 | |||||
20 | ||||||||
21 | 2016 -> | Q1 | 964.4 | 5697.7 | ||||
22 | Q2 | 1623.8 | 6897.4 |
So this also gives us some but not all of what we need.
So we need both, so (to bring us full circle) we need a union
of the cells in these selctions, hence:
time_qualifier = year.shift(right).expand(down).is_not_blank().label_as("Time Qualifier") - unwanted | year.shift(right)
preview(time_qualifier, bounded="A5:H22")
Time Qualifier |
TOPSI9
A | B | C | D | E | F | G | H | |
5 | Building of ships and boats | |||||||
6 | ||||||||
7 | ||||||||
8 | 30.1 | 30.3 | ||||||
9 | JQR4 | JQS8 | ||||||
10 | ||||||||
11 | 2012.0 | 4787.6 | 21632.8 | |||||
12 | 2013.0 | 4484.8 | 24556.8 | |||||
13 | 2014.0 | 4656.2 | 23227.9 | |||||
14 | 2015.0 | 4774.6 | 25425.3 | |||||
15 | 2016.0 | 4540.6 | 27401.9 | |||||
16 | ||||||||
17 | ||||||||
18 | 2015.0 | Q3 | 1106.1 | 5633.2 | ||||
19 | Q4 | 1216.9 | 7392.4 | |||||
20 | ||||||||
21 | 2016 -> | Q1 | 964.4 | 5697.7 | ||||
22 | Q2 | 1623.8 | 6897.4 |
Outputs#
The tidy data can be view here and a full inline preview of the tidydata generated is shown below for those people who’d prefer to scroll.
print(tidy_data)
Observations | Producton | CDID | Time |
4787.6 | Building of ships and boats | JQR4 | 2012 |
21632.8 | Manufacture of air and spacecraft and related machinery | JQS8 | 2012 |
2162.2 | Manufacture of other transport equipment | JQU4 | 2012 |
6722.5 | Manufacture of furniture | JQV2 | 2012 |
8784.8 | Other manufacturing | JQV5 | 2012 |
4484.8 | Building of ships and boats | JQR4 | 2013 |
24556.8 | Manufacture of air and spacecraft and related machinery | JQS8 | 2013 |
2487.0 | Manufacture of other transport equipment | JQU4 | 2013 |
6821.2 | Manufacture of furniture | JQV2 | 2013 |
9217.7 | Other manufacturing | JQV5 | 2013 |
4656.2 | Building of ships and boats | JQR4 | 2014 |
23227.9 | Manufacture of air and spacecraft and related machinery | JQS8 | 2014 |
2417.0 | Manufacture of other transport equipment | JQU4 | 2014 |
7661.3 | Manufacture of furniture | JQV2 | 2014 |
9422.9 | Other manufacturing | JQV5 | 2014 |
4774.6 | Building of ships and boats | JQR4 | 2015 |
25425.3 | Manufacture of air and spacecraft and related machinery | JQS8 | 2015 |
2293.0 | Manufacture of other transport equipment | JQU4 | 2015 |
8011.8 | Manufacture of furniture | JQV2 | 2015 |
8830.2 | Other manufacturing | JQV5 | 2015 |
4540.6 | Building of ships and boats | JQR4 | 2016 |
27401.9 | Manufacture of air and spacecraft and related machinery | JQS8 | 2016 |
2381.1 | Manufacture of other transport equipment | JQU4 | 2016 |
8472.3 | Manufacture of furniture | JQV2 | 2016 |
9902.8 | Other manufacturing | JQV5 | 2016 |
1106.1 | Building of ships and boats | JQR4 | Q3 2015 |
5633.2 | Manufacture of air and spacecraft and related machinery | JQS8 | Q3 2015 |
579.2 | Manufacture of other transport equipment | JQU4 | Q3 2015 |
2032.2 | Manufacture of furniture | JQV2 | Q3 2015 |
2194.0 | Other manufacturing | JQV5 | Q3 2015 |
1216.9 | Building of ships and boats | JQR4 | Q4 2015 |
7392.4 | Manufacture of air and spacecraft and related machinery | JQS8 | Q4 2015 |
543.3 | Manufacture of other transport equipment | JQU4 | Q4 2015 |
2075.8 | Manufacture of furniture | JQV2 | Q4 2015 |
2248.9 | Other manufacturing | JQV5 | Q4 2015 |
964.4 | Building of ships and boats | JQR4 | Q1 2016 |
5697.7 | Manufacture of air and spacecraft and related machinery | JQS8 | Q1 2016 |
603.5 | Manufacture of other transport equipment | JQU4 | Q1 2016 |
2014.8 | Manufacture of furniture | JQV2 | Q1 2016 |
2488.6 | Other manufacturing | JQV5 | Q1 2016 |
1623.8 | Building of ships and boats | JQR4 | Q2 2016 |
6897.4 | Manufacture of air and spacecraft and related machinery | JQS8 | Q2 2016 |
637.5 | Manufacture of other transport equipment | JQU4 | Q2 2016 |
2070.6 | Manufacture of furniture | JQV2 | Q2 2016 |
2433.5 | Other manufacturing | JQV5 | Q2 2016 |
824.3 | Building of ships and boats | JQR4 | Q3 2016 |
6443.6 | Manufacture of air and spacecraft and related machinery | JQS8 | Q3 2016 |
563.5 | Manufacture of other transport equipment | JQU4 | Q3 2016 |
2232.6 | Manufacture of furniture | JQV2 | Q3 2016 |
2407.6 | Other manufacturing | JQV5 | Q3 2016 |
1128.1 | Building of ships and boats | JQR4 | Q4 2016 |
8363.2 | Manufacture of air and spacecraft and related machinery | JQS8 | Q4 2016 |
576.6 | Manufacture of other transport equipment | JQU4 | Q4 2016 |
2154.3 | Manufacture of furniture | JQV2 | Q4 2016 |
2573.1 | Other manufacturing | JQV5 | Q4 2016 |
1124.4 | Building of ships and boats | JQR4 | Q1 2017 |
6984.0 | Manufacture of air and spacecraft and related machinery | JQS8 | Q1 2017 |
646.4 | Manufacture of other transport equipment | JQU4 | Q1 2017 |
2194.9 | Manufacture of furniture | JQV2 | Q1 2017 |
2722.0 | Other manufacturing | JQV5 | Q1 2017 |
1510.7 | Building of ships and boats | JQR4 | Q2 2017 |
7904.9 | Manufacture of air and spacecraft and related machinery | JQS8 | Q2 2017 |
706.2 | Manufacture of other transport equipment | JQU4 | Q2 2017 |
2081.7 | Manufacture of furniture | JQV2 | Q2 2017 |
2406.6 | Other manufacturing | JQV5 | Q2 2017 |
1216.6 | Building of ships and boats | JQR4 | Q3 2017 |
7113.8 | Manufacture of air and spacecraft and related machinery | JQS8 | Q3 2017 |
672.7 | Manufacture of other transport equipment | JQU4 | Q3 2017 |
2262.1 | Manufacture of furniture | JQV2 | Q3 2017 |
2562.4 | Other manufacturing | JQV5 | Q3 2017 |
338.7 | Building of ships and boats | JQR4 | Jul 2015 |
1913.5 | Manufacture of air and spacecraft and related machinery | JQS8 | Jul 2015 |
201.0 | Manufacture of other transport equipment | JQU4 | Jul 2015 |
714.3 | Manufacture of furniture | JQV2 | Jul 2015 |
738.7 | Other manufacturing | JQV5 | Jul 2015 |
386.1 | Building of ships and boats | JQR4 | Aug 2015 |
1715.4 | Manufacture of air and spacecraft and related machinery | JQS8 | Aug 2015 |
175.7 | Manufacture of other transport equipment | JQU4 | Aug 2015 |
611.8 | Manufacture of furniture | JQV2 | Aug 2015 |
644.9 | Other manufacturing | JQV5 | Aug 2015 |
381.3 | Building of ships and boats | JQR4 | Sep 2015 |
2004.3 | Manufacture of air and spacecraft and related machinery | JQS8 | Sep 2015 |
202.5 | Manufacture of other transport equipment | JQU4 | Sep 2015 |
706.1 | Manufacture of furniture | JQV2 | Sep 2015 |
810.4 | Other manufacturing | JQV5 | Sep 2015 |
324.9 | Building of ships and boats | JQR4 | Oct 2015 |
2243.1 | Manufacture of air and spacecraft and related machinery | JQS8 | Oct 2015 |
178.8 | Manufacture of other transport equipment | JQU4 | Oct 2015 |
712.9 | Manufacture of furniture | JQV2 | Oct 2015 |
756.6 | Other manufacturing | JQV5 | Oct 2015 |
339.6 | Building of ships and boats | JQR4 | Nov 2015 |
2113.0 | Manufacture of air and spacecraft and related machinery | JQS8 | Nov 2015 |
172.9 | Manufacture of other transport equipment | JQU4 | Nov 2015 |
766.4 | Manufacture of furniture | JQV2 | Nov 2015 |
757.9 | Other manufacturing | JQV5 | Nov 2015 |
552.4 | Building of ships and boats | JQR4 | Dec 2015 |
3036.3 | Manufacture of air and spacecraft and related machinery | JQS8 | Dec 2015 |
191.6 | Manufacture of other transport equipment | JQU4 | Dec 2015 |
596.5 | Manufacture of furniture | JQV2 | Dec 2015 |
734.4 | Other manufacturing | JQV5 | Dec 2015 |
233.0 | Building of ships and boats | JQR4 | Jan 2016 |
1579.7 | Manufacture of air and spacecraft and related machinery | JQS8 | Jan 2016 |
146.9 | Manufacture of other transport equipment | JQU4 | Jan 2016 |
577.3 | Manufacture of furniture | JQV2 | Jan 2016 |
772.0 | Other manufacturing | JQV5 | Jan 2016 |
251.3 | Building of ships and boats | JQR4 | Feb 2016 |
1801.9 | Manufacture of air and spacecraft and related machinery | JQS8 | Feb 2016 |
195.0 | Manufacture of other transport equipment | JQU4 | Feb 2016 |
686.3 | Manufacture of furniture | JQV2 | Feb 2016 |
844.6 | Other manufacturing | JQV5 | Feb 2016 |
480.1 | Building of ships and boats | JQR4 | Mar 2016 |
2316.1 | Manufacture of air and spacecraft and related machinery | JQS8 | Mar 2016 |
261.6 | Manufacture of other transport equipment | JQU4 | Mar 2016 |
751.2 | Manufacture of furniture | JQV2 | Mar 2016 |
872.0 | Other manufacturing | JQV5 | Mar 2016 |
920.0 | Building of ships and boats | JQR4 | Apr 2016 |
1896.1 | Manufacture of air and spacecraft and related machinery | JQS8 | Apr 2016 |
180.8 | Manufacture of other transport equipment | JQU4 | Apr 2016 |
701.1 | Manufacture of furniture | JQV2 | Apr 2016 |
818.4 | Other manufacturing | JQV5 | Apr 2016 |
356.0 | Building of ships and boats | JQR4 | May 2016 |
2401.2 | Manufacture of air and spacecraft and related machinery | JQS8 | May 2016 |
196.3 | Manufacture of other transport equipment | JQU4 | May 2016 |
680.9 | Manufacture of furniture | JQV2 | May 2016 |
789.9 | Other manufacturing | JQV5 | May 2016 |
347.8 | Building of ships and boats | JQR4 | Jun 2016 |
2600.1 | Manufacture of air and spacecraft and related machinery | JQS8 | Jun 2016 |
260.4 | Manufacture of other transport equipment | JQU4 | Jun 2016 |
688.6 | Manufacture of furniture | JQV2 | Jun 2016 |
825.2 | Other manufacturing | JQV5 | Jun 2016 |
233.2 | Building of ships and boats | JQR4 | Jul 2016 |
2098.4 | Manufacture of air and spacecraft and related machinery | JQS8 | Jul 2016 |
170.7 | Manufacture of other transport equipment | JQU4 | Jul 2016 |
704.6 | Manufacture of furniture | JQV2 | Jul 2016 |
789.3 | Other manufacturing | JQV5 | Jul 2016 |
227.0 | Building of ships and boats | JQR4 | Aug 2016 |
2127.5 | Manufacture of air and spacecraft and related machinery | JQS8 | Aug 2016 |
164.4 | Manufacture of other transport equipment | JQU4 | Aug 2016 |
751.3 | Manufacture of furniture | JQV2 | Aug 2016 |
755.3 | Other manufacturing | JQV5 | Aug 2016 |
364.1 | Building of ships and boats | JQR4 | Sep 2016 |
2217.7 | Manufacture of air and spacecraft and related machinery | JQS8 | Sep 2016 |
228.4 | Manufacture of other transport equipment | JQU4 | Sep 2016 |
776.7 | Manufacture of furniture | JQV2 | Sep 2016 |
863.0 | Other manufacturing | JQV5 | Sep 2016 |
254.2 | Building of ships and boats | JQR4 | Oct 2016 |
2557.6 | Manufacture of air and spacecraft and related machinery | JQS8 | Oct 2016 |
201.5 | Manufacture of other transport equipment | JQU4 | Oct 2016 |
776.1 | Manufacture of furniture | JQV2 | Oct 2016 |
841.6 | Other manufacturing | JQV5 | Oct 2016 |
312.9 | Building of ships and boats | JQR4 | Nov 2016 |
2493.2 | Manufacture of air and spacecraft and related machinery | JQS8 | Nov 2016 |
166.8 | Manufacture of other transport equipment | JQU4 | Nov 2016 |
793.7 | Manufacture of furniture | JQV2 | Nov 2016 |
908.1 | Other manufacturing | JQV5 | Nov 2016 |
561.0 | Building of ships and boats | JQR4 | Dec 2016 |
3312.4 | Manufacture of air and spacecraft and related machinery | JQS8 | Dec 2016 |
208.3 | Manufacture of other transport equipment | JQU4 | Dec 2016 |
584.5 | Manufacture of furniture | JQV2 | Dec 2016 |
823.4 | Other manufacturing | JQV5 | Dec 2016 |
229.1 | Building of ships and boats | JQR4 | Jan 2017 |
1742.7 | Manufacture of air and spacecraft and related machinery | JQS8 | Jan 2017 |
193.0 | Manufacture of other transport equipment | JQU4 | Jan 2017 |
662.8 | Manufacture of furniture | JQV2 | Jan 2017 |
839.8 | Other manufacturing | JQV5 | Jan 2017 |
319.6 | Building of ships and boats | JQR4 | Feb 2017 |
2344.4 | Manufacture of air and spacecraft and related machinery | JQS8 | Feb 2017 |
202.0 | Manufacture of other transport equipment | JQU4 | Feb 2017 |
718.7 | Manufacture of furniture | JQV2 | Feb 2017 |
869.1 | Other manufacturing | JQV5 | Feb 2017 |
575.7 | Building of ships and boats | JQR4 | Mar 2017 |
2896.9 | Manufacture of air and spacecraft and related machinery | JQS8 | Mar 2017 |
251.4 | Manufacture of other transport equipment | JQU4 | Mar 2017 |
813.4 | Manufacture of furniture | JQV2 | Mar 2017 |
1013.1 | Other manufacturing | JQV5 | Mar 2017 |
363.0 | Building of ships and boats | JQR4 | Apr 2017 |
2072.1 | Manufacture of air and spacecraft and related machinery | JQS8 | Apr 2017 |
213.8 | Manufacture of other transport equipment | JQU4 | Apr 2017 |
659.9 | Manufacture of furniture | JQV2 | Apr 2017 |
736.7 | Other manufacturing | JQV5 | Apr 2017 |
322.6 | Building of ships and boats | JQR4 | May 2017 |
2622.0 | Manufacture of air and spacecraft and related machinery | JQS8 | May 2017 |
233.8 | Manufacture of other transport equipment | JQU4 | May 2017 |
717.2 | Manufacture of furniture | JQV2 | May 2017 |
814.1 | Other manufacturing | JQV5 | May 2017 |
825.1 | Building of ships and boats | JQR4 | Jun 2017 |
3210.8 | Manufacture of air and spacecraft and related machinery | JQS8 | Jun 2017 |
258.6 | Manufacture of other transport equipment | JQU4 | Jun 2017 |
704.6 | Manufacture of furniture | JQV2 | Jun 2017 |
855.8 | Other manufacturing | JQV5 | Jun 2017 |
310.6 | Building of ships and boats | JQR4 | Jul 2017 |
2172.8 | Manufacture of air and spacecraft and related machinery | JQS8 | Jul 2017 |
222.4 | Manufacture of other transport equipment | JQU4 | Jul 2017 |
710.4 | Manufacture of furniture | JQV2 | Jul 2017 |
837.3 | Other manufacturing | JQV5 | Jul 2017 |
470.8 | Building of ships and boats | JQR4 | Aug 2017 |
2281.0 | Manufacture of air and spacecraft and related machinery | JQS8 | Aug 2017 |
206.0 | Manufacture of other transport equipment | JQU4 | Aug 2017 |
788.0 | Manufacture of furniture | JQV2 | Aug 2017 |
823.9 | Other manufacturing | JQV5 | Aug 2017 |
435.2 | Building of ships and boats | JQR4 | Sep 2017 |
2660.0 | Manufacture of air and spacecraft and related machinery | JQS8 | Sep 2017 |
244.3 | Manufacture of other transport equipment | JQU4 | Sep 2017 |
763.7 | Manufacture of furniture | JQV2 | Sep 2017 |
901.2 | Other manufacturing | JQV5 | Sep 2017 |