Привет, Хабр! (И тебе, HR, который ставит в вакансию «Python, SQL, Linux, Docker, K8s, Spark, Airflow, английский C1, опыт 1-3 года, зарплата 40-60К». Особенно тебе.)

Сегодня будем препарировать рынок Python-разработки в России. По-настоящему. С графиками, цифрами и верой в светлое будущее.

Поехали.

P.S Если вводная часть того как я анализировал не интересна смело переходи к главе 2, не мучай себя избыточной информацией))

P.P.S Также хочу зарее предупредить, что многие наблюдения я могу утрировать, высмеивать. Но неизменными и честными остаются данные на графиках и таблицах. Так что если вам нужна серьёзность и точность данных, листайте смотрите и не читайте, я предупредил))

Глава 0. Зачем я это сделал и почему пожалел

Идея была простая: «А давай посмотрим, сколько на самом деле платят Python-разработчикам в России?». Звучит как пятничный pet-project на вечер. По факту - это были 9 месяцев парсинга, со всеми возможными приколами, то я накосячил и оставил разделитель csv в виде запятой, даже не задумавшись, что запятые в тексте везде, то hh API заблокировали и с апреля я наблюдаю статус 403 и мой план собрать большую аналитику за 1, а то и 2 года сорвался. Ну ладно, и так сойдёт, эта аналитика оказалась как и предполагалось весьма интересной и для новичков в IT и для тех кто уже долго крутится на этом рынке. Так что едем дальше...

Что хотелось узнать:

  • Сколько правда платят?

  • Где платят больше?

  • Какие навыки сейчас в тренде, а какие пора удалять из резюме?

  • Кто идеальный кандидат «по версии hh» и можно ли таким стать без продажи почки?

Вкратце для шустрых комментаторов - что получилось узнать:

  • Сыктывкар платит больше Москвы (нет, но да, но нет).

  • В Тбилиси медианная зарплата Data Scientist - 450 000 ₽ (n=4, конечно, но звучит).

  • Python как навык за 8 месяцев подешевел на 7.9 п.п. в Python-вакансиях. Сами вдумайтесь.

  • HR-ы Краснодара решили, что вилка 30К-80К - это нормальная вилка для одной вакансии.

Но обо всём по порядку.

Глава 1. Боль сбора данных: как hh.ru меня подставил

Изначально план был такой: парсим данные раз в две-четыре недели, копим год, потом красиво анализируем. Чисто и наивно.

