Лабораторная работа №1: Python Refresher и Векторизация с NumPy
Цель: Освежить навыки владения Python и научиться мыслить "векторно". Мы откажемся от медленных циклов for при работе с числами и перейдем на эффективные операции библиотеки NumPy. Это фундамент для дальнейшей работы с Pandas и моделями машинного обучения.
Инструменты:
- Python 3 (List comprehensions, lambda)
- NumPy (Arrays, Broadcasting, Masking)
Часть 1: Python Refresher
В Data Science мы ценим лаконичность. Код должен быть читаемым и компактным.
Задание 1.1: Дан список "сырых" строк (например, названия файлов или столбцов CSV).
Задача:
- Привести все строки к нижнему регистру.
- Удалить пробелы в начале и конце.
- Оставить только те строки, которые содержат подстроку
data. - Сделать это одной строкой кода, используя List Comprehension.
Часть 2: Введение в NumPy
Списки Python — это медленно и дорого по памяти. Переходим к ndarray.
Задание 2.1: Создание массивов и формы
Задача:
- Создайте матрицу
Aразмера , заполненную случайными числами (используйтеnp.random.rand). - Создайте матрицу
B, состоящую только из единиц, такого же размера, какA. - Выведите атрибуты
shape,sizeиdtypeматрицыA.
Важное правило NumPy
Использование циклов for для обхода элементов массива ndarray в NumPy категорически не рекомендуется, так как это сводит на нет все преимущества векторизации и производительности библиотеки.
Часть 3: Broadcasting и Masking
Это "суперсилы" NumPy.
Задание 3.1: Нормализация данных (Min-Max Scaling)
В ML часто нужно приводить признаки к диапазону [0, 1]. Формула:
Пусть у нас есть матрица X (), где строки — это объекты, а столбцы — признаки (например: Рост, Вес, Возраст).
Задача: Нормализовать каждый столбец отдельно, используя Broadcasting.
Задание 3.2: Фильтрация по условию (Masking)
Вам нужно найти выбросы или отобрать специфические данные.
Задача:
- Создайте массив
salesиз 100 случайных чисел (нормальное распределение: среднее 1000, стд 200). - Найдите все значения, которые отклоняются от среднего более чем на 1.5 стандартных отклонения (выбросы).
- Замените эти выбросы на значение среднего (imputation).