1. Уважаемые посетители форума ЭСПП!

    Для просмотра сообщений достаточно прокрутить данное сообщение, а для просмотра списка разделов - вызвать "Каталог".

    Для комментариев необходимо предварительно ознакомиться c Правилами Форума и пройти регистрацию!



    Для того, чтобы быстро ознакомится с возможностями форума, загляните в подраздел Для новичков.

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

Аналитика для хантинга аналитиков

Тема в разделе 'Тукачев Ю.А.', создана пользователем Тукачев Ю.А., 2 июл 2022.

  1. Тукачев Ю.А.

    Тукачев Ю.А. Администратор Команда форума

    Аналитика для хантинга аналитиков
    #аналитика#зарплаты#дашборд#визуализация_данных#рынок_кандидатов#it#ggplot2#r
    Ранее я уже писал об интерактивном дашборде "Анализ рынка вакансий аналитики и BI" – совместный проект Романа Бунина и Николая Валиотти. Сейчас авторы сделали его в виде карточек по разным направлениям аналитики – удобно сравнить разные профессии (см. Карточки на Табло Паблик). Необходимо учитывать, что это вакансии для Москвы и Питера по данным HH, а зарплаты указаны средними "чистыми".
    [​IMG]
    Карточки на Табло Паблик
    На так давно я нашёл исследование "Аналитика для хантинга аналитиков (продуктовых, маркетинговых и data scientists)" от команды хантинг-агентства NEW.HR.
    Данный материал-лонгрид (!) уже основывается на данных, полученных авторами напрямую у кандидатов из разных продуктовых IT и Digital-компаний и не находящихся в активном поиске работы (Москва, либо удаленный формат работы в московских компаниях). В исследовании рассматривается (см. ссылки 1 и 2):
    • сколько денег хотят аналитики, которые не ищут работу и как можно повлиять на их мотивацию
    • что может влиять на стоимость аналитиков (факторы, повышающие ценность на рынке труда)
    • основные компетенции аналитиков разного уровня
    • какие типовые задачи решают аналитики разных специализаций и какими инструментами пользуются и т.п.
    Меня больше заинтересовали графики, которых много, они также есть в самой презентации, состоящей из 83 слайдов с оглавлением :
    [​IMG]
    Превью отчёта NEWHR.ru
    В отчёте представлено сравнение максимальных и минимальных значений зарплатных ожиданий аналитиков (кандидатов, не находящихся в активном поиске работы) в виде сгруппированной столбчатой диаграммы:
    [​IMG]
    Зарплатные ожидания маркетинговых аналитиков
    Как изящно визуализировать разницу между двумя показателями? Традиционный excel-style – выбрать сгруппированную столбчатую диаграмму (grouped bar chart). Столбчатые диаграммы могут быть не всегда идеальным вариантом визуализации данных, особенно когда у вас есть значения, которые очень близки друг к другу, то становится очень сложно визуализировать разницу между столбцами.
    Точечный график это одна из моих любимых альтернатив сгруппированной столбчатой диаграмме. Точечные графики предложил Уильям Кливленд (Cleveland W.), один из пионеров исследований в области визуализации данных. В своей работе, написанной в соавторстве с Робертом Макгиллом (Robert McGill), У. Кливленд экспериментально показал, что столбиковые диаграммы, используемые для изображения сгруппированных значений количественных переменных, визуально плохо воспринимаются людьми (см. Cleveland W. S., McGill R. (1984) Graphical perception: theory, experimentation, and application to the development of graphical methods. Journal of the American Statistical Association 79(387): 531-554). В качестве альтернативы и были предложены точечные диаграммы. Точечный график использует точки, соответствующие значениям данных, иногда соединяемые линиями или стрелками.
    Разновидность точечного графика – диаграмма гантелей (dumbbell chart) или иногда называемой диаграммой разрыва (gap chart), можно также встретить название "диаграмма ДНК" (в силу похожести на спираль ДНК):
    [​IMG]
    Диаграмма ДНК
    Диаграмма гантелей – точечная диаграмма, в которой две точки соединены линией, что означает изменение (размах, диапазон, разницу) между двумя точками данных для каждого измерения. Точки данных соответствуют одной оси, а группы – другой, которые не обязательно должны быть упорядочены определенным образом, хотя сортировка может значительно улучшить восприятие визуализации. По сравнению с обычной столбчатой диаграммой гантельная диаграмма относительно более визуально привлекательна и выглядят намного чище, так как требует меньше чернил и меньше места (см. data-ink ratio или соотношение данных и чернил, предложенное Эдвардом Тафти). См. также 50 примеров точечных графиков для вдохновения.
    Попробуем по-другому визуально представить зарплатные ожидания маркетинговых аналитиков.
    [​IMG]
    Для этого воспользуемся данными из этой таблице в PDF-отчёте:
    [​IMG]
    Мы могли бы вручную скопировать данные из таблицы, но техника "копи-паст"– не инструмент настоящих аналитиков. Всё будем делать с помощью R, тем более, что есть специализированный пакет tabulizerдля извлечения текста/данных из PDF.
    # Извлекаем таблицу с мин и макс ЗП ожиданиями из PDF-файла презентации
    # remotes::install_github(c("ropensci/tabulizerjars", "ropensci/tabulizer"))
    library(tabulizer)
    library(tidyverse)
    library(glue)
    library(ggtext)
    library(showtext)
    library(here)
    library(ragg)

    # Загружаем PDF-файл презентации
    pdf_link <-
    "https://vacancy.newhr.ru/data/data/...lytics_salary_IT-Digital_2020_from New.HR.pdf"
    out <- extract_tables(pdf_link)

    # Сохраняем исходник
    # saveRDS(out, "data_source.Rds") # сохраняем исходник
    # out <- readRDS("data_source.Rds") # загружаем локально исходник

    header <- out[[1]][3, 2:6]
    temp_table <- as.data.frame(out[[1]][4:20, 2:7])

    #менеджеры и аналитики
    tbl_01 <- temp_table[1:4,]
    names(tbl_01) <- c("jobs", header)
    tbl_01$`Head | Chief`[1] <- tbl_01$Lead[1]
    tbl_01$group <- "Аналитики"
    tbl_01$group[1] <- "Менеджеры"

    # разработчики
    tbl_02 <- temp_table[5:16, 2:5]
    names(tbl_02) <- c("jobs", header[-c(1, 5)])
    tbl_02$group <- "Разработчики"

    # CTO
    tbl_03 <- temp_table[17, 1:2]
    names(tbl_03) <- c("jobs", "Head | Chief")
    tbl_03$group <- "Директор"

    data_final <- bind_rows(list(tbl_01, tbl_02, tbl_03))
    data_final <- data_final %>%
    pivot_longer(-c(jobs, group), names_to = "exp", values_to = "wage") %>%
    na.omit() %>%
    separate(wage, into = c("min", "max"), sep = "-") %>%
    mutate_at(c("min", "max"), as.numeric) %>%
    mutate(
    dif = max - min,
    percent = round((max - min)/min * 100),
    percent_text = paste0("+", percent, "%"))
    data_final$exp <- factor(data_final$exp, levels = header)
    data_final
    Мы извлекли исходную таблицу с данными из PDF-отчёта, дополнив её несколькими расчетными столбцами (разница между макс и мин ЗП в абсолютных и % значениях):
    [​IMG]
    Теперь можно визуализировать данные по отдельным категориям аналитиков.
    # Загрузим шрифт для графика
    font_add_google("Istok Web", family = "Istok Web")
    font <- "Istok Web"
    data_final %>%
    filter(jobs == "Маркетинговые") %>%
    ggplot(aes(exp, min)) +
    geom_segment(aes(
    y = min,
    x = exp,
    yend = max,
    xend = exp
    ), size = 1.5,
    color = "gray") +
    geom_point(stat = 'identity', color = "#003f7d", size = 10) +
    geom_point(aes(exp, max),
    stat = 'identity',
    color = "#ff8e00",
    size = 10) +
    geom_text(aes(exp, min - 10, label = min),
    size = 5,
    color = "#003f7d",
    family = font,
    show.legend = FALSE) +
    geom_text(aes(exp, max + 10, label = max),
    size = 5,
    color = "#ff8e00",
    family = font,
    show.legend = FALSE) +
    geom_text(aes(exp, (min + dif/2), label = glue("+{dif}")),
    size = 4, vjust = -0.35,
    color = "gray70",
    family = font,
    show.legend = FALSE) +
    scale_y_continuous(breaks = seq(0, 600, 25), limits = c(50,275)) +
    labs(
    title = glue("Зарплатные ожидания маркетинговых аналитиков"),
    subtitle = glue("<b style='color:#003f7d;'>Минимальная</b> и <b style='color:#ff8e00;'>максимальная</b> заработная плата после удержания налогов"),
    y = "Заработная плата, тыс. рублей",
    x = "Грейд",
    caption = glue("Источник данных: newhr.ru\nВизуализация: Юрий Тукачев, июнь 2022")
    ) +
    coord_flip() +
    theme_minimal(base_size = 18, base_family = "Josefin Slab") +
    theme(
    panel.grid.major.y = element_blank(),
    panel.grid.minor.x = element_blank(),
    panel.border = element_blank(),
    axis.title = element_text(size = 18),
    text = element_text(
    family = font,
    color = "#53565A",
    size = 20
    ),
    panel.background = element_blank(),
    plot.title.position = "plot",
    plot.caption.position = "plot",
    plot.caption = element_text(
    color = "gray",
    size = 14,
    hjust = 1
    ),
    plot.margin = margin(25, 25, 10, 25),
    plot.subtitle = element_markdown(
    hjust = 0,
    size = rel(0.9),
    family = font
    ),
    plot.title = element_text(
    size = rel(1.3),
    lineheight = 0.7,
    family = font,
    face = "bold",
    color = "gray20"
    )
    )

    В результате получаем диаграмму гантелей:
    [​IMG]
    Не забываем сохранить:
    ggsave(
    here("salary.png"),
    device = agg_png,
    bg = "white",
    width = 7.5,
    height = 4.5,
    dpi = 300,
    scale = 1.5
    )
    Итоговый график можно скачать по ссылке.
    Ссылки:
    1. статья: https://vc.ru/hr/136050-analitika-d...v-produktovyh-marketingovyh-i-data-scientists
    2. презентация: https://vacancy.newhr.ru/data/data/...lytics_salary_IT-Digital_2020_from New.HR.pdf
    Что еще интересного по теме зарплат в IT?
    Основной канал: https://t.me/People_Analytics