[ Python ] Python에서도 R처럼 data.table을 사용할 수 있어요.

2019. 6. 2. 12:05분석 Python/구현 및 자료

728x90

Python에서 대부분의 데이터를 읽을 때 주로 Pandas를 사용하지만, 작은 데이터를 읽을 때는 상관이 없다.

 

하지만 최근에 34GB짜리를 읽어보려고 했는데, 시간을 많이 잡아먹어서 스트레스를 너무 많이 받았다.

 

머 Spark나 이런 걸 사용하면 된다고 하지만, 전처리를 좀 하고 싶었던 게 있었는데,

아직 내가 Spark 같은 것을 잘 사용하지 못해서 결국 Pandas로 하였다.

 

data.table은 알려진 바로는 단일 머신으로 했을 때 가장 빠르게 데이터 핸들링을 할 수 있는 도구다.

 

이 글에서는 100GB까지 된다고 하니, 잘 사용할 줄 알아야겠다.

 

## 리눅스 버전

# If you have Python 3.5
pip install https://s3.amazonaws.com/h2o-release/datatable/stable/datatable-0.8.0/datatable-0.8.0-cp35-cp35m-linux_x86_64.whl
# If you have Python 3.6
pip install https://s3.amazonaws.com/h2o-release/datatable/stable/datatable-0.8.0/datatable-0.8.0-cp36-cp36m-linux_x86_64.whl

 

일단 읽는 것을 테스트했는데, 

12GB를 읽는데 data.table은 1분 13초가 걸렸는데,

read_csv는 확실히 더 오래 걸렸다.

(재려고 했지만, 답답함을 느껴 포기)

 

실제로 데이터 타입은 Frame type이어서 저걸 변경시켜주는 시간까지 고려해봤는데 훨씬 빠르다는 것을 알 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

head를 했을 때 타입별로 시각적으로 다름을 보여주는 것이 참 좋았던 것 같습니다

red : string , green : int ,  blue : float

 

 

칼럼 별로 통계량 값 보여주기

  • Pandas에서는 통계량 값을 뽑을 때 메모리를 소모하지만, data.table은 그렇지 않다고 합니다.

  • 저런 식으로 변환도 가능하게요
    • 도 됩니다.

 

큰 데이터에선 저런 작업을 처리하다가 메모리도 터지니까 많이 유용하다고 하네요

 

#Selecting Subsets of Rows/Columns

  • True False로 만들면 바로 뽑을 수도 있는 것 같네요.

 

#Sorting

따로 비교는 하지 않지만, 기본적으로 Pandas보다는 빠릅니다!

 

#Deleting Rows/Columns

 

#GroupBy

객체로 받으니 좀 더 걸리지만, 더 빠르다고 합니다.

# What does. f stand for?

위에 보면 f라는 게 있는데 이것은 frame proxy라고 하고, Frame 연산할 때 쓰는 것 같습니다.

 

# Filtering Rows

# SAVE

datatable_df.to_csv('output.csv')

 

일단 이렇게 data.table에서 소개를 했는데,  실제 기능은 아직 Pandas 보다 떨어진다고 합니다.

하지만 현재 계속 개발 중이고, 원래 R을 쓰시다가 Python으로 넘어올 때, 

급하게 빅데이터를 처리할 때 유용할 것 같습니다!

 

 

 

 

 

 

 

https://datatable.readthedocs.io/en/latest/install.html

 

Installation — datatable 0.8.0 documentation

This section describes how to install Python datatable on various systems. Install on Windows Currently datatable does not work on Windows. There is an open issue #1114 to add support for Windows platforms, and there is a certain amount of progress in that

datatable.readthedocs.io

https://towardsdatascience.com/an-overview-of-pythons-datatable-package-5d3a97394ee9

 

An Overview of Python’s Datatable package

Python library for efficient multi-threaded data processing, with the support for out-of-memory datasets.

towardsdatascience.com

 

728x90