Freigeben über


Erste Schritte mit DataFrames

Erfahren Sie, wie Sie mit DataFrames beginnen, bei denen es sich um zweidimensionale Datenstrukturen zum Speichern und Bearbeiten von Daten handelt. DataFrames helfen bei der Vorbereitung von Daten für ein Machine Learning-Modell. DataFrames können auch für Datenmanipulation verwendet werden, die nicht im Zusammenhang mit maschinellem Lernen stehen.

Installieren von Microsoft.Data.Analysis

In den meisten Fällen ist der Zugriff auf DataFrame so einfach wie das Referenzieren des Microsoft.Data.Analysis-NuGet-Pakets.

dotnet package add Microsoft.Data.Analysis

Laden der Daten

DataFrames erleichtern das Laden von tabellarischen Daten. Erstellen Sie eine durch Trennzeichen getrennte Datei namenshousing-prices.csv mit den folgenden Daten.

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

Beginnen Sie, indem Sie die Daten in ein DataFrame laden.

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

Überprüfen von Daten

DataFrames speichern Daten als Sammlung von Spalten. Dies erleichtert die Interaktion mit den Daten.

Um eine Vorschau der Spaltendatentypen zu erhalten, führen Sie Info() aus.

dataFrame.Info();

Führen Sie zum Abrufen einer Zusammenfassung der Daten aus Description().

dataFrame.Description();

Transformieren von Daten

Es gibt eine Vielzahl transformativer Optionen für Daten. Die Klassen DataFrame und DataFrameColumn bieten eine Reihe nützlicher APIs, darunter binäre Operationen, Berechnungen, Verknüpfungen, Zusammenführungen und die Behandlung fehlender Werte.

Beispielsweise können diese Daten bearbeitet werden, um historische Preise mit aktuellen Preisen zu vergleichen, die die Inflation berücksichtigen. Sie können eine Berechnung auf alle Werte anwenden und die Ergebnisse in einer neuen Spalte speichern.

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

Daten können in Gruppen aus den Werten in einer bestimmten Spalte sortiert werden.

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

Daten können basierend auf unterschiedlichen Gleichheitsmetriken gefiltert werden. In diesem Beispiel wird eine ElementWise-Gleichheitsfunktion verwendet und dann basierend auf der booleschen Ergebnisspalte gefiltert, um einen neuen DataFrame mit nur den entsprechenden Werten abzurufen.

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

Kombinieren von Datenquellen

Berücksichtigen Sie die folgenden Rohdaten:

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

DataFrames können aus einzelnen Datenspalten erstellt werden. Erstellen Sie einen DataFrame aus einer Liste der Rohdaten.

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

Die beiden DataFrames können basierend auf dem Id Wert zusammengeführt werden. Die Zusammenführungsfunktion nimmt beide DataFrames und kombiniert Zeilen basierend auf ihrem Id-Wert.

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

Speichern von DataFrames

Ergebnisse können wieder in einem .csv Format gespeichert werden.

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

Verwenden von DataFrame mit ML.NET

DataFrames arbeiten direkt mit ML.NET. DataFrame implementiert das IDataView Modell und kann zum Trainieren eines Modells verwendet werden.