Kaggle API *within* python 的文档?

Ant*_*ine 15 python kaggle

我想编写一个python从 Kaggle.com 下载公共数据集的脚本。

Kaggle API 是用 python 编写的,但我能找到的几乎所有文档和资源都是关于如何在命令行中使用 API,而关于如何kagglepython.

一些用户似乎知道如何执行此操作,例如查看此问题的几个答案,但这些提示不足以解决我的具体问题。

也就是说,我有一个看起来像这样的脚本:

from kaggle.api.kaggle_api_extended import KaggleApi

api = KaggleApi('content of my json metadata file')

file = api.datasets_download_file(
    owner_slug='the-owner-slug',
    dataset_slug='the-dataset-slug',
    file_name='the-file-name.csv',
)
Run Code Online (Sandbox Code Playgroud)

我通过查看方法的签名提出了这一点:
api.datasets_download_file(owner_slug, dataset_slug, file_name, **kwargs)

我收到以下错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 12: invalid start byte

除了这个特定问题的解决方案之外,我真的很高兴知道如何解决 Kaggle 库的错误,而不是通过代码本身。事实上,也许问题与utf编码无关,但我不知道如何解决这个问题。如果只是文件名错误,或者像这样愚蠢的东西怎么办?

csv文件没什么特别的:三列,第一列是时间戳,另外两列是整数。

Jos*_*ian 23

我发表了一篇博文,解释了竞争、数据集和内核交互的大多数常见用例。

以下是使用 Python 中的 Kaggle API 所涉及的步骤。

设置 API 密钥

转到您的 Kaggle 帐户选项卡https://www.kaggle.com/<username>/account ,然后单击“创建 API 令牌”。将下载名为 kaggle.json 的文件。在 Mac 和 Linux 中将此文件移动到 ~/.kaggle/ 文件夹或在 Windows 上移动到 C:\Users\.kaggle\。

或者,您可以使用 kaggle.json 中的值填充 KAGGLE_USERNAME 和 KAGGLE_KEY 环境变量,以使 api 进行身份验证。

使用 API 服务器进行身份验证

 from kaggle.api.kaggle_api_extended import KaggleApi
 api = KaggleApi()
 api.authenticate()
Run Code Online (Sandbox Code Playgroud)

下载数据集

# Download all files of a dataset
# Signature: dataset_download_files(dataset, path=None, force=False, quiet=True, unzip=False)
api.dataset_download_files('avenn98/world-of-warcraft-demographics')

# downoad single file
#Signature: dataset_download_file(dataset, file_name, path=None, force=False, quiet=True)
api.dataset_download_file('avenn98/world-of-warcraft-demographics','WoW Demographics.csv')
Run Code Online (Sandbox Code Playgroud)

下载比赛文件

# Download all files for a competition
# Signature: competition_download_files(competition, path=None, force=False, quiet=True)
api.competition_download_files('titanic')

# Download single file for a competition
# Signature: competition_download_file(competition, file_name, path=None, force=False, quiet=False)
api.competition_download_file('titanic','gender_submission.csv')
Run Code Online (Sandbox Code Playgroud)

提交比赛

# Signature: competition_submit(file_name, message, competition,quiet=False)
api.competition_submit('gender_submission.csv','API Submission','titanic')
Run Code Online (Sandbox Code Playgroud)

检索排行榜

# Signature: competition_view_leaderboard(id, **kwargs)
leaderboard = api.competition_view_leaderboard('titanic')
Run Code Online (Sandbox Code Playgroud)


pro*_*sti 0

您可以检查Kaggle API的实现

但如果你很懒,你可以直接安装kaggle在你的服务器上 pip install kaggle

要下载整个比赛,您可以从 python 调用它。

import os
os.system('kaggle competitions download -c "dogs-vs-cats-redux-kernels-edition"')
Run Code Online (Sandbox Code Playgroud)

此外,检查文档