Compartilhar via


Introdução aos DataFrames

Aprenda como começar a usar DataFrames, que são estruturas de dados bidimensionais para armazenar e manipular dados. Os DataFrames ajudam na preparação de dados para um modelo de machine learning. Os DataFrames também podem ser usados para manipulação de dados não relacionada ao machine learning.

Instalar o Microsoft.Data.Analysis

Na maioria dos casos, acessar DataFrame é tão simples quanto referenciar o pacote NuGet do Microsoft.Data.Analysis.

dotnet add package Microsoft.Data.Analysis

Ou, no .NET 10+:

dotnet package add Microsoft.Data.Analysis

Carregar dados

Os DataFrames facilitam o carregamento de dados de tabela. Crie um arquivo separado por vírgula chamado housing-prices.csv com os dados a seguir.

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

Comece carregando os dados em um 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);

Inspecionar dados

Os DataFrames armazenam dados como uma coleção de colunas. Isso facilita a interação com os dados.

Para obter uma visualização dos tipos de dados de coluna, execute Info().

dataFrame.Info();

Para obter um resumo dos dados, execute Description().

dataFrame.Description();

Transformar dados

Há uma variedade de opções transformadoras para dados. As classes DataFrame e DataFrameColumn expõem uma série de APIs úteis, incluindo operações binárias, cálculos, junções, fusões e tratamento de valores ausentes.

Por exemplo, esses dados podem ser editados para comparar os preços históricos com os preços atuais para representar a inflação. Você pode aplicar um cálculo a todos os valores e salvar os resultados em uma nova coluna.

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

Os dados podem ser classificados em grupos com base nos valores em uma coluna específica.

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

Os dados podem ser filtrados com base em diferentes métricas de igualdade. Este exemplo usa uma função de igualdade ElementWise e, em seguida, filtra com base na coluna de resultado booliano para obter um novo DataFrame com apenas os valores apropriados.

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

Combinar fontes de dados

Considere os seguintes dados brutos:

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

OS DataFrames podem ser construídos com base em colunas de dados individuais. Crie um DataFrame a partir de uma lista de dados brutos.

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

Os dois DataFrames podem ser mesclados com base no valor Id. A função de mesclagem usa DataFrames e combina linhas com base em seus valores Id.

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

Salvar DataFrames

Os resultados podem ser salvos novamente em formato .csv.

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

Usar DataFrame com o ML.NET

Os DataFrames funcionam diretamente com o ML.NET. O DataFrame implementa o IDataView e pode ser usado para treinar um modelo.