Что пошло не так (всё):

  1. Запятая как разделитель в CSV. Гениальное решение для языка, в котором запятая - это половина пунктуации. Спасибо, прошлый я. Первый датасет пришлось переразбивать руками-регулярками.

  2. hh.ru в апреле 2026 убил API для вакансий. Просто вот так. Парсишь ты вечером, всё хорошо, утром просыпаешься -403 Forbidden, finita la commedia. Поэтому моя «коллекция» обрывается на апреле 2026. Это уже не датасет - это археологический срез последнего открытого месяца((( Плак-плак.

  3. Распределение по датам - это слёзы статистика. Вот моя «равномерная» выборка:

Дата

Вакансий

2025-10-05

9434

2025-08-01

8793

2025-09-01

8599

2026-04-07

6635

2026-01-26

6474

2026-03-23

5990

2026-02-10

5288

2025-12-04

4769

2026-01-27

2819

2026-02-11

1680

2026-02-09

1526

2025-12-03

346

2026-04-08

250

Да, в ноябре я чем-то был серьёзным занят. Если кто из работодателей нанимал в ноябре - извините, вас в моих данных нет.

Итого: ~62 тысячи вакансий, 9 месяцев, запрос Python (поиск по навыку). Стек - Python, pandas, matplotlib, sklearn, networkx, Jupyter в VS Code, локально, без облаков. Олдскул.

Ну на вводной части всё, фух..., теперь к тому ради чего мы здесь все собрались.

Глава 2. Что у нас по цифрам и кто все эти люди?

Прежде чем погружаться в зарплатные ужасы и географические аномалии, давайте посмотрим на рынок с высоты птичьего полёта. У меня в датасете два графика, которые отвечают на два самых базовых вопроса: «сколько вакансий?» и «кому они вообще нужны?». И оба графика, как водится, поднимают больше вопросов, чем ответов.

Динамика Python-вакансий по месяцам (2025-2026)
Динамика Python-вакансий по месяцам (2025-2026)

Мы видим среднее: 7825 вакансий в месяц. Звучит солидно. Пока не посмотришь на разброс.

Что бросается в глаза:

  1. Октябрь - пик найма. Бюджеты на следующий год ещё не утвердили, но «доедать» текущий нужно срочно. Классика корпоративной логики: «деньги остались - нанимаем, иначе срежут в следующем квартале».

  2. Декабрь - провал в -40%. 5115 вакансий против 9434 в октябре. HR-ы массово ушли в новогодний корпоратив прямо с середины декабря, и до 15 января их не существует как класса. Если вы искали работу в декабре 2025 - соболезную, рынок физически был закрыт.

  3. Январь - взрыв +82% за месяц. Самый резкий месячный рост за весь период наблюдения. Это не «рынок ожил» - это HR-ы вернулись из отпусков и одновременно опубликовали всё, что копили месяц. Если вы junior и думаете «когда искать работу» - получается ответ: январь-февраль. Не сентябрь, не «после праздников», а именно январь, пока пик ещё не съели быстрые соискатели.

  4. А что в Апреле? - в апреле всё, API быстренько отключили для парсинга вакансий, вот и мы видим только то что получилось успеть собрать.

Вывод для тех, кто ищет работу: рынок Python - это синусоида с периодом «новогодние праздники». Хочешь много вакансий - пиши резюме в январе. Хочешь спокойно собеседоваться без конкуренции - в декабре (только готовься, что отвечать будут после 15 января, и это нормально).

Вообщем по этому графику мы видим относительно предсказуемую картину. Идём смотреть дальше...

Теперь второй график. И вот он уже не «забавный», а скорее слегка пугающий.

Топ-10 IT-ролей в python по количеству
Топ-10 IT-ролей в python по количеству

Топ-10 покрывает 73.4% рынка. Остальные 26.6% размазаны примерно по 60 другим ролям - от «Геолога» до «Агента по недвижимости». Да-да, в Python-вакансиях. Сейчас разберём, как такое возможно.

Что важного видно:

1. «Программист» - это 27.7% рынка. Один из четырёх. Категория «Программист, разработчик» на hh - это огромный размытый ярлык, под который HR валит всё подряд: бэкенд, фронт, скрипт-кидди, embedded, geek-в-одной-каске. По факту это не роль, это «мы не знаем, как назвать, но нам нужен кто-то с Python». Когда в категории «Программист» вилка 30К-800К и медиана 150К - это не статистика, это шум.

2. Аналитиков больше, чем тестировщиков и дата-сайентистов вместе. Если сложить BI-аналитика (4984) + Аналитика (2309) + смежные - получается, что аналитика данных на hh почти догоняет разработку. И это не «вкатуны» - это реальные позиции с медианой 130-140К. Junior-у, который выбирает «куда вкатиться», стоит обратить внимание: вакансий аналитиков на единицу конкуренции, скорее всего, больше, чем у разработчиков.

3. Учитель Python - 2.5% рынка (1548 вакансий). Полторы тысячи вакансий за 8 месяцев. Это больше, чем тех. поддержка. Вот они, эти 1548 счастливых работодателей, каждый со своим понятием о справедливой оплате преподавания Python. От 30К за вечерние курсы до 200К в корпоративном университете - и всё это одна категория на hh.

4. «Другое» - 3589 вакансий, 5.7%. Внутри «Другого», лежит дикая смесь: от геймдева до промышленной автоматизации, от QA-автоматизаторов, которых не пометили QA, до криптотрейдеров. Вообщем те кого мало в РФ... Хотя криптотрейдеров сейчас развелось, но не об этом))

5. Системный администратор - 2568 вакансий с медианой 130К. Удивил. Я думал, профессия сисадмина уже растворилась в DevOps. Оказывается, нет - она живёт, дышит, и от неё требуют Python для автоматизации Bash-скриптов. Поэтому она и попала в выборку. Это тот самый случай, когда Python - не «специализация», а просто инструмент. Но важное уточнение и достаточно логичное, Системные администраторы в большем своём количестве нужны не в Москве.

Из всего этого следует одна неудобная мысль:

Рынок Python в России - это не рынок профессии. Это рынок ярлыков, и HR-ярлык на твоей вакансии влияет на твою зарплату сильнее, чем твой реальный стек.

Запомни это, когда в следующий раз будешь обновлять резюме. Не «что я умею», а «как меня пометит HR-фильтр» - вот настоящий вопрос. Грустно? Грустно. Но это и есть данные.

Глава 3. Зарплатное молчание: 62% вакансий просто не говорят, сколько платят

Но вот первый шок (хотя для тех кто часто листает hh это наверное и база), ради которого можно было дальше не копать.

Заработная плата в вакансии
Заработная плата в вакансии

Из ~62 000 Python-вакансий зарплату указали только 38%. Остальные - «по результатам собеседования», «достойная», «обсуждается с успешным кандидатом», «зависит от вашей квалификации» (то есть «мы посмотрим, сколько готовы дать именно тебе, чтобы было побольнее»). Реалии рынка: middle который только пришёл может получать в одной компании больше чем senior который работает в этой компании уже 10 лет.

Доля вакансий без указания зарплаты по топ-15 ролям
Доля вакансий без указания зарплаты по топ-15 ролям

Хуже всех молчат - внимание - аналитики и системные аналитики (77–83% без ЗП). Те самые ребята, которые сами по работе должны бороться с пропущенными значениями. Метаирония.

Лучше всех говорят (то есть указывают ЗП чаще) - учителя и педагоги. И, забегая вперёд, лучше бы они молчали.

От куда здесь Фармацевт-провизор? Я не знаю и даже не представлю почему hh разметил и вернул мне это как, что-то, что соответствует тегу python. Так что давайте это воспринимать как шум на примере которого мы можем сравнивать ЗП не с рынком IT. Ну или напишите в комментариях почему я не обработал данные настолько идеально, а я отвечу что мне было лень...

Глава 4. Зарплатная вилка: 80% - это, оказывается, «нормально»

Вот мой любимый график. Просто посмотрите:

Ширина вилки в python
Ширина вилки в python

Учителя - это отдельный жанр на hh. Когда я увидел «80% ширина вилки», я сначала подумал, что это баг в коде. Перепроверил трижды. Нет, не баг. Это просто работодатели сферы образования настолько не знают, сколько готовы платить, что вилка получается шире, чем у кого-либо.

Город-чемпион по ширине вилки - Краснодар (60%, n=149). Все, кто едет работать в Краснодар: вас ждёт лотерея. Победителей не предусмотрено. Но попытаться можно))

