Статистика
Статистики помогают быстро понять данные: найти минимальные и максимальные значения, среднее, медиану, разброс и частоты категорий.
В DataFrame статистические методы не изменяют таблицу. Они только вычисляют значение или возвращают новую таблицу с результатом.
Числовые статистики
Заголовок раздела «Числовые статистики»Для числового столбца можно сразу получить минимум, максимум, среднее значение, медиану, дисперсию и стандартное отклонение.
uses MLABC;
begin var df := DataFrame.FromCsvText(''' Имя,Класс,Балл Анна,8А,91 Борис,8Б,76 Вера,8А,84 Глеб,8Б,68 Дина,8А,95 Егор,8Б,NA ''');
Println('Минимальный балл:', df['Балл'].Min); Println('Максимальный балл:', df['Балл'].Max); Println('Средний балл:', df['Балл'].Mean:0:2); Println('Медиана:', df['Балл'].Median:0:2); Println('Стандартное отклонение:', df['Балл'].Std:0:2);end.Вывод:
Минимальный балл: 68Максимальный балл: 95Средний балл: 82.80Медиана: 84.00Стандартное отклонение: 10.47Пропущенные значения NA не участвуют в вычислении статистик. В примере у Егора нет балла, поэтому среднее считается по пяти заполненным значениям.
Краткое описание столбцов
Заголовок раздела «Краткое описание столбцов»Describe строит таблицу с основными статистиками для числовых столбцов.
uses MLABC;
begin var df := DataFrame.FromCsvText(''' Имя,Возраст,Балл Анна,14,91 Борис,15,76 Вера,14,84 Глеб,15,68 Дина,14,95 Егор,15,NA ''');
df.Describe.Print;end.Вывод:
Столбец Count Среднее Std Мин МаксВозраст 6 14.50 0.55 14 15 Балл 5 82.80 10.99 68 95Describe удобно вызывать после загрузки данных: он быстро показывает диапазоны значений и помогает заметить странности в числовых столбцах.
Если нужна статистика только по одному столбцу, можно указать его имя:
df.Stats('Балл').Print;Вывод:
Count=5, Среднее=82.8, Std=10.99, Мин=68, Макс=95Статистика по выражению
Заголовок раздела «Статистика по выражению»Иногда нужное значение не лежит в одном столбце, а вычисляется по строке. Например, сумма покупки равна количеству, умноженному на цену.
uses MLABC;
begin var df := DataFrame.FromCsvText(''' Товар,Количество,Цена Молоко,2,60 Хлеб,1,45 Яблоки,3,55 Чай,1,120 ''');
Println('Средний чек:', df.Mean(row -> row['Количество'] * row['Цена'])); Println('Минимальный чек:', df.Min(row -> row['Количество'] * row['Цена'])); Println('Максимальный чек:', df.Max(row -> row['Количество'] * row['Цена']));end.Вывод:
Средний чек: 112.5Минимальный чек: 45Максимальный чек: 165Такой вариант полезен, когда не хочется заранее добавлять новый столбец только ради одной статистики.
Частоты значений
Заголовок раздела «Частоты значений»Для строковых столбцов чаще нужны не средние значения, а список разных значений и число повторений.
uses MLABC;
begin var df := DataFrame.FromCsvText(''' Имя,Класс Анна,8А Борис,8Б Вера,8А Глеб,8Б Дина,8А Егор,8Б ''');
Println('Разных классов:', df['Класс'].NUnique); df['Класс'].ValueCounts.Print;end.Вывод:
Разных классов: 2Класс Count 8А 3 8Б 3NUnique возвращает количество различных значений.
ValueCounts строит таблицу частот: сколько раз каждое значение встретилось в столбце.
Если нужен только список значений, используйте Unique:
foreach var value in df['Класс'].Unique do Println(value);или
df['Класс'].Unique.Println;После фильтрации
Заголовок раздела «После фильтрации»Статистики часто считают не по всей таблице, а по выбранной части данных. Для этого удобно сначала применить Filter.
uses MLABC;
begin var df := DataFrame.FromCsvText(''' Имя,Класс,Балл Анна,8А,91 Борис,8Б,76 Вера,8А,84 Глеб,8Б,68 Дина,8А,95 Егор,8Б,72 ''');
var class8A := df.Filter(row -> row['Класс'] = '8А');
Println('Средний балл 8А:', class8A['Балл'].Mean);end.Вывод:
Средний балл 8А: 90Что важно помнить
Заголовок раздела «Что важно помнить»Min,Max,Mean,Median,Stdработают с числовыми столбцами.Describe,Statsстроят краткую статистическую сводку.- Пропущенные значения
NAне участвуют в числовых статистиках. - Для строковых и категориальных столбцов полезны
Unique,NUniqueиValueCounts. - Статистики можно считать после
Filterили по выражениюrow -> ....