Навчальний простір / Python
Основи штучного інтелекту

NumPy і pandas: структура даних та підготовка

NumPy надає числові масиви, pandas — іменовані таблиці.

Зміст матеріалу

Що ви опануєте

Ви навчитеся читати таблицю, перевіряти типи й пропуски та пояснювати відмінність між числовим масивом і DataFrame. Підготовка даних визначає, яку інформацію модель фактично отримує. Приклад — вимірювання обладнання з колонками тривалості, категорії й ідентифікатора.

NumPy і форма масиву

NumPy array зберігає числові дані з визначеним типом dtype та формою shape. Одновимірний масив є послідовністю, двовимірний — матрицею рядків і стовпців. Операції можуть виконуватися для всіх елементів. Векторизація робить формулу явною, але потребує розуміння осей і сумісності форм.

python
import numpy as np

measurements = np.array([[10.0, 2.0], [20.0, 4.0], [30.0, 6.0]])
print(measurements.shape)       # (3, 2)
print(measurements.mean(axis=0)) # [20.  4.]
print(measurements.mean(axis=1)) # [ 6. 12. 18.]

axis=0 агрегує по рядках і залишає значення для стовпців; axis=1 агрегує стовпці кожного рядка. Зміна осі змінює предметний зміст. Масив не зберігає назви колонок, тому порядок ознак має бути визначений окремо. Broadcasting дозволяє сумісним формам брати участь в операціях; він не гарантує, що вибране зіставлення має потрібний зміст.

DataFrame і Series

DataFrame — таблиця pandas з іменованими колонками й індексом. Series — одновимірна іменована послідовність. Різні колонки можуть мати різні типи. Індекс допомагає зіставляти записи, але не завжди є унікальним предметним ID. Перевіряйте його призначення перед об’єднанням наборів.

python
import pandas as pd

df = pd.DataFrame({
    "id": [1, 2, 3, 3],
    "category": ["A", "B", "A", "A"],
    "minutes": [10.0, None, 30.0, 30.0],
})
print(df.dtypes)
print(df.isna().sum())
clean = df.drop_duplicates(subset=["id"]).copy()
print(clean.loc[clean["minutes"].notna(), ["id", "minutes"]])

isna знаходить пропуски, sum рахує їх по колонках. drop_duplicates видаляє повтор за погодженим ID, зберігаючи перший. Це коректно тільки якщо дубль справді означає повтор того самого запису. loc обирає рядки за маскою й колонки за назвами. Перш ніж видаляти дублі, перевірте, чи повторний ID може мати різні часові вимірювання.

Пропуски та типи

Пропуск означає відсутність або непридатність значення. Причина може бути випадковою, пов’язаною зі способом збору або залежною від самої величини. Видалення рядків здатне змінити вибірку. Заповнення нулем створює конкретне значення, яке може бути предметно неправильним. Описуйте правило й аналізуйте, чи воно не змінює висновок.

Імпутація замінює пропущені значення визначеним правилом, наприклад медіаною. Якщо медіана обчислюється для ML, її визначають лише за train і застосовують до validation/test. Інакше інформація перевірочної вибірки впливатиме на підготовку. Для категорій потрібні окреме правило та поведінка невідомого значення.

Категорії та кодування

Номер категорії не завжди означає порядок. Кодування A=1, B=2, C=3 може створити штучну числову відстань. One-hot encoding представляє кожну категорію окремою ознакою присутності. Для порядкової шкали потрібний погоджений порядок. Вибір залежить від змісту даних і моделі.

Новий набір може містити категорію, якої train не бачив. Поведінку encoder потрібно визначити явно: помилка, ігнорування або окрема група. Так само назви й порядок ознак мають збігатися на навчанні та використанні. Технічно правильна матриця з переставленими колонками може давати беззмістовний прогноз.

Масштабування