Москва тут, кстати, выглядит почти прилично - 35% ширина при n=3069. Видимо, столичные HR-ы хотя бы делают вид, что что-то знают про рынок.

И ещё бонусом один график по вилке:

Зарплатная вилка
Зарплатная вилка

Глава 5. География: Сыктывкар, Магадан и другие столицы Python

Самое весёлое случилось, когда я построил карту «роль × город» по медианным зарплатам. И тут понеслось.

Медианная зарплата: Роль × Город
Медианная зарплата: Роль × Город
Распределение зарплат
Распределение зарплат

Топ парадоксов:

  • Тбилиси, Data Scientist: 450 000 ₽ (n=4). Я перепроверил эти 4 вакансии. Реально 450К. То ли релокация в Грузию ещё в тренде, то ли там сидят оставшиеся «эмигранты с инвестициями».

  • Тбилиси, DevOps: 400 000 ₽ (n=3). Та же история.

  • Но с Тбилиси мы не закончили. Семь (7!) вакансий с медианой 50 000 ₽. Какие-то реальные семь работодателей верят в такие цифры, и мало того что верят, получается к ним кто-то ещё и приходит и работает, и платят им как кассиру в Пятёрочке. Точнее по-грузински Гудвил (грузинский супер-маркет). Короче разрабы python в Грузии не в цене, другое дело Data Scientist или DevOps.

  • Жуковский: 200К за разработчика. Это уже почти Москва. Логично.

  • Жуковский, учитель: 85К (n=5). В Жуковский python-учителю платят 85к. В Москве - 100к. Логистика, как видите, делает своё дело.

  • Дубна, программист: 175К (n=10). Дубна (физики, ОИЯИ, атомы) - ожидаемо.

