├── .vscode └── settings.json ├── .gitattributes ├── package.json ├── img ├── wage-gauge icons.ai ├── CAN flag rectangle.svg ├── CAN flag.svg ├── UK flag rectangle.svg ├── UK flag.svg ├── US flag.svg └── US flag rectangle.svg ├── dumpground.html ├── result.js ├── country-select-script.js ├── results.html ├── Old ├── game.html ├── index.html ├── stylesheet.css └── main OLD.js ├── country-selector.html ├── game.html ├── index.html ├── Data Processing ├── raw data │ ├── CAN median.csv │ ├── CAN mean.csv │ ├── UK 2021.csv │ └── UK 2020.csv ├── Methodology.md ├── CAN data processing.ipynb ├── UK data processing.ipynb ├── USA data processing.ipynb └── processed data │ └── CAN_2017-2021.json ├── stylesheet.css ├── script.js └── assets └── dataCA.js /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "liveServer.settings.port": 5501 3 | } -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "sortablejs": "^1.15.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /img/wage-gauge icons.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabrina-aip/wage-gauge/HEAD/img/wage-gauge icons.ai -------------------------------------------------------------------------------- /dumpground.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
-------------------------------------------------------------------------------- /result.js: -------------------------------------------------------------------------------- 1 | const hour = sessionStorage.getItem('hour') 2 | const minute = sessionStorage.getItem('minute') 3 | const second = sessionStorage.getItem('second') 4 | const score = sessionStorage.getItem('score') 5 | 6 | const resultStatement = document.querySelector('.result-statement') 7 | 8 | resultStatement.textContent = `You answered ${score}/5 questions correctly in ${hour}:${minute}:${second}` 9 | 10 | -------------------------------------------------------------------------------- /country-select-script.js: -------------------------------------------------------------------------------- 1 | const can_sel = document.getElementById('can-select'); 2 | const usa_sel = document.querySelector('#usa-select'); 3 | const uk_sel = document.querySelector('#uk-select'); 4 | 5 | /////////////////////////////////////// 6 | 7 | // select data 8 | 9 | /////////////////////////////////////// 10 | 11 | function goToGame(countryName){ 12 | sessionStorage.setItem('countryName', countryName); 13 | window.location.replace("game.html"); 14 | } 15 | 16 | function chooseCAN(){ 17 | goToGame('Canada') 18 | can_sel.removeEventListener("click", chooseCAN) 19 | } 20 | 21 | function chooseUSA(){ 22 | goToGame('the United States') 23 | usa_sel.removeEventListener("click", chooseUSA) 24 | } 25 | 26 | function chooseUK(){ 27 | goToGame('the United Kingdom') 28 | uk_sel.removeEventListener("click", chooseUK) 29 | } 30 | 31 | can_sel.addEventListener("click", chooseCAN) 32 | usa_sel.addEventListener("click", chooseUSA) 33 | uk_sel.addEventListener("click", chooseUK) 34 | sessionStorage.clear(); -------------------------------------------------------------------------------- /img/CAN flag rectangle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /results.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Results | Wage Gauge 11 | 12 | 13 |
14 |
15 |
16 |

Results

17 |
18 |

19 |
20 |

You can play again with new question content or return home to learn more about the project!

21 | play again 22 |
23 |
24 | <- return home 25 |
26 |
27 | 28 | 29 |
30 | 31 | 32 | -------------------------------------------------------------------------------- /Old/game.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Play | Wage Gauge 10 | 11 | 12 |
13 |
14 |

time

15 |

::

16 |
17 |
18 |

score

19 |

20 |
21 |
22 |
23 |

24 |

25 |

26 | 27 |

28 | 29 |

30 |
31 | 32 |
33 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /country-selector.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Select Country | Wage Gauge 12 | 13 | 14 |
15 |
16 |

select country

17 |
18 |

country selection impacts the dataset used in the quiz

19 |

20 | 21 |
22 | Canadian flag 23 |
24 |
25 | USA flag 26 |
27 |
28 | UK flag 29 |
30 |
31 |


32 | <- go back 33 |
34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /game.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Quiz | Wage Gauge 15 | 16 | 17 |
18 | 19 | 20 | 31 | 32 | 33 |
34 |

35 |
36 |

37 |
38 |

Test

39 |
40 | 41 |
42 | submit answer -> 43 |
44 |
45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /img/CAN flag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /img/UK flag rectangle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /img/UK flag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Old/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Home | Wage Gauge 10 | 11 | 12 |
13 | 14 |
15 |

Wage Gauge

16 |

Think you know how much people are being paid?

17 |
18 | 26 |
27 | eyeball emoji staring 28 |
29 | How Much They Making 30 |
31 | Guess the median salary of an occupation to the nearest thousand. 32 |

33 | Play Now 34 |
35 |
36 | cringe lip bite emoji 37 |
38 | More Money Pls 39 |
40 | Given the salary for an occupation one year, guess how the salary changed one year later. 41 |

42 | Coming Soon 43 |
44 |
45 |
46 |
47 | 55 | 56 | -------------------------------------------------------------------------------- /Old/stylesheet.css: -------------------------------------------------------------------------------- 1 | #inactive { 2 | color: gray; 3 | } 4 | 5 | .btn#inactive { 6 | background-color: gainsboro; 7 | border: solid 1.7px gainsboro; 8 | color: white; 9 | pointer-events: none; 10 | } 11 | 12 | .btn { 13 | background-color: royalblue; 14 | border: solid 1.7px royalblue; 15 | padding: 5px 25px 5px 25px; 16 | border-radius: 25px; 17 | color:white; 18 | text-decoration: none; 19 | } 20 | 21 | .btn:hover { 22 | background-color: black; 23 | padding: 5px 25px 5px 25px; 24 | border: solid 1.7px black; 25 | color: white; 26 | text-decoration: none; 27 | } 28 | 29 | img { 30 | width: auto; 31 | height: 120px; 32 | } 33 | 34 | ol { 35 | text-align: left; 36 | } 37 | 38 | .header { 39 | display: flex; 40 | justify-content: space-between; 41 | margin: 20px 50px 0px 50px; 42 | } 43 | 44 | .footer { 45 | position: fixed; 46 | height: 50px; 47 | bottom: 20px; 48 | left: 0px; 49 | right: 50px; 50 | margin-bottom: 0px; 51 | } 52 | 53 | .social-links { 54 | font-family: Font Awesome 5 Brands; 55 | font-style: normal; 56 | font-weight: normal; 57 | font-size: 36px; 58 | line-height: 41px; 59 | text-align: center; 60 | color: #000000; 61 | } 62 | 63 | button { 64 | font-size: 25px; 65 | background-color: transparent; 66 | background-repeat: no-repeat; 67 | border: none; 68 | cursor: pointer; 69 | overflow: hidden; 70 | outline: none; 71 | } 72 | body { 73 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; 74 | text-align: center; 75 | margin-bottom: 50px; 76 | } 77 | 78 | h1 { 79 | margin: 0 0 20px 0; 80 | font-size: 26pt; 81 | } 82 | 83 | input { 84 | padding: 5px 5px 5px 5px; 85 | border-radius: 20px; 86 | border: solid black 1.5px; 87 | text-decoration: none; 88 | text-align: center; 89 | 90 | } 91 | 92 | .container { 93 | position: absolute; 94 | top: 50%; 95 | left: 50%; 96 | -moz-transform: translateX(-50%) translateY(-50%); 97 | -webkit-transform: translateX(-50%) translateY(-50%); 98 | transform: translateX(-50%) translateY(-60%); 99 | } 100 | 101 | .fab { 102 | color: #000000; 103 | text-decoration: none; 104 | transform: scale(60%); 105 | } 106 | 107 | .social-links { 108 | text-align: right; 109 | } 110 | 111 | .player-wrapper { 112 | left: 0; 113 | width: 100%; 114 | height: 0; 115 | position: relative; 116 | padding-bottom: 30%; 117 | max-width: 50%; 118 | } 119 | 120 | .player { 121 | border: 0; 122 | top: 0; 123 | left: 0; 124 | width: 100%; 125 | height: 100%; 126 | position: absolute; 127 | } 128 | 129 | .parent { 130 | display: flex; 131 | margin: 200px; 132 | align-items: center; 133 | justify-content: center; 134 | gap: 50px; 135 | } 136 | 137 | .end-stat { 138 | text-align: center; 139 | } 140 | 141 | /* For Firefox */ 142 | input[type='number'] { 143 | -moz-appearance:textfield; 144 | } 145 | 146 | /* Webkit browsers like Safari and Chrome */ 147 | input[type=number]::-webkit-inner-spin-button, 148 | input[type=number]::-webkit-outer-spin-button { 149 | -webkit-appearance: none; 150 | margin: 0; 151 | } 152 | 153 | .detail-wrapper { 154 | margin: 20px 0 20px 0; 155 | } 156 | 157 | #game-mode-container { 158 | display: flex; 159 | flex-direction: row; 160 | justify-content: space-around; 161 | gap: 40px; 162 | text-align: justify; 163 | -moz-text-align-last: center; 164 | text-align-last: center; 165 | } -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Home | Wage Gauge 12 | 13 | 14 |
15 |
16 |

WAGE

17 |

GAUGE

18 |
19 |

do you know what people are being paid?

20 |
21 | take the quiz -> 22 |

23 |
24 |
25 |
26 |
27 |

WHY DOES THIS EXIST?

28 |
29 |

30 | I recently learned that bargaining power significantly impacts a person’s earnings... but I suck at bargaining. 31 |

32 | After thinking about why, I realized it’s because Iassume the other person has more information and they’re making a fair 33 | assessment of my value. 34 |

35 | That is rarely that case when it comes to wages. 36 |

37 | I made this website because I think it’s important for us to know how our labour is being valued - even if it’s an estimate. 38 |

39 | The quiz utilizes government survey data between 2017 - 2021. You can read more about it in the methodology linked 40 | in the footer. 41 |

42 | 43 |

44 | 45 |

WANT TO LEARN MORE?

46 |
47 |

48 | I made this video about the importance of bargaining power and information when it comes to how much we make. 49 |

50 |
51 | 52 |
53 | 55 |
56 |
57 |

58 | You can also look at all the data in tables here: 59 |

