Класс DataFrame
DataFrame — это таблица данных. В ней строки описывают объекты или записи, а столбцы хранят отдельные свойства этих объектов.
В ML PascalABC.NET DataFrame используется как основной тип для работы с табличными данными: их можно загружать из CSV, просматривать, фильтровать, сортировать, группировать, объединять и готовить для моделей машинного обучения.
Строки, столбцы и ячейки
Заголовок раздела «Строки, столбцы и ячейки»Строка — это одна запись в таблице. Например, один человек, один товар, одна продажа или одно измерение.
Столбец — это одно поле данных: имя, возраст, город, цена, дата, результат измерения. У каждого столбца есть имя и тип данных.
Ячейка находится на пересечении строки и столбца и содержит конкретное значение.
Типы столбцов
Заголовок раздела «Типы столбцов»В DataFrame столбцы типизированы. Это значит, что столбец с возрастом хранит числа, столбец с датой — даты, а столбец с названием товара — строки.
Основные типы:
Integer— целые числа;Real— вещественные числа;String— строки;Boolean— логические значения;DateTime— дата и время.
При загрузке и просмотре данных типы обычно определяются автоматически, но при необходимости их можно задать явно.
Категориальные столбцы
Заголовок раздела «Категориальные столбцы»Некоторые строковые столбцы содержат не произвольный текст, а категории: город, отдел, класс, пол, тип товара.
Такие столбцы важны для анализа данных и машинного обучения. Например, перед обучением модели категории часто нужно преобразовать в числа. Это рассматривается в разделе кодирование категорий.
DataFrame не изменяется на месте
Заголовок раздела «DataFrame не изменяется на месте»Большинство операций с DataFrame возвращают новую таблицу. Исходная таблица остаётся прежней.
var adults := df.Filter(row -> row['Возраст'] >= 18);Здесь adults — новая таблица только со взрослыми людьми, а исходный df не изменился.
Такой подход делает цепочки операций понятнее: результат каждого шага можно сохранить в отдельную переменную или сразу передать дальше.
Что обычно делают с DataFrame
Заголовок раздела «Что обычно делают с DataFrame»Обычная работа с таблицей выглядит так:
- Загрузить и посмотреть данные.
- Выбрать, добавить или изменить столбцы.
- Отфильтровать и отсортировать строки.
- Посчитать статистику.
- Сгруппировать данные.
- Объединить несколько таблиц.
- Обработать дату и время.
- Разобраться с пропущенными данными.
Минимальный пример
Заголовок раздела «Минимальный пример»uses MLABC;
begin var df := DataFrame.FromCsvText(''' Товар,Категория,Количество,Цена Хлеб,Продукты,2,45.50 Молоко,Продукты,1,72.90 Блокнот,Канцтовары,3,120 ''');
var res := df .WithColumnFloat('Сумма', row -> row['Количество'] * row['Цена']) .Filter(row -> row['Сумма'] > 100) .SortByDescending('Сумма');
res.Print;end.В этом примере таблица создаётся из CSV-текста, затем добавляется новый столбец Сумма, строки фильтруются по сумме покупки и сортируются по убыванию.