Condividi tramite


Introduzione ai dataframe

Informazioni su come iniziare a usare dataframe, che sono strutture di dati bidimensionali per l'archiviazione e la modifica dei dati. I dataframe consentono di preparare i dati per un modello di Machine Learning. I dataframe possono essere usati anche per la manipolazione dei dati non correlata all'apprendimento automatico.

Installare Microsoft.Data.Analysis

Nella maggior parte dei casi, l'accesso a DataFrame è semplice come fare riferimento al pacchetto Microsoft.Data.Analysis NuGet.

dotnet package add Microsoft.Data.Analysis

Caricare i dati

I dataframe semplificano il caricamento di dati tabulari. Creare un file delimitato da virgole denominato housing-prices.csv con i dati seguenti.

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

Per iniziare, caricare i dati in un 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);

Esaminare i dati

I dataframe archiviano i dati come raccolta di colonne. In questo modo è facile interagire con i dati.

Per ottenere un'anteprima dei tipi di dati della colonna, eseguire Info().

dataFrame.Info();

Per ottenere un riepilogo dei dati, eseguire Description().

dataFrame.Description();

Trasforma i dati

Sono disponibili diverse opzioni di trasformazione per i dati. Le classi DataFrame e DataFrameColumn espongono numerose API utili, tra cui operazioni binarie, calcoli, join, merge e gestione dei valori mancanti.

Ad esempio, questi dati possono essere modificati per confrontare i prezzi cronologici con i prezzi correnti che rappresentano l'inflazione. È possibile applicare un calcolo a tutti i valori e salvare i risultati in una nuova colonna.

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

I dati possono essere ordinati in gruppi dai valori di una colonna specifica.

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

I dati possono essere filtrati in base a metriche di uguaglianza diverse. In questo esempio viene utilizzata una ElementWise funzione di uguaglianza e quindi viene filtrata in base alla colonna dei risultati booleana per ottenere un nuovo dataframe con solo i valori appropriati.

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

Combinare le fonti di dati

Considerare i dati non elaborati seguenti:

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

I dataframe possono essere costruiti da singole colonne di dati. Creare un dataframe da un elenco dei dati non elaborati.

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

I due dataframe possono essere uniti in base al valore Id. La funzione di merge accetta entrambi i dataframe e combina le righe in base al relativo valore Id.

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

Salvare i dataframe

I risultati possono essere salvati di nuovo in un formato .csv.

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

Usare il dataframe con ML.NET

I dataframe funzionano direttamente con ML.NET. Il dataframe implementa il IDataView e può essere usato per eseguire il training di un modello.