Kom igång med DataFrames

Lär dig hur du kommer igång med DataFrames, som är tvådimensionella datastrukturer för att lagra och manipulera data. DataFrames hjälper till med förberedelse av data för en maskininlärningsmodell. DataFrames kan också användas för datamanipulering som inte är relaterade till maskininlärning.

Installera Microsoft.Data.Analysis

I de flesta fall är det att komma åt DataFrame så enkelt som att referera till NuGet-paketet Microsoft.Data.Analysis.

dotnet add package Microsoft.Data.Analysis

Eller i .NET 10+:

dotnet package add Microsoft.Data.Analysis

Ladda data

DataFrames gör det enkelt att läsa in tabelldata. Skapa en kommaavgränsad fil med namnet housing-prices.csv med följande data.

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

Börja med att läsa in data i en DataFrame.

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

Granska informationen

DataFrames lagrar data som en samling kolumner. Detta gör det enkelt att interagera med data.

Om du vill få en förhandsgranskning av kolumndatatyperna kör du Info().

dataFrame.Info();

Om du vill få en sammanfattning av data kör du Description().

dataFrame.Description();

Omvandla data

Det finns en mängd olika transformerande alternativ för data. Klasserna DataFrame och DataFrameColumn exponerar ett antal användbara API:er, inklusive binära åtgärder, beräkningar, kopplingar, sammanslagningar och hantering av saknade värden.

Dessa data kan till exempel redigeras för att jämföra historiska priser med aktuella priser som redovisar inflationen. Du kan använda en beräkning för alla värden och spara resultatet i en ny kolumn.

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

Data kan sorteras i grupper från värdena i en specifik kolumn.

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

Data kan filtreras baserat på olika likhetsmått. Det här exemplet använder en ElementWise-likhetsfunktion och filtrerar sedan baserat på den booleska resultatkolumnen för att hämta en ny DataFrame med endast lämpliga värden.

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

Kombinera datakällor

Överväg följande rådata:

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

DataFrames kan konstrueras från enskilda datakolumner. Skapa en DataFrame från en lista över rådata.

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

De två dataramarna kan sammanfogas baserat på Id värdet. Sammanslagningsfunktionen tar både DataFrames och kombinerar rader baserat på deras Id värde.

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

Spara dataramar

Resultaten kan sparas tillbaka till ett .csv format.

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

Använda DataFrame med ML.NET

DataFrames fungerar direkt med ML.NET. DataFrame implementerar IDataView och kan användas för att träna en modell.