2019. 6. 2. 12:05ㆍ분석 Python/구현 및 자료
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
https://towardsdatascience.com/an-overview-of-pythons-datatable-package-5d3a97394ee9
'분석 Python > 구현 및 자료' 카테고리의 다른 글
[ Python ] 영어 Text 전처리 및 유용한 Re 설명 자료 (0) | 2019.07.09 |
---|---|
[ Python ] 메모리 누수 해결에 도움되는 패키지 소개 (0) | 2019.06.05 |
[ Python ] UMAP (Uniform Manifold Approximation and Projection) (0) | 2019.05.22 |
[ Python ] xml 파일 형식에서 원하는 부분 빼서 사용해보기 (0) | 2019.05.16 |
[ Python ] numpy를 사용하지 않고 argmax나 argmin을 할 수 있을까? (4) | 2019.05.12 |