데이터를 저장하고 조작하기 위한 2차원 데이터 구조인 DataFrames를 시작하는 방법을 알아봅니다. 데이터 프레임은 기계 학습 모델에 대한 데이터 준비에 도움이 됩니다. 데이터 프레임은 기계 학습과 관련이 없는 데이터 조작에도 사용할 수 있습니다.
Microsoft.Data.Analysis 설치
대부분의 경우 액세스 DataFrame 는 Microsoft.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();
데이터 변환
데이터에 대한 다양한 변환 옵션이 있습니다. DataFrame 및 DataFrameColumn 클래스는 이진 작업, 계산, 조인, 병합 및 누락된 값 처리를 포함한 다양한 유용한 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 모델을 구현하고 모델을 학습하는 데 사용할 수 있습니다.
.NET