60 | 61 | US Data 62 |   63 | UK Data 64 |   65 | CAN Data 66 | 67 |
68 |
69 | 85 | 86 | -------------------------------------------------------------------------------- /Old/main OLD.js: -------------------------------------------------------------------------------- 1 | const DATA = [ 2 | { 3 | occupation: "Millennial Meme Maker", 4 | country: "Canada", 5 | medianSalary: 80000, 6 | } 7 | ]; 8 | 9 | const MAX_SALARY = 150000; 10 | const MIN_SALARY = 15000; 11 | const MAX_QUESTIONS = 5; 12 | let score = 0; 13 | let questionNumber = 1; 14 | 15 | 16 | let canada_flag = `canadian flag emoji` 17 | 18 | 19 | let usa_flag = "https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/240/apple/325/flag-united-states_1f1fa-1f1f8.png"; 20 | let uk_flag = "https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/240/apple/325/flag-united-kingdom_1f1ec-1f1e7.png"; 21 | 22 | 23 | var guess; 24 | var answer; 25 | 26 | // variables for timer 27 | let second = 00; 28 | let minute = 00; 29 | let hour = 00; 30 | let elapsed; 31 | 32 | // Events 33 | 34 | const questionNumber_fromDoc = document.querySelector('.question-number'); 35 | const occupation_fromDoc = document.querySelector('.occupation'); 36 | const country_fromDoc = document.querySelector('.country'); 37 | const medianSalary_fromDoc = document.querySelector('.medianSalary'); 38 | const generatedSalary_fromDoc = document.querySelector('.generatedSalary'); 39 | 40 | const score_fromDoc = document.querySelector('.score'); 41 | const hr = document.querySelector('.hour') 42 | const min = document.querySelector('.minute') 43 | const sec = document.querySelector('.second') 44 | 45 | // core game functions 46 | 47 | function generateSalary() { 48 | return Math.round(Math.random()*(MAX_SALARY-MIN_SALARY)+MIN_SALARY); 49 | }; 50 | 51 | function formatSalary(country, unformattedSalary) { 52 | let currencySymbol; 53 | if (country == "Canada" | "USA"){ 54 | currencySymbol = "$"; 55 | } else if (country== "UK") { 56 | currencySymbol = "£"; 57 | } 58 | return currencySymbol + unformattedSalary.toLocaleString('en-US'); 59 | } 60 | 61 | function makeGuess(choice){ 62 | guess = choice; 63 | evaluateGuess(); 64 | } 65 | 66 | function generateQuestion() { 67 | questionNumber_fromDoc.textContent = `Question ${questionNumber}`; 68 | let i = Math.floor(Math.random()*DATA.length); // it would be better to make this a weighted average based on our subs 69 | 70 | // generate a salary that definitely isn't equal to the median (guaranteeing an over vs under situation) 71 | let generatedSalary = generateSalary() 72 | while (generatedSalary == DATA[i].medianSalary){ 73 | generatedSalary = generateSalary(); 74 | } 75 | 76 | // answer is true if the generatedSalary is greater than the median 77 | 78 | answer = (generatedSalary > DATA[i].medianSalary); 79 | 80 | // send info to html 81 | score_fromDoc.textContent = score; 82 | 83 | switch (DATA[i].country){ 84 | case DATA[i].country == "Canada": 85 | country_fromDoc.textContent = canada_flag 86 | break; 87 | } 88 | occupation_fromDoc.textContent = DATA[i].occupation; 89 | country_fromDoc.textContent = canada_flag; 90 | generatedSalary_fromDoc.textContent = formatSalary(DATA[i].country, generatedSalary); 91 | }; 92 | 93 | function evaluateGuess(){ 94 | if (guess == answer){ 95 | score ++; 96 | score_fromDoc.textContent = score; 97 | } else { 98 | console.log("wrong") 99 | } 100 | if (questionNumber == MAX_QUESTIONS){ 101 | closeOutGame(); 102 | } else { 103 | questionNumber ++; 104 | generateQuestion(); 105 | } 106 | }; 107 | 108 | function closeOutGame(){ 109 | window.location.replace("results.html"); 110 | } 111 | 112 | // timer functions 113 | 114 | function start(){ 115 | // every second, elapsed 116 | addTime() 117 | timer = setInterval(addTime, 1000) 118 | } 119 | 120 | function convertToString(e){ 121 | if (e < 10){ 122 | e = `0${e}`; 123 | } 124 | return e; 125 | } 126 | 127 | function addTime(){ 128 | second++; 129 | if (second === 60){ 130 | minute++; 131 | second = 00 132 | } 133 | if (minute === 60){ 134 | hour++; 135 | minute = 00 136 | } 137 | hr.textContent = convertToString(hour); 138 | min.textContent = convertToString(minute); 139 | sec.textContent = convertToString(second); 140 | 141 | } 142 | 143 | // run when page opens 144 | sessionStorage.clear(); 145 | generateQuestion(); 146 | start(); -------------------------------------------------------------------------------- /Data Processing/raw data/CAN median.csv: -------------------------------------------------------------------------------- 1 | Description,2017,2018,2019,2020,2021 2 | "Total employees, all occupations",840,865.2,900,961.6,980.1 3 | Management occupations [0],"1,615.25","1,634.80","1,730.80","1,800.00","1,875.00" 4 | Senior management occupations [00],"1,887.00","2,115.20","2,115.38","2,307.60","2,223.70" 5 | Specialized middle management occupations [01-05],"1,730.80","1,750.02","1,846.13","1,923.20","1,980.80" 6 | Middle management occupations in retail and wholesale trade and customer services [06],"1,249.88","1,269.38","1,200.00","1,320.00","1,350.00" 7 | "Middle management occupations in trades, transportation, production and utilities [07-09]","1,591.20","1,589.60","1,730.70","1,680.00","1,750.00" 8 | "Business, finance and administration occupations [1]",865.5,881.6,923.2,961.6,"1,000.00" 9 | Professional occupations in business and finance [11],"1,230.40","1,250.00","1,298.25","1,346.00","1,384.50" 10 | Administrative and financial supervisors and administrative occupations [12],877.5,900,940.17,961.6,"1,000.00" 11 | "Finance, insurance and related business administrative occupations [13]",854.4,865.2,900,961.6,988.56 12 | Office support occupations [14],700,735,747.25,769.2,792 13 | "Distribution, tracking and scheduling co-ordination occupations [15]",769.2,769.2,800,840,870 14 | Natural and applied sciences and related occupations [2],"1,307.63","1,345.95","1,384.50","1,440.00","1,471.20" 15 | Professional occupations in natural and applied sciences [21],"1,442.40","1,480.80","1,538.40","1,596.00","1,616.65" 16 | Technical occupations related to natural and applied sciences [22],"1,134.00","1,140.00","1,162.35","1,200.00","1,192.50" 17 | Health occupations [3],920,920.79,938.6,"1,000.00","1,000.00" 18 | Professional occupations in nursing [30],"1,260.00","1,260.00","1,331.25","1,400.00","1,402.50" 19 | Professional occupations in health (except nursing) [31],"1,344.00","1,311.75","1,430.00","1,472.00","1,442.25" 20 | Technical occupations in health [32],884.45,901.6,930,980.8,980 21 | Assisting occupations in support of health services [34],680,711.62,700,721.5,750 22 | "Occupations in education, law and social, community and government services [4]","1,000.00","1,050.00","1,057.60","1,154.00","1,154.00" 23 | Professional occupations in education services [40],"1,249.88","1,303.60","1,326.90","1,423.20","1,400.00" 24 | "Professional occupations in law and social, community and government services [41]","1,250.01","1,274.49","1,288.56","1,360.00","1,395.75" 25 | "Paraprofessional occupations in legal, social, community and education services [42]",673.2,690,735,760,777.63 26 | Occupations in front-line public protection services [43],"1,695.33","1,730.82","1,800.00","1,884.54","1,884.80" 27 | "Care providers and educational, legal and public protection support occupations [44]",605.5,650,655.2,705,731.25 28 | "Occupations in art, culture, recreation and sport [5]",675,676,740,857.2,923.2 29 | Professional occupations in art and culture [51],999.95,860.63,937.5,"1,085.00","1,153.88" 30 | "Technical occupations in art, culture, recreation and sport [52]",595,600,673.2,769.13,836 31 | Sales and service occupations [6],480,520,544,568.75,580 32 | Retail sales supervisors and specialized sales occupations [62],788.4,800,859.6,923.2,932.8 33 | Service supervisors and specialized service occupations [63],528,568.75,600,612,639.92 34 | Sales representatives and salespersons - wholesale and retail trade [64],480,510,560,576.96,585 35 | Service representatives and other customer and personal services occupations [65],499.2,542.5,560,600,612.5 36 | Sales support occupations [66],290,330,332.4,357.5,340 37 | "Service support and other service occupations, n.e.c. [67]",420,450,459,480,484.8 38 | "Trades, transport and equipment operators and related occupations [7]","1,000.00","1,000.30","1,040.00","1,080.00","1,100.00" 39 | "Industrial, electrical and construction trades [72]","1,122.40","1,160.00","1,200.00","1,225.00","1,250.00" 40 | Maintenance and equipment operation trades [73],"1,120.00","1,155.00","1,200.00","1,240.00","1,280.00" 41 | "Other installers, repairers and servicers and material handlers [74]",720,720,720,770,792 42 | Transport and heavy equipment operation and related maintenance occupations [75],926.8,950.4,954,"1,000.00","1,000.00" 43 | "Trades helpers, construction labourers and related occupations [76]",800,840,880,880,900.4 44 | "Natural resources, agriculture and related production occupations [8]",824.4,900,880,900,940 45 | "Supervisors and technical occupations in natural resources, agriculture and related production [82]","1,360.00","1,407.42","1,428.00","1,430.00","1,536.92" 46 | "Workers in natural resources, agriculture and related production [84]",680,740,700,718,760 47 | "Harvesting, landscaping and natural resources labourers [86]",640,680,700,720,720 48 | Occupations in manufacturing and utilities [9],795.2,800,836,876.54,880 49 | "Processing, manufacturing and utilities supervisors and central control operators [92]","1,154.00","1,200.00","1,297.13","1,288.40","1,312.00" 50 | Processing and manufacturing machine operators and related production workers [94],756,770,800,840,830.4 51 | Assemblers in manufacturing [95],750,778,800,840,840 52 | "Labourers in processing, manufacturing and utilities [96]",620,640,680,698,720 53 | -------------------------------------------------------------------------------- /Data Processing/raw data/CAN mean.csv: -------------------------------------------------------------------------------- 1 | Description,2017,2018,2019,2020,2021 2 | "Total employees, all occupations",952.94,980.31,"1,012.28","1,080.99","1,098.97" 3 | Management occupations [0],"1,678.83","1,723.77","1,777.63","1,840.56","1,922.58" 4 | Senior management occupations [00],"1,969.94","2,195.07","2,185.79","2,347.71","2,313.34" 5 | Specialized middle management occupations [01-05],"1,772.90","1,810.30","1,871.53","1,942.01","2,037.46" 6 | Middle management occupations in retail and wholesale trade and customer services [06],"1,379.59","1,437.82","1,421.38","1,480.74","1,572.34" 7 | "Middle management occupations in trades, transportation, production and utilities [07-09]","1,687.80","1,437.82","1,807.55","1,804.11","1,873.94" 8 | "Business, finance and administration occupations [1]",935.99,966.45,"1,006.47","1,063.17","1,081.99" 9 | Professional occupations in business and finance [11],"1,327.56","1,366.71","1,407.53","1,452.45","1,475.88" 10 | Administrative and financial supervisors and administrative occupations [12],907.48,943.57,985.68,"1,016.71","1,045.86" 11 | "Finance, insurance and related business administrative occupations [13]",874.25,893.21,940.63,"1,016.65","1,018.18" 12 | Office support occupations [14],702.95,734.72,744.22,783.53,786.19 13 | "Distribution, tracking and scheduling co-ordination occupations [15]",806.27,803.55,818.94,868.11,881.69 14 | Natural and applied sciences and related occupations [2],"1,372.00","1,404.08","1,444.13","1,504.40","1,533.48" 15 | Professional occupations in natural and applied sciences [21],"1,504.37","1,546.93","1,589.07","1,653.91","1,684.87" 16 | Technical occupations related to natural and applied sciences [22],"1,197.62","1,225.72","1,244.19","1,282.48","1,269.88" 17 | Health occupations [3],"1,013.09","1,020.69","1,039.49","1,100.17","1,091.53" 18 | Professional occupations in nursing [30],"1,237.74","1,244.10","1,302.83","1,361.16","1,371.61" 19 | Professional occupations in health (except nursing) [31],"1,370.09","1,376.11","1,462.67","1,523.84","1,468.76" 20 | Technical occupations in health [32],929.54,945.33,963.72,"1,013.42","1,018.62" 21 | Assisting occupations in support of health services [34],692.39,718.3,693.43,711.08,727.26 22 | "Occupations in education, law and social, community and government services [4]","1,099.01","1,127.53","1,145.36","1,224.41","1,226.88" 23 | Professional occupations in education services [40],"1,227.95","1,249.77","1,276.22","1,340.66","1,335.47" 24 | "Professional occupations in law and social, community and government services [41]","1,329.02","1,361.82","1,379.36","1,454.59","1,473.75" 25 | "Paraprofessional occupations in legal, social, community and education services [42]",714.66,729.57,742.55,780.61,798.04 26 | Occupations in front-line public protection services [43],"1,646.10","1,675.43","1,748.93","1,830.19","1,803.90" 27 | "Care providers and educational, legal and public protection support occupations [44]",669.39,700.81,705.12,733.2,753.62 28 | "Occupations in art, culture, recreation and sport [5]",740.2,736.59,784.44,892.65,970.17 29 | Professional occupations in art and culture [51],994.24,886.85,928.09,"1,088.33","1,134.78" 30 | "Technical occupations in art, culture, recreation and sport [52]",653.45,681.8,737.36,804.83,903.11 31 | Sales and service occupations [6],545.17,570.43,591.32,627.47,632.59 32 | Retail sales supervisors and specialized sales occupations [62],869.89,874.74,916.78,976.16,983.04 33 | Service supervisors and specialized service occupations [63],578.69,610.6,635.02,663.41,681.24 34 | Sales representatives and salespersons - wholesale and retail trade [64],591.65,609.38,642.39,674.05,677.09 35 | Service representatives and other customer and personal services occupations [65],534.65,564.38,580.75,626.9,630.5 36 | Sales support occupations [66],341.04,373.75,375.21,394.98,390.16 37 | "Service support and other service occupations, n.e.c. [67]",444.06,472.49,482.8,508.6,510.44 38 | "Trades, transport and equipment operators and related occupations [7]","1,049.76","1,072.83","1,098.89","1,136.58","1,159.32" 39 | "Industrial, electrical and construction trades [72]","1,177.40","1,191.95","1,233.16","1,271.16","1,289.45" 40 | Maintenance and equipment operation trades [73],"1,189.02","1,226.44","1,263.22","1,314.69","1,343.66" 41 | "Other installers, repairers and servicers and material handlers [74]",776.06,790.5,789,813.35,838.97 42 | Transport and heavy equipment operation and related maintenance occupations [75],944.48,965.57,966.86,"1,006.17","1,028.99" 43 | "Trades helpers, construction labourers and related occupations [76]",860.62,893.16,922.11,931.63,940.03 44 | "Natural resources, agriculture and related production occupations [8]","1,005.44","1,071.59","1,054.32","1,067.40","1,107.37" 45 | "Supervisors and technical occupations in natural resources, agriculture and related production [82]","1,526.23","1,568.44","1,566.31","1,605.16","1,665.20" 46 | "Workers in natural resources, agriculture and related production [84]",766.51,828.12,789.7,798.96,827.13 47 | "Harvesting, landscaping and natural resources labourers [86]",723.77,753.49,753.86,767.26,794.07 48 | Occupations in manufacturing and utilities [9],876.11,907.41,951.26,980.7,989.41 49 | "Processing, manufacturing and utilities supervisors and central control operators [92]","1,255.43","1,298.98","1,384.08","1,396.66","1,436.50" 50 | Processing and manufacturing machine operators and related production workers [94],798.73,824.78,855.58,885.67,883.67 51 | Assemblers in manufacturing [95],813.7,839.18,882.93,900.62,904.28 52 | "Labourers in processing, manufacturing and utilities [96]",672.07,698.02,710.99,736.12,753.87 53 | -------------------------------------------------------------------------------- /Data Processing/Methodology.md: -------------------------------------------------------------------------------- 1 | # Data Methodology 2 | 3 | ### Notes 4 | 5 | - Occupation titles are not consistent between data sets. I did not attempt to merge them to retain the accuracy of the data. It does mean that the occupations presented are kinda whack lmao. 6 | - The numbers are presented as annual wages which can be a bit misleading for hourly / part-time workers whose wages are heavily dependent on hours worked. 7 | 8 | ### UK: United Kingdom 9 | 10 | Pulled from **Earnings and hours worked, occupation by four-digit SOC: ASHE Table 14** via UK Government’s Office for National Statistics found here: 11 | 12 | You can access the data sets and read about the methodology and limitations here: [https://www.ons.gov.uk/employmentandlabourmarket/peopleinwork/earningsandworkinghours/datasets/occupation4digitsoc2010ashetable14](https://www.ons.gov.uk/employmentandlabourmarket/peopleinwork/earningsandworkinghours/datasets/occupation4digitsoc2010ashetable14) 13 | 14 | **First note that 2021 data is not revised and may be amended in the future.** 15 | 16 | Utilized table 14.7a which covers gross annual income across occupations. **Notably, it does not include incentives.** 17 | 18 | From this table, the following columns were selected: Description, Median, and Mean. **Notably, although all data included is considered acceptable, nuance around the confidence behind the data is lost.** 19 | 20 | This data was then selected to the most frequent granularity of occupation, and included as long as a median OR mean value was available. 21 | 22 | **Finally, note that I didn’t check if the data was regularly updated to be in current dollars. In all likelihood, it does not and will need to be amended to account for inflation to improve the meaningfulness of raise data.** 23 | 24 | This data was then formatted into a JS variable with the following formatting: 25 | 26 | ``` 27 | const DATA = { 28 | 'jobA': { 29 | 'year_1': { 30 | 'median': 0000000, 31 | 'mean': 0000000 32 | } 33 | ... 34 | 'year_5': { 35 | 'median': 0000000, 36 | 'mean': 0000000 37 | } 38 | }, 39 | 40 | ... 41 | 42 | 'jobZ': { 43 | 'year_1': { 44 | 'median': 0000000, 45 | 'mean': 0000000 46 | } 47 | ... 48 | 'year_5': { 49 | 'median': 0000000, 50 | 'mean': 0000000 51 | } 52 | }, 53 | } 54 | ``` 55 | 56 | ### CAN: Canada 57 | 58 | Pulled from the **Employee wages by occupation, annual** released on 2022-01-07 via Statistics Canada. 59 | 60 | You can access the data sets and read about the methodology and limitations here: [https://www150.statcan.gc.ca/t1/tbl1/en/tv.action?pid=1410034001](https://www150.statcan.gc.ca/t1/tbl1/en/tv.action?pid=1410034001) 61 | 62 | **First note that the data is based in weekly wages in current Canadian dollars as of 2022** (that is, inflation is accounted for) 63 | 64 | **The annual wage was extrapolated by multiplying by 52 (number of weeks in the year).** 65 | 66 | Assumed average refers to mean and stores average data as mean to retain consistency with other data sets. 67 | 68 | This data was then formatted into a JS variable with the following formatting: 69 | 70 | ``` 71 | const DATA = { 72 | 'jobA': { 73 | 'year_1': { 74 | 'median': 0000000, 75 | 'mean': 0000000 76 | } 77 | ... 78 | 'year_5': { 79 | 'median': 0000000, 80 | 'mean': 0000000 81 | } 82 | }, 83 | 84 | ... 85 | 86 | 'jobZ': { 87 | 'year_1': { 88 | 'median': 0000000, 89 | 'mean': 0000000 90 | } 91 | ... 92 | 'year_5': { 93 | 'median': 0000000, 94 | 'mean': 0000000 95 | } 96 | }, 97 | } 98 | ``` 99 | 100 | ### US: United States of America 101 | 102 | Pulled from **Occupational Employment and Wage Statistics** via US Bureau of Labour Statistics. 103 | 104 | You can access the data sets and read about the methodology and limitations here: [https://www.bls.gov/oes/tables.htm](https://www.bls.gov/oes/tables.htm) 105 | 106 | Utilized the National XLS data sets for 2017-2021 and converted the first sheet (when applicable) to CSV. 107 | 108 | After importing datasets to python as pandas dataframes, I filtered jobs to the most granular specificity available according to SOC grouping (under `OCC_GROUP` or `O_GROUP`) and dropped all broad categories. 109 | 110 | I used `A_MEDIAN` for the annual median wage and `A_MEAN` for the annual mean wage. I used `OCC_TITLE` for the job description. 111 | 112 | This data was then formatted into a JS variable with the following formatting: 113 | 114 | ``` 115 | const DATA = { 116 | 'jobA': { 117 | 'year_1': { 118 | 'median': 0000000, 119 | 'mean': 0000000 120 | } 121 | ... 122 | 'year_5': { 123 | 'median': 0000000, 124 | 'mean': 0000000 125 | } 126 | }, 127 | 128 | ... 129 | 130 | 'jobZ': { 131 | 'year_1': { 132 | 'median': 0000000, 133 | 'mean': 0000000 134 | } 135 | ... 136 | 'year_5': { 137 | 'median': 0000000, 138 | 'mean': 0000000 139 | } 140 | }, 141 | } 142 | ``` -------------------------------------------------------------------------------- /Data Processing/CAN data processing.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 95, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "import numpy as np\n", 11 | "import json\n", 12 | "\n", 13 | "def filterOccupations(df, descriptionColumn, contents):\n", 14 | " \"\"\"\n", 15 | " Canada wage data is presented in a table that is also organized like dookie with no easy separator for granularity.\n", 16 | " df refers to the dataframe containing information from the statscan website (lightly filtered to get right of annoying headers)\n", 17 | " columnName refers to the job title column (we will rename to description for consistency with other datasets)\n", 18 | " contents refers to whether the table contains data about the mean or median annual wages\n", 19 | " I have to go into each title, filter out the contents of the [] and then filter out the rows where the contents within [] are only length 1 (this filters our broad categories).\n", 20 | " See https://www.statcan.gc.ca/en/subjects/standard/noc/2021/introductionV1 for more details.\n", 21 | " I'll also multiply the median and mean values by 52.\n", 22 | " Thus, we should return a dataframe with the formatting:\n", 23 | "\n", 24 | " Description | Median_2017 | Median_2018 | Median_2019 | Median_2020 | Median_2021 |\n", 25 | " --------------------------------------------------------------------------------------------------------\n", 26 | " JobA | wages | wages | wages | wages | wages |\n", 27 | " JobB | wages | wages | wages | wages | wages |\n", 28 | " ... ... ... ... ... ...\n", 29 | " JobZ | wages | wages | wages | wages | wages |\n", 30 | "\n", 31 | " \"\"\"\n", 32 | " isNotCategory = []\n", 33 | "\n", 34 | " df.iloc[:,1:] = df.iloc[:,1:].replace(',','', regex = True)\n", 35 | "\n", 36 | " for i in range(len(df)):\n", 37 | " A = df.loc[i, descriptionColumn].split(\" \")\n", 38 | " df.loc[i, descriptionColumn] = A[0]\n", 39 | " A = A[-1].replace('[','').replace(']','')\n", 40 | " isNotCategory.append(len(A)!=1)\n", 41 | " \n", 42 | " df['isNotCategory'] = isNotCategory\n", 43 | " df = df[df['isNotCategory']].reset_index(drop=True)\n", 44 | " for i in range(1, len(df.columns)):\n", 45 | " df.iloc[:,i] = pd.to_numeric(df.iloc[:,i].values)\n", 46 | " df.iloc[:,i] *= 52\n", 47 | " df.iloc[:,i] = round(df.iloc[:,i],2)\n", 48 | " return df.iloc[:,0:-1]\n", 49 | "\n", 50 | "def jsonifyOccupations(medianDF, meanDF):\n", 51 | " \"\"\"\n", 52 | " medianDF should contain the median annual wage data for occupations across time (with the year being the column title)\n", 53 | " meanDF should contain the mean annual wage data for occupation across time (with the year being the column title)\n", 54 | " Merge these into a dictionary with the following format to match other data sets\n", 55 | " {\n", 56 | " 'jobA': {\n", 57 | " 'year_1': {\n", 58 | " 'median': 0000000,\n", 59 | " 'mean': 0000000\n", 60 | " },\n", 61 | " ...\n", 62 | " 'year_5': {\n", 63 | " 'median': 0000000,\n", 64 | " 'mean': 0000000\n", 65 | " }\n", 66 | " },\n", 67 | " ...\n", 68 | " \n", 69 | " 'jobZ': {\n", 70 | " 'year_1': {\n", 71 | " 'median': 0000000,\n", 72 | " 'mean': 0000000\n", 73 | " },\n", 74 | " ...\n", 75 | " 'year_5': {\n", 76 | " 'median': 0000000,\n", 77 | " 'mean': 0000000\n", 78 | " }\n", 79 | " }\n", 80 | " }\n", 81 | " \"\"\"\n", 82 | " d = {}\n", 83 | " # iterate through rows (occupation category)\n", 84 | " for i in range(len(medianDF)):\n", 85 | " \n", 86 | " # initialize an empty key named after the occupation category\n", 87 | " # it's initialized as a list in order to append values as we loop through the years\n", 88 | " d[medianDF.loc[i,'Description']] = {}\n", 89 | "\n", 90 | " # loop through years\n", 91 | " for j in range(1,len(medianDF.columns)): # starts at 1 to bypass the first column (occupation category)\n", 92 | " content = dict.fromkeys(['median','mean'])\n", 93 | " content['median'] = medianDF.iloc[i,j]\n", 94 | " content['mean'] = meanDF.iloc[i,j]\n", 95 | " #print(content)\n", 96 | " #print(year)\n", 97 | " d[medianDF.loc[i,'Description']][medianDF.columns[j]] = content\n", 98 | "\n", 99 | " return d\n", 100 | "\n", 101 | "CAN_mean = filterOccupations(pd.read_csv('raw data/CAN mean.csv'), 'Description', 'mean')\n", 102 | "CAN_median = filterOccupations(pd.read_csv('raw data/CAN median.csv'), 'Description', 'mean')\n", 103 | "\n", 104 | "with open('processed data/CAN_2017-2021.json', 'w', encoding='utf-8') as f:\n", 105 | " json.dump(jsonifyOccupations(CAN_median, CAN_mean), f, ensure_ascii=False, indent=4)" 106 | ] 107 | }, 108 | { 109 | "cell_type": "code", 110 | "execution_count": null, 111 | "metadata": {}, 112 | "outputs": [], 113 | "source": [] 114 | } 115 | ], 116 | "metadata": { 117 | "interpreter": { 118 | "hash": "bfb4883d108fc92ac768439090a2e92bb9a1f760a54beeecfd6762b5dcd70fe3" 119 | }, 120 | "kernelspec": { 121 | "display_name": "Python 3.10.4 64-bit", 122 | "language": "python", 123 | "name": "python3" 124 | }, 125 | "language_info": { 126 | "codemirror_mode": { 127 | "name": "ipython", 128 | "version": 3 129 | }, 130 | "file_extension": ".py", 131 | "mimetype": "text/x-python", 132 | "name": "python", 133 | "nbconvert_exporter": "python", 134 | "pygments_lexer": "ipython3", 135 | "version": "3.8.3" 136 | }, 137 | "orig_nbformat": 4 138 | }, 139 | "nbformat": 4, 140 | "nbformat_minor": 2 141 | } 142 | -------------------------------------------------------------------------------- /img/US flag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Data Processing/UK data processing.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 4, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "# import statements\n", 10 | "import pandas as pd\n", 11 | "import numpy as np\n", 12 | "import json\n", 13 | "\n", 14 | "# functions\n", 15 | "def most_frequent(List):\n", 16 | " counter = 0\n", 17 | " num = List[0]\n", 18 | " \n", 19 | " for i in List:\n", 20 | " curr_frequency = List.count(i)\n", 21 | " if(curr_frequency> counter):\n", 22 | " counter = curr_frequency\n", 23 | " num = i\n", 24 | " \n", 25 | " return num\n", 26 | "def filterOccupations(df, descriptionColumn):\n", 27 | " \"\"\"\n", 28 | " UK wage data is provided as a CSV where the occupation is provided with increasing granularity (e.g. managers > managers in transport > managers in transport and distribution)\n", 29 | " I only want to store the most granular occupations with wage data so that involves only selecting the categories with the most tabs.\n", 30 | " This should return a DataFrame that has only the more granular occupations WITH mean | median salary data.\n", 31 | " Yes, in hindsight, I could've just used the counts of code values HOWEVER, i didn't originally save those when i was making this function.\n", 32 | " So hah. Eat it. I'm stupid :-)\n", 33 | " \"\"\"\n", 34 | " diff = []\n", 35 | "\n", 36 | " for i in range(len(df)):\n", 37 | " A = df.loc[i, descriptionColumn].split(\" \")\n", 38 | " B = df.loc[i, descriptionColumn].strip().split(\" \")\n", 39 | " df.loc[i, descriptionColumn] = df.loc[i, descriptionColumn].strip()\n", 40 | " diff.append(len(A)-len(B))\n", 41 | "\n", 42 | " most_freq = most_frequent(diff) # we are selecting the most frequent difference instead of the maximum difference after a peek at the data shows some random outliers that might just be entry error\n", 43 | "\n", 44 | " # create columns to base selections for df\n", 45 | " df[\"diff\"] = diff\n", 46 | " df['medianSeries'] = pd.to_numeric(df.Median, errors='coerce').notnull()\n", 47 | " df['meanSeries'] = pd.to_numeric(df.Mean, errors='coerce').notnull()\n", 48 | " df = df[(df[\"medianSeries\"] | df[\"meanSeries\"]) & (df[\"diff\"]==most_freq)].reset_index(drop=True)\n", 49 | " df = df.replace('x', np.NaN)\n", 50 | " df['Median'] = round(df['Median'].astype('float64'),2)\n", 51 | " df['Mean'] = round(df['Mean'].astype('float64'),2)\n", 52 | " # replace nan with null for the sake of a valid json file\n", 53 | " df = df.replace(np.NaN, \"null\")\n", 54 | " return df.iloc[:,0:4]\n", 55 | "def jsonifyOccupations(df, yearInput):\n", 56 | " \"\"\"\n", 57 | " Given a dataframe of occupations with mean | median salary data for a given year, write a dictionary string with the following format:\n", 58 | " Yeah, there's probably a way to do this with a pandas grouping or pivot but I hate pandas.\n", 59 | " {\n", 60 | " 'jobA': {\n", 61 | " 'year_1': {\n", 62 | " 'median': 0000000,\n", 63 | " 'mean': 0000000\n", 64 | " }\n", 65 | " },\n", 66 | " \n", 67 | " 'jobB': {\n", 68 | " 'year_1': {\n", 69 | " 'median': 0000000,\n", 70 | " 'mean': 0000000\n", 71 | " }\n", 72 | " },\n", 73 | " ...\n", 74 | " \n", 75 | " 'jobZ': {\n", 76 | " 'year_1': {\n", 77 | " 'median': 0000000,\n", 78 | " 'mean': 0000000\n", 79 | " }\n", 80 | " }\n", 81 | " \n", 82 | " }\n", 83 | " \"\"\"\n", 84 | " d = dict.fromkeys(df.loc[:,'Description'])\n", 85 | "\n", 86 | " for i in range(len(df)):\n", 87 | " d[df.loc[i,'Description']] = {}\n", 88 | " content = dict.fromkeys(['median', 'mean'])\n", 89 | " content['median'] = df.loc[i,'Median']\n", 90 | " content['mean'] = df.loc[i,'Mean']\n", 91 | " d[df.loc[i,'Description']][str(yearInput)] = content\n", 92 | " return d\n", 93 | "\n", 94 | "def merge_dictionaries(dictA, dictB):\n", 95 | " \"\"\"\n", 96 | " Bruh does this function already exist wtf. This sounds like a homework problem but anyway\n", 97 | " Take dictB. \n", 98 | " If a key in dictB is present in dictA, append the contents of the key to dictA[key] (technically, i'm creating a new key with the year from dict B and assigning it's items).\n", 99 | " Otherwise, add dictB[key] and it's contents as a new value in dictA.\n", 100 | " \"\"\"\n", 101 | " for key in dictB:\n", 102 | " if key in dictA.keys():\n", 103 | " dictA[key][list(dictB[key].keys())[0]] = list(dictB[key].values())[0]\n", 104 | " else:\n", 105 | " dictA[key] = dictB[key]\n", 106 | " return dictA\n", 107 | "\n", 108 | "# calls\n", 109 | "UK2017 = jsonifyOccupations(filterOccupations(pd.read_csv(\"raw data/UK 2017.csv\"), \"Description\"), 2017)\n", 110 | "UK2018 = jsonifyOccupations(filterOccupations(pd.read_csv(\"raw data/UK 2018.csv\"), \"Description\"), 2018)\n", 111 | "UK2019 = jsonifyOccupations(filterOccupations(pd.read_csv(\"raw data/UK 2019.csv\"), \"Description\"), 2019)\n", 112 | "UK2020 = jsonifyOccupations(filterOccupations(pd.read_csv(\"raw data/UK 2020.csv\"), \"Description\"), 2020)\n", 113 | "UK2021 = jsonifyOccupations(filterOccupations(pd.read_csv(\"raw data/UK 2021.csv\"), \"Description\"), 2021)\n", 114 | "\n", 115 | "temp = merge_dictionaries(UK2017, UK2018)\n", 116 | "temp = merge_dictionaries(temp, UK2019)\n", 117 | "temp = merge_dictionaries(temp, UK2020)\n", 118 | "temp = merge_dictionaries(temp, UK2021)\n", 119 | "\n", 120 | "with open('processed data/UK_2017-2021.json', 'w', encoding='utf-8') as f:\n", 121 | " json.dump(temp, f, ensure_ascii=False, indent=4)\n", 122 | "\n" 123 | ] 124 | } 125 | ], 126 | "metadata": { 127 | "interpreter": { 128 | "hash": "183bbf6827d058c2a2fb0f4acdc0420849dda2b4380af0e437e38c64d798d8b7" 129 | }, 130 | "kernelspec": { 131 | "display_name": "Python 3.8.3 ('base')", 132 | "language": "python", 133 | "name": "python3" 134 | }, 135 | "language_info": { 136 | "codemirror_mode": { 137 | "name": "ipython", 138 | "version": 3 139 | }, 140 | "file_extension": ".py", 141 | "mimetype": "text/x-python", 142 | "name": "python", 143 | "nbconvert_exporter": "python", 144 | "pygments_lexer": "ipython3", 145 | "version": "3.8.3" 146 | }, 147 | "orig_nbformat": 4 148 | }, 149 | "nbformat": 4, 150 | "nbformat_minor": 2 151 | } 152 | -------------------------------------------------------------------------------- /Data Processing/USA data processing.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "import numpy as np\n", 11 | "import json\n", 12 | "\n", 13 | "def filterOccupations(df, descriptionColumn, SOCColumn, medianColumn, meanColumn):\n", 14 | " \"\"\"\n", 15 | " US wage data is cute. I love her. Didn't even need to open them up on excel to delete headers and footers because I'm too lazy to select ranges in python :) \n", 16 | " Each row is tagged with an SOC group value (broad, major, minor, detailed)\n", 17 | " I'm going to filter out broad categories.\n", 18 | " If there are duplicate titles, I'm going to select the finest SOC group (major > minor > detailed).\n", 19 | " Then I return a simplified dataframe with the following contents\n", 20 | "\n", 21 | " Description | Median | Mean |\n", 22 | " ---------------------------------------\n", 23 | " JobA | wage | wage |\n", 24 | " JobB | wage | wage |\n", 25 | " ... | ... | ... |\n", 26 | " JobZ | wage | wage |\n", 27 | "\n", 28 | " \"\"\" \n", 29 | " # filter out commas\n", 30 | " df.iloc[:,1:] = df.iloc[:,1:].replace(',','', regex = True)\n", 31 | " df = df.replace('*',np.NaN)\n", 32 | " df = df.replace('#',np.NaN)\n", 33 | "\n", 34 | " # filter for optimal granularity and remove duplicates\n", 35 | " df = df[df[SOCColumn] != 'broad'].reset_index(drop=True)\n", 36 | " df['duplicates'] = df.duplicated(subset=descriptionColumn, keep='last') # because the data sets go through SOC groups with increasing granularity, we only want to keep the last duplicate if present\n", 37 | " df = df[~df['duplicates']].reset_index(drop=True) # removes all duplicates that aren't of the finest SOC group\n", 38 | "\n", 39 | " # convert to ideal datatypes\n", 40 | " df[medianColumn] = round(df[medianColumn].astype('float64'),2)\n", 41 | " df[meanColumn] = round(df[meanColumn].astype('float64'),2)\n", 42 | "\n", 43 | " # filter out any rows where median & mean are null\n", 44 | " df = df.dropna(axis=0, how='all', subset=[medianColumn,meanColumn]).reset_index(drop=True)\n", 45 | "\n", 46 | " # select only columns of interest\n", 47 | " df = df[[descriptionColumn, medianColumn, meanColumn]] \n", 48 | "\n", 49 | " # rename columns for consistency with other data sets\n", 50 | " df.columns = ['Description', 'Median', 'Mean']\n", 51 | " \n", 52 | " # replace nan with null for the sake of a valid json file\n", 53 | " df = df.replace(np.NaN, \"null\")\n", 54 | " return df\n", 55 | "\n", 56 | "def jsonifyOccupations(df, yearInput):\n", 57 | " \"\"\"\n", 58 | " Given a dataframe of occupations with mean | median salary data for a given year, write a dictionary string with the following format:\n", 59 | " Yeah, there's probably a way to do this with a pandas grouping or pivot but I hate pandas.\n", 60 | " {\n", 61 | " 'jobA': {\n", 62 | " 'year_1': {\n", 63 | " 'median': 0000000,\n", 64 | " 'mean': 0000000\n", 65 | " }\n", 66 | " },\n", 67 | " \n", 68 | " 'jobB': {\n", 69 | " 'year_1': {\n", 70 | " 'median': 0000000,\n", 71 | " 'mean': 0000000\n", 72 | " }\n", 73 | " },\n", 74 | " ...\n", 75 | " \n", 76 | " 'jobZ': {\n", 77 | " 'year_1': {\n", 78 | " 'median': 0000000,\n", 79 | " 'mean': 0000000\n", 80 | " }\n", 81 | " }\n", 82 | " \n", 83 | " }\n", 84 | " \"\"\"\n", 85 | " d = dict.fromkeys(df.loc[:,'Description'])\n", 86 | "\n", 87 | " for i in range(len(df)):\n", 88 | " d[df.loc[i,'Description']] = {}\n", 89 | " content = dict.fromkeys(['median', 'mean'])\n", 90 | " content['median'] = df.loc[i,'Median']\n", 91 | " content['mean'] = df.loc[i,'Mean']\n", 92 | " d[df.loc[i,'Description']][str(yearInput)] = content\n", 93 | " return d\n", 94 | "\n", 95 | "def merge_dictionaries(dictA, dictB):\n", 96 | " \"\"\"\n", 97 | " Bruh does this function already exist wtf. This sounds like a homework problem but anyway\n", 98 | " Take dictB. \n", 99 | " If a key in dictB is present in dictA, append the contents of the key to dictA[key] (technically, i'm creating a new key with the year from dict B and assigning it's items).\n", 100 | " Otherwise, add dictB[key] and it's contents as a new value in dictA.\n", 101 | " \"\"\"\n", 102 | " for key in dictB:\n", 103 | " if key in dictA.keys():\n", 104 | " dictA[key][list(dictB[key].keys())[0]] = list(dictB[key].values())[0]\n", 105 | " else:\n", 106 | " dictA[key] = dictB[key]\n", 107 | " return dictA\n", 108 | "\n", 109 | "US2017 = jsonifyOccupations(filterOccupations(pd.read_csv('raw data/US 2017.csv'),'OCC_TITLE', 'OCC_GROUP', 'A_MEDIAN','A_MEAN'), 2017)\n", 110 | "US2018 = jsonifyOccupations(filterOccupations(pd.read_csv('raw data/US 2018.csv'),'OCC_TITLE', 'OCC_GROUP', 'A_MEDIAN','A_MEAN'), 2018)\n", 111 | "US2019 = jsonifyOccupations(filterOccupations(pd.read_csv('raw data/US 2019.csv'),'occ_title', 'o_group', 'a_median','a_mean'), 2019)\n", 112 | "US2020 = jsonifyOccupations(filterOccupations(pd.read_csv('raw data/US 2020.csv'),'OCC_TITLE', 'O_GROUP', 'A_MEDIAN','A_MEAN'), 2020)\n", 113 | "US2021 = jsonifyOccupations(filterOccupations(pd.read_csv('raw data/US 2021.csv'),'OCC_TITLE', 'O_GROUP', 'A_MEDIAN','A_MEAN'), 2021)\n", 114 | "\n", 115 | "temp = merge_dictionaries(US2017, US2018)\n", 116 | "temp = merge_dictionaries(temp, US2019)\n", 117 | "temp = merge_dictionaries(temp, US2020)\n", 118 | "temp = merge_dictionaries(temp, US2021)\n", 119 | "\n", 120 | "with open('processed data/US_2017-2021.json', 'w', encoding='utf-8') as f:\n", 121 | " json.dump(temp, f, ensure_ascii=False, indent=4)\n" 122 | ] 123 | } 124 | ], 125 | "metadata": { 126 | "interpreter": { 127 | "hash": "183bbf6827d058c2a2fb0f4acdc0420849dda2b4380af0e437e38c64d798d8b7" 128 | }, 129 | "kernelspec": { 130 | "display_name": "Python 3.8.3 ('base')", 131 | "language": "python", 132 | "name": "python3" 133 | }, 134 | "language_info": { 135 | "codemirror_mode": { 136 | "name": "ipython", 137 | "version": 3 138 | }, 139 | "file_extension": ".py", 140 | "mimetype": "text/x-python", 141 | "name": "python", 142 | "nbconvert_exporter": "python", 143 | "pygments_lexer": "ipython3", 144 | "version": "3.8.3" 145 | }, 146 | "orig_nbformat": 4 147 | }, 148 | "nbformat": 4, 149 | "nbformat_minor": 2 150 | } 151 | -------------------------------------------------------------------------------- /stylesheet.css: -------------------------------------------------------------------------------- 1 | html, body{ 2 | margin:0; 3 | padding:0; 4 | height: 100%; 5 | } 6 | 7 | html { 8 | scroll-behavior:smooth; 9 | } 10 | 11 | .container { 12 | width: 80%; 13 | border: white 0px solid; 14 | margin: 3% 0 3% 0; 15 | padding: 10px; 16 | display: inline-block; /* impacts the alignment within the parent*/ 17 | } 18 | 19 | .question-container { 20 | width: 70%; 21 | border: white 0px solid; 22 | padding: 10px; 23 | display: inline-block; /* impacts the alignment within the parent*/ 24 | } 25 | 26 | #section-1 { 27 | text-align: center; 28 | background-color: #06070B; 29 | min-width: 100%; 30 | margin: 0; 31 | padding: 10% 0 10% 0; 32 | } 33 | 34 | #section-2 { 35 | text-align: center; 36 | background-color: #E9EAE8; 37 | min-width: 100%; 38 | margin: 0; 39 | padding: 2% 0 2% 0; 40 | } 41 | 42 | #footer{ 43 | text-align: center; 44 | background-color: #06070B; 45 | min-width: 100%; 46 | margin: 0; 47 | padding: 2% 0 2% 0; 48 | } 49 | 50 | #header { 51 | padding: 3% 0 0 0; 52 | } 53 | 54 | #all-black-section{ 55 | text-align: center; 56 | background-color: #06070B; 57 | min-width: 100%; 58 | min-height: 100%; 59 | margin: 0; 60 | padding: 0; 61 | } 62 | 63 | .vcenter{ 64 | position: relative; 65 | top: -50%; 66 | -webkit-transform: translateY(50%); 67 | -ms-transform: translateY(50%); 68 | transform: translateY(50%); 69 | border: red 0px solid; 70 | } 71 | 72 | .center{ 73 | align-items: center; 74 | text-align: center; 75 | } 76 | 77 | .left { 78 | text-align: left; 79 | align-items: left; 80 | } 81 | 82 | h1 { 83 | font-family: Koulen; 84 | font-size: 700%; 85 | color: white; 86 | padding: 0; 87 | margin: 0; 88 | line-height: 100%; /* reduces the leading that was being annoying */ 89 | } 90 | 91 | h2 { 92 | font-family: Koulen; 93 | font-size: 400%; 94 | color: #06070B; 95 | padding: 0; 96 | margin: 0; 97 | line-height: 100%; /* reduces the leading that was being annoying */ 98 | } 99 | 100 | h3 { 101 | font-family: Koulen; 102 | font-size: 250%; 103 | color: #ffffff; 104 | padding: 0; 105 | margin: 0; 106 | line-height: 100%; /* reduces the leading that was being annoying */ 107 | } 108 | 109 | 110 | h4 { 111 | font-family: Inter; 112 | font-weight: 500; 113 | font-size: 300%; 114 | line-height: 100%; 115 | padding: 0; 116 | margin: 0; 117 | } 118 | 119 | p { 120 | font-family: Inter; 121 | font-size: 100%; 122 | line-height: 130%; 123 | padding: 0; 124 | margin: 0; 125 | } 126 | 127 | a { 128 | font-family: Inter; 129 | font-size: 100%; 130 | line-height: 100%; 131 | padding: 0; 132 | margin: 0; 133 | } 134 | 135 | 136 | .btn { 137 | cursor: pointer; 138 | font-family: Inter; 139 | text-align: center; 140 | font-size: 100%; 141 | color: #06070B; 142 | background-color: #E9EAE8; 143 | border: #E9EAE8 1px solid; 144 | line-height: 100%; 145 | padding: 10px 15px 10px 15px; 146 | border: 0; 147 | margin-top: 20px; 148 | text-decoration: none; 149 | display: inline-block; 150 | transition: 75ms ease-in-out; 151 | } 152 | 153 | .btn.quiz { 154 | margin: 10px 10px 10px 10px; 155 | padding-left: 25px; 156 | padding-right: 25px; 157 | font-size: 110%; 158 | } 159 | 160 | .btn.quiz.active:hover { 161 | background-color: #92DC58!important; 162 | } 163 | 164 | .list-group-item { 165 | cursor: pointer; 166 | font-family: Inter; 167 | text-align: center; 168 | font-size: 100%; 169 | color: #06070B; 170 | background-color: #E9EAE8; 171 | border: #E9EAE8 1px solid; 172 | line-height: 100%; 173 | padding: 12px 15px 12px 15px; 174 | border: 0; 175 | margin-top: 20px; 176 | list-style: none; 177 | } 178 | 179 | .answer-list-item { 180 | cursor: pointer; 181 | font-family: Inter; 182 | text-align: center; 183 | font-size: 100%; 184 | color: #E9EAE8; 185 | line-height: 100%; 186 | padding: 12px 15px 12px 15px; 187 | border: 0; 188 | margin-top: 20px; 189 | list-style: none; 190 | } 191 | 192 | .big-arrow { 193 | display: inline-block; 194 | margin-top: 50px; 195 | transition: 200ms ease-in-out; 196 | } 197 | 198 | .big-arrow:hover { 199 | display: inline-block; 200 | margin-top: 50px; 201 | transform: translateY(8%); 202 | } 203 | 204 | #wage { 205 | transform: translateX(-5%); 206 | } 207 | 208 | #gauge { 209 | transform: translateX(3%); 210 | } 211 | 212 | #green { 213 | background-color: #92DC58; 214 | border: #92DC58 1px solid; 215 | } 216 | 217 | #green-text { 218 | color:#92DC58 219 | } 220 | 221 | #green:hover { 222 | background-color: #06070B; 223 | border: #E9EAE8 1px solid; 224 | color: #E9EAE8; 225 | } 226 | 227 | #offwhite { 228 | color: #E9EAE8; 229 | text-decoration: none; 230 | } 231 | 232 | #black { 233 | color: #06070B; 234 | } 235 | 236 | /* text highlighter inspired by https://codepen.io/alvarotrigo/pen/rNpaBJJ */ 237 | 238 | .highlight-container, .highlight { 239 | position: relative; 240 | } 241 | 242 | .highlight-container { 243 | display: inline-block; 244 | } 245 | .highlight-container:before { 246 | content: " "; 247 | display: block; 248 | height: 50%; 249 | width: 90%; 250 | margin-left: -3px; 251 | margin-right: -3px; 252 | position: absolute; 253 | background: #92DC58; 254 | top: 20px; 255 | padding: 10px 3px 3px 10px; 256 | } 257 | 258 | 259 | /* YT video container via https://silvercircle.subspace.cc/webdev/css/embed-youtube-any-size-and-correct-aspect/ */ 260 | 261 | div.ytcontainer { 262 | width: 100%; 263 | height: 0; 264 | padding-bottom: 56.25%; 265 | position: relative; 266 | } 267 | 268 | iframe.ytframe { 269 | top: 0; 270 | left: 0; 271 | width: 100%; 272 | height: 100%; 273 | position: absolute; 274 | } 275 | 276 | /* footer management */ 277 | 278 | .social-links { 279 | font-family: Font Awesome 5 Brands; 280 | font-style: normal; 281 | font-weight: normal; 282 | font-size: 150%; 283 | line-height: 100%; 284 | text-align: right; 285 | color: #E9EAE8; 286 | } 287 | 288 | 289 | .footer-link { 290 | font-family: Inter; 291 | font-size:100%; 292 | line-height: 80%; 293 | text-align: left; 294 | color: #E9EAE8; 295 | display: inline-block; 296 | } 297 | 298 | .underline-animation { 299 | display: inline-block; 300 | position: relative; 301 | } 302 | 303 | .underline-animation:after { 304 | content: ''; 305 | position: absolute; 306 | width: 100%; 307 | transform: scaleX(0); 308 | height: 1.25px; 309 | top: 140%; 310 | bottom: 0; 311 | left: 0; 312 | background-color: #E9EAE8; 313 | transform-origin: bottom right; 314 | transition: transform 0.25s ease-out; 315 | } 316 | 317 | .underline-animation:hover:after{ 318 | transform: scaleX(1); 319 | transform-origin: bottom left; 320 | } 321 | 322 | a.fab:focus, a.fab:active, a.fab:visited, a.fab:link { 323 | text-decoration: none; 324 | color: #E9EAE8; 325 | } 326 | 327 | a.footer-link:focus, a.footer-link:active, a.footer-link:visited, a.footer-link:link { 328 | text-decoration: none; 329 | color: #E9EAE8; 330 | } 331 | 332 | .flex-split { 333 | display: inline-flex; 334 | border: red 0px solid; 335 | justify-content: space-between; 336 | } 337 | 338 | .flex-triplet { 339 | display: inline-flex; 340 | justify-content: center; 341 | flex-direction: row; 342 | flex-basis: auto; 343 | width: 50%; 344 | height: auto; 345 | flex-wrap: wrap; 346 | } 347 | 348 | .flex-triplet-child { 349 | flex-grow: 1; 350 | margin: 0 3% 0 3%; 351 | min-width: 100px; 352 | } 353 | 354 | img { 355 | height: auto; 356 | } 357 | 358 | img.grayscale { 359 | filter: url("data:image/svg+xml;utf8,#grayscale"); /* Firefox 3.5+ */ 360 | filter: gray; /* IE6-9 */ 361 | -webkit-filter: grayscale(100%); /* Chrome 19+ & Safari 6+ */ 362 | transition: filter 150ms ease-in-out; 363 | } 364 | 365 | img.grayscale:hover { 366 | filter: none; 367 | -webkit-filter: grayscale(0%); 368 | } -------------------------------------------------------------------------------- /img/US flag rectangle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /script.js: -------------------------------------------------------------------------------- 1 | // carry over data from country-select 2 | const countryName = sessionStorage.getItem('countryName') 3 | 4 | // setting the start and end year of the data just for robustness 5 | // idk if i'll ever update this tho 6 | const START_YEAR = 2017 7 | const END_YEAR = 2021 8 | const NUM_QUESTIONS = 5 9 | 10 | // events 11 | const score_fromDoc = document.querySelector('.score'); 12 | const hr = document.querySelector('.hour') 13 | const min = document.querySelector('.minute') 14 | const sec = document.querySelector('.second') 15 | 16 | const q_num_sel = document.querySelector('.question-number') 17 | const q_sel = document.querySelector('.question') 18 | const q_des_sel = document.querySelector('.question-description') 19 | const q_el_sel = document.querySelector('.question-element') 20 | const nav_btn = document.querySelector('.navigator') 21 | 22 | // variables for timer 23 | let second = 00; 24 | let minute = 00; 25 | let hour = 00; 26 | let elapsed; 27 | 28 | let score = 0; 29 | 30 | /////////////////////////////////////// 31 | 32 | // timer functions 33 | 34 | /////////////////////////////////////// 35 | 36 | function startTimer(){ 37 | // every second, elapsed 38 | addTime() 39 | timer = setInterval(addTime, 1000) 40 | } 41 | 42 | function convertToString(e){ 43 | if (e < 10){ 44 | e = `0${e}`; 45 | } 46 | return e; 47 | } 48 | 49 | function addTime(){ 50 | second++; 51 | if (second === 60){ 52 | minute++; 53 | second = 00 54 | } 55 | if (minute === 60){ 56 | hour++; 57 | minute = 00 58 | } 59 | hr.textContent = convertToString(hour); 60 | min.textContent = convertToString(minute); 61 | sec.textContent = convertToString(second); 62 | } 63 | 64 | /*/////////////////////////////////////// 65 | 66 | // data selection 67 | 68 | // the idea is to call the JSON data once and select the data 69 | // i need for the questions before the questions even start populating 70 | 71 | ///////////////////////////////////////*/ 72 | 73 | var years = []; 74 | var data; 75 | var formatter; 76 | 77 | for (let i = START_YEAR; i <= END_YEAR; i++){ 78 | years.push(String(i)) 79 | }; 80 | 81 | switch (countryName){ 82 | case 'Canada': 83 | data = CAN_DATA; 84 | formatter = new Intl.NumberFormat('en-CA', { 85 | style: 'currency', 86 | currency: 'CAD', 87 | maximumFractionDigits: 0 88 | }); 89 | break; 90 | case 'the United States': 91 | data = US_DATA; 92 | formatter = new Intl.NumberFormat('en-US', { 93 | style: 'currency', 94 | currency: 'USD', 95 | maximumFractionDigits: 0 96 | }); 97 | break; 98 | case 'the United Kingdom': 99 | data = UK_DATA; 100 | formatter = new Intl.NumberFormat('en-GB', { 101 | style: 'currency', 102 | currency: 'GBP', 103 | maximumFractionDigits: 0 104 | }); 105 | break; 106 | } 107 | 108 | var keys = Object.keys(data) 109 | var medianIncome = data[keys[0]]['2021']['median'] 110 | var medianRateChange = (data[keys[0]]['2021']['median'] - data[keys[0]]['2020']['median'])/data[keys[0]]['2020']['median']*100 111 | var medianAbsChange = data[keys[0]]['2021']['median'] - data[keys[0]]['2020']['median'] 112 | // after we get the median, we should remove the first key from the array so we dont accidentally call the median 113 | delete data[keys[0]]; 114 | keys = keys.splice(1) 115 | 116 | // i know this is a mess 117 | // so am i 118 | var aboveMedian = [] 119 | var belowMedian = [] 120 | var has2021median = {} 121 | var raises_2021 = {} 122 | var paycuts_2020 = {} 123 | 124 | keys.forEach((e)=>{ 125 | // check to see if there's a 2021 value 126 | if (typeof data[e]['2021'] !== 'undefined'){ 127 | // check to see if there's a median value in 2021 128 | if (typeof data[e]['2021']['median'] !== 'undefined'){ 129 | // store whether the value is above or below the national median 130 | if (data[e]['2021']['median']>medianIncome){ 131 | aboveMedian.push(e) 132 | } else { 133 | belowMedian.push(e) 134 | } 135 | } 136 | } 137 | }); 138 | 139 | keys.forEach((e)=>{ 140 | // check to see if there's a 2021 value 141 | if (typeof data[e]['2021'] !== 'undefined'){ 142 | // check to see if there's a median value in 2021 143 | if (typeof data[e]['2021']['median'] !== 'undefined'){ 144 | // store whether the value is above or below the national median 145 | has2021median[e] = data[e]['2021']['median']; 146 | } 147 | } 148 | }); 149 | 150 | // calculate raises in 2021 for q5 151 | keys.forEach((e)=>{ 152 | // check to see if there's are 2020 and 2021 values 153 | if ((typeof data[e]['2020'] !== 'undefined') & typeof data[e]['2021'] !== 'undefined'){ 154 | // check to see if there's are median values for both years 155 | if ((typeof data[e]['2020']['median'] !== 'undefined') & (typeof data[e]['2021']['median'] !== 'undefined')){ 156 | // store whether they got a raise/paycut and by how much 157 | if (data[e]['2021']['median']>data[e]['2020']['median']){ // check if raise 158 | raises_2021[e] = {} 159 | raises_2021[e]['rate'] = (data[e]['2021']['median']-data[e]['2020']['median'])/data[e]['2020']['median']*100 160 | raises_2021[e]['abs'] = data[e]['2021']['median']-data[e]['2020']['median'] 161 | } 162 | } 163 | } 164 | }); 165 | 166 | 167 | // calculate paycuts in 2020 for q4 168 | keys.forEach((e)=>{ 169 | // check to see if there's are 2020 and 2021 values 170 | if ((typeof data[e]['2019'] !== 'undefined') & typeof data[e]['2020'] !== 'undefined'){ 171 | // check to see if there's are median values for both years 172 | if ((typeof data[e]['2019']['median'] !== 'undefined') & (typeof data[e]['2020']['median'] !== 'undefined')){ 173 | // store whether they got a raise/paycut and by how much 174 | if (data[e]['2019']['median']>data[e]['2020']['median']){ // check if paycut 175 | paycuts_2020[e] = {} 176 | paycuts_2020[e]['rate'] = -(data[e]['2020']['median']-data[e]['2019']['median'])/(data[e]['2019']['median'])*100 // find value of the paycut 177 | paycuts_2020[e]['abs'] = -(data[e]['2020']['median']-data[e]['2019']['median']) // find value of the paycut 178 | } 179 | } 180 | } 181 | }); 182 | 183 | function genRandom(max, min){ 184 | // generate a random positive or negative number with an absolute value between max and min 185 | return (Math.ceil(Math.random() * (max-min))+min) * (Math.round(Math.random()) ? 1 : -1) 186 | } 187 | 188 | function selectRandom_noRepeat(lst, numWanted){ 189 | // create a copy of the list so you don't permanently damage the list 190 | copyLst = Array.from(structuredClone(lst)); 191 | finalLst = [] 192 | for (let i=0;i{ 194 | return 0.5 - Math.random(); 195 | }).pop()) 196 | }; 197 | return finalLst 198 | } 199 | 200 | function getLstContent(dom){ 201 | lst = [] 202 | items = Array.from(dom.getElementsByTagName("li")) 203 | items.forEach((item)=>{ 204 | lst.push(item.textContent) 205 | }) 206 | return lst 207 | } 208 | 209 | let q2_a = selectRandom_noRepeat(aboveMedian,1)[0] 210 | let q2_w = selectRandom_noRepeat(belowMedian,2) 211 | 212 | let q3_o_names = selectRandom_noRepeat(Object.keys(has2021median), 3) // i need to make sure this list is ordered properly 213 | let q3_o= [] 214 | 215 | // figured out a cleaner way to do this 216 | // will i implement this on the other stuff 217 | // maYBE 218 | q3_o_names.forEach((e) =>{ 219 | q3_o.push([e,has2021median[e]]) 220 | }); 221 | 222 | q3_o.sort((a,b)=>{ 223 | return b[1]-a[1]; 224 | }) 225 | 226 | q3_o_str = 227 | ` 228 | 233 | ` 234 | 235 | // lmaooo what the fuck is this. i'm running out of time and coming up with the whackest shit lmaooooo 236 | if (countryName=='Canada'){ 237 | var theCanadaNum = 2; 238 | } else { 239 | var theCanadaNum = 3; 240 | } 241 | let q4_o = Array.from(selectRandom_noRepeat(Object.keys(paycuts_2020),theCanadaNum)) 242 | q4_o.forEach((e)=>{ 243 | q4_o[e] = {} 244 | q4_o[e]['rate'] = paycuts_2020[e]['rate'] 245 | q4_o[e]['abs'] = paycuts_2020[e]['abs'] 246 | }) 247 | 248 | let q4_a_rate = q4_o[Object.keys(q4_o)[q4_o.length]]['rate']; 249 | let q4_a_abs = q4_o[Object.keys(q4_o)[q4_o.length]]['abs']; 250 | let q4_a_name = Object.keys(q4_o)[q4_o.length]; 251 | q4_a_rate = q4_o[Object.keys(q4_o)[q4_o.length]]['rate'] // starting at that index because Object.keys is giving me some whack output that I don't wanna deal with rn 252 | 253 | Object.keys(q4_o).forEach((e)=>{ 254 | if (q4_o[e]['rate']>q4_a_rate){ 255 | q4_a_rate = q4_o[e]['rate'] 256 | q4_a_abs = q4_o[e]['abs'] 257 | q4_a_name = e 258 | } 259 | }) 260 | 261 | // aND I'D DO IT AGAIN 262 | let q5_o = Array.from(selectRandom_noRepeat(Object.keys(raises_2021),3)) 263 | q5_o.forEach((e)=>{ 264 | q5_o[e] = {} 265 | q5_o[e]['rate'] = raises_2021[e]['rate'] 266 | q5_o[e]['abs'] = raises_2021[e]['abs'] 267 | }) 268 | 269 | let q5_a_rate = q5_o[Object.keys(q5_o)[q5_o.length]]['rate']; 270 | let q5_a_abs = q5_o[Object.keys(q5_o)[q5_o.length]]['abs']; 271 | let q5_a_name = Object.keys(q5_o)[q5_o.length]; 272 | 273 | Object.keys(q5_o).forEach((e)=>{ 274 | if (q5_o[e]['rate']>q5_a_rate){ 275 | q5_a_rate = q5_o[e]['rate'] 276 | q5_a_abs = q5_o[e]['abs'] 277 | q5_a_name = e 278 | } 279 | }) 280 | 281 | 282 | /////////////////////////////////////// 283 | 284 | // build quiz 285 | 286 | /////////////////////////////////////// 287 | 288 | var questionText = [ 289 | `What was the median income of ${countryName} in 2021?`, 290 | `Which job earns above the median wage?`, 291 | `Can you rank these jobs in order of highest to lowest median wage?`, 292 | `Which job's wages took the biggest hit in 2020?`, 293 | `Which job saw the biggest raise from 2020 to 2021?` 294 | ]; 295 | var questionContent = [ 296 | generateContent([formatter.format(medianIncome), formatter.format(medianIncome+genRandom(20000,5000)), formatter.format(medianIncome+genRandom(20000,5000))]), 297 | generateContent([q2_w[0], q2_w[1],q2_a]), 298 | q3_o_str, 299 | generateContent(q4_o), 300 | generateContent(q5_o) 301 | ]; 302 | var questionDescription = [ 303 | `The median means that 50% makes above the number and 50% make below it.`, 304 | `The median income was ${formatter.format(medianIncome)} in 2021.`, 305 | `Drag the boxes in order of their earnings (highest at the top).`, 306 | `Which job saw the biggest decrease in wages from 2019 to 2020?`, 307 | `Which job saw the biggest increase in wages from 2020 to 2021?` 308 | ]; 309 | var answerDescription = [ 310 | `The median income of ${countryName} was ${formatter.format(medianIncome)} in 2021.`, 311 | `${q2_a}'s median wage was ${formatter.format(data[q2_a]['2021']['median'])} which is ${formatter.format(data[q2_a]['2021']['median']-medianIncome)} above the median.`, 312 | `The median wages for each occupation in 2021 are displayed on their right.`, 313 | `${q4_a_name} saw a median paycut of ${formatter.format(q4_a_abs)} (or ${Math.round(q4_a_rate*100)/100}%) from 2019 to 2020.`, 314 | `${q5_a_name} saw a median raise of ${formatter.format(q5_a_abs)} (or ${Math.round(q5_a_rate * 100)/100}%) from 2020 to 2021.` 315 | ] 316 | var answerLst = [ 317 | formatter.format(medianIncome), 318 | q2_a, 319 | q3_o.map(function(value,index) { return value[0]; }), 320 | q4_a_name, 321 | q5_a_name 322 | ] 323 | var submission 324 | var questionNumber = 0 325 | 326 | function generateOption(opt){ 327 | /* 328 | I need a way to create options and tag whether it is the correct answer 329 | I guess I can just compare the text content with a switch case rather than have 330 | the answer be in the HTML 331 | but that's annoying lol - we'll see what I'm vibing with by the end of the day 332 | */ 333 | 334 | let str; 335 | str = 336 | ` 337 | 338 | ` 339 | return str 340 | 341 | } 342 | 343 | function generateContent(lstOfOptions){ 344 | /* 345 | I need a way to randomize the order in which options appear so the quiz answers aren't randomly correct every time 346 | */ 347 | 348 | let str = `
`; 349 | // need to declare this here since the length will change once we start poppin 350 | let len = lstOfOptions.length; 351 | 352 | for (let i = 0; i < len; i++){ 353 | let option = generateOption(lstOfOptions.sort(function() { return 0.5 - Math.random();}).pop()); 354 | str += 355 | `${option}` + `\n` 356 | } 357 | 358 | str += `
` 359 | return str 360 | } 361 | 362 | var opts_sel; 363 | var answer_sel; 364 | const abortController = new AbortController(); 365 | 366 | 367 | console.log(answerLst) 368 | 369 | function askQuestion(questionNumber) { 370 | score_fromDoc.textContent = score; 371 | q_num_sel.innerHTML = `Question ${questionNumber + 1}/${NUM_QUESTIONS}` 372 | q_des_sel.innerHTML = `${questionDescription[questionNumber]}` 373 | q_sel.innerHTML = questionText[questionNumber] 374 | 375 | q_el_sel.innerHTML = questionContent[questionNumber] 376 | opts_sel = document.querySelectorAll('#option') 377 | 378 | if (questionNumber==2){ 379 | new Sortable(simpleList, { 380 | animation: 150 381 | }); 382 | } else { 383 | // create an event listener for each button 384 | // update the submission value whenever they click 385 | 386 | opts_sel.forEach((i)=>{ 387 | i.addEventListener('click',()=>{ 388 | opts_sel.forEach((e)=>e.style.backgroundColor = '#E9EAE8') 389 | i.style.backgroundColor = '#92DC58' 390 | submission = [i, i.textContent] 391 | }, {signal: abortController.signal}) 392 | }) 393 | 394 | } 395 | 396 | nav_btn.textContent = 'submit answer ->' 397 | nav_btn.addEventListener('click',checkAnswer) 398 | } 399 | 400 | function checkAnswer(e){ 401 | // im pretty sure this is here because i made all the buttons links for some reason 402 | e.preventDefault(); 403 | 404 | // make the buttons inactive so they dont have a hover effect 405 | opts_sel.forEach((e)=>e.classList.remove("active")); 406 | 407 | // abort the event listeners so you don't click and erase the correct answer 408 | //abortController.abort() 409 | 410 | 411 | // kill the old nav_button listener 412 | nav_btn.removeEventListener('click', checkAnswer) 413 | 414 | // have button content depend on question number 415 | if (questionNumber < NUM_QUESTIONS-1){ 416 | nav_btn.textContent = `next question ->` 417 | } else { 418 | nav_btn.textContent = `finish quiz ->` 419 | } 420 | 421 | // create a new one to go to the next question 422 | nav_btn.addEventListener('click',nextQuestion) 423 | 424 | if (questionNumber==2){ 425 | submission = getLstContent(document.getElementById('simpleList')) 426 | opts = document.querySelectorAll('.list-group-item') 427 | let i = 0 428 | let c = 0 429 | opts.forEach ((e)=>{ 430 | if (submission[i] == answerLst[questionNumber][i]){ 431 | q_des_sel.innerHTML = `Correct!