И отдельно - Москва: 3069 разработческих вакансий, медиана 190k. То есть половина всего рынка Python в России находится в одном городе. Если кому-то ещё нужны доказательства, что у нас всё централизовано - вот вам централизация в одном heatmap.

Но, не стоит уже складывать чемоданы в Москву и ехать на Курский вокзал, сначала гляньте-ка на этот график:

Зарплатный разрыв с Москвой топ-20
Зарплатный разрыв с Москвой топ-20

Здесь я думаю и без моих комментариев всё понятно, но здесь не всё так просто...

Структура IT рынка по городам (Лайк если твой город больше 1% рынка)
Структура IT рынка по городам (Лайк если твой город больше 1% рынка)

Глава 6. Зарплатная динамика во времени: американские горки для DevOps

А теперь садитесь поудобнее. Я взял топ-4 ролей и построил динамику медианной ЗП по месяцам.

Что должно было получиться: плавный рост, лёгкая инфляция, всё предсказуемо.

Что получилось:

Зарплатная динамика топ-4 роли
Зарплатная динамика топ-4 роли
Зарплатная инфляция по ролям в python
Зарплатная инфляция по ролям в python

Внимание на DevOps. В августе 2025 - 230К. В январе 2026 - внезапное падение на -26% (heatmap показывает). К апрелю слегка восстановился, но всё равно в минусе. Самая дорогая инженерная роль в моих данных просела за 8 месяцев.

Я долго думал, что это значит. Версии:

  1. Хайп прошёл, DevOps стало много, ценник падает.

  2. Часть «дорогих» DevOps ушла в найм без публикации (вакансии для своих).

  3. Все DevOps уехали в Тбилиси и теперь работают за 400К оттуда (см. предыдущую главу).

А вот Data Scientist - это аттракцион не для людей со слабым вестибулярным аппаратом. Посмотрите на индекс:

Зарплатная инфляция: Медианная ЗП по ролям помесячно
Зарплатная инфляция: Медианная ЗП по ролям помесячно
Зарплатная инфляция по ролям (индекс, база = первый месяц)
Зарплатная инфляция по ролям (индекс, база = первый месяц)
  • Август 2025: 100%

  • Сентябрь 2025: 83% (-17%, что??)

  • Январь 2026: 164% (+64%)

  • Март 2026: 156%

  • Апрель 2026: 111%

Это не зарплата, это график биткоина. У меня единственное объяснение - маленькая выборка (n=344 за всё время) + редкие, но очень дорогие вакансии типа «ищем сеньора в банк за 500К». Одна такая вакансия в месяце с n=10 - и медиана улетает в космос.

Но если усреднить шум - рост реальный. Дата-сайентисты - единственная «инженерная» роль, которая стабильно растёт в цене. Учителям и тестировщикам это тоже удалось, но из совсем другой стартовой точки.

Короче DS новое золото для IT рынка... Как бы вы на это не смотрели...

Глава 7. Главный твист статьи: Python падает

Я долго смотрел на этот график, прежде чем понял, что я вижу. А вижу я вот что:

Доля упоминаний Python в вакансиях, помеченных как Python:

  • Август 2025: 62.8%

  • Февраль 2026: 54.9%

  • Дельта: -7.9 п.п.

То есть hh-теги - это, мягко говоря, не source of truth. Вакансия может быть помечена тегом Python, но в требованиях Python не упомянут. На графе навыков это видно отлично - Python-вакансии расцветают вокруг SQL, Linux, Docker, а сам Python всё чаще остаётся за кадром, в роли «ну и так понятно, что нужен». С этими курсами Python за 3 дня сам навык теряет свою ценность и вес. Его просто стало сложно оценивать и каждый год по +1000 желающих войти в IT. Обесценивают этот навык заставляя работодателей задрать планку отбора до небес хотя по итогу после трудоустройства ты сядешь и будешь писать всё тот же python-код изредко прибегая к этим вашим модным kubernetes, clickhouse, redis и тд

А сейчас держитесь крепче, будет нечто страшное и не слыханное ранее:

Растущие и падающие навыки
Растущие и падающие навыки

Да-да и ещё раз да. В Python-вакансиях растёт упоминание MS Excel. В вакансиях, где люди должны программировать на одном из лучших языков обработки данных. Excel. Я даже не знаю, плакать или открывать LibreOffice Calc и тренироваться. Ну конечно здесь можно оговориться, что к примеру для аналитика это важный навык, для преподавателя программирования это так же важный график, да, но сейчас 2026 год...

