Skip to content

1. Введение в Pandas: роль в ИИ, установка и окружение ​

Назначение библиотеки Pandas в инженерии ИИ ​

Почему численного NumPy недостаточно для реальных задач ​

На предыдущих этапах вы подробно изучили библиотеку NumPy, которая обеспечивает колоссальную скорость математических вычислений над строго однородными массивами чисел (ndarray). Однако в реальной практике AI-инженера данные из физического мира редко приходят в идеальном, чистом числовом формате.

Реальные датасеты — это гетерогенные (разнородные) таблицы. В одном и том же наборе данных могут одновременно находиться вещественные числа (коэффициенты), целые числа (возраст или ID), булевы флаги, текстовые строки (категории, текстовые отзывы) и временные метки (дата транзакции). Попытка загрузить такую разнородную таблицу в NumPy приведет к автоматическому приведению всех ячеек к строковому типу (str_), что полностью заблокирует возможность выполнять математические операции и обучать нейросети.

Роль Pandas как главного инструмента этапа EDA и предобработки ​

Для работы с разнородными таблицами применяется библиотека Pandas (название происходит от термина Panel Data — «панельные данные», экономико-статистический термин для многомерных структурированных наборов информации).

В общем конвейере разработки искусственного интеллекта Pandas занимает важнейшее место на этапе EDA (Exploratory Data Analysis — разведочный анализ данных) и предобработки:

  1. Загрузка и парсинг: Чтение сырых файлов различных форматов с диска в оперативную память.
  2. Очистка данных: Поиск и фильтрация пропусков, дубликатов, аномалий и выбросов.
  3. Feature Engineering (Проектирование признаков): Создание новых расчетных столбцов, масштабирование фичей и перевод текстовых категорий в цифровые коды, понятные процессору.
  4. Трансформация в тензоры: Подготовка очищенной таблицы и её финальная конвертация в сырой массив 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 bytes

10. Поиск аргументов функции через интроспекцию 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)