brunch

You can make anything
by writing

C.S.Lewis

by 이민우 May 28. 2019

Code snippet for Google Colab

자주 쓰는 콜랩 코드 스니펫 모음.

구글 클라우드 - [Bigquery, GCS]를 사용하는 환경인 점과 함께 

작은 데이터로 XGBoost 혹은 LightGBM 같은 Tree 모델 작성하거나 DataRobot에 훈련을 모두 맡기고 있기 때문에 최근 저의 작업은 모두 Google Colab에서 진행되었습니다. 


대부분의 작업 과정을 GCP나 DataRobot에 넘기고 작업의 흐름만 관리하므로 

고성능의 머신이나 분산처리 필요 없이 Colab으로도 충분히 작업을 할 수 있었고,

주피터 띄운 인스턴스를 관리해야 하는 불편함도 없고 디펜던시 설정하다 인스턴스 망가질 걱정도 없어 편리했습니다. 


본격적인 IDE에 비해 코드 작성이 힘들고 버전 관리나 정리가 힘든 점이 있어 Pycharm으로 갈아타고 있으나,

아직까지도 EDA를 할 때와 빠르게 프로토타입을 제작하는 일이라면 Colab이 편하고 좋은 것 같습니다. 

요 때, 우선 데이터를 Colab에 올리고서 뜯어보는 일이 거의 대부분의 노트북마다 반복되는데 이때마다 같은 코드를 매번 반복해 복사해 가져오는 불편함이 있었습니다. 


하여, 

Colab에서 사용할 수 있도록 

빅쿼리 조회, 테이블 생성, 추출, 삭제하는 짧은 스크립트와 

데이터를 한눈에 보기 편한 Facets를 띄우는 짧은 스크립트 두 가지를 묶어 깃헙에 올려두었습니다. 


https://github.com/tommybebe/colab_util


혹, Colab이 익숙하지 않으시다면 변성윤 님의 Google Colab 사용하기 글을 추천합니다. 





예시 - Bigquery


1. 데이터 조회 

- 쿼리를 입력하고서 실행하면 데이터 프레임 객체로 반환합니다. 


2. 테이블 생성

- 1번의 get method는 간편하지만 테이터가 많아질수록 느려집니다. 

- 큰 데이터는 쿼리 결과를 테이블로 생성하고 그 테이블을 활용하는 편이 훨씬 빠릅니다. 

↑ 이렇게 실행하면
↑ 이랬던 데이터 세트에
"test" 테이블이 생성된 것이 확인됩니다. 


3. 테이블 추출과 저장

- 생성한 테이블을 CSV로 만들어야 쓸 수 있겠죠.

- Google Storage로 Export 해야 합니다. 

↑ 요롷게 실행하면
"test.csv" 가 생성된 것이 보입니다. 


4. 테이블 삭제 

- 재활용하지 않을 것이면 지워야겠죠. 

이렇게 한 뒤, 
고대로 새로고침해보면? Not Found가 뜹니다. 지워졌어요.




예시 - Facets


1. Overview

-  Dataframe 안에 들은 컬럼 모두의 분포를 한 번에 훑어보기 편합니다. 


2. Dive

- 여러 축으로 나뉜 데이터를 뜯어볼 수 있습니다. 

- 이런저런 축으로 돌려보며 데이터의 특성을 파악하기 좋습니다. 


0. 주의사항

- Facets에 올리는 데이터가 많아지면 많아질수록 갱장히 느려집니다. 

- 개인적인 경험으로 5만 개 이하 row 정도는 되어야 쾌적했습니다. 





Sample Notebook

https://colab.research.google.com/drive/1kNj9YNe6dKJgcaAvJ4pwqTcBe5B9fLuM

요 노트북을 보시면 실제 동작 예시를 볼 수 있습니다. 

매거진의 이전글 숫자 맞추는 뉴럴넷
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari