Руководство по тенденциям в области науки о данных с использованием Python с использованием методов визуализации данных.

Наука о данных — одна из самых крутых областей в последние годы. Многие люди из разных слоев общества перешли в эту область. Но сохраняется ли эта тенденция?

Сегодня мы обработаем набор данных о зарплатах в науке о данных 2023 и изучим тенденции в науке о данных с помощью методов визуализации данных. Вот темы, которые мы рассмотрим в этом блоге:

  • 10 самых популярных профессий в 2023 году
  • Уровни опыта в науке о данных
  • Типы занятости
  • Заработная плата по должностям
  • Заработная плата по видам занятости
  • Заработная плата по годам работы

Начнем с загрузки набора данных.

Загрузка набора данных

Набор данных, который мы будем использовать, — это набор данных зарплаты в науке о данных 2023 на Kaggle.

Сначала мы загрузим этот набор данных с помощью Pandas. Эта библиотека — замечательная библиотека для выполнения манипуляций с данными.

import pandas as pd
df=pd.read_csv('ds_salaries.csv')

Хорошо, мы загрузили набор данных. Давайте продолжим и попробуем понять набор данных, используя несколько методов в Pandas.

Ссылку на блокнот можно найти здесь.

Понимание набора данных

Прежде чем делать выводы о наборе данных, давайте немного разберемся с этим набором данных. Во-первых, давайте посмотрим на первые пять строк набора данных с помощью метода head.

df.head()

Как видите, в наборе данных есть такие столбцы, как год работы, уровни опыта, такие как SE (старший) и EN (младший), типы занятости, такие как FT (полный рабочий день) и CT (контракт), название должности, зарплата и скоро.

Хорошо, мы кратко рассмотрели столбцы набора данных. Теперь давайте посмотрим на количество строк и столбцов в наборе данных с помощью метода shape.

df.shape

# Output
(3755, 11)

Как видите, в наборе данных 3755 строк и 11 столбцов. Этот набор данных достаточно велик, чтобы делать выводы. Давайте продолжим и подробнее рассмотрим свойства столбцов в наборе данных с помощью метода info.

df.info()

Здесь вы можете увидеть имена столбцов, номера столбцов, отсутствующие данные и типы столбцов. Как видите, в столбцах нет пропущенных данных. Мы можем использовать метод isnull для проверки отсутствующих данных. Обратите внимание, что мы можем увидеть все недостающие данные в каждом столбце, используя метод sum. Чтобы просмотреть все отсутствующие данные во всем наборе данных, мы можем использовать два метода sum, например:

df.isnull().sum().sum()

# Output
0

Как мы и ожидали, в наборе данных нет пропущенных данных. Набор данных довольно чистый. Конечно, реальные наборы данных не всегда чисты. Давайте продолжим и посмотрим на количество уникальных значений в столбцах.

df.nunique()

Столбец work_year имеет 4 уникальных значения. Позвольте мне показать вам эти годы с помощью метода value_counts.

df["work_year"].value_counts()

# Output:
2023    1785
2022    1664
2021     230
2020      76
Name: work_year, dtype: int64

Как видите, в наборе данных 4 разных года. В 2023 году данных больше, чем в любой другой год.

До сих пор мы загрузили набор данных и использовали некоторые методы для понимания набора данных. Перейдем к выводам из набора данных. Во-первых, позвольте мне изучить 10 самых популярных профессий в 2023 году.

10 лучших профессий в 2023 году

Одним из важнейших этапов анализа данных является визуализация данных. С визуализацией данных вы можете лучше понять свои данные и построить отличные модели. Прежде чем визуализировать данные, давайте импортируем библиотеки, которые мы будем использовать, и установим темы.

import matplotlib.pyplot as plt
import seaborn as sns
sns.set_theme()
sns.set(rc = {"figure.figsize":(10,6), "figure.dpi":300})

Как мы видели выше, в наборе данных 93 различных названия должностей. Теперь давайте посмотрим на 10 самых популярных должностей в 2023 году. Сначала выберем 2023 год и столбец job_title, а затем нарисуем гистограмму, чтобы увидеть 10 самых популярных должностей.

# Filtering
jobs = df[df['work_year']==2023]['job_title'].value_counts().nlargest(10).reset_index()
# Creating graphic objects
fig, ax = plt.subplots()
# Drawing the barplot
ax = sns.barplot(ax = ax, data=jobs, y = jobs['index'], x = jobs.job_title)
# Setting the labels
ax.set(ylabel='Job Titles',xlabel='Counts', title='Top 10 Job Titles in 2023')
# Adding labels to the bars in the plot
ax.bar_label(ax.containers[0], padding = 2)

Как видите, инженеры данных находятся на первом месте, за ними следуют специалисты по данным. Это потому, что проектирование данных — это новая тенденция.

Инженеры данных играют решающую роль в проектах по науке о данных. Что делает дата-инженер, спросите вы? Короче говоря, инженеры данных готовят данные, используя конвейеры для построения модели.

Круто, мы увидели 10 лучших должностей. Теперь давайте продолжим и посмотрим на их уровень опыта.

Уровни опыта

Уровень опыта относится к уровню квалификации и опыта в области науки о данных, который включает в себя навыки в таких областях, как анализ данных, статистика, машинное обучение, визуализация данных и программирование.

В этом разделе мы рассмотрим столбец уровня опыта. Во-первых, давайте посмотрим на уникальные значения в этом столбце.

df['experience_level'].unique()

# Output:
array(['SE', 'MI', 'EN', 'EX'], dtype=object)

Как видите, есть 4 разные категории опыта. Заменим эти значения их полными именами.

df['experience_level'] = df['experience_level'].replace('EN','Entry-level/Junior')
df['experience_level'] = df['experience_level'].replace('MI','Mid-level/Intermediate')
df['experience_level'] = df['experience_level'].replace('SE','Senior-level/Expert')
df['experience_level'] = df['experience_level'].replace('EX','Executive-level/Director')

Теперь давайте рассмотрим уровни опыта сотрудников в области науки о данных.

# Creating graphic objects
fig, ax = plt.subplots()
# Calculating values for each category 
sns.countplot(ax = ax, data = df, x = df.experience_level)
# Setting the labels
ax.set(xlabel='', ylabel='Counts', title='Experience Levels')
# Adding labels to the bars in the plot
ax.bar_label(ax.containers[0])

Как видите, у старших должностей больше всего, за ними следуют средние и младшие должности. Должностей на уровне директоров меньше, чем на других уровнях.

Хорошо, мы видели уровень опыта. Теперь давайте продолжим и посмотрим на типы занятости

Типы занятости

В последние годы наблюдается заметный рост увольнений, что побудило многих работников искать альтернативные формы занятости. Одним из самых популярных вариантов является внештатная работа, которая становится все более жизнеспособной благодаря достижениям в области технологий.

Рассмотрим виды занятости в сфере науки о данных. Во-первых, позвольте мне взглянуть на уникальные значения в столбце employment_type.

df['employment_type'].unique()

# Output:
array(['FT', 'CT', 'FL', 'PT'], dtype=object)

Как видите, существует 4 различных типа занятости. Переименуем их методом rename.

df['employment_type'] = df['employment_type'].replace('FT','Full-Time')
df['employment_type'] = df['employment_type'].replace('PT','Part-Time')
df['employment_type'] = df['employment_type'].replace('CT','Contract')
df['employment_type'] = df['employment_type'].replace('FL','Freelance')

Теперь рассмотрим цифры каждого вида работ по уровню опыта.

# Creating graphic objects
fig, ax = plt.subplots()
# Calculating values for each category
sns.countplot(ax = ax, data = df, x = df.employment_type, hue = 'experience_level')
# Setting the labels
ax.set(xlabel='', ylabel='Counts', title='Number of Employment Types')
# Adding labels to the bars in the plot
ax.bar_label(ax.containers[0])
ax.bar_label(ax.containers[1])
ax.bar_label(ax.containers[2])
ax.bar_label(ax.containers[3])

Как видите, здесь на постоянной основе занято немалое количество людей. Среди штатных сотрудников преобладают старшие. Мы наблюдаем, что фриланс менее распространен в наши дни.

Отлично, мы увидели виды занятости. Перейдем к рассмотрению средней заработной платы по должностям.

Заработная плата по должностям

Наука о данных значительно выросла за последние годы. В этой области появилось много названий должностей. Давайте посмотрим на средние зарплаты по должностям.

