Aan de slag met DataFrames

Leer hoe u aan de slag gaat met DataFrames. Dit zijn tweedimensionale gegevensstructuren voor het opslaan en bewerken van gegevens. DataFrames helpen bij het voorbereiden van gegevens voor een machine learning-model. DataFrames kunnen ook worden gebruikt voor het bewerken van gegevens die niet gerelateerd zijn aan machine learning.

Microsoft.Data.Analysis installeren

In de meeste gevallen is het openen van DataFrame net zo eenvoudig als het verwijzen naar het Microsoft.Data.Analysis NuGet-pakket.

dotnet add package Microsoft.Data.Analysis

Of in .NET 10+:

dotnet package add Microsoft.Data.Analysis

Gegevens laden

Met DataFrames kunt u eenvoudig tabelgegevens laden. Maak een door komma's gescheiden bestand genaamd housing-prices.csv met de volgende gegevens.

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

Begin met het laden van de gegevens in een 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);

Gegevens controleren

DataFrames slaan gegevens op als een verzameling kolommen. Dit maakt het eenvoudig om te communiceren met de gegevens.

Als u een voorbeeld van de kolomgegevenstypen wilt bekijken, voert u Info()uit.

dataFrame.Info();

Voer Description()uit om een samenvatting van de gegevens op te halen.

dataFrame.Description();

Gegevens transformeren

Er zijn verschillende transformatieopties voor gegevens. De klassen DataFrame en DataFrameColumn maken een aantal nuttige API's beschikbaar, waaronder binaire bewerkingen, berekeningen, joins, samenvoegingen en verwerking van ontbrekende waarden.

Deze gegevens kunnen bijvoorbeeld worden bewerkt om historische prijzen te vergelijken met de huidige prijzen die betrekking hebben op inflatie. U kunt een berekening toepassen op alle waarden en de resultaten opslaan in een nieuwe kolom.

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

Gegevens kunnen worden gesorteerd in groepen op basis van de waarden in een specifieke kolom.

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

Gegevens kunnen worden gefilterd op basis van verschillende metrische gegevens over gelijkheid. In dit voorbeeld wordt een ElementWise gelijkheidsfunctie gebruikt en vervolgens gefilterd op basis van de booleaanse resultaatkolom om een nieuw DataFrame met alleen de juiste waarden op te halen.

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

Gegevensbronnen combineren

Houd rekening met de volgende onbewerkte gegevens:

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

DataFrames kunnen worden samengesteld op basis van afzonderlijke gegevenskolommen. Maak een DataFrame op basis van een lijst met onbewerkte gegevens.

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 twee DataFrames kunnen worden samengevoegd op basis van de Id waarde. De samenvoegfunctie gebruikt zowel DataFrames als combineert rijen op basis van hun Id waarde.

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

DataFrames opslaan

Resultaten kunnen opnieuw worden opgeslagen in een .csv-indeling.

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

DataFrame gebruiken met ML.NET

DataFrames werken rechtstreeks met ML.NET. DataFrame implementeert de IDataView en kan worden gebruikt om een model te trainen.