Візуалізація ринку здобувачів з допомогою R

Ринок праці являє собою класичне формування попиту і пропозиції на робочу силу. І якщо з боку попиту на працю, багато кадрові агентства і портали з пошуку роботи являють собою деяку аналітику щодо наявних пропозицій (правда, не завжди в необхідному вигляді). То з боку пропозиції (здобувачів) аналітики набагато менше, та й та, що є, не є універсальною для кожного, і найчастіше являє собою просто зріз з бажаного доходу в якихось спільних сферах, або просто за назвою резюме.
image
Мені ж був цікавий інструмент, який за довільною вибіркою резюме (за назвою, ключовими словами тощо) показував би основні характеристики вибірки, розподіл зарплат, віку, і багато іншого, як у графічному вигляді, так і у вигляді довільних перцентилей. Підсумок мого бажання, нижче під катом.

Збір даних

Отже, для візуалізації даних, потрібні власне дані, найбільш великим джерелом таких даних є сайт HeadHunter. Знаючи, що у нього є API, я подумав, що ось зараз, з ним, швидко все отримаю, і не доведеться нічого парсити, але прочитавши його опис, побачив, що доступ до нього базі саме резюме можна отримати лише для роботодавців, і більш того, лише для цілей пропозиції роботи. Але нічого, і у відкритому доступі hh.ru є розділу резюме людей, які відкрили їх всьому Інтернету, і їх то ми бачимо, а їх досить багато, близько третини від загального числа. З цих людей нас цікавить ті, які вказали бажаний дохід, а їх переважна більшість – 80%.
У результаті збір даних, реалізував двома способами – збором даних використовуючи API import.io (спочатку, як більш швидкий для реалізації), і безпосередньо збір і парсинг здійснюється використовуючи R, цей спосіб, в результаті виявився на 20% швидше. Так максимальне число резюме — 5 000 (обмеження hh.ru) збираються за 3 хвилини, але зазвичай в цікавому запиті їх набагато менше, так що безпосередня тимчасова різниця між двома способами збору становить кілька секунд.

Огляд даних

Найімовірніше, така вибірка, є зміщеною, я виходжу з припущення, що люди в більшості своїй, відкривають резюме всьому інтернету, більше зацікавлені у пошуку роботи, і внаслідок цього, їх очікування щодо доходу, найімовірніше дещо занижені. Але без доступу до повної базі, перевірити цю гіпотезу, не можна, тому що є, то є.
Аналізуючи отримані результати, завжди можна пам'ятати про цю зміщення, і, наприклад, накидати кілька відсотків на отримані результати. Також вирішив додатково розділяти вибірку на дві частини: резюме, оновлене до півроку і старше, для оцінки тенденції, є горезвісне вплив кризи на очікування і вік шукачів або ж ні.

Графічний веб-інтерфейс

Так як формування вихідного запиту на сайті hh, досить потужний, то недоцільно окремо дублювати його в додатку R-Shiny, тому вихідний довільний запит формується на самому сайті hh, а в додатку треба просто вказати цю гіперпосилання (в даному прикладі використаний наступний запит (сам не зацікавлений у такому запиті): Москва, IT/Телеком, Програмування/розробка, досвід від 3 років). Дана гіперпосилання автоматично перетворюється у висновок ста оголошень на сторінку (для прискорення збору даних), і здійснюється збір даних (без заходу всередину резюме), так як основні характеристики вибірки вже вказані на вихідній сторінці. Після необхідних перетворень (виключення резюме без рублевої зарплати і віку, якщо це не було зроблено на самому сайті hh, обробки дат резюме), крім зведеної картинки із заголовку поста, будуються різні діаграми по даній вибірці, вони показані на рис. 1, 3. Зроблено це все, використовуючи пакет Shiny Dashboard. По діаграмах рис.1 можна побачити щільності розподілів, як зарплат, так і віків, із зазначенням децилей цих значень (до речі, візуально видно, що якісно очікування шукачів більше півроку тому і зараз – не відрізняються).

image
Рис. 1. Щільності розподілів віків і зарплат з зазначенням децилей

Також в окремому пункті бічного меню (мал. 2), виводяться всі резюме в зручному табличному вигляді, в якому додатково сортуванням або пошуковими фільтрами, можна знайти що-небудь конкретне.

image
Рис.2 Таблиця даних

На останній діаграмі (рис. 3) можна побачити, як основні характеристики доходу (мінімум, три квартиля, максимум і викиди) за конкретного віку, так і загальну тенденцію по доходу (крім діаграми розсіювання заголовку поста, на якій вказана сглаживающая крива).

image
Рис.3 Боксплот (розподіл доходу за віком)

Висновок

У черговому пості про R, я хотів показати, що багато довільні «інформація навколо нас» можна швидко і легко обробити і представити в наочному і більш зручному для сприйняття вигляді. В даному випадку, можна, наприклад, оцінити як «широкий» погляд на галузь, сферу праці, або ж навпаки, «вузький» — максимально деталізувавши свій запит по багатьом параметрам (ключовими словами, напрямом), побачити основні тенденції.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.