Closed3

kaggleの小技メモ

currypurincurrypurin

データセットを新しく作るコード

import json
from kaggle.api.kaggle_api_extended import KaggleApi


ID = '<自分のID>'
DATASET_DIR = '<datasetのpath>'
DATASET_TITLE  = '<datasetのタイトル>'
FOLDER_DIR = '<データセットにアップロードするフォルダ>'

dataset_metadata = {}
dataset_metadata['id'] = f'currypurin/{DATASET_DIR}'
dataset_metadata['licenses'] = [{'name': 'CC0-1.0'}]
dataset_metadata['title'] = DATASET_TITLE

with open(FOLDER_DIR / 'dataset-metadata.json', 'w') as f:
    json.dump(dataset_metadata, f, indent=4)

api = KaggleApi()
api.authenticate()
api.dataset_create_new(folder=FOLDER_DIR, convert_to_csv=False, dir_mode='skip')

currypurincurrypurin

すでにデータセットがあった場合には、更新するように変更したversion。

UPLOAD_DIR = '<uploadするdirのpath>'
EX_NO = '<実験番号>'  # 実験番号などを入れる、folderのpathにする
USERID = '<Kaggleのuserid>'


def dataset_upload():
    import json
    from kaggle.api.kaggle_api_extended import KaggleApi

    id = f'{USERID}/{EX_NO}'

    dataset_metadata = {}
    dataset_metadata['id'] = id
    dataset_metadata['licenses'] = [{'name': 'CC0-1.0'}]
    dataset_metadata['title'] = f'{EX_NO}'

    with open(UPLOAD_DIR / 'dataset-metadata.json', 'w') as f:
        json.dump(dataset_metadata, f, indent=4)

    api = KaggleApi()
    api.authenticate()

    # データセットがない場合
    if f'{USERID}/{EX_NO}' not in [str(d) for d in api.dataset_list(user=USERID, search=f'"{EX_NO}"')]:
        api.dataset_create_new(folder=UPLOAD_DIR,
                               convert_to_csv=False,
                               dir_mode='skip')
    # データセットがある場合
    else:
        api.dataset_create_version(folder=UPLOAD_DIR,
                                   version_notes='update',
                                   convert_to_csv=False,
                                   delete_old_versions=True,
                                   dir_mode='skip')
dataset_upload()
このスクラップは2021/01/11にクローズされました