${answerDescription[questionNumber]}` 432 | e.style.backgroundColor = '#92DC58'; 433 | c++ 434 | } else { 435 | q_des_sel.innerHTML = `Incorrect!

${answerDescription[questionNumber]}` 436 | e.style.backgroundColor = '#F24949'; 437 | } 438 | i++; 439 | }) 440 | 441 | if (c==3){ 442 | score++ // why do this instead of checkking if the arrays are equal? because i am stupid and i could not figure it out idk how i couldn't figure it out but i sure couldn't figure it out 443 | } 444 | 445 | q_el_sel.innerHTML = 446 | ` 447 |
448 |
449 | ${q_el_sel.innerHTML} 450 |
451 |
452 |
    453 |
  • ${formatter.format(has2021median[submission[0]])}
  • 454 |
  • ${formatter.format(has2021median[submission[1]])}
  • 455 |
  • ${formatter.format(has2021median[submission[2]])}
  • 456 |
457 |
458 |
459 | ` 460 | 461 | 462 | } else { 463 | // select the answer 464 | opts_sel.forEach((e)=>{ 465 | if (e.textContent == answerLst[questionNumber]){ 466 | answer_sel = e 467 | } 468 | }) 469 | 470 | // actually validate the answer 471 | if (submission[1] == answerLst[questionNumber]){ 472 | score++; 473 | q_des_sel.innerHTML = `Correct!

