我想编写一个python从 Kaggle.com 下载公共数据集的脚本。
Kaggle API 是用 python 编写的,但我能找到的几乎所有文档和资源都是关于如何在命令行中使用 API,而关于如何kaggle在python.
一些用户似乎知道如何执行此操作,例如查看此问题的几个答案,但这些提示不足以解决我的具体问题。
也就是说,我有一个看起来像这样的脚本:
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)
但如果你很懒,你可以直接安装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)
此外,检查文档