ВВОДНАЯ ЧАСТЬ
Выбор источника данных
В данном проекте проводится исследовательский анализ данных (EDA) на основе датасета Nonimmigrant Visa Issuances by Visa Class and by Nationality. Датасет содержит информацию о заявках и решениях по неиммиграционным визам, включая такие параметры, как тип визы, страна заявителя, а также итоговый статус визового запроса. Данные были получены из открытых официальных источников, публикуемых государственными структурами США, что обеспечивает их достоверность и полноту.
Первоисточник — U.S. Department of Labor (DOL) Office of Foreign Labor Certification (OFLC)
Актуальность анализа
Получить визу в США всегда было непростой задачей и мне стало интересно проанализировать эти данные. Но также выбор именно этого набора данных обусловлен его высокой практической и аналитической ценностью. Визовая статистика отражает глобальные процессы международной мобильности, миграции, туризма, образования и трудовых перемещений. Анализ распределения виз по типам и странам позволяет выявить устойчивые тенденции, различия между регионами мира, а также изменения интереса к различным категориям виз с течением времени. Кроме того, тема международных виз затрагивает важные социально-экономические и политические аспекты, что делает исследование данных не только технически интересным, но и содержательно значимым.
Виды графиков
Для визуализации и анализа данных в проекте были использованы различные виды графиков.
Линейные графики — использовались для анализа изменений показателей и выявления общих тенденций, смещены ли данные влево, вправо или имеют нормальное распределение. Столбчатые диаграммы — использовались для сравнения количества выданных виз между различными странами и визовыми категориями. Гистограммы — позволили проанализировать распределение значений и выявить наиболее распространенные диапазоны показателей. Круговые диаграммы — применялись для отображения долей различных категорий в общем объеме данных. Box Plot (ящики с усами) — применялись для анализа распределения числовых переменных и выявления медианы, межквартильного размаха и выбросов. Этот тип графиков особенно полезен для сравнения распределений между несколькими группами. Тепловые карты (Heatmap) — использовались для визуализации корреляций между числовыми признаками. Они позволяют быстро определить силу и направление взаимосвязей между переменными и выявить наиболее значимые зависимости в данных.
Выбор этих типов визуализаций обусловлен их наглядностью и эффективностью при сравнении категориальных данных и временных рядов, что особенно важно при работе с крупными статистическими наборами.
Таким образом, сочетание информативного датасета и подходящих методов визуализации позволило провести осмысленный исследовательский анализ и получить наглядные выводы о структуре и динамике выдачи неиммиграционных виз.
ЭТАПЫ РАБОТЫ
Начало работы
В начале импортируем все нужные библиотеки для работы с данными и визуализацией; отключаем предупреждения и включаем показ графиков в ноутбуке. Я также решила сделать быструю проверку данных. Загружаем CSV-файл в DataFrame и показываем первые 10 строк. После я определила типы данных и сделала краткую выжимку по определению данных (кол-во строк, колонок, типы данных и количество непустых значений).
df.info ()
Я также разделила колонки на числовые и категориальные, вывела количество и список числовых и категориальных признаков и после для каждой категориальной колонки показала процентное распределение уникальных значений. Из этого анализа я поняла, что:
- Столбец user-id нужно удалить, так как он не несет никакой значимой информации.
- В колонке continent видно, что Азия занимает 66%, значит данные смещены. Нужно объединить все остальные континенты в одну категорию.
- Столбец unit_of_wage кажется важным, так как большинство значений — годовые контракты.
Графики
Строим линейные графики для каждого числового признака, чтобы посмотреть распределение данных. Сначала создаем сетку 2x2 для графиков, выбираем признаки по которым будут графики (no_of_employees, yr_of_estab, prevailing_wage) и в конце подгоняем, чтобы графики не налезали друг на друга.
На основе предоставленных графиков одномерного анализа числовых признаков можно выделить несколько ключевых инсайтов о распределении данных по трем параметрам:
- Количество сотрудников (no_of_employees) Распределение: Плотность резко падает после нуля, что указывает на сильный перекос вправо (правосторонняя асимметрия). Инсайт: Подавляющее большинство компаний в наборе данных имеют очень небольшое количество сотрудников (близкое к нулю). Случаи с большим штатом (100 000+ и далее до 600 000) встречаются крайне редко и представляют собой выбросы или длинный хвост распределения. 2.Год основания (yr_of_estab) Распределение: Распределение имеет один сильный пик и также скошено вправо (в сторону недавних лет). Инсайт: Большинство компаний были основаны недавно, с огромной концентрацией в период с 1990 по 2000 год. Компании, основанные до 1950 года, встречаются значительно реже.
- Преобладающая заработная плата (prevailing_wage) Распределение: Плотность имеет бимодальную форму, то есть два основных пика. Инсайт: Существует две основные группы заработных плат: одна сосредоточена в диапазоне $40 000–$50 000, а вторая, более высокая, — около $80 000–$90 000. Зарплаты, превышающие $200 000, встречаются редко.
Для следующих данных я сделала гистограмму с сеткой 3х3 с различными группами данных.
На основе представленных графиков одномерного анализа категориальных признаков можно выделить несколько ключевых инсайтов о распределении данных:
- Континент (continent): Подавляющее большинство заявок поступает из Азии (более 14 000 случаев). Остальные континенты имеют значительно меньшее количество заявок: Северная Америка и Европа — около 3000, Южная Америка и Океания — менее 1000.
- Образование сотрудника (education_of_employee): Наиболее распространенный уровень образования среди сотрудников — это степень бакалавра (Bachelor's) и магистра (Master's), каждый из которых насчитывает около 9 000 - 10 000 случаев. Высокая школа (High School) имеет около 4000 случаев, а докторантура (Doctorate) — около 2000.
- Опыт работы (has_job_experience): Большинство заявителей (более 14 000) имеют опыт работы (Yes). Случаев без опыта работы (No) значительно меньше (около 10 000).
- Требуется обучение (requires_job_training): Подавляющее большинство случаев не требует дополнительного обучения (No), что составляет около 20 000 записей. Требуется обучение менее чем в 5000 случаев.
- Регион занятости (region_of_employment): Северо-восток (Northeast) и Юг (South) являются лидирующими регионами занятости (около 7 000 случаев в каждом). Запад (West) и Средний Запад (Midwest) следуют за ними, а регион Остров (Island) имеет наименьшее количество случаев.
- Единица измерения зарплаты (unit_of_wage): Почти все зарплаты измеряются на годовой (Year) основе (более 20 000 случаев). Измерение по часам (Hour), неделям (Week) или месяцам (Month) встречается крайне редко.
- Статус полной занятости (full_time_position): Абсолютное большинство позиций являются полной занятостью (Full time position) — более 20 000 случаев. Частичная занятость (или неполная) встречается редко.
- Статус кейса (case_status): Количество сертифицированных (Certified) кейсов несколько превышает количество отклоненных (Denied) кейсов.
Для начала я покажу как я создавала этот тепловой график. Я разделила числовые признаки на дискретные и непрерывные, вывела количество и список дискретных и непрерывных признаков. После показала корреляции между числовыми признаками. В целом, эти данные показывают, что размер компании (по количеству сотрудников), ее возраст и уровень заработной платы являются практически независимыми друг от друга параметрами в контексте всего набора данных.
sn.heatmap (df.corr (numeric_only=True), annot=True, cmap='Blues')
На основе предоставленной тепловой карты корреляции, которая измеряет силу и направление линейной взаимосвязи между тремя переменными, можно сделать следующие инсайты:
- Отсутствие значимых линейных связей: Наиболее важный инсайт заключается в том, что ни одна из пар переменных (no_of_employees, yr_of_estab, prevailing_wage) не имеет сильной или даже умеренной линейной корреляции. Все коэффициенты корреляции, кроме диагональных единиц (которые показывают идеальную корреляцию переменной с самой собой), очень близки к нулю.
- Чрезвычайно слабая связь между количеством сотрудников и годом основания: Коэффициент корреляции между no_of_employees и yr_of_estab составляет -0.018. Это указывает на практически полное отсутствие линейной зависимости между возрастом компании и количеством ее сотрудников. Немного отрицательное значение означает, что едва заметная тенденция к меньшему количеству сотрудников может наблюдаться в более старых компаниях, но эта связь настолько слаба, что ею можно пренебречь.
- Отсутствие связи между зарплатой и другими параметрами: Коэффициенты, связывающие prevailing_wage (преобладающая заработная плата) с другими переменными, также минимальны:
- Связь с no_of_employees составляет -0.0095. Это говорит о том, что размер зарплаты не зависит от количества сотрудников в компании.
- Связь с yr_of_estab составляет 0.012. Это означает, что год основания компании также не оказывает влияния на уровень преобладающей заработной платы.
- Визуальное подтверждение слабости связей: Светлые, "холодные" синие оттенки в ячейках (за исключением главной диагонали) наглядно демонстрируют, что значения коэффициентов близки к нулю, подтверждая отсутствие сильных взаимосвязей.
В целом, эти данные показывают, что размер компании (по количеству сотрудников), ее возраст и уровень заработной платы являются практически независимыми друг от друга параметрами в контексте всего набора данных.
Строим boxplot и гистограмму для каждого непрерывного признака, разделяя по 'case_status', чтобы увидеть выбросы и распределение.