Ознаки з великим числовим діапазоном можуть домінувати в методах відстані й деяких оптимізаційних процедурах. Стандартизація часто використовує z=(x−μ)/σz=(x-\mu)/\sigma, де середнє й стандартне відхилення визначені за train. Вона не робить розподіл нормальним автоматично й не усуває предметних помилок.

Для сталої ознаки потрібна визначена обробка нульової дисперсії. Викиди можуть сильно впливати на середнє й масштаб. Перш ніж вибрати transformer, дослідіть розподіл та одиниці. Деревні моделі мають іншу залежність від масштабу, але це не скасовує перевірки якості входу.

Перевірка походження й відтворення

Зберігайте первинний набір окремо від підготовленого. Кожне перетворення має мати причину, параметри й перевірку кількості рядків. При join перевіряйте унікальність ключів: повтори з обох боків можуть створити багато рядків і змінити вагу спостережень. Для дат указуйте формат і часовий пояс.

Типові помилки та практика

Помилки: ID використано як числову ознаку без підстав, пропуски замінено нулем, статистики підготовки визначено на всьому наборі, дублікати видалено без аналізу. Відтворюваний pipeline повинен об’єднати потрібні перетворення та модель. Поясніть, які кроки навчаються з даних, а які є фіксованими правилами.

Практичний аналіз

Для таблиці вище поясніть, чому пропуск minutes не означає нуль. Що зміниться, якщо повторний ID має нову дату? Який ключ потрібний тоді? Запишіть правило підготовки та перевірку, яка виявить непогоджене збільшення рядків після join.

Підготовка як відтворюваний конвеєр

Перший етап — прочитати первинний файл без зміни його байтів. Другий — перевірити назви колонок, типи та предметні діапазони. Третій — виконати задокументовані перетворення у похідній таблиці. Збережіть журнал із причиною кожної дії: перетворення дати, обробка пропуску, уніфікація категорії. Це дозволяє пояснити відмінність підготовлених даних від джерела.

Для CSV важливі роздільник, кодування та формат десяткового числа. Wine Quality використовує крапку з комою; неправильний sep може прочитати весь рядок як одну колонку без негайної помилки. Тому перевірка форми й ключових полів потрібна перед обчисленнями. Автоматично визначений numeric-тип також не доводить, що поле є вимірюванням: числовий id або код категорії має іншу семантику.

Imputation оцінює значення для заміни пропусків за training-даними. Якщо медіану обчислити на всій таблиці до split, test вплине на підготовку. Pipeline забезпечує навчання перетворення разом із моделлю в кожному training fold. Для фіксованого перетворення одиниць, наприклад метрів у сантиметри, параметри з даних не потрібні, але формулу та одиниці все одно слід зазначити.

Категорія unknown може бути явним текстовим значенням джерела. Вона не обов’язково еквівалентна NaN. Визначте, що описує кожен стан, і лише потім обирайте перетворення. Після конвеєра повторно перевірте форму, допустимість та відповідність X і y по рядках. Зміна індексів або незалежне видалення рядків цілі може пошкодити цю відповідність і зробити подальше навчання беззмістовним.

Схема процесу

NumPy і pandas: структура даних та підготовкаОберіть елемент, щоб побачити пояснення

Перевіряємо типи, shape та ідентичність рядка.

Самоперевірка

Перевірте розуміння
На якій частині визначають медіану для ML імпутації?
Як обґрунтувати відповідь своїми словами?
Параметри підготовки визначають за train, щоб перевірочні дані не впливали на навчений pipeline.

Підсумок

NumPy надає числові масиви, pandas — іменовані таблиці. Підготовка повинна зберігати предметний зміст пропусків, ключів і категорій. Статистики train та журнал перетворень захищають від витоку й непомітної зміни вибірки.

Джерела

Опрацювали матеріал?

Збережіть цей крок у своєму прогресі.

← Повернутися до дисципліни
© 2026 Анастасія Іскандарова-МалаЕлектронний навчальний посібник · ДДТУ

Пошук у посібнику

Спробуйте «C++», «RAII» або «бази даних».