${answerDescription[questionNumber]}` 474 | } else { 475 | // if the submission is wrong, we want to mark it red 476 | // and show the correct answer 477 | q_des_sel.innerHTML = `Incorrect!

${answerDescription[questionNumber]}` 478 | submission[0].style.backgroundColor = '#F24949' 479 | answer_sel.style.backgroundColor = '#92DC58' 480 | } 481 | } 482 | score_fromDoc.textContent = score; 483 | } 484 | 485 | function nextQuestion(e) { 486 | e.preventDefault(); 487 | if (questionNumber < NUM_QUESTIONS-1){ 488 | nav_btn.removeEventListener('click', nextQuestion) 489 | questionNumber ++; 490 | askQuestion(questionNumber); 491 | } else { 492 | endGame() 493 | } 494 | } 495 | 496 | function endGame(){ 497 | sessionStorage.setItem('hour', hour); 498 | sessionStorage.setItem('minute', minute); 499 | sessionStorage.setItem('second', second); 500 | sessionStorage.setItem('score', score); 501 | window.location.replace("results.html"); 502 | } 503 | 504 | 505 | 506 | /////////////////////////////////////// 507 | 508 | // run 509 | 510 | /////////////////////////////////////// 511 | 512 | 513 | 514 | askQuestion(questionNumber) 515 | startTimer() 516 | -------------------------------------------------------------------------------- /assets/dataCA.js: -------------------------------------------------------------------------------- 1 | var CAN_DATA = { 2 | "Total employees, all occupations": { 3 | "2017": { 4 | "median": 43680.0, 5 | "mean": 49552.88 6 | }, 7 | "2018": { 8 | "median": 44990.4, 9 | "mean": 50976.12 10 | }, 11 | "2019": { 12 | "median": 46800.0, 13 | "mean": 52638.56 14 | }, 15 | "2020": { 16 | "median": 50003.2, 17 | "mean": 56211.48 18 | }, 19 | "2021": { 20 | "median": 50965.2, 21 | "mean": 57146.44 22 | } 23 | }, 24 | "Senior management occupations": { 25 | "2017": { 26 | "median": 98124.0, 27 | "mean": 102436.88 28 | }, 29 | "2018": { 30 | "median": 109990.4, 31 | "mean": 114143.64 32 | }, 33 | "2019": { 34 | "median": 109999.76, 35 | "mean": 113661.08 36 | }, 37 | "2020": { 38 | "median": 119995.2, 39 | "mean": 122080.92 40 | }, 41 | "2021": { 42 | "median": 115632.4, 43 | "mean": 120293.68 44 | } 45 | }, 46 | "Specialized middle management occupations": { 47 | "2017": { 48 | "median": 90001.6, 49 | "mean": 92190.8 50 | }, 51 | "2018": { 52 | "median": 91001.04, 53 | "mean": 94135.6 54 | }, 55 | "2019": { 56 | "median": 95998.76, 57 | "mean": 97319.56 58 | }, 59 | "2020": { 60 | "median": 100006.4, 61 | "mean": 100984.52 62 | }, 63 | "2021": { 64 | "median": 103001.6, 65 | "mean": 105947.92 66 | } 67 | }, 68 | "Middle management occupations in retail and wholesale trade and customer services": { 69 | "2017": { 70 | "median": 64993.76, 71 | "mean": 71738.68 72 | }, 73 | "2018": { 74 | "median": 66007.76, 75 | "mean": 74766.64 76 | }, 77 | "2019": { 78 | "median": 62400.0, 79 | "mean": 73911.76 80 | }, 81 | "2020": { 82 | "median": 68640.0, 83 | "mean": 76998.48 84 | }, 85 | "2021": { 86 | "median": 70200.0, 87 | "mean": 81761.68 88 | } 89 | }, 90 | "Middle management occupations in trades, transportation, production and utilities": { 91 | "2017": { 92 | "median": 82742.4, 93 | "mean": 87765.6 94 | }, 95 | "2018": { 96 | "median": 82659.2, 97 | "mean": 74766.64 98 | }, 99 | "2019": { 100 | "median": 89996.4, 101 | "mean": 93992.6 102 | }, 103 | "2020": { 104 | "median": 87360.0, 105 | "mean": 93813.72 106 | }, 107 | "2021": { 108 | "median": 91000.0, 109 | "mean": 97444.88 110 | } 111 | }, 112 | "Professional occupations in business and finance": { 113 | "2017": { 114 | "median": 63980.8, 115 | "mean": 69033.12 116 | }, 117 | "2018": { 118 | "median": 65000.0, 119 | "mean": 71068.92 120 | }, 121 | "2019": { 122 | "median": 67509.0, 123 | "mean": 73191.56 124 | }, 125 | "2020": { 126 | "median": 69992.0, 127 | "mean": 75527.4 128 | }, 129 | "2021": { 130 | "median": 71994.0, 131 | "mean": 76745.76 132 | } 133 | }, 134 | "Administrative and financial supervisors and administrative occupations": { 135 | "2017": { 136 | "median": 45630.0, 137 | "mean": 47188.96 138 | }, 139 | "2018": { 140 | "median": 46800.0, 141 | "mean": 49065.64 142 | }, 143 | "2019": { 144 | "median": 48888.84, 145 | "mean": 51255.36 146 | }, 147 | "2020": { 148 | "median": 50003.2, 149 | "mean": 52868.92 150 | }, 151 | "2021": { 152 | "median": 52000.0, 153 | "mean": 54384.72 154 | } 155 | }, 156 | "Finance, insurance and related business administrative occupations": { 157 | "2017": { 158 | "median": 44428.8, 159 | "mean": 45461.0 160 | }, 161 | "2018": { 162 | "median": 44990.4, 163 | "mean": 46446.92 164 | }, 165 | "2019": { 166 | "median": 46800.0, 167 | "mean": 48912.76 168 | }, 169 | "2020": { 170 | "median": 50003.2, 171 | "mean": 52865.8 172 | }, 173 | "2021": { 174 | "median": 51405.12, 175 | "mean": 52945.36 176 | } 177 | }, 178 | "Office support occupations": { 179 | "2017": { 180 | "median": 36400.0, 181 | "mean": 36553.4 182 | }, 183 | "2018": { 184 | "median": 38220.0, 185 | "mean": 38205.44 186 | }, 187 | "2019": { 188 | "median": 38857.0, 189 | "mean": 38699.44 190 | }, 191 | "2020": { 192 | "median": 39998.4, 193 | "mean": 40743.56 194 | }, 195 | "2021": { 196 | "median": 41184.0, 197 | "mean": 40881.88 198 | } 199 | }, 200 | "Distribution, tracking and scheduling co-ordination occupations": { 201 | "2017": { 202 | "median": 39998.4, 203 | "mean": 41926.04 204 | }, 205 | "2018": { 206 | "median": 39998.4, 207 | "mean": 41784.6 208 | }, 209 | "2019": { 210 | "median": 41600.0, 211 | "mean": 42584.88 212 | }, 213 | "2020": { 214 | "median": 43680.0, 215 | "mean": 45141.72 216 | }, 217 | "2021": { 218 | "median": 45240.0, 219 | "mean": 45847.88 220 | } 221 | }, 222 | "Professional occupations in natural and applied sciences": { 223 | "2017": { 224 | "median": 75004.8, 225 | "mean": 78227.24 226 | }, 227 | "2018": { 228 | "median": 77001.6, 229 | "mean": 80440.36 230 | }, 231 | "2019": { 232 | "median": 79996.8, 233 | "mean": 82631.64 234 | }, 235 | "2020": { 236 | "median": 82992.0, 237 | "mean": 86003.32 238 | }, 239 | "2021": { 240 | "median": 84065.8, 241 | "mean": 87613.24 242 | } 243 | }, 244 | "Technical occupations related to natural and applied sciences": { 245 | "2017": { 246 | "median": 58968.0, 247 | "mean": 62276.24 248 | }, 249 | "2018": { 250 | "median": 59280.0, 251 | "mean": 63737.44 252 | }, 253 | "2019": { 254 | "median": 60442.2, 255 | "mean": 64697.88 256 | }, 257 | "2020": { 258 | "median": 62400.0, 259 | "mean": 66688.96 260 | }, 261 | "2021": { 262 | "median": 62010.0, 263 | "mean": 66033.76 264 | } 265 | }, 266 | "Professional occupations in nursing": { 267 | "2017": { 268 | "median": 65520.0, 269 | "mean": 64362.48 270 | }, 271 | "2018": { 272 | "median": 65520.0, 273 | "mean": 64693.2 274 | }, 275 | "2019": { 276 | "median": 69225.0, 277 | "mean": 67747.16 278 | }, 279 | "2020": { 280 | "median": 72800.0, 281 | "mean": 70780.32 282 | }, 283 | "2021": { 284 | "median": 72930.0, 285 | "mean": 71323.72 286 | } 287 | }, 288 | "Professional occupations in health (except nursing)": { 289 | "2017": { 290 | "median": 69888.0, 291 | "mean": 71244.68 292 | }, 293 | "2018": { 294 | "median": 68211.0, 295 | "mean": 71557.72 296 | }, 297 | "2019": { 298 | "median": 74360.0, 299 | "mean": 76058.84 300 | }, 301 | "2020": { 302 | "median": 76544.0, 303 | "mean": 79239.68 304 | }, 305 | "2021": { 306 | "median": 74997.0, 307 | "mean": 76375.52 308 | } 309 | }, 310 | "Technical occupations in health": { 311 | "2017": { 312 | "median": 45991.4, 313 | "mean": 48336.08 314 | }, 315 | "2018": { 316 | "median": 46883.2, 317 | "mean": 49157.16 318 | }, 319 | "2019": { 320 | "median": 48360.0, 321 | "mean": 50113.44 322 | }, 323 | "2020": { 324 | "median": 51001.6, 325 | "mean": 52697.84 326 | }, 327 | "2021": { 328 | "median": 50960.0, 329 | "mean": 52968.24 330 | } 331 | }, 332 | "Assisting occupations in support of health services": { 333 | "2017": { 334 | "median": 35360.0, 335 | "mean": 36004.28 336 | }, 337 | "2018": { 338 | "median": 37004.24, 339 | "mean": 37351.6 340 | }, 341 | "2019": { 342 | "median": 36400.0, 343 | "mean": 36058.36 344 | }, 345 | "2020": { 346 | "median": 37518.0, 347 | "mean": 36976.16 348 | }, 349 | "2021": { 350 | "median": 39000.0, 351 | "mean": 37817.52 352 | } 353 | }, 354 | "Professional occupations in education services": { 355 | "2017": { 356 | "median": 64993.76, 357 | "mean": 63853.4 358 | }, 359 | "2018": { 360 | "median": 67787.2, 361 | "mean": 64988.04 362 | }, 363 | "2019": { 364 | "median": 68998.8, 365 | "mean": 66363.44 366 | }, 367 | "2020": { 368 | "median": 74006.4, 369 | "mean": 69714.32 370 | }, 371 | "2021": { 372 | "median": 72800.0, 373 | "mean": 69444.44 374 | } 375 | }, 376 | "Professional occupations in law and social, community and government services": { 377 | "2017": { 378 | "median": 65000.52, 379 | "mean": 69109.04 380 | }, 381 | "2018": { 382 | "median": 66273.48, 383 | "mean": 70814.64 384 | }, 385 | "2019": { 386 | "median": 67005.12, 387 | "mean": 71726.72 388 | }, 389 | "2020": { 390 | "median": 70720.0, 391 | "mean": 75638.68 392 | }, 393 | "2021": { 394 | "median": 72579.0, 395 | "mean": 76635.0 396 | } 397 | }, 398 | "Paraprofessional occupations in legal, social, community and education services": { 399 | "2017": { 400 | "median": 35006.4, 401 | "mean": 37162.32 402 | }, 403 | "2018": { 404 | "median": 35880.0, 405 | "mean": 37937.64 406 | }, 407 | "2019": { 408 | "median": 38220.0, 409 | "mean": 38612.6 410 | }, 411 | "2020": { 412 | "median": 39520.0, 413 | "mean": 40591.72 414 | }, 415 | "2021": { 416 | "median": 40436.76, 417 | "mean": 41498.08 418 | } 419 | }, 420 | "Occupations in front-line public protection services": { 421 | "2017": { 422 | "median": 88157.16, 423 | "mean": 85597.2 424 | }, 425 | "2018": { 426 | "median": 90002.64, 427 | "mean": 87122.36 428 | }, 429 | "2019": { 430 | "median": 93600.0, 431 | "mean": 90944.36 432 | }, 433 | "2020": { 434 | "median": 97996.08, 435 | "mean": 95169.88 436 | }, 437 | "2021": { 438 | "median": 98009.6, 439 | "mean": 93802.8 440 | } 441 | }, 442 | "Care providers and educational, legal and public protection support occupations": { 443 | "2017": { 444 | "median": 31486.0, 445 | "mean": 34808.28 446 | }, 447 | "2018": { 448 | "median": 33800.0, 449 | "mean": 36442.12 450 | }, 451 | "2019": { 452 | "median": 34070.4, 453 | "mean": 36666.24 454 | }, 455 | "2020": { 456 | "median": 36660.0, 457 | "mean": 38126.4 458 | }, 459 | "2021": { 460 | "median": 38025.0, 461 | "mean": 39188.24 462 | } 463 | }, 464 | "Professional occupations in art and culture": { 465 | "2017": { 466 | "median": 51997.4, 467 | "mean": 51700.48 468 | }, 469 | "2018": { 470 | "median": 44752.76, 471 | "mean": 46116.2 472 | }, 473 | "2019": { 474 | "median": 48750.0, 475 | "mean": 48260.68 476 | }, 477 | "2020": { 478 | "median": 56420.0, 479 | "mean": 56593.16 480 | }, 481 | "2021": { 482 | "median": 60001.76, 483 | "mean": 59008.56 484 | } 485 | }, 486 | "Technical occupations in art, culture, recreation and sport": { 487 | "2017": { 488 | "median": 30940.0, 489 | "mean": 33979.4 490 | }, 491 | "2018": { 492 | "median": 31200.0, 493 | "mean": 35453.6 494 | }, 495 | "2019": { 496 | "median": 35006.4, 497 | "mean": 38342.72 498 | }, 499 | "2020": { 500 | "median": 39994.76, 501 | "mean": 41851.16 502 | }, 503 | "2021": { 504 | "median": 43472.0, 505 | "mean": 46961.72 506 | } 507 | }, 508 | "Retail sales supervisors and specialized sales occupations": { 509 | "2017": { 510 | "median": 40996.8, 511 | "mean": 45234.28 512 | }, 513 | "2018": { 514 | "median": 41600.0, 515 | "mean": 45486.48 516 | }, 517 | "2019": { 518 | "median": 44699.2, 519 | "mean": 47672.56 520 | }, 521 | "2020": { 522 | "median": 48006.4, 523 | "mean": 50760.32 524 | }, 525 | "2021": { 526 | "median": 48505.6, 527 | "mean": 51118.08 528 | } 529 | }, 530 | "Service supervisors and specialized service occupations": { 531 | "2017": { 532 | "median": 27456.0, 533 | "mean": 30091.88 534 | }, 535 | "2018": { 536 | "median": 29575.0, 537 | "mean": 31751.2 538 | }, 539 | "2019": { 540 | "median": 31200.0, 541 | "mean": 33021.04 542 | }, 543 | "2020": { 544 | "median": 31824.0, 545 | "mean": 34497.32 546 | }, 547 | "2021": { 548 | "median": 33275.84, 549 | "mean": 35424.48 550 | } 551 | }, 552 | "Sales representatives and salespersons - wholesale and retail trade": { 553 | "2017": { 554 | "median": 24960.0, 555 | "mean": 30765.8 556 | }, 557 | "2018": { 558 | "median": 26520.0, 559 | "mean": 31687.76 560 | }, 561 | "2019": { 562 | "median": 29120.0, 563 | "mean": 33404.28 564 | }, 565 | "2020": { 566 | "median": 30001.92, 567 | "mean": 35050.6 568 | }, 569 | "2021": { 570 | "median": 30420.0, 571 | "mean": 35208.68 572 | } 573 | }, 574 | "Service representatives and other customer and personal services occupations": { 575 | "2017": { 576 | "median": 25958.4, 577 | "mean": 27801.8 578 | }, 579 | "2018": { 580 | "median": 28210.0, 581 | "mean": 29347.76 582 | }, 583 | "2019": { 584 | "median": 29120.0, 585 | "mean": 30199.0 586 | }, 587 | "2020": { 588 | "median": 31200.0, 589 | "mean": 32598.8 590 | }, 591 | "2021": { 592 | "median": 31850.0, 593 | "mean": 32786.0 594 | } 595 | }, 596 | "Sales support occupations": { 597 | "2017": { 598 | "median": 15080.0, 599 | "mean": 17734.08 600 | }, 601 | "2018": { 602 | "median": 17160.0, 603 | "mean": 19435.0 604 | }, 605 | "2019": { 606 | "median": 17284.8, 607 | "mean": 19510.92 608 | }, 609 | "2020": { 610 | "median": 18590.0, 611 | "mean": 20538.96 612 | }, 613 | "2021": { 614 | "median": 17680.0, 615 | "mean": 20288.32 616 | } 617 | }, 618 | "Service support and other service occupations, n.e.c.": { 619 | "2017": { 620 | "median": 21840.0, 621 | "mean": 23091.12 622 | }, 623 | "2018": { 624 | "median": 23400.0, 625 | "mean": 24569.48 626 | }, 627 | "2019": { 628 | "median": 23868.0, 629 | "mean": 25105.6 630 | }, 631 | "2020": { 632 | "median": 24960.0, 633 | "mean": 26447.2 634 | }, 635 | "2021": { 636 | "median": 25209.6, 637 | "mean": 26542.88 638 | } 639 | }, 640 | "Industrial, electrical and construction trades": { 641 | "2017": { 642 | "median": 58364.8, 643 | "mean": 61224.8 644 | }, 645 | "2018": { 646 | "median": 60320.0, 647 | "mean": 61981.4 648 | }, 649 | "2019": { 650 | "median": 62400.0, 651 | "mean": 64124.32 652 | }, 653 | "2020": { 654 | "median": 63700.0, 655 | "mean": 66100.32 656 | }, 657 | "2021": { 658 | "median": 65000.0, 659 | "mean": 67051.4 660 | } 661 | }, 662 | "Maintenance and equipment operation trades": { 663 | "2017": { 664 | "median": 58240.0, 665 | "mean": 61829.04 666 | }, 667 | "2018": { 668 | "median": 60060.0, 669 | "mean": 63774.88 670 | }, 671 | "2019": { 672 | "median": 62400.0, 673 | "mean": 65687.44 674 | }, 675 | "2020": { 676 | "median": 64480.0, 677 | "mean": 68363.88 678 | }, 679 | "2021": { 680 | "median": 66560.0, 681 | "mean": 69870.32 682 | } 683 | }, 684 | "Other installers, repairers and servicers and material handlers": { 685 | "2017": { 686 | "median": 37440.0, 687 | "mean": 40355.12 688 | }, 689 | "2018": { 690 | "median": 37440.0, 691 | "mean": 41106.0 692 | }, 693 | "2019": { 694 | "median": 37440.0, 695 | "mean": 41028.0 696 | }, 697 | "2020": { 698 | "median": 40040.0, 699 | "mean": 42294.2 700 | }, 701 | "2021": { 702 | "median": 41184.0, 703 | "mean": 43626.44 704 | } 705 | }, 706 | "Transport and heavy equipment operation and related maintenance occupations": { 707 | "2017": { 708 | "median": 48193.6, 709 | "mean": 49112.96 710 | }, 711 | "2018": { 712 | "median": 49420.8, 713 | "mean": 50209.64 714 | }, 715 | "2019": { 716 | "median": 49608.0, 717 | "mean": 50276.72 718 | }, 719 | "2020": { 720 | "median": 52000.0, 721 | "mean": 52320.84 722 | }, 723 | "2021": { 724 | "median": 52000.0, 725 | "mean": 53507.48 726 | } 727 | }, 728 | "Trades helpers, construction labourers and related occupations": { 729 | "2017": { 730 | "median": 41600.0, 731 | "mean": 44752.24 732 | }, 733 | "2018": { 734 | "median": 43680.0, 735 | "mean": 46444.32 736 | }, 737 | "2019": { 738 | "median": 45760.0, 739 | "mean": 47949.72 740 | }, 741 | "2020": { 742 | "median": 45760.0, 743 | "mean": 48444.76 744 | }, 745 | "2021": { 746 | "median": 46820.8, 747 | "mean": 48881.56 748 | } 749 | }, 750 | "Supervisors and technical occupations in natural resources, agriculture and related production": { 751 | "2017": { 752 | "median": 70720.0, 753 | "mean": 79363.96 754 | }, 755 | "2018": { 756 | "median": 73185.84, 757 | "mean": 81558.88 758 | }, 759 | "2019": { 760 | "median": 74256.0, 761 | "mean": 81448.12 762 | }, 763 | "2020": { 764 | "median": 74360.0, 765 | "mean": 83468.32 766 | }, 767 | "2021": { 768 | "median": 79919.84, 769 | "mean": 86590.4 770 | } 771 | }, 772 | "Workers in natural resources, agriculture and related production": { 773 | "2017": { 774 | "median": 35360.0, 775 | "mean": 39858.52 776 | }, 777 | "2018": { 778 | "median": 38480.0, 779 | "mean": 43062.24 780 | }, 781 | "2019": { 782 | "median": 36400.0, 783 | "mean": 41064.4 784 | }, 785 | "2020": { 786 | "median": 37336.0, 787 | "mean": 41545.92 788 | }, 789 | "2021": { 790 | "median": 39520.0, 791 | "mean": 43010.76 792 | } 793 | }, 794 | "Harvesting, landscaping and natural resources labourers": { 795 | "2017": { 796 | "median": 33280.0, 797 | "mean": 37636.04 798 | }, 799 | "2018": { 800 | "median": 35360.0, 801 | "mean": 39181.48 802 | }, 803 | "2019": { 804 | "median": 36400.0, 805 | "mean": 39200.72 806 | }, 807 | "2020": { 808 | "median": 37440.0, 809 | "mean": 39897.52 810 | }, 811 | "2021": { 812 | "median": 37440.0, 813 | "mean": 41291.64 814 | } 815 | }, 816 | "Processing, manufacturing and utilities supervisors and central control operators": { 817 | "2017": { 818 | "median": 60008.0, 819 | "mean": 65282.36 820 | }, 821 | "2018": { 822 | "median": 62400.0, 823 | "mean": 67546.96 824 | }, 825 | "2019": { 826 | "median": 67450.76, 827 | "mean": 71972.16 828 | }, 829 | "2020": { 830 | "median": 66996.8, 831 | "mean": 72626.32 832 | }, 833 | "2021": { 834 | "median": 68224.0, 835 | "mean": 74698.0 836 | } 837 | }, 838 | "Processing and manufacturing machine operators and related production workers": { 839 | "2017": { 840 | "median": 39312.0, 841 | "mean": 41533.96 842 | }, 843 | "2018": { 844 | "median": 40040.0, 845 | "mean": 42888.56 846 | }, 847 | "2019": { 848 | "median": 41600.0, 849 | "mean": 44490.16 850 | }, 851 | "2020": { 852 | "median": 43680.0, 853 | "mean": 46054.84 854 | }, 855 | "2021": { 856 | "median": 43180.8, 857 | "mean": 45950.84 858 | } 859 | }, 860 | "Assemblers in manufacturing": { 861 | "2017": { 862 | "median": 39000.0, 863 | "mean": 42312.4 864 | }, 865 | "2018": { 866 | "median": 40456.0, 867 | "mean": 43637.36 868 | }, 869 | "2019": { 870 | "median": 41600.0, 871 | "mean": 45912.36 872 | }, 873 | "2020": { 874 | "median": 43680.0, 875 | "mean": 46832.24 876 | }, 877 | "2021": { 878 | "median": 43680.0, 879 | "mean": 47022.56 880 | } 881 | }, 882 | "Labourers in processing, manufacturing and utilities": { 883 | "2017": { 884 | "median": 32240.0, 885 | "mean": 34947.64 886 | }, 887 | "2018": { 888 | "median": 33280.0, 889 | "mean": 36297.04 890 | }, 891 | "2019": { 892 | "median": 35360.0, 893 | "mean": 36971.48 894 | }, 895 | "2020": { 896 | "median": 36296.0, 897 | "mean": 38278.24 898 | }, 899 | "2021": { 900 | "median": 37440.0, 901 | "mean": 39201.24 902 | } 903 | } 904 | } -------------------------------------------------------------------------------- /Data Processing/processed data/CAN_2017-2021.json: -------------------------------------------------------------------------------- 1 | { 2 | "Total employees, all occupations": { 3 | "2017": { 4 | "median": 43680.0, 5 | "mean": 49552.88 6 | }, 7 | "2018": { 8 | "median": 44990.4, 9 | "mean": 50976.12 10 | }, 11 | "2019": { 12 | "median": 46800.0, 13 | "mean": 52638.56 14 | }, 15 | "2020": { 16 | "median": 50003.2, 17 | "mean": 56211.48 18 | }, 19 | "2021": { 20 | "median": 50965.2, 21 | "mean": 57146.44 22 | } 23 | }, 24 | "Senior management occupations": { 25 | "2017": { 26 | "median": 98124.0, 27 | "mean": 102436.88 28 | }, 29 | "2018": { 30 | "median": 109990.4, 31 | "mean": 114143.64 32 | }, 33 | "2019": { 34 | "median": 109999.76, 35 | "mean": 113661.08 36 | }, 37 | "2020": { 38 | "median": 119995.2, 39 | "mean": 122080.92 40 | }, 41 | "2021": { 42 | "median": 115632.4, 43 | "mean": 120293.68 44 | } 45 | }, 46 | "Specialized middle management occupations": { 47 | "2017": { 48 | "median": 90001.6, 49 | "mean": 92190.8 50 | }, 51 | "2018": { 52 | "median": 91001.04, 53 | "mean": 94135.6 54 | }, 55 | "2019": { 56 | "median": 95998.76, 57 | "mean": 97319.56 58 | }, 59 | "2020": { 60 | "median": 100006.4, 61 | "mean": 100984.52 62 | }, 63 | "2021": { 64 | "median": 103001.6, 65 | "mean": 105947.92 66 | } 67 | }, 68 | "Middle management occupations in retail and wholesale trade and customer services": { 69 | "2017": { 70 | "median": 64993.76, 71 | "mean": 71738.68 72 | }, 73 | "2018": { 74 | "median": 66007.76, 75 | "mean": 74766.64 76 | }, 77 | "2019": { 78 | "median": 62400.0, 79 | "mean": 73911.76 80 | }, 81 | "2020": { 82 | "median": 68640.0, 83 | "mean": 76998.48 84 | }, 85 | "2021": { 86 | "median": 70200.0, 87 | "mean": 81761.68 88 | } 89 | }, 90 | "Middle management occupations in trades, transportation, production and utilities": { 91 | "2017": { 92 | "median": 82742.4, 93 | "mean": 87765.6 94 | }, 95 | "2018": { 96 | "median": 82659.2, 97 | "mean": 74766.64 98 | }, 99 | "2019": { 100 | "median": 89996.4, 101 | "mean": 93992.6 102 | }, 103 | "2020": { 104 | "median": 87360.0, 105 | "mean": 93813.72 106 | }, 107 | "2021": { 108 | "median": 91000.0, 109 | "mean": 97444.88 110 | } 111 | }, 112 | "Professional occupations in business and finance": { 113 | "2017": { 114 | "median": 63980.8, 115 | "mean": 69033.12 116 | }, 117 | "2018": { 118 | "median": 65000.0, 119 | "mean": 71068.92 120 | }, 121 | "2019": { 122 | "median": 67509.0, 123 | "mean": 73191.56 124 | }, 125 | "2020": { 126 | "median": 69992.0, 127 | "mean": 75527.4 128 | }, 129 | "2021": { 130 | "median": 71994.0, 131 | "mean": 76745.76 132 | } 133 | }, 134 | "Administrative and financial supervisors and administrative occupations": { 135 | "2017": { 136 | "median": 45630.0, 137 | "mean": 47188.96 138 | }, 139 | "2018": { 140 | "median": 46800.0, 141 | "mean": 49065.64 142 | }, 143 | "2019": { 144 | "median": 48888.84, 145 | "mean": 51255.36 146 | }, 147 | "2020": { 148 | "median": 50003.2, 149 | "mean": 52868.92 150 | }, 151 | "2021": { 152 | "median": 52000.0, 153 | "mean": 54384.72 154 | } 155 | }, 156 | "Finance, insurance and related business administrative occupations": { 157 | "2017": { 158 | "median": 44428.8, 159 | "mean": 45461.0 160 | }, 161 | "2018": { 162 | "median": 44990.4, 163 | "mean": 46446.92 164 | }, 165 | "2019": { 166 | "median": 46800.0, 167 | "mean": 48912.76 168 | }, 169 | "2020": { 170 | "median": 50003.2, 171 | "mean": 52865.8 172 | }, 173 | "2021": { 174 | "median": 51405.12, 175 | "mean": 52945.36 176 | } 177 | }, 178 | "Office support occupations": { 179 | "2017": { 180 | "median": 36400.0, 181 | "mean": 36553.4 182 | }, 183 | "2018": { 184 | "median": 38220.0, 185 | "mean": 38205.44 186 | }, 187 | "2019": { 188 | "median": 38857.0, 189 | "mean": 38699.44 190 | }, 191 | "2020": { 192 | "median": 39998.4, 193 | "mean": 40743.56 194 | }, 195 | "2021": { 196 | "median": 41184.0, 197 | "mean": 40881.88 198 | } 199 | }, 200 | "Distribution, tracking and scheduling co-ordination occupations": { 201 | "2017": { 202 | "median": 39998.4, 203 | "mean": 41926.04 204 | }, 205 | "2018": { 206 | "median": 39998.4, 207 | "mean": 41784.6 208 | }, 209 | "2019": { 210 | "median": 41600.0, 211 | "mean": 42584.88 212 | }, 213 | "2020": { 214 | "median": 43680.0, 215 | "mean": 45141.72 216 | }, 217 | "2021": { 218 | "median": 45240.0, 219 | "mean": 45847.88 220 | } 221 | }, 222 | "Professional occupations in natural and applied sciences": { 223 | "2017": { 224 | "median": 75004.8, 225 | "mean": 78227.24 226 | }, 227 | "2018": { 228 | "median": 77001.6, 229 | "mean": 80440.36 230 | }, 231 | "2019": { 232 | "median": 79996.8, 233 | "mean": 82631.64 234 | }, 235 | "2020": { 236 | "median": 82992.0, 237 | "mean": 86003.32 238 | }, 239 | "2021": { 240 | "median": 84065.8, 241 | "mean": 87613.24 242 | } 243 | }, 244 | "Technical occupations related to natural and applied sciences": { 245 | "2017": { 246 | "median": 58968.0, 247 | "mean": 62276.24 248 | }, 249 | "2018": { 250 | "median": 59280.0, 251 | "mean": 63737.44 252 | }, 253 | "2019": { 254 | "median": 60442.2, 255 | "mean": 64697.88 256 | }, 257 | "2020": { 258 | "median": 62400.0, 259 | "mean": 66688.96 260 | }, 261 | "2021": { 262 | "median": 62010.0, 263 | "mean": 66033.76 264 | } 265 | }, 266 | "Professional occupations in nursing": { 267 | "2017": { 268 | "median": 65520.0, 269 | "mean": 64362.48 270 | }, 271 | "2018": { 272 | "median": 65520.0, 273 | "mean": 64693.2 274 | }, 275 | "2019": { 276 | "median": 69225.0, 277 | "mean": 67747.16 278 | }, 279 | "2020": { 280 | "median": 72800.0, 281 | "mean": 70780.32 282 | }, 283 | "2021": { 284 | "median": 72930.0, 285 | "mean": 71323.72 286 | } 287 | }, 288 | "Professional occupations in health (except nursing)": { 289 | "2017": { 290 | "median": 69888.0, 291 | "mean": 71244.68 292 | }, 293 | "2018": { 294 | "median": 68211.0, 295 | "mean": 71557.72 296 | }, 297 | "2019": { 298 | "median": 74360.0, 299 | "mean": 76058.84 300 | }, 301 | "2020": { 302 | "median": 76544.0, 303 | "mean": 79239.68 304 | }, 305 | "2021": { 306 | "median": 74997.0, 307 | "mean": 76375.52 308 | } 309 | }, 310 | "Technical occupations in health": { 311 | "2017": { 312 | "median": 45991.4, 313 | "mean": 48336.08 314 | }, 315 | "2018": { 316 | "median": 46883.2, 317 | "mean": 49157.16 318 | }, 319 | "2019": { 320 | "median": 48360.0, 321 | "mean": 50113.44 322 | }, 323 | "2020": { 324 | "median": 51001.6, 325 | "mean": 52697.84 326 | }, 327 | "2021": { 328 | "median": 50960.0, 329 | "mean": 52968.24 330 | } 331 | }, 332 | "Assisting occupations in support of health services": { 333 | "2017": { 334 | "median": 35360.0, 335 | "mean": 36004.28 336 | }, 337 | "2018": { 338 | "median": 37004.24, 339 | "mean": 37351.6 340 | }, 341 | "2019": { 342 | "median": 36400.0, 343 | "mean": 36058.36 344 | }, 345 | "2020": { 346 | "median": 37518.0, 347 | "mean": 36976.16 348 | }, 349 | "2021": { 350 | "median": 39000.0, 351 | "mean": 37817.52 352 | } 353 | }, 354 | "Professional occupations in education services": { 355 | "2017": { 356 | "median": 64993.76, 357 | "mean": 63853.4 358 | }, 359 | "2018": { 360 | "median": 67787.2, 361 | "mean": 64988.04 362 | }, 363 | "2019": { 364 | "median": 68998.8, 365 | "mean": 66363.44 366 | }, 367 | "2020": { 368 | "median": 74006.4, 369 | "mean": 69714.32 370 | }, 371 | "2021": { 372 | "median": 72800.0, 373 | "mean": 69444.44 374 | } 375 | }, 376 | "Professional occupations in law and social, community and government services": { 377 | "2017": { 378 | "median": 65000.52, 379 | "mean": 69109.04 380 | }, 381 | "2018": { 382 | "median": 66273.48, 383 | "mean": 70814.64 384 | }, 385 | "2019": { 386 | "median": 67005.12, 387 | "mean": 71726.72 388 | }, 389 | "2020": { 390 | "median": 70720.0, 391 | "mean": 75638.68 392 | }, 393 | "2021": { 394 | "median": 72579.0, 395 | "mean": 76635.0 396 | } 397 | }, 398 | "Paraprofessional occupations in legal, social, community and education services": { 399 | "2017": { 400 | "median": 35006.4, 401 | "mean": 37162.32 402 | }, 403 | "2018": { 404 | "median": 35880.0, 405 | "mean": 37937.64 406 | }, 407 | "2019": { 408 | "median": 38220.0, 409 | "mean": 38612.6 410 | }, 411 | "2020": { 412 | "median": 39520.0, 413 | "mean": 40591.72 414 | }, 415 | "2021": { 416 | "median": 40436.76, 417 | "mean": 41498.08 418 | } 419 | }, 420 | "Occupations in front-line public protection services": { 421 | "2017": { 422 | "median": 88157.16, 423 | "mean": 85597.2 424 | }, 425 | "2018": { 426 | "median": 90002.64, 427 | "mean": 87122.36 428 | }, 429 | "2019": { 430 | "median": 93600.0, 431 | "mean": 90944.36 432 | }, 433 | "2020": { 434 | "median": 97996.08, 435 | "mean": 95169.88 436 | }, 437 | "2021": { 438 | "median": 98009.6, 439 | "mean": 93802.8 440 | } 441 | }, 442 | "Care providers and educational, legal and public protection support occupations": { 443 | "2017": { 444 | "median": 31486.0, 445 | "mean": 34808.28 446 | }, 447 | "2018": { 448 | "median": 33800.0, 449 | "mean": 36442.12 450 | }, 451 | "2019": { 452 | "median": 34070.4, 453 | "mean": 36666.24 454 | }, 455 | "2020": { 456 | "median": 36660.0, 457 | "mean": 38126.4 458 | }, 459 | "2021": { 460 | "median": 38025.0, 461 | "mean": 39188.24 462 | } 463 | }, 464 | "Professional occupations in art and culture": { 465 | "2017": { 466 | "median": 51997.4, 467 | "mean": 51700.48 468 | }, 469 | "2018": { 470 | "median": 44752.76, 471 | "mean": 46116.2 472 | }, 473 | "2019": { 474 | "median": 48750.0, 475 | "mean": 48260.68 476 | }, 477 | "2020": { 478 | "median": 56420.0, 479 | "mean": 56593.16 480 | }, 481 | "2021": { 482 | "median": 60001.76, 483 | "mean": 59008.56 484 | } 485 | }, 486 | "Technical occupations in art, culture, recreation and sport": { 487 | "2017": { 488 | "median": 30940.0, 489 | "mean": 33979.4 490 | }, 491 | "2018": { 492 | "median": 31200.0, 493 | "mean": 35453.6 494 | }, 495 | "2019": { 496 | "median": 35006.4, 497 | "mean": 38342.72 498 | }, 499 | "2020": { 500 | "median": 39994.76, 501 | "mean": 41851.16 502 | }, 503 | "2021": { 504 | "median": 43472.0, 505 | "mean": 46961.72 506 | } 507 | }, 508 | "Retail sales supervisors and specialized sales occupations": { 509 | "2017": { 510 | "median": 40996.8, 511 | "mean": 45234.28 512 | }, 513 | "2018": { 514 | "median": 41600.0, 515 | "mean": 45486.48 516 | }, 517 | "2019": { 518 | "median": 44699.2, 519 | "mean": 47672.56 520 | }, 521 | "2020": { 522 | "median": 48006.4, 523 | "mean": 50760.32 524 | }, 525 | "2021": { 526 | "median": 48505.6, 527 | "mean": 51118.08 528 | } 529 | }, 530 | "Service supervisors and specialized service occupations": { 531 | "2017": { 532 | "median": 27456.0, 533 | "mean": 30091.88 534 | }, 535 | "2018": { 536 | "median": 29575.0, 537 | "mean": 31751.2 538 | }, 539 | "2019": { 540 | "median": 31200.0, 541 | "mean": 33021.04 542 | }, 543 | "2020": { 544 | "median": 31824.0, 545 | "mean": 34497.32 546 | }, 547 | "2021": { 548 | "median": 33275.84, 549 | "mean": 35424.48 550 | } 551 | }, 552 | "Sales representatives and salespersons - wholesale and retail trade": { 553 | "2017": { 554 | "median": 24960.0, 555 | "mean": 30765.8 556 | }, 557 | "2018": { 558 | "median": 26520.0, 559 | "mean": 31687.76 560 | }, 561 | "2019": { 562 | "median": 29120.0, 563 | "mean": 33404.28 564 | }, 565 | "2020": { 566 | "median": 30001.92, 567 | "mean": 35050.6 568 | }, 569 | "2021": { 570 | "median": 30420.0, 571 | "mean": 35208.68 572 | } 573 | }, 574 | "Service representatives and other customer and personal services occupations": { 575 | "2017": { 576 | "median": 25958.4, 577 | "mean": 27801.8 578 | }, 579 | "2018": { 580 | "median": 28210.0, 581 | "mean": 29347.76 582 | }, 583 | "2019": { 584 | "median": 29120.0, 585 | "mean": 30199.0 586 | }, 587 | "2020": { 588 | "median": 31200.0, 589 | "mean": 32598.8 590 | }, 591 | "2021": { 592 | "median": 31850.0, 593 | "mean": 32786.0 594 | } 595 | }, 596 | "Sales support occupations": { 597 | "2017": { 598 | "median": 15080.0, 599 | "mean": 17734.08 600 | }, 601 | "2018": { 602 | "median": 17160.0, 603 | "mean": 19435.0 604 | }, 605 | "2019": { 606 | "median": 17284.8, 607 | "mean": 19510.92 608 | }, 609 | "2020": { 610 | "median": 18590.0, 611 | "mean": 20538.96 612 | }, 613 | "2021": { 614 | "median": 17680.0, 615 | "mean": 20288.32 616 | } 617 | }, 618 | "Service support and other service occupations, n.e.c.": { 619 | "2017": { 620 | "median": 21840.0, 621 | "mean": 23091.12 622 | }, 623 | "2018": { 624 | "median": 23400.0, 625 | "mean": 24569.48 626 | }, 627 | "2019": { 628 | "median": 23868.0, 629 | "mean": 25105.6 630 | }, 631 | "2020": { 632 | "median": 24960.0, 633 | "mean": 26447.2 634 | }, 635 | "2021": { 636 | "median": 25209.6, 637 | "mean": 26542.88 638 | } 639 | }, 640 | "Industrial, electrical and construction trades": { 641 | "2017": { 642 | "median": 58364.8, 643 | "mean": 61224.8 644 | }, 645 | "2018": { 646 | "median": 60320.0, 647 | "mean": 61981.4 648 | }, 649 | "2019": { 650 | "median": 62400.0, 651 | "mean": 64124.32 652 | }, 653 | "2020": { 654 | "median": 63700.0, 655 | "mean": 66100.32 656 | }, 657 | "2021": { 658 | "median": 65000.0, 659 | "mean": 67051.4 660 | } 661 | }, 662 | "Maintenance and equipment operation trades": { 663 | "2017": { 664 | "median": 58240.0, 665 | "mean": 61829.04 666 | }, 667 | "2018": { 668 | "median": 60060.0, 669 | "mean": 63774.88 670 | }, 671 | "2019": { 672 | "median": 62400.0, 673 | "mean": 65687.44 674 | }, 675 | "2020": { 676 | "median": 64480.0, 677 | "mean": 68363.88 678 | }, 679 | "2021": { 680 | "median": 66560.0, 681 | "mean": 69870.32 682 | } 683 | }, 684 | "Other installers, repairers and servicers and material handlers": { 685 | "2017": { 686 | "median": 37440.0, 687 | "mean": 40355.12 688 | }, 689 | "2018": { 690 | "median": 37440.0, 691 | "mean": 41106.0 692 | }, 693 | "2019": { 694 | "median": 37440.0, 695 | "mean": 41028.0 696 | }, 697 | "2020": { 698 | "median": 40040.0, 699 | "mean": 42294.2 700 | }, 701 | "2021": { 702 | "median": 41184.0, 703 | "mean": 43626.44 704 | } 705 | }, 706 | "Transport and heavy equipment operation and related maintenance occupations": { 707 | "2017": { 708 | "median": 48193.6, 709 | "mean": 49112.96 710 | }, 711 | "2018": { 712 | "median": 49420.8, 713 | "mean": 50209.64 714 | }, 715 | "2019": { 716 | "median": 49608.0, 717 | "mean": 50276.72 718 | }, 719 | "2020": { 720 | "median": 52000.0, 721 | "mean": 52320.84 722 | }, 723 | "2021": { 724 | "median": 52000.0, 725 | "mean": 53507.48 726 | } 727 | }, 728 | "Trades helpers, construction labourers and related occupations": { 729 | "2017": { 730 | "median": 41600.0, 731 | "mean": 44752.24 732 | }, 733 | "2018": { 734 | "median": 43680.0, 735 | "mean": 46444.32 736 | }, 737 | "2019": { 738 | "median": 45760.0, 739 | "mean": 47949.72 740 | }, 741 | "2020": { 742 | "median": 45760.0, 743 | "mean": 48444.76 744 | }, 745 | "2021": { 746 | "median": 46820.8, 747 | "mean": 48881.56 748 | } 749 | }, 750 | "Supervisors and technical occupations in natural resources, agriculture and related production": { 751 | "2017": { 752 | "median": 70720.0, 753 | "mean": 79363.96 754 | }, 755 | "2018": { 756 | "median": 73185.84, 757 | "mean": 81558.88 758 | }, 759 | "2019": { 760 | "median": 74256.0, 761 | "mean": 81448.12 762 | }, 763 | "2020": { 764 | "median": 74360.0, 765 | "mean": 83468.32 766 | }, 767 | "2021": { 768 | "median": 79919.84, 769 | "mean": 86590.4 770 | } 771 | }, 772 | "Workers in natural resources, agriculture and related production": { 773 | "2017": { 774 | "median": 35360.0, 775 | "mean": 39858.52 776 | }, 777 | "2018": { 778 | "median": 38480.0, 779 | "mean": 43062.24 780 | }, 781 | "2019": { 782 | "median": 36400.0, 783 | "mean": 41064.4 784 | }, 785 | "2020": { 786 | "median": 37336.0, 787 | "mean": 41545.92 788 | }, 789 | "2021": { 790 | "median": 39520.0, 791 | "mean": 43010.76 792 | } 793 | }, 794 | "Harvesting, landscaping and natural resources labourers": { 795 | "2017": { 796 | "median": 33280.0, 797 | "mean": 37636.04 798 | }, 799 | "2018": { 800 | "median": 35360.0, 801 | "mean": 39181.48 802 | }, 803 | "2019": { 804 | "median": 36400.0, 805 | "mean": 39200.72 806 | }, 807 | "2020": { 808 | "median": 37440.0, 809 | "mean": 39897.52 810 | }, 811 | "2021": { 812 | "median": 37440.0, 813 | "mean": 41291.64 814 | } 815 | }, 816 | "Processing, manufacturing and utilities supervisors and central control operators": { 817 | "2017": { 818 | "median": 60008.0, 819 | "mean": 65282.36 820 | }, 821 | "2018": { 822 | "median": 62400.0, 823 | "mean": 67546.96 824 | }, 825 | "2019": { 826 | "median": 67450.76, 827 | "mean": 71972.16 828 | }, 829 | "2020": { 830 | "median": 66996.8, 831 | "mean": 72626.32 832 | }, 833 | "2021": { 834 | "median": 68224.0, 835 | "mean": 74698.0 836 | } 837 | }, 838 | "Processing and manufacturing machine operators and related production workers": { 839 | "2017": { 840 | "median": 39312.0, 841 | "mean": 41533.96 842 | }, 843 | "2018": { 844 | "median": 40040.0, 845 | "mean": 42888.56 846 | }, 847 | "2019": { 848 | "median": 41600.0, 849 | "mean": 44490.16 850 | }, 851 | "2020": { 852 | "median": 43680.0, 853 | "mean": 46054.84 854 | }, 855 | "2021": { 856 | "median": 43180.8, 857 | "mean": 45950.84 858 | } 859 | }, 860 | "Assemblers in manufacturing": { 861 | "2017": { 862 | "median": 39000.0, 863 | "mean": 42312.4 864 | }, 865 | "2018": { 866 | "median": 40456.0, 867 | "mean": 43637.36 868 | }, 869 | "2019": { 870 | "median": 41600.0, 871 | "mean": 45912.36 872 | }, 873 | "2020": { 874 | "median": 43680.0, 875 | "mean": 46832.24 876 | }, 877 | "2021": { 878 | "median": 43680.0, 879 | "mean": 47022.56 880 | } 881 | }, 882 | "Labourers in processing, manufacturing and utilities": { 883 | "2017": { 884 | "median": 32240.0, 885 | "mean": 34947.64 886 | }, 887 | "2018": { 888 | "median": 33280.0, 889 | "mean": 36297.04 890 | }, 891 | "2019": { 892 | "median": 35360.0, 893 | "mean": 36971.48 894 | }, 895 | "2020": { 896 | "median": 36296.0, 897 | "mean": 38278.24 898 | }, 899 | "2021": { 900 | "median": 37440.0, 901 | "mean": 39201.24 902 | } 903 | } 904 | } -------------------------------------------------------------------------------- /Data Processing/raw data/UK 2021.csv: -------------------------------------------------------------------------------- 1 | Description,Code,Median,Mean 2 | All employees,,25971,31447 3 | "Managers, directors and senior officials",1,43763,59286 4 | Corporate managers and directors,11,46496,62040 5 | Chief executives and senior officials,111,83944,127598 6 | Chief executives and senior officials,1115,90242,137745 7 | Elected officers and representatives,1116,x,x 8 | Production managers and directors,112,45000,55715 9 | Production managers and directors in manufacturing,1121,45250,57170 10 | Production managers and directors in construction,1122,44169,50155 11 | Production managers and directors in mining and energy,1123,45162,58556 12 | Functional managers and directors,113,63074,76085 13 | Financial managers and directors,1131,72131,83521 14 | Marketing and sales directors,1132,73853,82723 15 | Purchasing managers and directors,1133,48269,52492 16 | Advertising and public relations directors,1134,x,x 17 | Human resource managers and directors,1135,48844,56134 18 | Information technology and telecommunications directors,1136,x,63735 19 | Functional managers and directors n.e.c.,1139,60241,62670 20 | Financial institution managers and directors,115,x,74997 21 | Financial institution managers and directors,1150,x,74997 22 | Managers and directors in transport and logistics,116,33423,37685 23 | Managers and directors in transport and distribution,1161,39156,42817 24 | Managers and directors in storage and warehousing,1162,31584,34405 25 | Senior officers in protective services,117,56599,57540 26 | Officers in armed forces,1171,, 27 | Senior police officers,1172,58993,63005 28 | " Senior officers in fire, ambulance, prison and related services",1173,45447,46831 29 | Health and social services managers and directors,118,48614,54452 30 | Health services and public health managers and directors,1181,55751,59375 31 | Social services managers and directors,1184,x,38035 32 | Managers and directors in retail and wholesale,119,30527,36920 33 | Managers and directors in retail and wholesale,1190,30527,36920 34 | Other managers and proprietors,12,31804,41677 35 | Managers and proprietors in agriculture related services,121,32238,33841 36 | Managers and proprietors in agriculture and horticulture,1211,33090,34992 37 | " Managers and proprietors in forestry, fishing and related services",1213,26943,29994 38 | Managers and proprietors in hospitality and leisure services,122,27301,31966 39 | Hotel and accommodation managers and proprietors,1221,24941,35139 40 | Restaurant and catering establishment managers and proprietors,1223,23348,24387 41 | Publicans and managers of licensed premises,1224,26301,29725 42 | Leisure and sports managers,1225,32223,40404 43 | Travel agency managers and proprietors,1226,, 44 | Managers and proprietors in health and care services,124,35784,35666 45 | Health care practice managers,1241,x,38430 46 | " Residential, day and domiciliary care managers and proprietors",1242,33461,34993 47 | Managers and proprietors in other services,125,35565,47287 48 | " Property, housing and estate managers",1251,38380,49537 49 | Garage managers and proprietors,1252,33071,x 50 | Hairdressing and beauty salon managers and proprietors,1253,24000,24137 51 | Shopkeepers and proprietors – wholesale and retail,1254,x,x 52 | Waste disposal and environmental services managers,1255,45597,x 53 | Managers and proprietors in other services n.e.c.,1259,30517,37716 54 | Professional occupations,2,42529,47443 55 | " Science, research, engineering and technology professionals",21,43461,47781 56 | Natural and social science professionals,211,38318,44332 57 | Chemical scientists,2111,x,x 58 | Biological scientists and biochemists,2112,39128,45472 59 | Physical scientists,2113,40012,40473 60 | Social and humanities scientists,2114,31987,33710 61 | Natural and social science professionals n.e.c.,2119,38353,40976 62 | Engineering professionals,212,42655,44801 63 | Civil engineers,2121,42260,47514 64 | Mechanical engineers,2122,40413,44059 65 | Electrical engineers,2123,51079,53709 66 | Electronics engineers,2124,48338,48178 67 | Design and development engineers,2126,40734,43168 68 | Production and process engineers,2127,39932,41317 69 | Engineering professionals n.e.c.,2129,43250,44230 70 | Information technology and telecommunications professionals,213,45000,49887 71 | IT specialist managers,2133,48940,55380 72 | IT project and programme managers,2134,48446,61364 73 | " IT business analysts, architects and systems designers",2135,49957,54124 74 | Programmers and software development professionals,2136,43423,47722 75 | Web design and development professionals,2137,32483,31996 76 | Information technology and telecommunications professionals n.e.c.,2139,41423,45852 77 | Conservation and environment professionals,214,33133,37238 78 | Conservation professionals,2141,32055,32980 79 | Environment professionals,2142,36918,39809 80 | Research and development managers ,215,49439,54715 81 | Research and development managers,2150,49439,54715 82 | Health professionals,22,41064,48330 83 | Health professionals,221,50424,61471 84 | Medical practitioners,2211,64078,73608 85 | Psychologists,2212,40989,46213 86 | Pharmacists,2213,45904,44763 87 | Ophthalmic opticians,2214,x,33382 88 | Dental practitioners,2215,x,x 89 | Veterinarians,2216,36090,36145 90 | Medical radiographers,2217,41554,40506 91 | Podiatrists,2218,x,x 92 | Health professionals n.e.c.,2219,37957,37408 93 | Therapy professionals,222,33519,35311 94 | Physiotherapists,2221,33393,36139 95 | Occupational therapists,2222,35478,35749 96 | Speech and language therapists,2223,, 97 | Therapy professionals n.e.c.,2229,32014,31803 98 | Nursing and midwifery professionals,223,35267,35148 99 | Nurses,2231,35753,35953 100 | Midwives,2232,x,x 101 | Teaching and educational professionals,23,41140,42080 102 | Teaching and educational professionals,231,41140,42080 103 | Higher education teaching professionals,2311,49553,52221 104 | Further education teaching professionals,2312,35053,33647 105 | Secondary education teaching professionals,2314,41978,41704 106 | Primary and nursery education teaching professionals,2315,37779,37343 107 | Special needs education teaching professionals,2316,x,28446 108 | Senior professionals of educational establishments,2317,63738,67261 109 | Education advisers and school inspectors,2318,x,39248 110 | Teaching and other educational professionals n.e.c.,2319,x,24234 111 | " Business, media and public service professionals",24,43026,50423 112 | Legal professionals,241,52346,73234 113 | Barristers and judges,2412,37786,36122 114 | Solicitors,2413,44934,58629 115 | Legal professionals n.e.c.,2419,77386,99760 116 | " Business, research and administrative professionals",242,46030,51812 117 | Chartered and certified accountants,2421,41045,44673 118 | Management consultants and business analysts,2423,42683,46985 119 | Business and financial project management professionals,2424,53411,58830 120 | " Actuaries, economists and statisticians",2425,50452,68642 121 | Business and related research professionals,2426,35886,37181 122 | " Business, research and administrative professionals n.e.c.",2429,52699,50554 123 | " Architects, town planners and surveyors",243,40150,43377 124 | Architects,2431,43024,46709 125 | Town planning officers,2432,36992,35730 126 | Quantity surveyors,2433,46652,47595 127 | Chartered surveyors,2434,38004,39341 128 | Chartered architectural technologists,2435,x,39698 129 | Construction project managers and related professionals,2436,39067,44002 130 | Welfare professionals,244,31677,31252 131 | Social workers,2442,38606,37037 132 | Probation officers,2443,37071,34621 133 | Clergy,2444,23593,23970 134 | Welfare professionals n.e.c.,2449,26624,28651 135 | Librarians and related professionals,245,x,29049 136 | Librarians,2451,x,37242 137 | Archivists and curators,2452,x,x 138 | Quality and regulatory professionals,246,41206,55102 139 | Quality control and planning engineers,2461,39021,39704 140 | Quality assurance and regulatory professionals,2462,44988,x 141 | Environmental health professionals,2463,38439,39522 142 | Media professionals,247,35634,41555 143 | " Journalists, newspaper and periodical editors",2471,35195,42143 144 | Public relations professionals,2472,28992,34070 145 | Advertising accounts managers and creative directors,2473,x,44537 146 | Associate professional and technical occupations,3,34529,42158 147 | " Science, engineering and technology associate professionals",31,30460,32573 148 | " Science, engineering and production technicians",311,30337,32388 149 | Laboratory technicians,3111,23562,26548 150 | Electrical and electronics technicians,3112,34641,34683 151 | Engineering technicians,3113,36809,40194 152 | Building and civil engineering technicians,3114,x,28630 153 | Quality assurance technicians,3115,27047,28989 154 | " Planning, process and production technicians",3116,31228,33081 155 | " Science, engineering and production technicians n.e.c.",3119,28319,29397 156 | Draughtspersons and related architectural technicians,312,30083,32013 157 | Architectural and town planning technicians,3121,29139,31943 158 | Draughtspersons,3122,30454,32037 159 | Information technology technicians,313,30914,32978 160 | IT operations technicians,3131,30876,33181 161 | IT user support technicians,3132,30932,32832 162 | Health and social care associate professionals,32,26306,28535 163 | Health associate professionals,321,x,x 164 | Paramedics,3213,x,x 165 | Dispensing opticians,3216,x,27612 166 | Pharmaceutical technicians,3217,24893,24877 167 | Medical and dental technicians,3218,26036,28707 168 | Health associate professionals n.e.c.,3219,x,23732 169 | Welfare and housing associate professionals,323,25423,26435 170 | Youth and community workers,3231,24666,23021 171 | Child and early years officers,3233,25914,25114 172 | Housing officers,3234,29821,29034 173 | Counsellors,3235,22664,x 174 | Welfare and housing associate professionals n.e.c.,3239,x,24829 175 | Protective service occupations,33,41029,40332 176 | Protective service occupations,331,41029,40332 177 | NCOs and other ranks,3311,, 178 | Police officers (sergeant and below),3312,43556,43224 179 | Fire service officers (watch manager and below),3313,35172,33790 180 | Prison service officers (below principal officer),3314,32937,32535 181 | Police community support officers,3315,28278,27645 182 | Protective service associate professionals n.e.c.,3319,35485,45842 183 | " Culture, media and sports occupations",34,25000,x 184 | " Artistic, literary and media occupations",341,29773,39886 185 | Artists,3411,x,34078 186 | " Authors, writers and translators",3412,x,43444 187 | " Actors, entertainers and presenters",3413,x,x 188 | Dancers and choreographers,3414,x,x 189 | Musicians,3415,x,x 190 | " Arts officers, producers and directors",3416,x,x 191 | " Photographers, audio-visual and broadcasting equipment operators",3417,25471,26237 192 | Design occupations,342,28393,32279 193 | Graphic designers,3421,27727,31225 194 | " Product, clothing and related designers",3422,30728,33924 195 | Sports and fitness occupations,344,14456,x 196 | Sports players,3441,x,x 197 | " Sports coaches, instructors and officials",3442,x,13955 198 | Fitness instructors,3443,x,12828 199 | Business and public service associate professionals,35,37919,47306 200 | Transport associate professionals,351,65090,71391 201 | Air traffic controllers,3511,, 202 | Aircraft pilots and flight engineers,3512,70843,80002 203 | Ship and hovercraft officers,3513,53330,55622 204 | Legal associate professionals,352,28662,35711 205 | Legal associate professionals,3520,28662,35711 206 | " Business, finance and related associate professionals",353,36858,51926 207 | " Estimators, valuers and assessors",3531,31520,37433 208 | Brokers,3532,x,85758 209 | Insurance underwriters,3533,43231,53398 210 | Finance and investment analysts and advisers,3534,37696,x 211 | Taxation experts,3535,49432,58489 212 | Importers and exporters,3536,, 213 | Financial and accounting technicians,3537,40732,44750 214 | Financial accounts managers,3538,45615,56460 215 | Business and related associate professionals n.e.c.,3539,32168,40377 216 | " Sales, marketing and related associate professionals",354,41490,49560 217 | Buyers and procurement officers,3541,31678,35619 218 | Business sales executives,3542,35151,39963 219 | Marketing associate professionals,3543,28596,36960 220 | Estate agents and auctioneers,3544,x,28875 221 | Sales accounts and business development managers,3545,48844,57294 222 | Conference and exhibition managers and organisers,3546,25833,29035 223 | Conservation and environmental associate professionals,355,x,24526 224 | Conservation and environmental associate professionals,3550,x,24526 225 | Public services and other associate professionals,356,33136,35031 226 | Public services associate professionals,3561,34900,36142 227 | Human resources and industrial relations officers,3562,28432,34055 228 | Vocational and industrial trainers and instructors,3563,31160,32500 229 | Careers advisers and vocational guidance specialists,3564,27256,27812 230 | Inspectors of standards and regulations,3565,32012,39456 231 | Health and safety officers,3567,36028,37263 232 | Administrative and secretarial occupations,4,24317,27114 233 | Administrative occupations,41,24846,27572 234 | Administrative occupations: Government and related organisations,411,27371,26835 235 | National government administrative occupations,4112,26243,26285 236 | Local government administrative occupations,4113,29666,29104 237 | Officers of non-governmental organisations,4114,x,x 238 | Administrative occupations: Finance,412,23919,28124 239 | Credit controllers,4121,24072,27011 240 | " Book-keepers, payroll managers and wages clerks",4122,26132,29097 241 | Bank and post office clerks,4123,21240,25867 242 | Finance officers,4124,24476,x 243 | Financial administrative occupations n.e.c.,4129,21985,26483 244 | Administrative occupations: Records,413,23760,25490 245 | Records clerks and assistants,4131,23789,26341 246 | Pensions and insurance clerks and assistants,4132,22398,23900 247 | Stock control clerks and assistants,4133,22855,24268 248 | Transport and distribution clerks and assistants,4134,26364,28184 249 | Library clerks and assistants,4135,x,17940 250 | Human resources administrative occupations,4138,21551,23629 251 | Other administrative occupations,415,22763,25695 252 | Sales administrators,4151,22180,26350 253 | Other administrative occupations n.e.c.,4159,22904,25643 254 | Administrative occupations: Office managers and supervisors,416,32550,36519 255 | Office managers,4161,36001,38704 256 | Office supervisors,4162,27149,29860 257 | Secretarial and related occupations,42,18017,21331 258 | Secretarial and related occupations,421,18017,21331 259 | Medical secretaries,4211,x,19141 260 | Legal secretaries,4212,24298,25305 261 | School secretaries,4213,x,x 262 | Company secretaries,4214,x,x 263 | Personal assistants and other secretaries,4215,x,x 264 | Receptionists,4216,17823,17589 265 | Typists and related keyboard occupations,4217,20411,23645 266 | Skilled trades occupations,5,27877,29173 267 | Skilled agricultural and related trades,51,21025,21321 268 | Agricultural and related trades,511,21025,21321 269 | Farmers,5111,x,24879 270 | Horticultural trades,5112,20643,20002 271 | Gardeners and landscape gardeners,5113,20451,20183 272 | Groundsmen and greenkeepers,5114,20475,21079 273 | Agricultural and fishing trades n.e.c.,5119,24330,23807 274 | " Skilled metal, electrical and electronic trades",52,31093,32327 275 | " Metal forming, welding and related trades",521,27481,29562 276 | Smiths and forge workers,5211,, 277 | " Moulders, core makers and die casters",5212,x,26150 278 | Sheet metal workers,5213,24996,28327 279 | " Metal plate workers, and riveters",5214,33211,37393 280 | Welding trades,5215,27178,28206 281 | Pipe fitters,5216,37743,40821 282 | " Metal machining, fitting and instrument making trades",522,31201,32579 283 | Metal machining setters and setter-operators,5221,28188,29049 284 | " Tool makers, tool fitters and markers-out",5222,31630,33465 285 | Metal working production and maintenance fitters,5223,31889,33387 286 | Precision instrument makers and repairers,5224,28038,29866 287 | Air-conditioning and refrigeration engineers,5225,31232,33167 288 | Vehicle trades,523,28298,28888 289 | " Vehicle technicians, mechanics and electricians",5231,28168,28452 290 | Vehicle body builders and repairers ,5232,25972,26246 291 | Vehicle paint technicians,5234,26955,27214 292 | Aircraft maintenance and related trades,5235,x,38488 293 | Boat and ship builders and repairers,5236,29642,30131 294 | Rail and rolling stock builders and repairers,5237,46753,44201 295 | Electrical and electronic trades,524,33012,34041 296 | Electricians and electrical fitters,5241,32476,32850 297 | Telecommunications engineers,5242,34316,37436 298 | " TV, video and audio engineers",5244,24746,25607 299 | IT engineers,5245,30736,32511 300 | Electrical and electronic trades n.e.c.,5249,34768,35704 301 | " Skilled metal, electrical and electronic trades supervisors",525,36358,38477 302 | " Skilled metal, electrical and electronic trades supervisors",5250,36358,38477 303 | Skilled construction and building trades,53,28603,29568 304 | Construction and building trades,531,27625,27917 305 | Steel erectors,5311,30363,31529 306 | Bricklayers and masons,5312,27756,28000 307 | " Roofers, roof tilers and slaters",5313,x,24090 308 | Plumbers and heating and ventilating engineers,5314,31603,31175 309 | Carpenters and joiners,5315,27514,27624 310 | " Glaziers, window fabricators and fitters",5316,23014,23403 311 | Construction and building trades n.e.c.,5319,26203,26822 312 | Building finishing trades,532,25363,25643 313 | Plasterers,5321,26691,25164 314 | Floorers and wall tilers,5322,25363,25694 315 | Painters and decorators,5323,24638,25784 316 | Construction and building trades supervisors,533,37882,40664 317 | Construction and building trades supervisors,5330,37882,40664 318 | " Textiles, printing and other skilled trades",54,20503,20844 319 | Textiles and garments trades,541,22554,22321 320 | Weavers and knitters,5411,24196,24470 321 | Upholsterers,5412,22636,22239 322 | Footwear and leather working trades,5413,x,23265 323 | Tailors and dressmakers,5414,x,x 324 | " Textiles, garments and related trades n.e.c.",5419,x,24967 325 | Printing trades,542,24712,25032 326 | Pre-press technicians,5421,x,x 327 | Printers,5422,26163,26150 328 | Print finishing and binding workers,5423,21468,22345 329 | Food preparation and hospitality trades,543,19399,19717 330 | Butchers,5431,23299,23523 331 | Bakers and flour confectioners,5432,20307,21366 332 | Fishmongers and poultry dressers,5433,18862,19293 333 | Chefs,5434,18316,18739 334 | Cooks,5435,14021,15167 335 | Catering and bar managers,5436,20774,21271 336 | Other skilled trades,544,24885,26126 337 | " Glass and ceramics makers, decorators and finishers",5441,x,22427 338 | Furniture makers and other craft woodworkers,5442,24393,26077 339 | Florists,5443,, 340 | Other skilled trades n.e.c.,5449,25069,27324 341 | "Caring, leisure and other service occupations",6,20185,20190 342 | Caring personal service occupations,61,20105,19991 343 | Childcare and related personal services,612,15815,16200 344 | Nursery nurses and assistants,6121,17158,21054 345 | Childminders and related occupations,6122,x,x 346 | Playworkers,6123,x,x 347 | Teaching assistants,6125,16857,16993 348 | Educational support assistants,6126,x,15952 349 | Animal care and control services,613,21214,19557 350 | Veterinary nurses,6131,x,x 351 | Pest control officers,6132,22660,23211 352 | Animal care services occupations n.e.c.,6139,20466,18158 353 | Caring personal services,614,20960,20931 354 | Nursing auxiliaries and assistants,6141,21164,21025 355 | Ambulance staff (excluding paramedics),6142,25017,26839 356 | Dental nurses,6143,x,x 357 | Houseparents and residential wardens,6144,24290,25255 358 | Care workers and home carers,6145,19688,19332 359 | Senior care workers,6146,24489,24391 360 | Care escorts,6147,x,12088 361 | " Undertakers, mortuary and crematorium assistants",6148,25000,23697 362 | " Leisure, travel and related personal service occupations",62,20493,20624 363 | Leisure and travel services,621,23181,23762 364 | Sports and leisure assistants,6211,x,12835 365 | Travel agents,6212,23415,24048 366 | Air travel assistants,6214,20886,20220 367 | Rail travel assistants,6215,35403,36520 368 | Leisure and travel service occupations n.e.c.,6219,x,x 369 | Hairdressers and related services,622,12224,13139 370 | Hairdressers and barbers,6221,12666,13699 371 | Beauticians and related occupations,6222,x,10758 372 | Housekeeping and related services,623,19698,18568 373 | Housekeepers and related occupations,6231,19407,18503 374 | Caretakers,6232,19698,18574 375 | Cleaning and housekeeping managers and supervisors,624,22955,22889 376 | Cleaning and housekeeping managers and supervisors,6240,22955,22889 377 | Sales and customer service occupations,7,18020,18850 378 | Sales occupations,71,16412,17190 379 | Sales assistants and retail cashiers,711,15243,16100 380 | Sales and retail assistants,7111,14937,15960 381 | Retail cashiers and check-out operators,7112,12071,13051 382 | Telephone salespersons,7113,18668,20970 383 | Pharmacy and other dispensing assistants,7114,17392,16381 384 | Vehicle and parts salespersons and advisers,7115,24481,26854 385 | Sales related occupations,712,21631,23158 386 | Collector salespersons and credit agents,7121,, 387 | " Debt, rent and other cash collectors",7122,20962,20548 388 | Roundspersons and van salespersons,7123,21494,22653 389 | Market and street traders and assistants,7124,x,x 390 | Merchandisers and window dressers,7125,19739,21543 391 | Sales related occupations n.e.c.,7129,23011,25863 392 | Sales supervisors,713,22817,25173 393 | Sales supervisors,7130,22817,25173 394 | Customer service occupations,72,21242,23094 395 | Customer service occupations,721,20140,21042 396 | Call and contact centre occupations,7211,19851,21222 397 | Telephonists,7213,21788,21557 398 | Communication operators,7214,25788,26914 399 | Market research interviewers,7215,x,x 400 | Customer service occupations n.e.c.,7219,20039,20934 401 | Customer service managers and supervisors,722,30785,33684 402 | Customer service managers and supervisors,7220,30785,33684 403 | "Process, plant and machine operatives",8,25485,27060 404 | " Process, plant and machine operatives",81,24993,26301 405 | Process operatives,811,23461,25303 406 | " Food, drink and tobacco process operatives",8111,21678,22751 407 | Glass and ceramics process operatives,8112,22752,24540 408 | Textile process operatives,8113,25868,25223 409 | Chemical and related process operatives,8114,31071,34168 410 | Rubber process operatives,8115,x,23885 411 | Plastics process operatives,8116,22513,24666 412 | Metal making and treating process operatives,8117,26603,27373 413 | Electroplaters,8118,26082,26508 414 | Process operatives n.e.c.,8119,25780,25960 415 | Plant and machine operatives,812,25226,26401 416 | Paper and wood machine operatives,8121,23357,24541 417 | Coal mine operatives,8122,27187,29043 418 | Quarry workers and related operatives,8123,30213,33036 419 | Energy plant operatives,8124,33262,33158 420 | Metal working machine operatives,8125,23484,24067 421 | Water and sewerage plant operatives,8126,30990,31084 422 | Printing machine assistants,8127,23909,24817 423 | Plant and machine operatives n.e.c.,8129,23977,24684 424 | Assemblers and routine operatives,813,25011,26269 425 | Assemblers (electrical and electronic products),8131,22296,23601 426 | Assemblers (vehicles and metal goods),8132,30516,30999 427 | Routine inspectors and testers,8133,28074,28935 428 | " Weighers, graders and sorters",8134,25314,28329 429 | " Tyre, exhaust and windscreen fitters",8135,22511,22508 430 | Sewing machinists,8137,20754,21155 431 | Assemblers and routine operatives n.e.c.,8139,23569,24517 432 | Construction operatives,814,27009,27764 433 | " Scaffolders, stagers and riggers",8141,33221,33255 434 | Road construction operatives,8142,30530,31720 435 | Rail construction and maintenance operatives,8143,35542,34463 436 | Construction operatives n.e.c.,8149,24729,24842 437 | Transport and mobile machine drivers and operatives,82,25857,27636 438 | Road transport drivers,821,24665,25095 439 | Large goods vehicle drivers,8211,30707,30547 440 | Van drivers,8212,20659,21385 441 | Bus and coach drivers,8213,24084,24337 442 | Taxi and cab drivers and chauffeurs,8214,x,16463 443 | Driving instructors,8215,x,x 444 | Mobile machine drivers and operatives,822,29087,30503 445 | Crane drivers,8221,35854,40643 446 | Fork-lift truck drivers,8222,25267,25596 447 | Agricultural machinery drivers,8223,31180,30554 448 | Mobile machine drivers and operatives n.e.c.,8229,30557,32084 449 | Other drivers and transport operatives,823,52262,50012 450 | Train and tram drivers,8231,59199,57796 451 | Marine and waterways transport operatives,8232,31457,33077 452 | Air transport operatives,8233,x,24996 453 | Rail transport operatives,8234,49942,51654 454 | Other drivers and transport operatives n.e.c.,8239,35281,34647 455 | Elementary occupations,9,20711,20647 456 | Elementary trades and related occupations,91,22164,23291 457 | Elementary agricultural occupations,911,22735,22211 458 | Farm workers,9111,23248,22827 459 | Forestry workers,9112,22865,23892 460 | Fishing and other elementary agriculture occupations n.e.c.,9119,21648,20507 461 | Elementary construction occupations,912,23403,25327 462 | Elementary construction occupations,9120,23403,25327 463 | Elementary process plant occupations,913,21777,22722 464 | Industrial cleaning process occupations,9132,20654,21046 465 | " Packers, bottlers, canners and fillers",9134,20813,21706 466 | Elementary process plant occupations n.e.c.,9139,22287,23669 467 | Elementary administration and service occupations,92,20138,20042 468 | Elementary administration occupations,921,26425,26795 469 | " Postal workers, mail sorters, messengers and couriers",9211,26792,27530 470 | Elementary administration occupations n.e.c.,9219,17321,17177 471 | Elementary cleaning occupations,923,15536,14990 472 | Window cleaners,9231,19200,17871 473 | Street cleaners,9232,19870,19255 474 | Cleaners and domestics,9233,11091,13008 475 | " Launderers, dry cleaners and pressers",9234,16757,18025 476 | Refuse and salvage occupations,9235,21132,22016 477 | Vehicle valeters and cleaners,9236,18012,16443 478 | Elementary cleaning occupations n.e.c.,9239,19009,19474 479 | Elementary security occupations,924,23176,22661 480 | Security guards and related occupations,9241,24817,24524 481 | Parking and civil enforcement occupations,9242,21309,21342 482 | School midday and crossing patrol occupations,9244,x,3667 483 | Elementary security occupations n.e.c.,9249,x,16750 484 | Elementary sales occupations,925,14153,14039 485 | Shelf fillers,9251,14161,14040 486 | Elementary sales occupations n.e.c.,9259,x,14029 487 | Elementary storage occupations,926,22899,24265 488 | Elementary storage occupations,9260,22899,24265 489 | Other elementary services occupations,927,9627,10415 490 | Hospital porters,9271,20056,20761 491 | Kitchen and catering assistants,9272,10349,10991 492 | Waiters and waitresses,9273,8579,9856 493 | Bar staff,9274,7023,8530 494 | Leisure and theme park attendants,9275,x,7728 495 | Other elementary services occupations n.e.c.,9279,x,16025 496 | -------------------------------------------------------------------------------- /Data Processing/raw data/UK 2020.csv: -------------------------------------------------------------------------------- 1 | Description,Code,Median,Mean 2 | All employees,,25886,31646 3 | "Managers, directors and senior officials",1,41663,56030 4 | Corporate managers and directors,11,44625,59361 5 | Chief executives and senior officials,111,73179,104561 6 | Chief executives and senior officials,1115,79633,111760 7 | Elected officers and representatives,1116,x,x 8 | Production managers and directors,112,44399,53954 9 | Production managers and directors in manufacturing,1121,43326,53823 10 | Production managers and directors in construction,1122,46661,53703 11 | Production managers and directors in mining and energy,1123,45530,x 12 | Functional managers and directors,113,56757,73002 13 | Financial managers and directors,1131,59684,76840 14 | Marketing and sales directors,1132,73414,85105 15 | Purchasing managers and directors,1133,47000,53397 16 | Advertising and public relations directors,1134,59687,x 17 | Human resource managers and directors,1135,45755,52826 18 | Information technology and telecommunications directors,1136,69689,79009 19 | Functional managers and directors n.e.c.,1139,47657,60642 20 | Financial institution managers and directors,115,51606,78181 21 | Financial institution managers and directors,1150,51606,78181 22 | Managers and directors in transport and logistics,116,33496,37275 23 | Managers and directors in transport and distribution,1161,38929,44286 24 | Managers and directors in storage and warehousing,1162,30091,32523 25 | Senior officers in protective services,117,53690,54775 26 | Officers in armed forces,1171,, 27 | Senior police officers,1172,55518,58923 28 | " Senior officers in fire, ambulance, prison and related services",1173,44066,46748 29 | Health and social services managers and directors,118,44466,46201 30 | Health services and public health managers and directors,1181,47067,48695 31 | Social services managers and directors,1184,35706,39156 32 | Managers and directors in retail and wholesale,119,28260,33808 33 | Managers and directors in retail and wholesale,1190,28260,33808 34 | Other managers and proprietors,12,30843,38079 35 | Managers and proprietors in agriculture related services,121,30499,32680 36 | Managers and proprietors in agriculture and horticulture,1211,32053,33461 37 | " Managers and proprietors in forestry, fishing and related services",1213,x,30247 38 | Managers and proprietors in hospitality and leisure services,122,28404,32796 39 | Hotel and accommodation managers and proprietors,1221,30748,33185 40 | Restaurant and catering establishment managers and proprietors,1223,23886,26121 41 | Publicans and managers of licensed premises,1224,37626,38310 42 | Leisure and sports managers,1225,31351,38166 43 | Travel agency managers and proprietors,1226,x,x 44 | Managers and proprietors in health and care services,124,32514,33755 45 | Health care practice managers,1241,31174,33468 46 | " Residential, day and domiciliary care managers and proprietors",1242,33477,33865 47 | Managers and proprietors in other services,125,32069,42478 48 | " Property, housing and estate managers",1251,35344,47869 49 | Garage managers and proprietors,1252,x,x 50 | Hairdressing and beauty salon managers and proprietors,1253,22708,21967 51 | Shopkeepers and proprietors – wholesale and retail,1254,x,x 52 | Waste disposal and environmental services managers,1255,43147,50633 53 | Managers and proprietors in other services n.e.c.,1259,28476,35719 54 | Professional occupations,2,36897,40469 55 | " Science, research, engineering and technology professionals",21,42109,45505 56 | Natural and social science professionals,211,36062,38700 57 | Chemical scientists,2111,32499,37472 58 | Biological scientists and biochemists,2112,35522,38976 59 | Physical scientists,2113,40255,41980 60 | Social and humanities scientists,2114,29943,32848 61 | Natural and social science professionals n.e.c.,2119,36691,39310 62 | Engineering professionals,212,42581,44080 63 | Civil engineers,2121,41506,42961 64 | Mechanical engineers,2122,41867,45447 65 | Electrical engineers,2123,51725,52920 66 | Electronics engineers,2124,43398,41692 67 | Design and development engineers,2126,41384,43423 68 | Production and process engineers,2127,39722,41964 69 | Engineering professionals n.e.c.,2129,42818,43889 70 | Information technology and telecommunications professionals,213,43678,47633 71 | IT specialist managers,2133,49929,54803 72 | IT project and programme managers,2134,47785,48647 73 | " IT business analysts, architects and systems designers",2135,49313,54308 74 | Programmers and software development professionals,2136,42583,46341 75 | Web design and development professionals,2137,30749,30307 76 | Information technology and telecommunications professionals n.e.c.,2139,36454,40696 77 | Conservation and environment professionals,214,33912,35928 78 | Conservation professionals,2141,30714,32279 79 | Environment professionals,2142,35728,37006 80 | Research and development managers ,215,47342,51390 81 | Research and development managers,2150,47342,51390 82 | Health professionals,22,31123,35326 83 | Health professionals,221,43066,52522 84 | Medical practitioners,2211,54839,66483 85 | Psychologists,2212,34365,39414 86 | Pharmacists,2213,37670,37328 87 | Ophthalmic opticians,2214,x,32593 88 | Dental practitioners,2215,x,47503 89 | Veterinarians,2216,34559,34471 90 | Medical radiographers,2217,35349,34905 91 | Podiatrists,2218,x,27314 92 | Health professionals n.e.c.,2219,32507,34096 93 | Therapy professionals,222,29000,29184 94 | Physiotherapists,2221,30384,30084 95 | Occupational therapists,2222,29136,29284 96 | Speech and language therapists,2223,26110,26834 97 | Therapy professionals n.e.c.,2229,26108,28245 98 | Nursing and midwifery professionals,223,28864,28355 99 | Nurses,2231,28783,28232 100 | Midwives,2232,30409,30683 101 | Teaching and educational professionals,23,35570,36170 102 | Teaching and educational professionals,231,35570,36170 103 | Higher education teaching professionals,2311,47034,48910 104 | Further education teaching professionals,2312,31476,30562 105 | Secondary education teaching professionals,2314,37966,37171 106 | Primary and nursery education teaching professionals,2315,33288,32408 107 | Special needs education teaching professionals,2316,28830,28644 108 | Senior professionals of educational establishments,2317,56277,56207 109 | Education advisers and school inspectors,2318,37325,36594 110 | Teaching and other educational professionals n.e.c.,2319,19971,20504 111 | " Business, media and public service professionals",24,39081,45446 112 | Legal professionals,241,47339,61775 113 | Barristers and judges,2412,x,39706 114 | Solicitors,2413,40892,48722 115 | Legal professionals n.e.c.,2419,71841,87266 116 | " Business, research and administrative professionals",242,42122,48217 117 | Chartered and certified accountants,2421,38172,41902 118 | Management consultants and business analysts,2423,41348,45874 119 | Business and financial project management professionals,2424,49592,55784 120 | " Actuaries, economists and statisticians",2425,45241,67137 121 | Business and related research professionals,2426,33976,34245 122 | " Business, research and administrative professionals n.e.c.",2429,44582,42787 123 | " Architects, town planners and surveyors",243,39911,43301 124 | Architects,2431,41631,46038 125 | Town planning officers,2432,30937,32878 126 | Quantity surveyors,2433,43940,48041 127 | Chartered surveyors,2434,36801,39847 128 | Chartered architectural technologists,2435,x,46096 129 | Construction project managers and related professionals,2436,x,43289 130 | Welfare professionals,244,30584,30524 131 | Social workers,2442,33218,32614 132 | Probation officers,2443,30706,32327 133 | Clergy,2444,26390,25763 134 | Welfare professionals n.e.c.,2449,29504,28761 135 | Librarians and related professionals,245,23379,23686 136 | Librarians,2451,21761,24828 137 | Archivists and curators,2452,24972,22311 138 | Quality and regulatory professionals,246,40049,45623 139 | Quality control and planning engineers,2461,38519,39542 140 | Quality assurance and regulatory professionals,2462,43280,49598 141 | Environmental health professionals,2463,35811,34974 142 | Media professionals,247,35635,40401 143 | " Journalists, newspaper and periodical editors",2471,36203,41800 144 | Public relations professionals,2472,31729,35958 145 | Advertising accounts managers and creative directors,2473,40021,43237 146 | Associate professional and technical occupations,3,31125,36049 147 | " Science, engineering and technology associate professionals",31,29344,31361 148 | " Science, engineering and production technicians",311,28428,30364 149 | Laboratory technicians,3111,20287,22696 150 | Electrical and electronics technicians,3112,34508,35394 151 | Engineering technicians,3113,35294,37373 152 | Building and civil engineering technicians,3114,x,25276 153 | Quality assurance technicians,3115,27158,29687 154 | " Planning, process and production technicians",3116,30137,32662 155 | " Science, engineering and production technicians n.e.c.",3119,27670,28775 156 | Draughtspersons and related architectural technicians,312,30002,31802 157 | Architectural and town planning technicians,3121,x,31514 158 | Draughtspersons,3122,29719,31947 159 | Information technology technicians,313,30654,32794 160 | IT operations technicians,3131,31310,33371 161 | IT user support technicians,3132,30212,32275 162 | Health and social care associate professionals,32,22895,23130 163 | Health associate professionals,321,24960,27507 164 | Paramedics,3213,42541,41043 165 | Dispensing opticians,3216,20157,22000 166 | Pharmaceutical technicians,3217,20223,20549 167 | Medical and dental technicians,3218,24177,26197 168 | Health associate professionals n.e.c.,3219,19137,18491 169 | Welfare and housing associate professionals,323,22488,21768 170 | Youth and community workers,3231,22008,20924 171 | Child and early years officers,3233,22479,21442 172 | Housing officers,3234,26510,26191 173 | Counsellors,3235,x,x 174 | Welfare and housing associate professionals n.e.c.,3239,21099,20980 175 | Protective service occupations,33,39259,37780 176 | Protective service occupations,331,39259,37780 177 | NCOs and other ranks,3311,, 178 | Police officers (sergeant and below),3312,41500,40249 179 | Fire service officers (watch manager and below),3313,33905,32884 180 | Prison service officers (below principal officer),3314,28966,29877 181 | Police community support officers,3315,25710,25110 182 | Protective service associate professionals n.e.c.,3319,34073,41139 183 | " Culture, media and sports occupations",34,23011,x 184 | " Artistic, literary and media occupations",341,26855,30880 185 | Artists,3411,x,26131 186 | " Authors, writers and translators",3412,26051,29297 187 | " Actors, entertainers and presenters",3413,x,x 188 | Dancers and choreographers,3414,x,x 189 | Musicians,3415,x,x 190 | " Arts officers, producers and directors",3416,32562,x 191 | " Photographers, audio-visual and broadcasting equipment operators",3417,25152,28296 192 | Design occupations,342,28662,29951 193 | Graphic designers,3421,27416,28253 194 | " Product, clothing and related designers",3422,29151,31894 195 | Sports and fitness occupations,344,9841,x 196 | Sports players,3441,x,x 197 | " Sports coaches, instructors and officials",3442,x,11751 198 | Fitness instructors,3443,x,10520 199 | Business and public service associate professionals,35,33677,40496 200 | Transport associate professionals,351,67753,71769 201 | Air traffic controllers,3511,, 202 | Aircraft pilots and flight engineers,3512,x,85648 203 | Ship and hovercraft officers,3513,52092,51975 204 | Legal associate professionals,352,26480,31824 205 | Legal associate professionals,3520,26480,31824 206 | " Business, finance and related associate professionals",353,32347,39155 207 | " Estimators, valuers and assessors",3531,31650,36712 208 | Brokers,3532,x,x 209 | Insurance underwriters,3533,32195,37511 210 | Finance and investment analysts and advisers,3534,36064,44178 211 | Taxation experts,3535,41973,46892 212 | Importers and exporters,3536,26057,27598 213 | Financial and accounting technicians,3537,43126,42978 214 | Financial accounts managers,3538,34844,42953 215 | Business and related associate professionals n.e.c.,3539,27976,29702 216 | " Sales, marketing and related associate professionals",354,38441,45682 217 | Buyers and procurement officers,3541,30443,32954 218 | Business sales executives,3542,34996,40557 219 | Marketing associate professionals,3543,27343,32143 220 | Estate agents and auctioneers,3544,22113,24294 221 | Sales accounts and business development managers,3545,46943,54729 222 | Conference and exhibition managers and organisers,3546,24130,26467 223 | Conservation and environmental associate professionals,355,20891,20931 224 | Conservation and environmental associate professionals,3550,20891,20931 225 | Public services and other associate professionals,356,30269,31002 226 | Public services associate professionals,3561,31980,32751 227 | Human resources and industrial relations officers,3562,27475,30034 228 | Vocational and industrial trainers and instructors,3563,28352,28888 229 | Careers advisers and vocational guidance specialists,3564,23988,23825 230 | Inspectors of standards and regulations,3565,31056,37208 231 | Health and safety officers,3567,33305,34838 232 | Administrative and secretarial occupations,4,19748,21367 233 | Administrative occupations,41,20719,22303 234 | Administrative occupations: Government and related organisations,411,23212,23456 235 | National government administrative occupations,4112,23560,23936 236 | Local government administrative occupations,4113,22185,22583 237 | Officers of non-governmental organisations,4114,x,21170 238 | Administrative occupations: Finance,412,20941,23142 239 | Credit controllers,4121,22940,22598 240 | " Book-keepers, payroll managers and wages clerks",4122,21218,23504 241 | Bank and post office clerks,4123,18867,21372 242 | Finance officers,4124,23611,31069 243 | Financial administrative occupations n.e.c.,4129,20609,21896 244 | Administrative occupations: Records,413,21367,22206 245 | Records clerks and assistants,4131,20217,21217 246 | Pensions and insurance clerks and assistants,4132,21435,22145 247 | Stock control clerks and assistants,4133,21913,22779 248 | Transport and distribution clerks and assistants,4134,25597,26468 249 | Library clerks and assistants,4135,14044,14665 250 | Human resources administrative occupations,4138,20439,22322 251 | Other administrative occupations,415,18000,19412 252 | Sales administrators,4151,21967,22704 253 | Other administrative occupations n.e.c.,4159,17619,19157 254 | Administrative occupations: Office managers and supervisors,416,28343,31025 255 | Office managers,4161,29324,31882 256 | Office supervisors,4162,25883,26826 257 | Secretarial and related occupations,42,15548,17497 258 | Secretarial and related occupations,421,15548,17497 259 | Medical secretaries,4211,18126,17347 260 | Legal secretaries,4212,19038,20637 261 | School secretaries,4213,16604,16448 262 | Company secretaries,4214,11089,18418 263 | Personal assistants and other secretaries,4215,17668,20677 264 | Receptionists,4216,13857,14393 265 | Typists and related keyboard occupations,4217,17832,18683 266 | Skilled trades occupations,5,27573,28973 267 | Skilled agricultural and related trades,51,20771,21212 268 | Agricultural and related trades,511,20771,21212 269 | Farmers,5111,x,26133 270 | Horticultural trades,5112,20048,20962 271 | Gardeners and landscape gardeners,5113,20289,19672 272 | Groundsmen and greenkeepers,5114,20508,21492 273 | Agricultural and fishing trades n.e.c.,5119,21786,23059 274 | " Skilled metal, electrical and electronic trades",52,31803,33151 275 | " Metal forming, welding and related trades",521,28644,29546 276 | Smiths and forge workers,5211,, 277 | " Moulders, core makers and die casters",5212,x,24499 278 | Sheet metal workers,5213,25585,28365 279 | " Metal plate workers, and riveters",5214,32533,34458 280 | Welding trades,5215,28161,28992 281 | Pipe fitters,5216,38371,38962 282 | " Metal machining, fitting and instrument making trades",522,31557,33403 283 | Metal machining setters and setter-operators,5221,28939,29889 284 | " Tool makers, tool fitters and markers-out",5222,30308,32276 285 | Metal working production and maintenance fitters,5223,32527,34273 286 | Precision instrument makers and repairers,5224,27847,30448 287 | Air-conditioning and refrigeration engineers,5225,34675,34146 288 | Vehicle trades,523,29267,30572 289 | " Vehicle technicians, mechanics and electricians",5231,28790,29814 290 | Vehicle body builders and repairers ,5232,x,29243 291 | Vehicle paint technicians,5234,29308,28987 292 | Aircraft maintenance and related trades,5235,37881,39409 293 | Boat and ship builders and repairers,5236,27203,31909 294 | Rail and rolling stock builders and repairers,5237,x,46628 295 | Electrical and electronic trades,524,33572,34434 296 | Electricians and electrical fitters,5241,33047,33378 297 | Telecommunications engineers,5242,34484,36968 298 | " TV, video and audio engineers",5244,x,27299 299 | IT engineers,5245,29353,31902 300 | Electrical and electronic trades n.e.c.,5249,34474,35690 301 | " Skilled metal, electrical and electronic trades supervisors",525,35963,38159 302 | " Skilled metal, electrical and electronic trades supervisors",5250,35963,38159 303 | Skilled construction and building trades,53,28954,29893 304 | Construction and building trades,531,28216,28385 305 | Steel erectors,5311,29441,28507 306 | Bricklayers and masons,5312,x,27022 307 | " Roofers, roof tilers and slaters",5313,26561,27041 308 | Plumbers and heating and ventilating engineers,5314,32028,31611 309 | Carpenters and joiners,5315,28286,28221 310 | " Glaziers, window fabricators and fitters",5316,23348,23583 311 | Construction and building trades n.e.c.,5319,x,27479 312 | Building finishing trades,532,26495,28568 313 | Plasterers,5321,29677,28335 314 | Floorers and wall tilers,5322,27376,28947 315 | Painters and decorators,5323,25543,28446 316 | Construction and building trades supervisors,533,38539,38897 317 | Construction and building trades supervisors,5330,38539,38897 318 | " Textiles, printing and other skilled trades",54,19841,20214 319 | Textiles and garments trades,541,20144,21701 320 | Weavers and knitters,5411,23737,24429 321 | Upholsterers,5412,19686,20112 322 | Footwear and leather working trades,5413,22160,24122 323 | Tailors and dressmakers,5414,x,x 324 | " Textiles, garments and related trades n.e.c.",5419,x,19226 325 | Printing trades,542,24716,25001 326 | Pre-press technicians,5421,x,26643 327 | Printers,5422,25626,26338 328 | Print finishing and binding workers,5423,23497,22791 329 | Food preparation and hospitality trades,543,18980,19211 330 | Butchers,5431,21788,21986 331 | Bakers and flour confectioners,5432,19538,19874 332 | Fishmongers and poultry dressers,5433,x,15344 333 | Chefs,5434,19987,20448 334 | Cooks,5435,13105,13431 335 | Catering and bar managers,5436,21117,21729 336 | Other skilled trades,544,23427,23814 337 | " Glass and ceramics makers, decorators and finishers",5441,22249,22846 338 | Furniture makers and other craft woodworkers,5442,23776,24869 339 | Florists,5443,x,10406 340 | Other skilled trades n.e.c.,5449,25527,27030 341 | "Caring, leisure and other service occupations",6,15372,15921 342 | Caring personal service occupations,61,15319,15789 343 | Childcare and related personal services,612,13404,13743 344 | Nursery nurses and assistants,6121,14127,14349 345 | Childminders and related occupations,6122,14528,17436 346 | Playworkers,6123,x,6876 347 | Teaching assistants,6125,13827,14111 348 | Educational support assistants,6126,13184,13537 349 | Animal care and control services,613,18236,18245 350 | Veterinary nurses,6131,18625,19370 351 | Pest control officers,6132,24738,24421 352 | Animal care services occupations n.e.c.,6139,16447,16734 353 | Caring personal services,614,16719,16935 354 | Nursing auxiliaries and assistants,6141,18052,17636 355 | Ambulance staff (excluding paramedics),6142,23535,24248 356 | Dental nurses,6143,15401,15876 357 | Houseparents and residential wardens,6144,20942,21987 358 | Care workers and home carers,6145,15539,16013 359 | Senior care workers,6146,18805,19434 360 | Care escorts,6147,7445,8026 361 | " Undertakers, mortuary and crematorium assistants",6148,22570,20997 362 | " Leisure, travel and related personal service occupations",62,15835,16693 363 | Leisure and travel services,621,17567,18933 364 | Sports and leisure assistants,6211,x,12562 365 | Travel agents,6212,19932,22905 366 | Air travel assistants,6214,x,19683 367 | Rail travel assistants,6215,34292,36082 368 | Leisure and travel service occupations n.e.c.,6219,x,11227 369 | Hairdressers and related services,622,12203,13362 370 | Hairdressers and barbers,6221,12207,13692 371 | Beauticians and related occupations,6222,11817,12842 372 | Housekeeping and related services,623,17615,16753 373 | Housekeepers and related occupations,6231,14340,14491 374 | Caretakers,6232,19126,17966 375 | Cleaning and housekeeping managers and supervisors,624,17024,17381 376 | Cleaning and housekeeping managers and supervisors,6240,17024,17381 377 | Sales and customer service occupations,7,14512,16223 378 | Sales occupations,71,12802,14452 379 | Sales assistants and retail cashiers,711,11966,13637 380 | Sales and retail assistants,7111,11803,13622 381 | Retail cashiers and check-out operators,7112,10394,11377 382 | Telephone salespersons,7113,20953,21725 383 | Pharmacy and other dispensing assistants,7114,14009,13980 384 | Vehicle and parts salespersons and advisers,7115,24297,26944 385 | Sales related occupations,712,20470,21311 386 | Collector salespersons and credit agents,7121,, 387 | " Debt, rent and other cash collectors",7122,19819,20347 388 | Roundspersons and van salespersons,7123,23611,24557 389 | Market and street traders and assistants,7124,x,x 390 | Merchandisers and window dressers,7125,18144,19156 391 | Sales related occupations n.e.c.,7129,21880,23638 392 | Sales supervisors,713,21533,22403 393 | Sales supervisors,7130,21533,22403 394 | Customer service occupations,72,19708,20577 395 | Customer service occupations,721,18499,18474 396 | Call and contact centre occupations,7211,18714,18976 397 | Telephonists,7213,16194,16117 398 | Communication operators,7214,25757,25724 399 | Market research interviewers,7215,x,8571 400 | Customer service occupations n.e.c.,7219,18467,18314 401 | Customer service managers and supervisors,722,28474,31427 402 | Customer service managers and supervisors,7220,28474,31427 403 | "Process, plant and machine operatives",8,24821,26345 404 | " Process, plant and machine operatives",81,23860,25322 405 | Process operatives,811,22564,24147 406 | " Food, drink and tobacco process operatives",8111,20777,21836 407 | Glass and ceramics process operatives,8112,21638,22884 408 | Textile process operatives,8113,23155,23638 409 | Chemical and related process operatives,8114,29577,32455 410 | Rubber process operatives,8115,x,25957 411 | Plastics process operatives,8116,22521,25179 412 | Metal making and treating process operatives,8117,25920,27862 413 | Electroplaters,8118,25695,28133 414 | Process operatives n.e.c.,8119,27800,28294 415 | Plant and machine operatives,812,25373,26490 416 | Paper and wood machine operatives,8121,22984,23937 417 | Coal mine operatives,8122,x,30728 418 | Quarry workers and related operatives,8123,31014,33673 419 | Energy plant operatives,8124,34451,35301 420 | Metal working machine operatives,8125,23663,24715 421 | Water and sewerage plant operatives,8126,32081,30985 422 | Printing machine assistants,8127,23152,24011 423 | Plant and machine operatives n.e.c.,8129,24611,25826 424 | Assemblers and routine operatives,813,22927,24580 425 | Assemblers (electrical and electronic products),8131,23100,23597 426 | Assemblers (vehicles and metal goods),8132,31256,31263 427 | Routine inspectors and testers,8133,25207,27106 428 | " Weighers, graders and sorters",8134,x,x 429 | " Tyre, exhaust and windscreen fitters",8135,22188,22038 430 | Sewing machinists,8137,17176,17461 431 | Assemblers and routine operatives n.e.c.,8139,21484,22966 432 | Construction operatives,814,27290,27844 433 | " Scaffolders, stagers and riggers",8141,34020,34610 434 | Road construction operatives,8142,30501,31019 435 | Rail construction and maintenance operatives,8143,33867,35158 436 | Construction operatives n.e.c.,8149,24837,25438 437 | Transport and mobile machine drivers and operatives,82,26126,27313 438 | Road transport drivers,821,24849,25010 439 | Large goods vehicle drivers,8211,30266,30196 440 | Van drivers,8212,20450,20962 441 | Bus and coach drivers,8213,25325,25976 442 | Taxi and cab drivers and chauffeurs,8214,x,13973 443 | Driving instructors,8215,x,29721 444 | Mobile machine drivers and operatives,822,28402,30644 445 | Crane drivers,8221,37081,41031 446 | Fork-lift truck drivers,8222,25267,26597 447 | Agricultural machinery drivers,8223,22941,25887 448 | Mobile machine drivers and operatives n.e.c.,8229,30147,31768 449 | Other drivers and transport operatives,823,50377,47580 450 | Train and tram drivers,8231,55546,55949 451 | Marine and waterways transport operatives,8232,x,27348 452 | Air transport operatives,8233,26781,27346 453 | Rail transport operatives,8234,47380,47711 454 | Other drivers and transport operatives n.e.c.,8239,x,26300 455 | Elementary occupations,9,14653,15263 456 | Elementary trades and related occupations,91,21105,22182 457 | Elementary agricultural occupations,911,20788,20784 458 | Farm workers,9111,21449,21413 459 | Forestry workers,9112,x,23425 460 | Fishing and other elementary agriculture occupations n.e.c.,9119,19541,19079 461 | Elementary construction occupations,912,23481,24436 462 | Elementary construction occupations,9120,23481,24436 463 | Elementary process plant occupations,913,20642,21876 464 | Industrial cleaning process occupations,9132,19783,20160 465 | " Packers, bottlers, canners and fillers",9134,19711,20270 466 | Elementary process plant occupations n.e.c.,9139,21881,23644 467 | Elementary administration and service occupations,92,12674,14110 468 | Elementary administration occupations,921,x,17745 469 | " Postal workers, mail sorters, messengers and couriers",9211,x,20383 470 | Elementary administration occupations n.e.c.,9219,x,13552 471 | Elementary cleaning occupations,923,8777,10839 472 | Window cleaners,9231,x,16396 473 | Street cleaners,9232,x,x 474 | Cleaners and domestics,9233,8209,9978 475 | " Launderers, dry cleaners and pressers",9234,15225,14632 476 | Refuse and salvage occupations,9235,20433,20861 477 | Vehicle valeters and cleaners,9236,18580,17781 478 | Elementary cleaning occupations n.e.c.,9239,19332,19815 479 | Elementary security occupations,924,10838,14722 480 | Security guards and related occupations,9241,25385,24996 481 | Parking and civil enforcement occupations,9242,20026,18443 482 | School midday and crossing patrol occupations,9244,3093,3894 483 | Elementary security occupations n.e.c.,9249,x,19848 484 | Elementary sales occupations,925,12847,13166 485 | Shelf fillers,9251,12764,13141 486 | Elementary sales occupations n.e.c.,9259,13206,13384 487 | Elementary storage occupations,926,21344,22384 488 | Elementary storage occupations,9260,21344,22384 489 | Other elementary services occupations,927,8965,10092 490 | Hospital porters,9271,20407,21003 491 | Kitchen and catering assistants,9272,9730,10624 492 | Waiters and waitresses,9273,7096,8821 493 | Bar staff,9274,7644,9231 494 | Leisure and theme park attendants,9275,x,6316 495 | Other elementary services occupations n.e.c.,9279,15426,14021 496 | Not Classified,,, 497 | --------------------------------------------------------------------------------