俺のOneNote

俺のOneNote

データ分析が仕事な人のOneNote愛とか、分析小話とか。

Google Colaboratory からKaggle API を叩く

過去にQiitaに書いたことがありますが、
こちらにもメモとして再度検証、記録に残します。

Kaggle APIの公式リファレンスはこちら

github.com

Kaggle json のダウンロード

My Accountから、API Tokenを作成、kaggle.jsonをダウンロードします。

f:id:kopaprin:20200506105528j:plain

以下、google drive上に先ほどのjsonを格納

f:id:kopaprin:20200506105624j:plain

Colaboratory

以下、pipからkaggleモジュールをインポート

!pip install kaggle

google driveにマウント、必要があれば適当にカレントディレクトリを設定します。

import os
from google.colab import drive
drive.mount('/content/drive')
os.chdir("/content/drive/My Drive/hoge/hogehoge")

先ほど読み込んだjsonファイルからusernameとkeyを環境変数に読み込みます。

import os
import json
f = open("/content/drive/My Drive/kaggle.json", 'r')
json_data = json.load(f) 
os.environ['KAGGLE_USERNAME'] = json_data['username']
os.environ['KAGGLE_KEY'] = json_data['key']

以上で準備は終わりです。簡単でした。

api

上記処理で、あとはapiを叩くだけです。

現在開催されているコンペティションリストはこれ。

!kaggle competitions list

f:id:kopaprin:20200506111754p:plain

試しに現在開催されている以下コンペのデータをカレントディレクトリにダウンロードしてみます。

www.kaggle.com

Dataタブに表記されているapiを、colaboratoryにコピペするだけです。

f:id:kopaprin:20200506105600p:plain

!kaggle competitions download -c m5-forecasting-uncertainty

f:id:kopaprin:20200506111920p:plain

無事全ファイルダウンロードされていました。

また、この例ではデータはzip形式になっていますが、
pandas.read_csvはzipのまま読み込むことが可能です。

import pandas as pd
train = pd.read_csv("sales_train_validation.csv.zip")

print(train.shape)
display(train.head())

f:id:kopaprin:20200506112120p:plain

無事、ちゃんと読み込めていそうな感じでした。

appendix

過去から記事を漁るといろいろでてきますので、お好きな方法で実装すればよろしいかと思います。

【Pythonメモ】Google ColaboratoryでKaggle APIを使うおまじないコード&作法 - Qiita

Easy way to use Kaggle datasets in Google Colab | Data Science and Machine Learning

Google Collaboratory で kaggle を扱う

Google Colab上でKaggleのデータをロード、モデル訓練、提出の全てを行う - Qiita