Импорт данных: CSV, Excel и таблицы table

Прежде чем считать — данные надо загрузить; современный способ хранить их в MATLAB — таблица.

Тип table хранит разнотипные столбцы с именами — как лист электронной таблицы или DataFrame.

Чтение файлов одной командой

Функция readtable читает CSV и Excel в таблицу, сама определяя имена столбцов из заголовка и типы данных. Это самый удобный способ загрузить экспериментальные данные или выгрузку.

T = readtable('measurements.csv');
height(T)          % число строк
T.Properties.VariableNames   % имена столбцов

Для чистых числовых матриц без заголовков подойдёт readmatrix, а старый csvread постепенно выходит из употребления в пользу этих двух.

Обращение к столбцам

К столбцу таблицы обращаются по имени через точку: T.Temperature вернёт весь столбец как вектор. Дальше с ним работают как с любым массивом: считают среднее, фильтруют, строят график. Логическая индексация работает и над строками таблицы.

avgTemp = mean(T.Temperature);
hot = T(T.Temperature > 25, :);   % строки с T > 25
plot(T.Time, T.Temperature);

Создание таблицы вручную

Таблицу можно собрать из векторов функцией table, задав имена столбцов. Это удобно, чтобы аккуратно хранить результаты расчёта вместе с подписями.

name = ["Ada"; "Bob"; "Cleo"];
score = [95; 80; 88];
T = table(name, score);
% T теперь таблица с колонками name и score

Параллель с pandas

Тип table — близкий родственник DataFrame из pandas: именованные столбцы, разные типы, фильтрация по условию, группировка. Группировки делает groupsummary (аналог groupby). Если вы знаете pandas, переход на table интуитивен; если знаете table — pandas покажется знакомым.

Как работает под капотом

Внутри таблица — это набор столбцов-векторов, объединённых под общими именами, плюс метаданные (имена переменных, имена строк, единицы измерения). Каждый столбец однороден по типу, но разные столбцы могут быть разными — числа, строки, даты, категории. Это компромисс между жёсткой числовой матрицей и совсем свободным cell-массивом: структура есть, но она гибкая. Поэтому T.Col возвращает быстрый однотипный вектор, а вся таблица остаётся удобным контейнером смешанных данных.

Запись результатов обратно в файл

Анализ данных редко заканчивается на экране — итог обычно нужно сохранить. Зеркально функциям чтения существуют функции записи: writetable(T, 'result.csv') сохраняет таблицу в CSV или Excel, writematrix — числовую матрицу, save('data.mat', 'T') сохраняет переменные в родной двоичный формат MAT, который потом мгновенно загружается через load. Формат MAT удобен для промежуточных результатов между сессиями MATLAB, а CSV и Excel — для обмена с внешним миром и коллегами, не работающими в MATLAB. Полный цикл «прочитал — обработал — записал» замыкается, и расчёт становится воспроизводимым конвейером: запустил скрипт — получил готовый файл результатов.

Частые ошибки

  • Обращаться к столбцу как T(:,1) (это подтаблица) вместо T.Name (это вектор значений).
  • Не учитывать, что readtable может прочитать числа как текст, если в столбце есть нечисловые символы.
  • Путать readtable (таблица с именами) и readmatrix (чистая числовая матрица).

Типичный конвейер работы с данными

Стоит увидеть, как импорт встраивается в полный цикл анализа. Сначала readtable загружает сырые данные. Затем их чистят: убирают пропуски (rmmissing), фильтруют выбросы логической индексацией, приводят типы. Дальше считают сводные характеристики — средние, группировки через groupsummary. И наконец визуализируют результат, обращаясь к столбцам по имени. Весь этот конвейер — загрузка, очистка, агрегирование, визуализация — складывается из уже знакомых вам инструментов: таблиц, масок, агрегатов и графиков. MATLAB здесь конкурирует с парой pandas плюс Matplotlib из мира Python, предлагая всё то же самое в единой среде.

Категориальные данные и даты

Реальные таблицы содержат не только числа. Для повторяющихся текстовых меток (город, марка, статус) есть тип categorical: он хранит данные компактно и ускоряет группировку, превращая текст в перечисление с конечным набором значений. Для моментов времени — типы datetime и duration, которые понимают арифметику дат: разность двух дат даёт длительность, а не бессмысленное число. readtable при чтении часто распознаёт такие столбцы автоматически. Правильные типы — не педантизм: они защищают от ошибок (нельзя случайно усреднить названия городов) и открывают специализированные операции вроде группировки по месяцам или сортировки категорий в осмысленном порядке.

Итоги

  • readtable загружает CSV/Excel в таблицу с именованными столбцами.
  • К столбцу обращаются T.Имя; строки фильтруют логической индексацией.
  • table — родственник pandas DataFrame: гибкий контейнер разнотипных столбцов.
Проверьте себя
1. Какая функция читает CSV в таблицу с именами столбцов?
Aload
Breadtable
Cfopen
Dimport
2. Как получить весь столбец Temperature таблицы T?
AT(Temperature)
BT.Temperature
CT{Temperature}
DT->Temperature
3. На какой популярный тип Python похож table?
Anumpy.array
Bpandas.DataFrame
Cdict
Dlist