
lab1_analysis
.docxГУАП
КАФЕДРА № 41
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
Ассистент |
|
|
|
В.В. Боженко |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №1 |
ПРЕДВАРИТЕЛЬНЫЙ АНАЛИЗ ДАННЫХ |
по курсу: ВВЕДЕНИЕ В АНАЛИЗ ДАННЫХ |
|
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. № |
4016 |
|
|
|
М.О. Жовтяк |
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2022
Цель работы
Цель: осуществить предварительную обработку данных csv-файла, выявить и устранить проблемы в этих данных.
Вариант задания
Вариант 14. Так как преподаватель выдал только 10 вариантов, то будет выполняться 4 вариант работы.
Файл – 4liver.csv
Датасет заболеваемости печенью.
Столбцы:
1. Возраст пациента
2. Пол пациента
3. Общий билирубин
4. Прямой билирубин
5. Щелочная фосфатаза
6. Аламиноаминотрансфераза
7. Аспартатаминотрансфераза
8. Всего белков
9. Альбумин
10.Соотношение альбуминов и глобулинов
11.Цель: поле, используемое для разделения
данных на два набора (пациент с заболеванием
печени или без заболевания).
Предварительный анализ данных
Загружается датасет с помощью библиотеки pandas в Jupyter-ноутбук, использую Google Colab. Результат на рисунке 1.
Рисунок 1 – Загрузка датасета
Выполняется загрузка библиотек, настройка csv-файла. Выводятся первые 20 строк с помощью команды head(). Результат работы можно увидеть на рисунке 2.
Рисунок 2 – Вывод таблицы
Датасет содержит информацию о заболеваемости печенью, а конкретно содержит столбцы:
Возраст пациента
Пол пациента
Общий билирубин
Прямой билирубин
Щелочная фосфатаза
Аламиноаминотрансфераза
Аспартатаминотрансфераза
Всего белков
Альбумин
Соотношение альбуминов и глобулинов
Болезнь (1 – да, 2 – нет)
С помощью команды info() оцениваются столбцы датасета. Результат на рисунке 3.
Рисунок 3 – Информация о датасете
Проанализировав данные, можно сделать следующие выводы:
Всего 587 объектов, но существуют строки, где данные заполнены не полностью;
Aspartate_Aminotransferase, Alamine_Aminotransferase и Dataset123 столбцы должны иметь типы float, float и int соответственно;
Dataset123 столбец имеет неверное название;
Не исключено, что есть значения, которые отличаются от верных для этого выполняется проверка.
Выполняется команда для просмотра столбцов df.columns. Результат на рисунке 4.
Рисунок 4 – Информация о столбцах датасета
С помощью команды df.rename переименовывается Dataset123 столбец, так как такой заголовок не несет никакого смысла.
Рисунок 5 – Переименование столбца
Так как речь идет о данных болезни человека, то без полного набора данных невозможно поставить диагноз, поэтому строка пациента будет полностью удаляться. Так как максимум удалится всего 4 строки исходя из информации о столбцах, то такое удаление также допустимо. Выполняется проверка и удаление пропущенных значений с помощью команды print(df.isna().sum()). Результат на рисунке 6.
Рисунок 6 – Удаление строк с пропущенными значениями
В датасете выполняется поиск неявных дубликатов. Они ищутся в строке, где строковые значения могут быть написаны с ошибкой, таких так Gender и Illness, в которых могут находится только два значения: Female и Male; 1 и 2 соответственно. После того, как такие ошибки найдены, они исправляются методом replace(). Результат на рисунке 7.
Рисунок 7 – Исправление неявных дубликатов
В датасете удаляются дубликаты данных с помощью команды drop_duplicates(), так как необходимы только уникальные значения. После этого выполняется обновления индексации с помощью команды drop_duplicates().reset_index(), чтобы не существовало пустых строк. После этого выполняется проверка датасета на дубликаты с помощью команды duplicated().sum(). Результат на рисунке 8.
Рисунок 8 – Удаление дубликатов
Alamine_Aminotransferase, Aspartate_Aminotransferase столбцы должны иметь типы float, так как все измерения в датасете представлены именно в этом формате. Illness столбец даёт информацию о том, болеет ли человек (1 - да, 2 - нет). Тогда логично перевести этот столбец в тип int. Aspartate_Aminotransferase столбец - строкое значение, поэтому во время перевода некорректные значения будут заменяться на Null, а такие пустые строки будут удаляться. Результат на рисунке 9.
Рисунок 9 – Изменение типов данных столбцов
Составление сводной таблицы
Составляется сводная таблица по среднему возрасту болеющих и не болеющих по возрасту раздельно с полом с помощью столбцов Gender и Illness. По таблице можно сделать вывод, что в среднем мужчины большего возраста чаще болеют, а на женщин возраст никак не влияет.Результат на рисунке 10.
Рисунок 10 – Сводная таблица №1
Составляется сводная таблица со средним билирубином для каждого пола с помощью стобцов TotalBilirubin и Direct_Bilirubin. По таблице можно сделать вывод, что содержание прямого и общего билирубина у мужчин больше, чем у женщин. Результат на рисунке 11.
Рисунок 11 – Сводная таблица №2
Составляется сводная таблица со средним белком, альбумином и соотношением альбуминов и глобулинов для болеющих и не болеющих с помощью столбцов Illness, Total_Proteins, Albumin и Albumin_and_Globulin_Ratio. По таблице можно сделать вывод, что у неболеющих содержание альбумина, соотношения альбумина и глобулина, количество протеинов больше. Результат на рисунке 12.
Рисунок 12 – Сводная таблица №3
Дополнительное задание
В рамках дополнительного задания необходимо выяснить, сколько мужчин и женщин в датасете, сколько болльных и здоровых с помощью столбцов Illness и Gender. Было выяснено, что всего 402 больных и 161 здоровых людей; 425 мужчин и 138 женщин. Результат на рисунке 13.
Рисунок 13 – Подсчет мужчин и женщин, больных и здоровых
Ссылка на Jupyter Notebook:
https://colab.research.google.com/drive/1hICSGzb5_aDiAPak1PCKZdzK_zMCy7dt#scrollTo=RgsZX2umyzZc
Вывод
В ходе работы мной был проведен анализ данных csv-файла. В этом файле была проведена предварительная обработка данных. В ходе обработки данных мной были исправлены следующие ошибки:
Исправлено некорректное название стобца Illness;
Удалены 16 дубликатов в данных с помощью команды drop_duplicates();
Найдены неявные дублика с помощью команды unique() в стобцах Gender и Illness и исправлены с помощью команды replace();
Удалены четыре строки с пустыми ячейками с помощью команды dropna(), это небольшое количество, поэтому такое действие допустимо;
Исправлены несоответствия типов данных действительности с помощью команды to_numeric() в столбцах Alamine_Aminotransferase, Aspartate_Aminotransferase, Illness. Причем при переводе из строкового значения в числовое при ошибке была создана пустая строка, которая потом просто удалялась.
После обработки данных были построены три сводные таблицы по собственному замыслу с помощью pivot_table, которые отображают определенную информацию о пациентах:
Сводная таблица по среднему возрасту болеющих и не болеющих по возрасту раздельно с полом с помощью столбцов Gender и Illness;
Сводная таблица со средним билирубином для каждого пола с помощью стобцов TotalBilirubin и Direct_Bilirubin;
Сводная таблица со средним белком, альбумином и соотношением альбуминов и глобулинов для болеющих и не болеющих с помощью столбцов Illness, Total_Proteins, Albumin и Albumin_and_Globulin_Ratio
Также в рамках дополнительного задания было подсчитано количество мужчин и женщин, болеющих и здоровых: 425 и 138, 402 и 161 соответственно.
В ходе работы проблем не возникло.