Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab1_analysis

.docx
Скачиваний:
5
Добавлен:
27.08.2024
Размер:
355.04 Кб
Скачать

ГУАП

КАФЕДРА № 41

ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

Ассистент

В.В. Боженко

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №1

ПРЕДВАРИТЕЛЬНЫЙ АНАЛИЗ ДАННЫХ

по курсу: ВВЕДЕНИЕ В АНАЛИЗ ДАННЫХ

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ ГР. №

4016

М.О. Жовтяк

подпись, дата

инициалы, фамилия

Санкт-Петербург 2022

  1. Цель работы

Цель: осуществить предварительную обработку данных csv-файла, выявить и устранить проблемы в этих данных.

  1. Вариант задания

Вариант 14. Так как преподаватель выдал только 10 вариантов, то будет выполняться 4 вариант работы.

Файл – 4liver.csv

Датасет заболеваемости печенью.

Столбцы:

1. Возраст пациента

2. Пол пациента

3. Общий билирубин

4. Прямой билирубин

5. Щелочная фосфатаза

6. Аламиноаминотрансфераза

7. Аспартатаминотрансфераза

8. Всего белков

9. Альбумин

10.Соотношение альбуминов и глобулинов

11.Цель: поле, используемое для разделения

данных на два набора (пациент с заболеванием

печени или без заболевания).

  1. Предварительный анализ данных

Загружается датасет с помощью библиотеки 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 – Изменение типов данных столбцов

  1. Составление сводной таблицы

Составляется сводная таблица по среднему возрасту болеющих и не болеющих по возрасту раздельно с полом с помощью столбцов Gender и Illness. По таблице можно сделать вывод, что в среднем мужчины большего возраста чаще болеют, а на женщин возраст никак не влияет.Результат на рисунке 10.

Рисунок 10 – Сводная таблица №1

Составляется сводная таблица со средним билирубином для каждого пола с помощью стобцов TotalBilirubin и Direct_Bilirubin. По таблице можно сделать вывод, что содержание прямого и общего билирубина у мужчин больше, чем у женщин. Результат на рисунке 11.

Рисунок 11 – Сводная таблица №2

Составляется сводная таблица со средним белком, альбумином и соотношением альбуминов и глобулинов для болеющих и не болеющих с помощью столбцов Illness, Total_Proteins, Albumin и Albumin_and_Globulin_Ratio. По таблице можно сделать вывод, что у неболеющих содержание альбумина, соотношения альбумина и глобулина, количество протеинов больше. Результат на рисунке 12.

Рисунок 12 – Сводная таблица №3

  1. Дополнительное задание

В рамках дополнительного задания необходимо выяснить, сколько мужчин и женщин в датасете, сколько болльных и здоровых с помощью столбцов Illness и Gender. Было выяснено, что всего 402 больных и 161 здоровых людей; 425 мужчин и 138 женщин. Результат на рисунке 13.

Рисунок 13 – Подсчет мужчин и женщин, больных и здоровых

Ссылка на Jupyter Notebook:

https://colab.research.google.com/drive/1hICSGzb5_aDiAPak1PCKZdzK_zMCy7dt#scrollTo=RgsZX2umyzZc

  1. Вывод

В ходе работы мной был проведен анализ данных csv-файла. В этом файле была проведена предварительная обработка данных. В ходе обработки данных мной были исправлены следующие ошибки:

  1. Исправлено некорректное название стобца Illness;

  2. Удалены 16 дубликатов в данных с помощью команды drop_duplicates();

  3. Найдены неявные дублика с помощью команды unique() в стобцах Gender и Illness и исправлены с помощью команды replace();

  4. Удалены четыре строки с пустыми ячейками с помощью команды dropna(), это небольшое количество, поэтому такое действие допустимо;

  5. Исправлены несоответствия типов данных действительности с помощью команды to_numeric() в столбцах Alamine_Aminotransferase, Aspartate_Aminotransferase, Illness. Причем при переводе из строкового значения в числовое при ошибке была создана пустая строка, которая потом просто удалялась.

После обработки данных были построены три сводные таблицы по собственному замыслу с помощью pivot_table, которые отображают определенную информацию о пациентах:

  1. Сводная таблица по среднему возрасту болеющих и не болеющих по возрасту раздельно с полом с помощью столбцов Gender и Illness;

  2. Сводная таблица со средним билирубином для каждого пола с помощью стобцов TotalBilirubin и Direct_Bilirubin;

  3. Сводная таблица со средним белком, альбумином и соотношением альбуминов и глобулинов для болеющих и не болеющих с помощью столбцов Illness, Total_Proteins, Albumin и Albumin_and_Globulin_Ratio

Также в рамках дополнительного задания было подсчитано количество мужчин и женщин, болеющих и здоровых: 425 и 138, 402 и 161 соответственно.

В ходе работы проблем не возникло.

Соседние файлы в предмете Введение в анализ данных