Appearance
1. Введение в Pandas: роль в ИИ, установка и окружение
Назначение библиотеки Pandas в инженерии ИИ
Почему численного NumPy недостаточно для реальных задач
На предыдущих этапах вы подробно изучили библиотеку NumPy, которая обеспечивает колоссальную скорость математических вычислений над строго однородными массивами чисел (ndarray). Однако в реальной практике AI-инженера данные из физического мира редко приходят в идеальном, чистом числовом формате.
Реальные датасеты — это гетерогенные (разнородные) таблицы. В одном и том же наборе данных могут одновременно находиться вещественные числа (коэффициенты), целые числа (возраст или ID), булевы флаги, текстовые строки (категории, текстовые отзывы) и временные метки (дата транзакции). Попытка загрузить такую разнородную таблицу в NumPy приведет к автоматическому приведению всех ячеек к строковому типу (str_), что полностью заблокирует возможность выполнять математические операции и обучать нейросети.
Роль Pandas как главного инструмента этапа EDA и предобработки
Для работы с разнородными таблицами применяется библиотека Pandas (название происходит от термина Panel Data — «панельные данные», экономико-статистический термин для многомерных структурированных наборов информации).
В общем конвейере разработки искусственного интеллекта Pandas занимает важнейшее место на этапе EDA (Exploratory Data Analysis — разведочный анализ данных) и предобработки:
- Загрузка и парсинг: Чтение сырых файлов различных форматов с диска в оперативную память.
- Очистка данных: Поиск и фильтрация пропусков, дубликатов, аномалий и выбросов.
- Feature Engineering (Проектирование признаков): Создание новых расчетных столбцов, масштабирование фичей и перевод текстовых категорий в цифровые коды, понятные процессору.
- Трансформация в тензоры: Подготовка очищенной таблицы и её финальная конвертация в сырой массив NumPy для последующей отправки в фреймворки PyTorch или TensorFlow.
Окружение, установка и правила импорта
Установка библиотеки
Библиотека Pandas ставится в рабочее виртуальное окружение через стандартные менеджеры пакетов:
bash
# Installation via pip inside Jupiter Notebook
% pip install pandas
# Installation via pip inside standard environment
pip install pandas
# Installation via conda inside Anaconda/Miniconda architecture
conda install pandasПравила импорта в промышленной разработке
В сообществе Data Science распространено сокращение import pandas as pd. Однако для обеспечения максимальной прозрачности архитектуры, исключения конфликтов имен в крупных корпоративных-проектах и повышения читаемости кода, в рамках данного курса мы следуем строгому промышленному стандарту — использованию стопроцентно полного имени библиотеки:
python
import pandas
# Checking the current installed version of the framework
print(pandas.__version__)Индустриальный стандарт: интерактивная среда Jupyter Notebook
Разведочный анализ данных в Pandas всегда выполняется внутри файлов с расширением .ipynb. Интерактивная среда Jupyter позволяет визуализировать таблицы в виде красивых графических HTML-сеток, мгновенно выводить промежуточные статистики столбцов, проверять типы данных фичей на лету и изолированно тестировать гипотезы предобработки в отдельных ячейках, не перезапуская весь тяжелый скрипт с нуля.
Упражнения базовые (5 шт) (только с опорой на объясненную в данном уроке теорию)
1. Проверка готовности окружения Pandas
Задача: Импортируйте библиотеку pandas полным именем. Напишите код, который выводит в консоль строковое значение текущей версии установленного пакета, чтобы убедиться в корректности развернутого окружения.
Посмотреть решение
python
import pandas
# Verifying environment setup using explicit full naming
library_version = pandas.__version__
print("Pandas version is:", library_version)2. Проверка базовой версии зависимостей
Задача: С помощью функции pandas.show_versions() можно вывести подробный отчет о всех установленных системных зависимостях пакета (включая версии C-компиляторов и NumPy). Напишите вызов этой функции без сокращений.
Посмотреть решение
python
import pandas
# Displaying full metadata about python environment dependencies
pandas.show_versions()3. Настройка отображения таблиц в Jupyter
Задача: В Pandas есть глобальный модуль настроек pandas.options. Напишите строку кода, которая устанавливает максимальное количество отображаемых столбцов при выводе таблиц в Jupyter равным 50, используя свойство pandas.options.display.max_columns.
Посмотреть решение
python
import pandas
# Setting global configurations properties using complete explicit path
pandas.options.display.max_columns = 50
print("Max display columns limit updated.")4. Настройка точности вывода вещественных чисел
Задача: Измените глобальную настройку отображения чисел с плавающей точкой так, чтобы Pandas выводил в ячейках Jupyter ровно 4 знака после запятой. Используйте свойство конфигурации pandas.options.display.float_format.
Посмотреть решение
python
import pandas
# Configuring floating-point numbers format layout globally
pandas.options.display.float_format = "{:.4f}".format
print("Float representation format applied.")5. Инициализация пустого контейнера верхнего уровня
Задача: Вызовите конструктор создания пустой базовой таблицы pandas.DataFrame(). Сохраните результат в переменную empty_table_buffer и выведите её тип с помощью стандартной функции Python type().
Посмотреть решение
python
import numpy
import pandas
# Instantiating a blank top-level architectural container
empty_table_buffer = pandas.DataFrame()
print("Object container type classification:", type(empty_table_buffer))Упражнения смешанные (5 шт) (включают сквозную интеграцию с изученным ранее NumPy)
6. Сравнение поведения типов при объединении в NumPy
Задача: Чтобы понять, почему ИИ-инженерам нужен Pandas, проведите эксперимент в NumPy: создайте массив numpy.array([25, "active", 0.95]). Выведите полученный массив на экран и проверьте его тип данных .dtype. В комментарии к коду опишите, почему этот массив потерял численную природу (Вспоминаем Урок 4 из модуля NumPy).
Посмотреть решение
python
import numpy
# Attempting to store heterogeneous metrics inside a strict NumPy architecture
corrupted_ndarray = numpy.array([25, "active", 0.95])
print("Array content representation:", corrupted_ndarray)
print("Resulting NumPy inference data type:", corrupted_ndarray.dtype)
# Outputs string type (e.g., <U32).
# Explanation: NumPy strictly demands homogeneous layout memory blocks.
# The presence of a single string forces an upcast of all numbers to text strings, breaking math_oge computations.7. Скрытый вызов ufunc-функции над структурами Pandas
Задача: Хотя мы еще не изучали структуры Pandas детально, они полностью построены поверх NumPy. Создайте простую одномерную структуру demo_series = pandas.Series([1, 2, 3]). Передайте этот объект внутрь векторизованной ufunc-функции вычисления экспоненты numpy.exp(). Выведите результат и убедитесь, что ufuncs из NumPy бесшовно обрабатывают объекты Pandas.
Посмотреть решение
python
import numpy
import pandas
# Declaring a basic pandas storage tracking sequence
demo_series = pandas.Series([1, 2, 3])
# Core NumPy universal functions process pandas structures natively on C-level
vectorized_exponentials = numpy.exp(demo_series)
print(vectorized_exponentials)8. Локализация NaN-пропусков NumPy внутри экосистемы Pandas
Задача: Сгенерируйте одномерную структуру target_series = pandas.Series([0.12, numpy.nan, 0.45]), внедрив туда маркер пропуска numpy.nan (Из Урока 9 модуля NumPy). Примените к объекту метод проверки пропусков target_series.isna(). Выведите результат на экран.
Посмотреть решение
python
import numpy
import pandas
# Building a series with a standard IEEE 754 float missing token
target_series = pandas.Series([0.12, numpy.nan, 0.45])
# Using pandas detection algorithm to spot low-level memory omissions
missing_mask = target_series.isna()
print(missing_mask)9. Проверка объема RAM при конвертации типов
Задача: Создайте массив NumPy numpy_vector = numpy.arange(1000, dtype=numpy.float64). Переведите его в структуру Pandas с помощью вызова pandas.Series(numpy_vector). Посчитайте в уме и выведите на экран физический вес элементов в байтах с помощью атрибута .nbytes. Убедитесь, что метаданные веса полностью унаследованы из NumPy.
Посмотреть решение
python
import numpy
import pandas
# Allocating memory block via arange (NumPy Lesson 3 & 4)
numpy_vector = numpy.arange(1000, dtype=numpy.float64)
# Passing array reference to a pandas container
engineered_series = pandas.Series(numpy_vector)
# Verifying raw byte size tracking metrics
print("Total physical size footprint in bytes:", engineered_series.nbytes) # 1000 * 8 = 8000 bytes10. Поиск аргументов функции через интроспекцию Jupyter
Задача: Напишите поисковый интерактивный запрос для среды Jupyter Notebook, который выведет справочную информациюDocstring по главной функции чтения табличных файлов pandas.read_csv, используя изученный в модуле NumPy символ интроспекции ?.
Посмотреть решение
python
import pandas
# The built-in help call opens the full API documentation in the interactive pager
help(pandas.read_csv)