Загрузка и просмотр
CSV — простой текстовый формат для хранения таблиц. Каждая строка файла соответствует строке таблицы, а значения в ней разделяются запятыми или другими разделителями.
Например:
Возраст,Город,Доход25,Москва,8000032,Казань,95000CSV хорошо подходит для машинного обучения, потому что в нём удобно хранить наборы данных в виде строк и столбцов. Такие файлы легко создавать, просматривать и загружать в разные программы.
DataFrame можно создать из CSV-текста прямо в программе или загрузить из файла. Для первых примеров удобнее использовать CSV-текст: программа получается полностью самодостаточной, и её можно сразу запустить.
После загрузки обычно нужно быстро проверить таблицу: вывести первые строки, посмотреть типы столбцов, найти числовые признаки и убедиться, что данные прочитались правильно.
Загрузка датафрейма из CSV-текста
Заголовок раздела «Загрузка датафрейма из CSV-текста»DataFrame.FromCsvText создаёт таблицу из многострочной строки. Первая строка содержит имена столбцов, остальные строки — данные.
uses MLABC;
begin var df := DataFrame.FromCsvText(''' Имя,Класс,Балл Анна,8А,91 Борис,8Б,76 Вера,8А,84 ''');
df.Print;end.Вывод:
Имя Класс Балл Анна 8А 91Борис 8Б 76 Вера 8А 84В этом примере DataFrame сам создаёт три столбца: Имя, Класс и Балл.
Загрузка из CSV-файла
Заголовок раздела «Загрузка из CSV-файла»Если данные лежат в отдельном файле, используйте DataFrame.FromCsv. Такой вариант удобен для реальных таблиц и учебных наборов данных.
uses MLABC;
begin var df := DataFrame.FromCsv('students.csv');
df.Head(2).Print;end.Вывод:
Имя Класс Балл Анна 8А 91Борис 8Б 76Head выводит первые строки таблицы. Это удобно, когда файл большой и печатать всю таблицу не нужно. Если количество строк не указано, выводятся первые 10 строк.
Первичный просмотр таблицы
Заголовок раздела «Первичный просмотр таблицы»После загрузки полезно посмотреть не только строки, но и общую информацию о таблице.
uses MLABC;
begin var df := DataFrame.FromCsvText(''' Имя,Возраст,Балл Анна,14,91 Борис,15,76 Вера,14,84 Глеб,15,68 ''');
df.PrintInfo; df.Describe.Print;end.Вывод:
Строк : 4Столбцов : 3=================================Имя : Str (4 без пропусков)Возраст : Int (4 без пропусков)Балл : Int (4 без пропусков)
Column Count Mean Std Min MaxВозраст 4 14.50 0.58 14 15 Балл 4 79.75 9.95 68 91PrintInfo показывает состав таблицы: столбцы, их типы и служебную информацию.
Describe строит краткое статистическое описание числовых столбцов: минимум, максимум, среднее значение и другие характеристики.
Автоматическое распознавание типов
Заголовок раздела «Автоматическое распознавание типов»При загрузке CSV DataFrame может автоматически определить типы столбцов: целые числа, вещественные числа, строки, логические значения и даты.
uses MLABC;
begin var df := DataFrame.FromCsvText(''' Дата,Товар,Количество,Цена 2024-09-01,Хлеб,2,45.50 2024-09-02,Молоко,1,72.90 2024-09-03,Яблоки,3,58.25 ''');
df.PrintInfo;end.Вывод:
Строк : 3Столбцов : 4=========================================Дата : DateTime (3 без пропусков)Товар : Str (3 без пропусков)Количество : Int (3 без пропусков)Цена : Float (3 без пропусков)Здесь Дата будет распознана как тип datetime, Количество — как целочисленный столбец, а Цена — как вещественный.
Явное указание типов столбцов
Заголовок раздела «Явное указание типов столбцов»Иногда типы лучше задать вручную. Например, если в CSV записаны цены 120, 150, 90, автоматическое распознавание может считать столбец целочисленным, хотя по смыслу это вещественная цена.
Явное указание типов столбцов задается через параметр columnTypes, который представляет собой словарь пар (ИмяСтолбца, Тип). Для задания типов используются константы ctInt, ctFloat, ctStr, ctBool, ctDateTime.
uses MLABC;
begin var text := ''' Товар,Цена Хлеб,45 Молоко,72 Яблоки,58 ''';
var df := DataFrame.FromCsvText( text, columnTypes := Dict('Цена' to ctFloat) );
df.Print;end.Вывод:
Товар Цена Хлеб 45.00Молоко 72.00Яблоки 58.00Необязательно указывать типы всех столбцов. В примере явно задана только Цена, а остальные столбцы загружаются обычным способом.
Категориальные признаки при загрузке датафрейма
Заголовок раздела «Категориальные признаки при загрузке датафрейма»Столбец может хранить не просто текст или числа, а категории: пол, отдел, город, цвет, тип товара. Такие столбцы важно отличать от обычных числовых величин, потому что дальше они часто кодируются перед обучением модели.
Подробнее о том, какие столбцы считать категориальными, см. в разделе Категориальные столбцы.
Категориальные столбцы можно указать сразу при создании DataFrame.
uses MLABC;
begin var df := DataFrame.FromCsvText(''' Имя,Пол,Отдел,Опыт Анна,Ж,Аналитика,3 Борис,М,Разработка,5 Вера,Ж,Разработка,2 ''', categoricalColumns := ['Пол', 'Отдел']);
df.PrintInfo;end.Здесь Пол и Отдел отмечаются как категориальные столбцы. Это не меняет сами значения в таблице, но сохраняет важную информацию о смысле столбцов для дальнейшей обработки данных.
Типы и категориальные столбцы можно задать вместе:
uses MLABC;
begin var df := DataFrame.FromCsvText(''' Имя,Пол,Отдел,Опыт,Зарплата Анна,Ж,Аналитика,3,90000 Борис,М,Разработка,5,120000 Вера,Ж,Разработка,2,85000 ''', columnTypes := Dict('Зарплата' to ctFloat), categoricalColumns := ['Пол', 'Отдел']);
df.PrintInfo;end.Что важно помнить
Заголовок раздела «Что важно помнить»- Для учебных примеров удобно использовать
DataFrame.FromCsvText. - Для реальных файлов используется
DataFrame.FromCsv. PrintиHeadпомогают быстро посмотреть данные в таблице (все или часть).PrintInfoпоказывает структуру таблицы и типы столбцов.- Типы можно распознавать автоматически или задавать явно через
columnTypes. - Категориальные признаки стоит отмечать при загрузке через параметр
categoricalColumns.