How Are Tech Salaries Shaping Up in 2020-2024? Part 1
by John Mike Asuncion
Executive Summary
This Level 1 analysis examines tech salary trends from 2020 to 2024 using a dataset of 57,194 salary records. The report addresses three key objectives to provide actionable insights for an international HR consultancy:
- Dataset Scope: Dataset contains 57,194 salary records spanning 2020–2024, offering a 5-year view of tech salary trends.
- Salary Comparison between Data Scientists and Data Engineers: Data Scientists earn an average salary of $159,397 (USD), surpassing Data Engineers at $149,315, a 6.8% premium reflecting the demand for data science expertise.
- Remote Work in the US: Of the full-time US-based employees, 11,163 work 100% remotely, highlighting the prevalence of remote work in the tech industry.
Brief Recommendations: Offer competitive salaries above $160,000 for Data Scientists and $150,000 for Data Engineers to attract top talent, expand remote work options to align with industry trends, and enhance data collection by including company revenue and industry sector for more granular insights.
I. Background
Tech companies face fierce competition for talent, making salary insights critical for attracting and retaining skilled professionals. This analysis leverages a global salary dataset to uncover trends in job roles, experience levels, and remote work, helping an international HR consultancy stay competitive. With remote work surging and tech roles diversifying, understanding these drivers is more vital than ever.
II. Objectives
This report aims to provide actionable insights into tech salary trends by addressing the following goals:
- Determine the dataset's scope: number of records and years covered.
- Compare average salaries (USD) for Data Scientists vs. Data Engineers.
- Quantify full-time US employees working 100% remotely.
III. Data Description
The dataset, sourced from a survey hosted by an HR consultancy, is stored in salaries.csv
. Each row represents an employee’s salary record for a given year. The columns are as follows:
Column Name | Description | Expected Data Type |
---|---|---|
work_year | Year of work | int |
experience_level | Level of experience (e.g., EN, MI, SE, EX) | str |
employment_type | Type of employment (e.g., FT, PT, CT, FL) | str |
job_title | Job title of the employee | str |
salary | Salary amount in original currency | int |
salary_currency | Currency of the salary | str |
salary_in_usd | Salary amount converted to USD | int |
employee_residence | Country code of employee residence | str |
remote_ratio | Remote work ratio (0, 50, 100) | int |
company_location | Country code of company location | str |
company_size | Size of the company (S, M, L) | str |
Let's load the data to begin our analysis.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
salaries_df = pd.read_csv('salaries.csv')
salaries_df.head()
salaries_df.info()
IV. Data Preparation
Data Quality Check and Data Cleaning
Data preparation ensures reliable analysis by addressing potential pitfalls. Each check builds a solid foundation for trustworthy insights.
- Checking Column Headers
Headers guide our analysis. Missing or misnamed columns, like salary_in_usd
, could derail salary comparisons.
salaries_df.columns.tolist()
- Checking for Missing Values
Missing data, such as blank salaries, skews results. Checking ensures completeness for accurate averages.
salaries_df.isnull().sum()
- Checking Data Types
Incorrect types, like text for salary_in_usd
, prevent calculations. Verification ensures compatibility.