如何从 Kaggle 将一个太大的 Kaggle 数据集的选定文件加载到 Colab 中

Posted

技术标签:

【中文标题】如何从 Kaggle 将一个太大的 Kaggle 数据集的选定文件加载到 Colab 中【英文标题】:How to load just one chosen file of a way too large Kaggle dataset from Kaggle into Colab 【发布时间】:2021-08-15 04:28:12 【问题描述】:

如果我想从 Kaggle 笔记本切换到 Colab 笔记本,我可以从 Kaggle 下载笔记本并在 Google Colab 中打开该笔记本。这样做的问题是,您通常还需要下载和上传 Kaggle 数据集,这相当费力。

如果您有一个小数据集,或者您只需要一个较小的数据集文件,您可以将数据集放入 Kaggle 笔记本预期的相同文件夹结构中。因此,您需要在 Google Colab 中创建该结构,例如 kaggle/input/ 或其他任何内容,然后将其上传到那里。这不是问题。

但是,如果您有一个大型数据集,您可以:

安装您的 Google 云端硬盘并使用那里的数据集/文件

或者您按照Easiest way to download kaggle data in Google Colab 的 Colab 官方指南将 Kaggle 数据集从 Kaggle 下载到 colab,请使用链接了解更多详细信息:

请按照以下步骤下载并使用其中的 kaggle 数据 谷歌 Colab:

    转到您的 Kaggle 帐户,滚动到 API 部分并单击过期 API 令牌以删除以前的令牌

    点击 Create New API Token - 它会在你的机器上下载 kaggle.json 文件。

    转到您的 Google Colab 项目文件并运行以下命令:

       ! pip install -q kaggle
    

    选择你下载的 kaggle.json 文件

    from google.colab import files
    
    files.upload()
    

    创建名为 kaggle 的目录并将 kaggle.json 文件复制到那里。

    ! mkdir ~/.kaggle
    
    ! cp kaggle.json ~/.kaggle/
    

    更改文件的权限。

    ! chmod 600 ~/.kaggle/kaggle.json
    

    就是这样!您可以通过运行此命令检查一切是否正常。

    ! kaggle datasets list
    

下载数据

   ! kaggle competitions download -c 'name-of-competition'

或者如果你想下载数据集(取自评论):

! kaggle datasets download -d USERNAME/DATASET_NAME

您可以从“copy API”中获取这些数据集名称(如果不清楚) 命令”在 Kaggle 数据集页面上“新建笔记本”按钮旁边的“三点下拉菜单”中。

问题来了:这似乎只适用于较小的数据集。我试过了

kaggle datasets download -d allen-institute-for-ai/CORD-19-research-challenge

它没有找到那个 API,可能是因为下载 40 GB 的数据只是被限制:404 - Not Found

在这种情况下,你只能下载需要的文件并使用挂载的 Google Drive,或者你需要使用 Kaggle 而不是 Colab。

有没有办法只将 40 GB CORD-19 Kaggle 数据集的 800 MB metadata.csv 文件下载到 Colab 中?这是文件信息页面的链接:

https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv

我现在已经在 Google Drive 中加载了文件,我很好奇这是否已经是最好的方法。相比之下,在 Kaggle 上,整个数据集已经可用,无需下载,加载速度很快。

PS:从 Kaggle 下载 zip 文件到 Colab 后,需要将其解压缩。再次引用quide:

使用 unzip 命令解压数据:

例如,创建一个名为 train 的目录,

   ! mkdir train

在那里解压缩火车数据,

   ! unzip train.zip -d train

更新:我建议安装 Google Drive

在尝试了两种方式(安装 Google Drive 或从 Kaggle 直接加载)后,如果您的架构允许,我建议安装 Google Drive。这样做的好处是文件只需要上传一次:Google Colab 和 Google Drive 是直接连接的。安装 Google Drive 需要额外的步骤来从 Kaggle 下载文件,解压缩并将其上传到 Google Drive,并为每个 Python 会话获取并激活一个令牌以安装 Google Drive,但激活令牌很快就完成了。使用 Kaggle,您需要在每次会话时将文件从 Kaggle 上传到 Google Colab,这需要更多时间和流量。

【问题讨论】:

!kaggle 数据集文件 allen-institute-for-ai/CORD-19-research-challenge !kaggle 数据集下载 allen-institute-for-ai/CORD-19-research-challenge -f 元数据。 csv @The5thcolumnmouse 是的,使用:!kaggle datasets download allen-institute-for-ai/CORD-19-research-challenge -f metadata.csv 它可以工作。 :) 请回答。 【参考方案1】:

您可以编写一个只下载某些文件或一个接一个地下载文件的脚本:

import os

os.environ['KAGGLE_USERNAME'] = "YOUR_USERNAME_HERE"
os.environ['KAGGLE_KEY'] = "YOUR_TOKEN_HERE"

!kaggle datasets files allen-institute-for-ai/CORD-19-research-challenge

!kaggle datasets download allen-institute-for-ai/CORD-19-research-challenge -f metadata.csv

【讨论】:

以上是关于如何从 Kaggle 将一个太大的 Kaggle 数据集的选定文件加载到 Colab 中的主要内容,如果未能解决你的问题,请参考以下文章

从 0 到 1 走进 Kaggle

将数据集直接从 Kaggle 下载到 GoogleColab

kaggle比赛一般几个人

将 Kaggle csv 从下载 url 导入到 pandas DataFrame

* python中Kaggle API *的文档?

如何将预处理后的图像写入 kaggle 输出