# Filtering and grouping
job_title_salary = df['salary_in_usd'].groupby(df['job_title']).mean().round(0).nlargest(15).sort_values(ascending = False).reset_index()
# Setting the figure size
plt.figure(figsize=(25,9))
# Creating graphic objects
fig, ax = plt.subplots()
# Drawing the bar plot
ax = sns.barplot(ax = ax, data = job_title_salary , y = job_title_salary.job_title, x = job_title_salary.salary_in_usd)
# Setting the labels
ax.set(ylabel='Job titles',xlabel='Salary in usd', title='Top 15 Average Salaries by Job Titles')
# Adding average salaries to the bars in the plot
ax.bar_label(ax.containers[0], padding = 2)

Как мы и ожидали, средняя заработная плата тех, кто обычно занят на руководящем уровне, выше. Из-за тенденции облачных вычислений архитектор облачных данных является второй самой высокооплачиваемой профессией.

Хорошо, мы покрыли средние зарплаты для должностей. Перейдем к средней зарплате.

Заработная плата по типам занятости

Мы все задаемся вопросом о заработной плате, связанной с областью, в которой мы работаем. Это важный фактор, который может повлиять на наш выбор карьеры и общую удовлетворенность работой.

Давайте посмотрим на средние зарплаты для разных уровней опыта.

# Grouping and filtering
avg_salaries = df.groupby('employment_type')['salary_in_usd'].mean().round(0).sort_values(ascending = False).reset_index()
# Creating graphic objects
fig, ax = plt.subplots()
# Drawing the bar plot
sns.barplot(ax =ax,data = df , x = 'employment_type', y = 'salary_in_usd',errorbar = None, hue = 'work_year')
# Setting the labels
ax.set(xlabel='', ylabel='Dollars', title='Average Salaries in Dollars Per Year')
# Adding 2013 average salaries to the bars in the plot
ax.bar_label(ax.containers[3], padding = 2)

Как видите, средняя заработная плата за полный рабочий день с годами увеличилась. Это показывает, что компании заботятся о науке о данных. Вторые по величине зарплаты на участке принадлежат фрилансерам, что является явным свидетельством растущей тенденции в фриланс-работе.

Круто, мы видели средние зарплаты по уровню опыта. Давайте продолжим и узнаем средние зарплаты по годам работы.

Заработная плата по годам работы

Наука о данных стала заметной областью в последние годы, и стоит изучить, отражается ли эта тенденция на заработной плате. Давайте подробнее рассмотрим текущее состояние зарплат в области науки о данных, чтобы лучше понять эту динамичную и быстро развивающуюся область.

Для этого сначала выделим зарплаты, затем сгруппируем эти данные по годам и методом среднего найдем средние.

# Filtering and grouping
year_based_salary = df['salary_in_usd'].groupby(df['work_year']).mean()
# Setting the labels
plt.title("Average Salaries based on Work Year")
plt.xlabel('Work Year')
plt.ylabel('Salary')
# Drawing the line plot
sns.lineplot(x=['2020', '2021', '2022','2023'], y=year_based_salary)
plt.show()

Как видите, средняя заработная плата на профессиях, связанных с данными, увеличивается с каждым годом, причем особенно значительный скачок наблюдается между 2021 и 2022 годами. Эта тенденция подчеркивает растущий спрос на квалифицированных специалистов в этой области.

Заворачивать

В этом блоге мы рассмотрели тенденции и зарплаты в науке о данных. Когда мы изучаем графики, мы можем сказать, что популярность науки о данных сохраняется. Инженеры данных больше всего заняты в области науки о данных, за ними следуют специалисты по данным.

Возможно, вы задаетесь вопросом, в какой сфере вам лучше всего заняться карьерой. Позвольте мне рассказать немного больше об этих областях.

Если вы проявляете большой интерес к таким областям, как облачные вычисления, базы данных и программирование, то карьера в области инженерии данных может быть правильным выбором. С другой стороны, если вы увлечены исследованиями, то карьера в области науки о данных может вам подойти. Если вам нравится создавать модели и запускать их в производство, машинное обучение может быть лучшим вариантом. Для тех, кто любит анализировать данные и визуализировать их, аналитика данных может больше соответствовать их интересам.

Ссылку на блокнот, который я использовал в этом блоге, можно найти здесь.

Вот и все. Спасибо за прочтение. Подключим YouTube | Средний | Твиттер | Инстаграм | ЛинкедИн | Каггл





Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:

  • 👏 Хлопайте за историю и подписывайтесь на автора 👉
  • 📰 Смотрите больше контента в публикации Level Up Coding
  • 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
  • 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"

🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу