共用方式為


開始使用 DataFrame

瞭解如何開始使用 DataFrames,這是用來儲存和作數據的二維數據結構。 DataFrame 有助於準備機器學習模型的數據。 資料框架也可用於處理與機器學習無關的數據。

安裝 Microsoft.Data.Analysis

在大部分情況下,存取 DataFrame 就像參考 Microsoft.Data.Analysis NuGet 套件一樣簡單。

dotnet package add Microsoft.Data.Analysis

載入數據

DataFrame 可讓您輕鬆地載入表格式數據。 使用下列數據建立名為 housing-prices.csv 的逗號分隔檔案。

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

從將數據載入 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);

檢查資料

DataFrames 會將數據儲存為數據行集合。 這可讓您輕鬆地與數據互動。

若要取得資料列資料類型的預覽,請執行 Info()

dataFrame.Info();

若要取得資料的摘要,請執行 Description()

dataFrame.Description();

轉換資料

數據有多種轉換選項。 DataFrameDataFrameColumn 類別會公開許多實用的 API,包括二進位作業、計算、聯結、合併和處理遺漏值。

例如,您可以編輯此數據,將歷史價格與目前價格進行比較,以計算通貨膨脹。 您可以將計算套用至所有值,並將結果儲存在新的數據行中。

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

數據可以從特定數據列中的值排序成群組。

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

數據可以根據不同的相等計量進行篩選。 這個範例會使用 ElementWise 相等函式,然後根據布爾結果數據行進行篩選,以取得只有適當值的新 DataFrame。

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

合併數據源

請考慮下列原始資料:

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

您可以從多個數據欄建構 DataFrame。 從原始數據清單中建立DataFrame。

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

這兩個資料框可以根據Id值來合併。 合併函式會採用兩個數據框,並根據它們 Id 欄位的值來合併行。

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

儲存數據框架

結果可以儲存回 .csv 格式。

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

搭配 ML.NET 使用 DataFrame

DataFrames 會直接使用 ML.NET。 DataFrame 會實作 IDataView ,並可用來定型模型。