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

анализ1

.docx
Скачиваний:
0
Добавлен:
11.04.2025
Размер:
515.6 Кб
Скачать

ГУАП

КАФЕДРА № 41

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

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

Старший преподаватель

В.В. Боженко

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

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

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

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

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

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

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

СТУДЕНТ гр. №

4116

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

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

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

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

Вариант 6 (файл clients.csv)

Ход работы

С помощью библиотеки pandas загружен датасет (рисунок 1).

Рисунок 1 - Загрузка файла clients.csv

Выведены первые 20 строк с помощью метода head (рисунок 2).

Рисунок 2 - Вывод первых 20 строк файла

Таблица содержит данные о клиентах магазина:

  • ID-Уникальный идентификатор клиента.

  • Year_Birth- Год рождения клиента

  • Education-Уровень образования клиента

  • Marital_Status-Семейное положение клиента

  • Income -Годовой доход семьи

  • Kidhome- количество детей

  • Dt_Customer- дата регистрации клиента в компании

  • NumDealsPurchases- количество покупок

Для оценки данных использовался метод info (рисунок 3).

Рисунок 3 – Применение метода info

Всего 796 записей, некоторые столбцы имеют пропуски. Типы данных у столбцов: int64, float64, object. Столбец количество детей и количество покупок имеют некорректный тип данных – float64, так как не может быть нецелое количество детей.

Для оценки числовых столбцов использовался метод describe (рисунок 4).

Рисунок 4 – Применение метода describe

Из полученных данных можно сделать следующие выводы: минимальный год рождения клиента- 1899, максимальный – 1995, самый минимальный годовой доход семьи- 2447, максимальный – 162397, нет клиента, у которого больше двух детей, и максимальное количество покупок – 15.

Для проверки правильности написания столбцов использовался метод columns, который выводит названия столбцов (рисунок 5)

Рисунок 5 – Применение метода columns

Из полученных названий видно, что нужно поменять название столбцу с количеством покупок и столбцу с датой регистрации клиента. Для этого используется метод rename, который принимает один параметр columns (Рисунок 6).

Рисунок 6 – Применение метода rename

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

Рисунок 7 – Вывод дубликатов

Всего найдено 4 дубликата для их удаления используется метод drop_duplicates, так как этот метод удаляет строки с индексами, то следует применить метод reset_index, который обновит индексацию, параметр drop=True означает, что старый индекс не будет сохранен как столбец в новом DataFrame (рисунок 8).

Рисунок 8– удаление дубликатов

Для поиска неявных дубликатов применятся метод unique, который выводит уникальные значения. Чтобы вывести уникальные значения из всех столбцов используется цикл, так как невозможно определить неявные дубликаты в столбцах ID (все значения уникальные), Income и Registration_Date, то цикл не проходит по этим столбцам (рисунок 9).

Рисунок 9– Вывод неявных дубликатов

Из полученных данных, можно сказать, что в столбце Marital_Status есть неправильно-написанное значения SINGL и MARRIED. В остальных столбцах имеются пустые значения.

Чтобы исправить неправильные значения используется метод replace (рисунок 10)

Рисунок 10– Использование метода replace

Далее используется метод isna(), который используется для нахождения пропусков, и функция sum для подсчета пропусков (рисунок 11)

Рисунок 11– Подсчет количества пропусков

По полученным данным видно, что в столбце Income максимальное количество пропусков, так как столбец Income (годовой доход) важен, то остальные данные потеряли смысл, поэтому можно удалить строки с пустым значением в этом столбце. Для их удаления применяется метод dropna c параметром subset, который указывает в каких столбцах следует искать пропущенные значения (рисунок 12).

Рисунок 12– Удаление строк с пустыми значениями

Далее еще раз выводится количество пропусков, из полученных данных пропусков больше нет (рисунок 13)

Рисунок 13– Вывод количества пропусков

Так как столбец количество детей и количество покупок имеет неправильный тип данных, используется метод astype() , который позволяет поменять тип данных (рисунок 14).

Рисунок 14– Изменение типов данных столбцов

Также столбец Registration_Date имеет тип данных object, для преобразования к типу данных datetime используется метод to_datetime(), с помощью аргумента format можно задавать формат даты (рисунок 15)

Рисунок 15– Преобразование к типу данных datetime

Задание 1

С помощью метода groupby() проведена группировка: столбец Education по столбцу Marital_Status, подсчет осуществляется по столбцу ID (рисунок 16)

Рисунок 16– Группировка-тип образования по каждому семейному статусу

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

Задание 2

Затем создается новый датафрейм, в котором осуществляется группировка: столбец Education по столбцу Marital_Status, подсчет осуществляется по столбцу ID, который с сортируется с использованием метода sort_values, ascending = False значит, что сортировка будет по убыванию. С помощью reset_index сбрасывается индекс и создается столбец с подсчетом значений переименовывается в count (рисунок 17).

Рисунок 17– Группировка и сортировка по убыванию

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

Задание 3

Для создания сводной таблицы- средний доход семьи по семейному положению используется метод pivot_table, где аргументы index- столбец, по которому данные сортируются, values- значения, к которым применяются агрегирующие функции (по умолчанию- среднее значение). По столбцу Income данные сортируются по убыванию и округляются до двух знаков , для этого с помощью метода round() значения округляются до точки, затем делятся на 1000, и снова округляются до точки и затем приводятся к целому типу (рисунок 18)

Рисунок 18– Создание сводной таблицы- средний доход семьи по семейному положению

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

Задание 4

Затем создается сводная таблица- средний доход семьи по семейному положению (строки) и уровню образованию (столбцы). К методу pivot_table добавляется аргумент columns (столбец). Данные сортируются на основе столбца Marital_Status по возрастанию. Так как в таблице есть пустые ячейки (из-за отсутствия комбинаций Marital_Status и Education), то пустые значения с помощью метода fillna() заменяются на 0, и затем округляются до двух знаков (рисунок 19).

Рисунок 19– Создание сводной таблицы- средний доход семьи по семейному положению с сортировкой и округлением

Сводная таблица показывает средний доход по семейному положению и уровню образования. Из полученной сводной таблицы можно сказать, что самый высокий доход имеют клиенты с типом образования PhD(кандидат наук) и семейным положением Widow. Нет клиентов с типом образования Basic и семейным положением Alone и Widow. Самый маленький средний доход у клиентов с типом образования Basic и семейным положением Divorced.

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

Применить к датасету фильтрацию: год рождения >1980 со статусом (Marital_Status) Single и Married + сводная таблица с максимальным количеством детей по семейному статусу и году рождения

Фильтрация: для фильтрации применены условия и для того, применен метод set_option, который устанавливает опцию для отображения всех строк

Рисунок 20– Применение фильтрации к датасету

Данная фильтрация показывает всех клиентов с годом рождения от 1981 до 1995, которые имеют тип семейного положения только Single и Married. Под данную фильтрацию попали 92 клиента.

По отфильтрованным данным создана сводная таблица:

Рисунок 21– Реализация сводной таблицы по максимальному количеству детей

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

Ссылка на Colab:

https://colab.research.google.com/drive/12Y41OriUu8FRfZ7vH5Nyan51n4GSyahU?usp=sharing

Вывод:

Проведена обработка данных о клиентах магазина, максимальный год рождения клиента -1899, минимальный – 1995, самый минимальный годовой доход семьи – 2447, максимальный -162397, нет клиента, у которого больше двух детей, и максимальное количество покупок у клиента -15. Большинство клиентов магазина женаты, и самый минимальный доход у одиноких клиентов.

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

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