Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Узнайте, как приступить к работе с DataFrame— это двумерные структуры данных для хранения и управления данными. DataFrame способствуют подготовке данных для модели машинного обучения. DataFrame также можно использовать для обработки данных, не связанной с машинным обучением.
Установка Microsoft.Data.Analysis
В большинстве случаев получить доступ к DataFrame так же просто, как сослаться на пакет NuGet Microsoft.Data.Analysis.
dotnet add package Microsoft.Data.Analysis
Или в .NET 10+:
dotnet package add Microsoft.Data.Analysis
Загрузка данных
Кадры данных упрощают загрузку табличных данных. Создайте разделенный запятыми файл с именем housing-prices.csv со следующими данными.
Id,Size,HistoricalPrice,CurrentPrice
1,600f,100000,170000
2,1000f,200000,225000
3,1000f,126000,195000
4,850f,150000,205000
5,900f,155000,210000
6,550f,99000,180000
Начните с загрузки данных в датафрейм.
using System.IO;
using System.Linq;
using Microsoft.Data.Analysis;
// Define data path
var dataPath = Path.GetFullPath(@"housing-prices.csv");
// Load the data into the data frame
var dataFrame = DataFrame.LoadCsv(dataPath);
Проверка данных
DataFrame хранят данные в виде коллекции столбцов. Это упрощает взаимодействие с данными.
Чтобы получить предварительный просмотр типов данных столбцов, выполните Info().
dataFrame.Info();
Чтобы получить сводку по данным, выполните Description().
dataFrame.Description();
Преобразование данных
Существуют различные варианты преобразования данных. Классы DataFrame и DataFrameColumn предоставляют ряд полезных API, включая двоичные операции, вычисления, соединения, слияния и обработку отсутствующих значений.
Например, эти данные можно изменить, чтобы сравнить исторические цены с текущими ценами, с учетом инфляции. Вы можете применить вычисление ко всем значениям и сохранить результаты в новом столбце.
dataFrame["ComputedPrices"] = dataFrame["HistoricalPrice"].Multiply(2);
Данные можно сортировать по группам из значений в определенном столбце.
var sortedDataFrame = dataFrame.GroupBy("Size");
Данные можно фильтровать на основе различных метрик равенства. В этом примере используется функция равенства ElementWise, а затем выполняется фильтрация по столбцу с логическими результатами, чтобы получить новый DataFrame, содержащий только подходящие значения.
PrimitiveDataFrameColumn<bool> boolFilter = dataFrame["CurrentPrice"].ElementwiseGreaterThan(200000);
DataFrame filteredDataFrame = dataFrame.Filter(boolFilter);
Объединение источников данных
Рассмотрим следующие необработанные данные:
Id, Bedrooms
1, 1
2, 2
3, 3
4, 2
5, 3
6, 1
DataFrame'ы можно создать из отдельных столбцов данных. Создайте DataFrame из списка необработанных данных.
var ids = new List<Single>() {1,2,3,4,5,6};
var bedrooms = new List<Single>() {1, 2, 3, 2, 3, 1};
var idColumn = new SingleDataFrameColumn("Id", ids);
var bedroomColumn = new SingleDataFrameColumn("BedroomNumber", bedrooms);
var dataFrame2 = new DataFrame(idColumn, bedroomColumn);
Два DataFrame можно объединить на основе значения Id. Функция слияния принимает фреймы данных и объединяет строки на основе их значением Id.
dataFrame = dataFrame.Merge(dataFrame2, new string[] {"Id"}, new string[] {"Id"});
Сохранение таблиц данных
Результаты можно сохранить обратно в .csv формате.
DataFrame.SaveCsv(dataFrame, "result.csv", ',');
Использование DataFrame вместе с ML.NET
DataFrame работают напрямую с ML.NET. DataFrame реализует IDataView и может использоваться для обучения модели.