Sdílet prostřednictvím


Začínáme s DataFramy

Zjistěte, jak začít s datovými rámci, což jsou dvojrozměrné datové struktury pro ukládání a manipulaci s daty. Datové rámce pomáhají s přípravou dat pro model strojového učení. Datové rámce se dají použít také pro manipulaci s daty nesouvisející s machine learningem.

Instalace Microsoft.Data.Analysis

Ve většině případů je přístup DataFrame jednoduchý jako odkaz na balíček NuGet Microsoft.Data.Analysis .

dotnet add package Microsoft.Data.Analysis

Nebo v .NET 10+:

dotnet package add Microsoft.Data.Analysis

Načtení dat

Datové rámce usnadňují načítání tabulkových dat. Vytvořte soubor oddělený čárkami s názvem housing-prices.csv s následujícími daty.

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

Začněte načtením dat do datového rámce.

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);

Kontrola dat

Datové rámce ukládají data jako kolekci sloupců. To usnadňuje interakci s daty.

Pokud chcete získat náhled datových typů sloupců, spusťte Info()příkaz .

dataFrame.Info();

Pokud chcete získat souhrn dat, spusťte Description()příkaz .

dataFrame.Description();

Přeměna dat

Pro data existuje celá řada transformativních možností. Třídy DataFrame a DataFrameColumn zpřístupňují řadu užitečných rozhraní API, včetně binárních operací, výpočtů, spojení, sloučení a zpracování chybějících hodnot.

Tato data lze například upravit tak, aby porovnávala historické ceny s aktuálními cenami, které se rovnají inflace. Výpočet můžete použít pro všechny hodnoty a výsledky uložit do nového sloupce.

dataFrame["ComputedPrices"] = dataFrame["HistoricalPrice"].Multiply(2);

Data je možné řadit do skupin z hodnot v určitém sloupci.

var sortedDataFrame = dataFrame.GroupBy("Size");

Data je možné filtrovat na základě různých metrik rovnosti. Tento příklad používá funkci rovnosti ElementWise a pak filtruje na základě logického výsledného sloupce, aby získal nový datový rámec pouze s příslušnými hodnotami.

PrimitiveDataFrameColumn<bool> boolFilter = dataFrame["CurrentPrice"].ElementwiseGreaterThan(200000);
DataFrame filteredDataFrame = dataFrame.Filter(boolFilter);

Kombinování zdrojů dat

Vezměte v úvahu následující nezpracovaná data:

Id, Bedrooms
1, 1
2, 2
3, 3
4, 2
5, 3
6, 1

Datové rámce lze vytvořit z jednotlivých datových sloupců. Vytvoří datový rámec ze seznamu nezpracovaných dat.

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);

Dva datové rámce lze sloučit na základě hodnoty Id. Slučovací funkce přebírá datové rámce i kombinuje řádky na základě jejich Id hodnoty.

dataFrame = dataFrame.Merge(dataFrame2, new string[] {"Id"}, new string[] {"Id"});

Ukládání datových rámců

Výsledky lze uložit zpět do formátu .csv.

DataFrame.SaveCsv(dataFrame, "result.csv", ',');

Použití datového rámce s ML.NET

Datové rámce pracují přímo s ML.NET. Datový rámec implementuje IDataView a dá se použít k natrénování modelu.