다음을 통해 공유


DataFrames 시작

데이터를 저장하고 조작하기 위한 2차원 데이터 구조인 DataFrames를 시작하는 방법을 알아봅니다. 데이터 프레임은 기계 학습 모델에 대한 데이터 준비에 도움이 됩니다. 데이터 프레임은 기계 학습과 관련이 없는 데이터 조작에도 사용할 수 있습니다.

Microsoft.Data.Analysis 설치

대부분의 경우 액세스 DataFrameMicrosoft.Data.Analysis NuGet 패키지를 참조하는 것만큼 간단합니다.

dotnet package add Microsoft.Data.Analysis

데이터 로드

데이터 프레임을 사용하면 테이블 형식 데이터를 쉽게 로드할 수 있습니다. 다음 데이터를 사용하여 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을 만듭니다.

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

두 DataFrame은 Id의 값에 따라 병합할 수 있습니다. 병합 함수는 두 개의 DataFrame을 사용하여 해당 Id 값에 따라 행을 결합합니다.

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

데이터 프레임 저장

결과를 .csv 형식으로 다시 저장할 수 있습니다.

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

ML.NET DataFrame 사용

데이터 프레임은 ML.NET 직접 작동합니다. DataFrame은 IDataView 모델을 구현하고 모델을 학습하는 데 사용할 수 있습니다.