А ещё растут «софт-скиллы»: аналитическое мышление, работа с информацией. Это значит ровно одно: HR-ы поняли, что «знание Python» - это уже не выделяющий фактор, надо требовать что-то более душевное. Вроде «уметь думать». До такого мы дошли.

Топ-25 ключевых навыков в сфере Python разработки
Топ-25 ключевых навыков в сфере Python разработки

Теперь смотрим на топ навыков по встречаемости, всё очевидно, это просто вам для составления резюме. Берём топ 5, а лучше топ 10 навыков и добавляем в резюмешку, и готово, вы нужны 80% работодателей. Какой я оптимист)) Да?)

А теперь смотрите какой красивый граф я для вас нарисовал))

Граф сочетаемости навыков
Граф сочетаемости навыков

Что здесь можно увидеть? По сути ничего нового, но теперь становиться понятна связка одного навыка с другими. Здесь мы как будто в магазине и хотим сварить модную крутую кашу из видосика. Набираем крупу (Python), в месте с крупой берём молоко (sql), можно для вкуса взять масло (git), хотя оно как будто по умолчанию у всех уже в холодильнике есть, но типа взяли. Затем для красивой картинки и чтобы показать на фотке, что мы не просто кашу едим, покупаем ягод, роскошный максимум или базовый минимум, решайте сами (docker), так же подсластим сахарком тростниковым (kubernetes), ну или раз уж все на фотографиях с кашей улыбаются, берём хорошее настроение (Аналитическое мышление, ms excel, работа с большим объёмом информации).

P.S Про тарелку для каши я уже не говорю, это обязательно (linux).

И ещё бонусом:

Матрица сочетаемости навыков топ-30
Матрица сочетаемости навыков топ-30
Во сколько раз пара встречается чаще случайного
Во сколько раз пара встречается чаще случайного
Связи в парах по количеству
Связи в парах по количеству

Глава 8. Что я понял, пока всё это парсил

Несколько неудобных выводов, которые делают грустно, но полезно (сделали ещё выводы, пишите в комментах):

  1. Рынок Python в России - это рынок Москвы по большей части. Всё остальное - статистическая погрешность с n<300.

  2. 62% вакансий без зарплаты - это не «hh виноват», это рынок не хочет торговаться публично. Когда работодатель не пишет вилку - он экономит на тех, кто стесняется спросить.

  3. Теги hh.ru - это шум. Вакансия может быть помечена Python, в требованиях - «уверенный пользователь Excel и работа с большим объёмом информации». Кластеризация навыков (sklearn, KMeans) показывает огромный кластер C1, где Python, SQL и C++ свалены в одну кучу. Это не профессии - это попытка hh пометить хоть что-то.

  4. DevOps больше не «золотая жила», по крайней мере по медианам открытых ЗП. Возможно, рынок дозрел.

  5. Стагнация программистов в 0.0% - это, наверное, самое грустное число во всей статье. За 8 месяцев медианная ЗП Python-разработчика не выросла ни на копейку. При официальной инфляции это означает реальное падение примерно на 6-8%, но дамы и господа это по официальной...)))))

P.S. (как полагается)

  • Вакансий обработано: ~62 800

  • Уникальных городов: 1318 (из них 1300 имели ≤20 вакансий)

  • Самая высокая медиана: Тбилиси, Data Scientist - 450 000 ₽ (n=4, не повторять дома)

  • Самая низкая медиана: Путилково, Программист - 50 000 ₽ (n=7, это тоже не повторять)

  • Объём финального датафрейма: 600 мб в памяти.

  • Веры в открытость рынка труда: утрачено примерно 80%

Если у вас есть собственные наблюдения, замечания, или вы тот самый Data Scientist из Тбилиси за 450k - пишите в комменты, очень хочется понять, как там у вас.

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

