Лабораторная работа №2: Основы Pandas
Цель: Научиться загружать реальные данные, проводить их первичную диагностику, выбирать нужные фрагменты с помощью loc/iloc и фильтровать записи по сложным условиям.
Инструменты:
Python 3
Pandas (DataFrame, Series)
Данные:
Мы будем работать с набором данных California Housing . Это реальные данные переписи населения, содержащие информацию о ценах на жилье, расположении и характеристиках районов.
Часть 1: Загрузка и первичный анализ (Sanity Check)
Первый шаг любого проекта — превратить сырой файл (CSV, Excel) в DataFrame и понять, с чем мы имеем дело.
Задание 1.1:
Импортируйте библиотеку pandas.
Загрузите датасет по ссылке ниже в переменную df.
Выведите первые 5 строк.
URL: https://raw.githubusercontent.com/ageron/handson-ml2/master/datasets/housing/housing.csv
import pandas as pd
url = "[https://raw.githubusercontent.com/ageron/handson-ml2/master/datasets/housing/housing.csv](https://raw.githubusercontent.com/ageron/handson-ml2/master/datasets/housing/housing.csv)"
# TODO : Загрузите данные
# df = ...
# TODO : Выведите первые 5 строк
# ... В Pandas типы данных (Dtypes) критически важны.
Используйте метод .info(), чтобы узнать типы колонок и количество пропусков.
Используйте метод .describe(), чтобы посмотреть базовую статистику (среднее, мин, макс).
Вопросы для самопроверки
Есть ли пропуски в данных? В какой колонке?
Какая колонка имеет тип object (текст)?
# TODO : Получите общую информацию о датафрейме (типы, память, пропуски)
# ...
# TODO : Получите статистическое описание числовых полей
# ...
Часть 2: Индексация и выборка (Slicing)
Умение точно “вырезать” кусок таблицы — навык хирурга данных. Помните:
.iloc — по номеру (позиции).
.loc — по метке (имени).
Задание 2.1:
Выделите первые 10 строк и первые 3 столбца.
Сохраните это в переменную subset_geo.
# TODO : Используйте iloc для выбора первых 10 строк и столбцов с 0 по 2
# subset_geo = ...
# print(subset_geo) Попробуем выбрать данные по имени колонки.
Задание 2.2:
Выберите все строки, но только столбцы median_income и median_house_value.
Используйте .loc.
# TODO : Используйте loc для выбора всех строк (:) и конкретных колонок
# income_value = ...
# print(income_value.head())
Часть 3: Фильтрация и создание признаков
Бизнес часто ставит задачи в духе: “Найди мне все дорогие дома на побережье”.
Задание 3.1: Найдите районы, которые соответствуют двум условиям одновременно:
median_house_value > 400000 (Дорогая недвижимость).
ocean_proximity == ‘NEAR OCEAN’ (Рядом с океаном).
Сохраните результат в luxury_ocean_df и выведите количество найденных районов.
# TODO : Создайте маску (помните про скобки и оператор &)
# mask = ...
# TODO : Примените маску к df
# luxury_ocean_df = ...
# print(f"Найдено районов: {len(luxury_ocean_df)}") Задание 3.2: Векторные операции
Создайте новую колонку rooms_per_household (количество комнат на домохозяйство).
Формула: total_rooms / households.
Внимание к производительности Это должно быть сделано одной строкой, без циклов (векторно).
# TODO : Создайте новую колонку
# df['rooms_per_household'] = ...
# Проверяем результат (выводим нужные колонки)
# print(df[['total_rooms', 'households', 'rooms_per_household']].head())
Часть 4: Сохранение результатов
После очистки и обработки данные часто нужно сохранить для следующего этапа или отчета.
Задание 4.1: Экспорт
Сохраните luxury_ocean_df в файл expensive_ocean_houses.csv.
Важный нюанс сохранения Укажите index=False, чтобы не сохранять технический индекс Pandas в CSV.
# TODO : Сохраните отфильтрованный датафрейм
# ...
print ( "Файл сохранен. Проверьте вкладку 'Files' в Colab." )
🧠 Проверка знаний
Какой метод Pandas используется для выборки данных строго по их числовой позиции (номеру строки и столбца)? .loc .iloc .head() .describe()
Проверить ответ
Почему при сохранении DataFrame в CSV-файл рекомендуется использовать параметр index=False? Чтобы скрыть названия колонок в результирующем файле. Чтобы избежать сохранения технических индексов строк как отдельной безымянной колонки в файле. Это обязательное требование метода .to_csv(), иначе возникнет ошибка. Чтобы автоматически удалить все строки с пропущенными значениями (NaN).
Проверить ответ