데이터 인사이트 스터디 내용을 관리하는 블로그 입니다.

Data Insight Study Blog

  • Join Us on Facebook!
  • Follow Us on Twitter!
  • LinkedIn
  • Subcribe to Our RSS Feed

2. Reading and Preparing Data > Reading the Data > XDF vs CSV

XDF 와 CSV

XDF 파일은 압축되어 있기 때문에 CSV 파일보다 훨씬 크기가 작습니다. XDF 파일의 주요 장점은 CSV 파일보다 훨씬 빨리 파일을 읽고 처리 할 수 있다는 것입니다(얼마나 빨리 처리되는 지를 볼 수있는 간단한 벤치마크를 실행할 것입니다). XDF 파일 형식의 단점은 MRS만이 인식하고 사용할 수 있다는 것입니다. 따라서 우리가 XDF를 사용할 것인지 아니면 CSV를 사용할 것인지의 여부를 결정하려면 다음과 같은 관련된 I/O 장점과 단점을 이해해야 합니다.

  1. CSV에서 XDF로 변환하는 것은 그 자체로 런타임 시 비용이 됩니다.
  2. 일단 CSV가 XDF로 변환된 이후에는 XDF를 직접 처리하는 경우가 처리 시간(XDF 읽기 및 쓰기)이 빨라집니다.

EDA 워크 플로에서는 일반적으로 데이터는 정제 및 정리된 다음, 이를 다양한 모델링 및 데이터 마이닝 알고리즘에 제공됩니다. 그러므로 CSV에서 XDF로 변환하는 초기 런타임 소요 시간은 XDF 파일로 계속 작업하는 이후 단계의 런타임을 줄임으로써 빠르게 상쇄됩니다. 그러나 XDF 변환을 건너 뛰는 경우, 입력 준비가 완료된 데이터 세트에 대한 일회성 분석 모델링 알고리즘과 같은 종류의 작업이 더 빨리 수행될 수도 있습니다. 일회성 분석 작업은 또한 운영 환경의 코드에서 일반적인 형태로 나타나며, 예를 들어 새로운 데이터가 들어올 때마다 이미 존재하는 모델로 해당 데이터 집합에 대한 스코어링 작업을 수행하는 것과 같은 작업을 볼 수 있습니다. 이러한 경우, 최적의 솔루션을 찾기 위해 어느 정도의 벤치 마크를 실행해야 할 필요가 있습니다.

마지막 섹션에서 rxImport를 사용하여 6개월 분의 CSV 파일을 단일 XDF 파일로 변환합니다. 우리는 이제 이 XDF 데이터 파일을 가리키는 nyc_xdf 라는 R 객체를 만들 수 있습니다. 우리는 RxXdfData 함수에  해당 XDF 파일에 대한 경로를 제공함으로써 해당 작업을 수행합니다. 다음으로 nyc_xdf 객체에 대해 rxSummary 함수를 실행하여, 이 데이터 집합의 요약 정보을 살펴 보겠습니다. rxSummary 함수는 다른 많은 R 함수에서 사용되는 것과 동일한 공식 표기법(formula notation)을 사용합니다. 이 경우 ~ fare_amount 식은 fare_amount 열에 대한 요약 정보 만을 보고 싶다는 의미입니다. Base R의 Summary 함수처럼 rxSummary는 각 열의 유형에 따라 다른 출력을 표시합니다. fare_amount는 숫자 열이므로 숫자에 대한 요약 통계 정보가 표시됩니다.

input_xdf <- 'yellow_tripdata_2016.xdf'
nyc_xdf <- RxXdfData(input_xdf)
system.time(
rxsum_xdf <- rxSummary( ~ fare_amount, nyc_xdf) # fare amount에 대한 통계 요약 제공
)
rxsum_xdf
Rows Processed: 69406520 
   user  system elapsed 
   0.00    0.00    1.68 

Call:
rxSummary(formula = ~fare_amount, data = nyc_xdf)

Summary Statistics Results for: ~fare_amount
Data: nyc_xdf (RxXdfData Data Source)
File name: yellow_tripdata_2016.xdf
Number of valid observations: 69406520 
 
 Name        Mean     StdDev   Min    Max      ValidObs MissingObs
 fare_amount 12.91626 128.1172 -957.6 628544.7 69406520 0         

 
XDF 변환을 건너 뛰고, 원본 CSV 파일에 동일한 분석을 수행할 수도 있음을 알아야 합니다. 이 때, CSV 파일은 월단위로 별도 저장되어 있으므로, CSV 파일을 하나로 결합하지 않을 경우, 단일 rxSummary 명령으로는 단지 달 동안의 요약 정보만 얻을 수 있습니다. 그렇지만 이것 만으로도 성능을 검증하려는 우리의 목적 달성에는 충분할 것입니다. CSV 파일에 대하여 rxSummary를 실행하려면, RxTextData (XDF 파일의 경우에서 사용한 RxXdfData 대신)를 사용하여 CSV 파일에 대한 포인터를 만들고, colClasses 인수를 사용하여 열 유형을 직접 전달합니다. 나머지는 동일합니다. 실행 시에 CSV 파일의 요약을 만들어 내는 시간이 상대적으로 꽤 오래 걸리는 점에 유의하십시오(CSV 파일이 한 달의 데이터로만 구성 되었음에도 불구하고).

input_csv <- 'yellow_tripdata_2016-01.csv' # CSV 파일들을 결합하지 않으면 한 달의 데이터만 사용 가능
nyc_csv <- RxTextData(input_csv, colClasses = col_classes) # CSV 파일 참조 및 열 정보 제공
system.time(
  rxsum_csv <- rxSummary( ~ fare_amount, nyc_csv) # fare amount에 대한 통계 요약 제공
)
rxsum_csv
Rows Processed: 10906858 
   user  system elapsed 
   0.00    0.00   42.58 

Call:
rxSummary(formula = ~fare_amount, data = nyc_csv)

Summary Statistics Results for: ~fare_amount
Data: nyc_csv (RxTextData Data Source)
File name: yellow_tripdata_2016-01.csv
Number of valid observations: 10906858 
 
 Name        Mean     StdDev Min    Max      ValidObs MissingObs
 fare_amount 12.48693 35.564 -957.6 111270.9 10906858 0         

 
마지막 예제는 RevoScaleR이 플랫 파일(XDF 파일보다 처리 시간이 오래 걸리지만)을 직접 사용할 수 있음을 보여주기 위해 실행되습니다. 그렇지만 이후의 분석에는 매우 많은 데이터 처리가 필요하고 다양한 분석 함수들이 실행되기 때문에, 지금부터는 XDF 파일만을 사용하도록 합니다. 이렇게 함으로써 우리는 더 빠른 런타임을 통한 이익을 얻을 수 있습니다.

답글 기능이 비활성화되어 있습니다