Комментарии (130)


  1. atues
    19.05.2026 08:27

    Интересно. Но что по другим языкам? Там такие же тенденции? А то получается, что только один Python так себя ведет, а у остальных - шоколад и смузи на пляже.

    Плюсую


    1. MrSotnik Автор
      19.05.2026 08:27

      Сам хотел после тега Python поставить код на Linux-сервер и собирать данные по всем популярным языкам каждый день, но API hh внесла свои коррективы(( Грустно, по этому статья вышла сейчас, а не спустя год или 2


      1. RepppINTim
        19.05.2026 08:27

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


  1. Tishka17
    19.05.2026 08:27

    А что не так с запятой в csv? Нормально же всё работает


    1. MrSotnik Автор
      19.05.2026 08:27

      Я накосячил с сепоратором и кодировкой))


      1. Tishka17
        19.05.2026 08:27

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


        1. Tanriol
          19.05.2026 08:27

          С использованием предназначенных для этого библиотек - разумеется. Но CSV производит впечатление простого формата, который можно легко писать вручную, и лезть за библиотекой для записи часто лень, хочется обойтись обычным форматированием строк. И всё будет работать хорошо… пока записываемые поля не содержат сепаратор (например, в описании позиции, если его сохранять). А вот когда вспоминаешь про экранирование - понимаешь, что по честному с библиотекой всё-таки проще.


          1. Flux82
            19.05.2026 08:27

            Простота - это ловушка. Дата и время тоже выглядят просто. И e-mail. Да что там, вот например есть DOI-адреса, присваиваемые статьям. Можно подумать, что они всегда выглядят примерно так (https://doi.org/10.48550/arXiv.1706.03762), но на самом деле частенько встретится DOI с символами ; ( ) / .

            По-честному хороший программист (и инженер) должен держать в голове edge cases и чётко представлять ограничения самописных велосипедов :)


      1. Andriuxa
        19.05.2026 08:27

        текстовые поля в CSV надо в кавычках вводить, тогда содержимое не перепутается с сепараторами.


    1. Arhammon
      19.05.2026 08:27

      В CSV запятая разделитель, а точка разделитель разрядов, в "русском CSV" точка с запятой разделитель, а запятая разделитель разрядов. При смешивании(или данных или понятий CSV, русский CSV) ничего хорошего не происходит...


      1. Tishka17
        19.05.2026 08:27

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


        1. Arhammon
          19.05.2026 08:27

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


          1. nightwolf_du
            19.05.2026 08:27

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


            1. masterthemac
              19.05.2026 08:27

              Или просто все столбцы, чтобы не рисковать.


            1. Tanriol
              19.05.2026 08:27

              И не забыть эскейпить кавычки!


        1. fzfx
          19.05.2026 08:27

          в данном случае [скорее всего] да, но, как выше упоминал @Tanriol, проблема несколько шире. при казалось бы внешней простоте идеи "давайте разделять поля запятой, да и всё" там полно подводых камней. например попытка ускорить постгресовскую инструкцию `COPY FROM ... (FORMAT csv)` с помощью SIMD началась 9 месяцев назад, включила в себя усилия более десятка человек, привела к неоднозначным результатам при тестировании производительности, переживает на данный момент 17 итерацию патча и всё ещё (как я понял) далека от завершения.
          https://www.postgresql.org/message-id/flat/CAOzEurSW8cNr6TPKsjrstnPfhf4QyQqB4tnPXGGe8N4e_v7Jig%40mail.gmail.com


      1. RepppINTim
        19.05.2026 08:27

        Поэтому лучше сразу приучить себя использовать табуляцию. TSV спасает от 99% проблем с разделителями в текстовых данных


        1. hullaballoo
          19.05.2026 08:27

          табуляцию

          три пробела </s>


          1. xaerowalk
            19.05.2026 08:27

            4


            1. hullaballoo
              19.05.2026 08:27

              Нет, именно три

              Скрытый текст


    1. Ivan22
      19.05.2026 08:27

      чисто для ликбеза: CSV переводится как comma separated values. Тобишь буквально значения через запятую.


      1. Tishka17
        19.05.2026 08:27

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


    1. RepppINTim
      19.05.2026 08:27

      Работает пока в поле описания HR не напишет список скиллов через запятую, потом у тебя колонки съезжают вправо на полкилометра


      1. Tishka17
        19.05.2026 08:27

        У меня не съезжают. Покажите код, как вы csv создаете?


        1. zamboga
          19.05.2026 08:27

          Речь идёт о чтении, а не записи.


          1. Tishka17
            19.05.2026 08:27

            Специально сейчас создал файл:

            Id, Name
            1, ООО тстань
            2, "ИП, Равда"

            Открыл его в libreoffice calc, ничего никуда не съехало.


            1. zamboga
              19.05.2026 08:27

              У вас кавычки и всего 2 строки, хотя строки, скорее всего тут вообще не роляют.
              Сгенерируйте датасет на 100 строк и 20 столбцов только чур, без кавычек, и с зоопарком запятых (например, с адресами)


              1. Tishka17
                19.05.2026 08:27

                Кавычки - это часть синтаксиса csv, они используются если значение содержит разделители. Вы бы ещё предложили в json без кавычек писать и удивлялись почему он не читается


                1. zamboga
                  19.05.2026 08:27

                  Да, но нет.
                  Мне самому не раз приходилось разбирать csv с запятыми без кавычек.


                  1. Tishka17
                    19.05.2026 08:27

                    Значит это был не csv, а собранный на коленке формат отдаленно похожий на него. Мне вот тоже попадался "json" в котором вместо true было написано True.


                    1. zamboga
                      19.05.2026 08:27

                      Да просто на любом этапе надо учитывать весь этот зоопарк:

                      1. зоопарк кодировок (ANSI / ASCII / Unicode / UTF / win1251 / win1250 / KOI-8 / OEM-866)

                      2. зоопарк стандартов написания чисел (12 345,67 / 12,345.67)

                      3. зоопарк разделителей ( , ; . \ | / tab space 4_spaces )

                      4. зоопарк кавычек, апострофов, символов дюйма (" ' " « » „ “ )

                      5. зоопарк скобок ()[]{}<>

                      6. зоопарк расширений ( .txt / .csv / комбо_расширений_в_имени_файла.csv.txt, потому что в windows отключён показ расширений, и пользователь видит только файл.csv вместо файл.csv.txt / папка_в_имени_которой.csv

                      7. зоопарк регистрозависимости ( case-sensitive / case-insensitive )

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


            1. lorc
              19.05.2026 08:27

              Осталось добавить `OOO Чень "умные" технологии`


  1. MrSotnik Автор
    19.05.2026 08:27

    Понял, всех больше волнует сепоратор для CSV, а не тема статьи)))


    1. TaskForce141
      19.05.2026 08:27

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


      1. Remigrant
        19.05.2026 08:27

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

        Совершенно верно! Но у статьи, тем не менее, под сотню плюсов. :-(

        (И объяснил бы ещё кто-нибудь автору, что слово "сепаратор" пишется через два "а". А то ему, поди, даже и невдомёк, что слова "спарсил" и "сепаратор" однокоренные.


    1. Astroscope
      19.05.2026 08:27

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


  1. domix32
    19.05.2026 08:27

    В Python-вакансиях растёт упоминание MS Excel.

    а это ни разу не шум. Многие доморощенные отделы аналитики как-то так и выглядят. На собеседовании тебя будут спрашивать про опыта с пандой, csv, ченить про сам язык спросят, а на деле выдадут машину без админских прав на винде, чтобы ты сидел генерировал дашборды для экселя БЕЗ ПИТОНА, потому что местные безопасники не разрешают. В итоге простенькие задачи, решаемые одним запросов в БД и однострочником в питоне превращаются в недели поедания кактуса через задний проход. И чем больше имя кампании близится на слух к "Рога и копыта", тем более вероятным становится подобный сценарий - некоторый корпоративный змеюшник с офисной же драмой, тоннами email и общением с не самыми светлыми заказчиками как внутренними, так и внешними, для которых исполняются подрядные работы.

    Вот моя «равномерная» выборка:

    не очень понятно что за числа в выборке. Если вакансия была не закрыта за месяц она попадёт в новый месяц или это произвольный срез активных вакансий на некотору. текущую дату?


    1. MrSotnik Автор
      19.05.2026 08:27

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


      1. domix32
        19.05.2026 08:27

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

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

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


        1. MrSotnik Автор
          19.05.2026 08:27

          Ну так не получилось бы так как я собираю ID и актуализирую по ID даты её появления, последующие не собираю и игнорю


    1. IvUs
      19.05.2026 08:27

      Может, дело в другом совсем? Встроенный Python появился в Excel два года назад. Соответственно, постепенно начинают требоваться люди которые умеют применять Python в Excel.


      1. domix32
        19.05.2026 08:27

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


      1. hullaballoo
        19.05.2026 08:27

        А однострочники на SQL в экселе можно писать с версии 2010.

        Итого, получается золотое комбо: эксель, питон и SQL в едином интерфейсе.


      1. max9
        19.05.2026 08:27

        не совсем в ыксель. а в облачном, который недоступен в РФ


  1. MTyrz
    19.05.2026 08:27

    Полный оффтоп: автор, у вас в подписи в профиле что лишнее, буква или запятая?

    Паршу, чищу, обучаю


    1. MrSotnik Автор
      19.05.2026 08:27

      Это не опечатка, это диагноз судя по всему. Я действительно паршу данные)))

      Окей, спасибо, поправлю, всё равно мне не нравилось это описание профиля. Ставлю лайк за внимательность, за пол года Вы первый кто обратил на это внимание.


      1. MTyrz
        19.05.2026 08:27

        Я действительно паршу данные)))

        И это хорошо видно прямо из статьи. Но звучит так, что я не удержался )


        1. SrantaClause
          19.05.2026 08:27

          отпаршу без регистрации и смс


          1. MTyrz
            19.05.2026 08:27

            Потомственный паршивец в седьмом поколении!


    1. StjarnornasFred
      19.05.2026 08:27

      Буква недостающая, запятая лишняя...


  1. DMariya
    19.05.2026 08:27

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


    1. MrSotnik Автор
      19.05.2026 08:27

      Спасибо, думал об этом, но поленился, но наверное сделаю))


  1. RepppINTim
    19.05.2026 08:27

    62% вакансий без вилки - это базовый фильтр на неуверенность. Никто не хочет светить бюджеты, чтобы текущие мидлы в штате не пошли просить прибавку


  1. jskake
    19.05.2026 08:27

    А сейчас можно как-то парсить или узнать какая зп на hh.ru является рыночной для опреденных профессий?


    1. iamkisly
      19.05.2026 08:27

      Бесплатно? Только парсинг html только хардкор


  1. WASD1
    19.05.2026 08:27

    Рынок Python в России - это не рынок профессии. Это рынок ярлыков, и HR-ярлык на твоей вакансии влияет на твою зарплату сильнее, чем твой реальный стек.

    Оператор перфорационной машины / программист-кодировщик / программист на [ЯП-X, например - ]python - всё это временные профессии.
    А по-сути навыки, которые на недолгое время стали профессией из-за несовершенства технических средств.

    То есть ни (условно) в 2010 ни в 2026 году не нужен человек, который умеет только лишь писать код на python, а нужен челвоек, который решает проблему реального мира при помощи разработки программного продукта (где программировать на языке-X - полезный, но далеко не самый сложный навык).


  1. zo0Mx
    19.05.2026 08:27

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


    1. MrSotnik Автор
      19.05.2026 08:27

      Спасибо за комментарий, приятно) стараюсь


      1. Ussuriiskiy_Bobr
        19.05.2026 08:27

        Но ведь видно, что текст иишный. Вы, конечно, его отредактировали и работу сделали (надеюсь), сами, но текст-то написан чатом гпт. Без претензий, просто видно.


        1. MrSotnik Автор
          19.05.2026 08:27

          Даже не знаю, что и ответить...


          1. Astroscope
            19.05.2026 08:27

            Даже не знаю, что и ответить...

            Пробуйте все отрицать.


            1. MrSotnik Автор
              19.05.2026 08:27

              Хорошо, я протестую! )))


        1. affyt
          19.05.2026 08:27

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


          1. ajijiadduh
            19.05.2026 08:27

            ИИ никогда не делает грамматических ошибок

            смешно


          1. Altair2021
            19.05.2026 08:27

            ИИ никогда не делает грамматических ошибок

            В русском -- делает, хоть и редко. Уверен, если поискать -- и в английском будут.

            А вообще, дожили -- отсутствие грамматических (да и не только) ошибок в тексте считается использованием LLM. Обесцениваете знания тех, кто хорошо учил язык.


          1. Ioanna
            19.05.2026 08:27

            Делает-делает. Начал, например, ставить запятую между подлежащим и сказуемым. Точь-в-точь как каждый второй пользователь рунета.