将数据导入Google合作实验室


Answers:


197

可以在此处找到官方示例笔记本,该笔记本演示了本地文件的上载/下载以及与Drive和Sheets的集成。https : //colab.research.google.com/notebooks/io.ipynb

共享文件的最简单方法是挂载Google云端硬盘。

为此,请在代码单元中运行以下命令:

from google.colab import drive
drive.mount('/content/drive')

它将要求您访问允许“ Google Files Stream”的链接以访问驱动器。之后,将显示一个长的字母数字验证码,需要在您的Colab笔记本中输入该验证码。

之后,您的云端硬盘文件将被挂载,您可以使用侧面板中的文件浏览器进行浏览。

enter image description here

这是笔记本完整示例


3
张一个例子是现在包含在捆绑例如笔记本电脑,还包括驱动器和谷歌云存储食谱:colab.research.google.com/notebook#fileId=/v2/external/...
鲍勃·史密斯

9
我可以在云端硬盘中导入特定的文件夹吗?我正在与其他人共享此合作计划,并且我不想授予我所有包含敏感信息的google驱动器的访问权限
yellow01

4
如果共享笔记本,则不会共享云端硬盘中的文件。用户仍然需要安装自己的驱动器,该驱动器是独立的。您可以根据需要与该用户共享文件,但是所有这些操作均由普通的Drive ACL控制。共享Colab笔记本仅共享笔记本,而不共享该笔记本中引用的Drive文件。
鲍勃·史密斯

我的安装成功,但是看不到文件下方左侧列出的文件。有什么建议?
Swapnil B.

3
不要训练已安装的Google驱动器中的数据。首先将数据复制到本地驱动器,然后对其进行训练。它将快近10倍。为了更快地进行复制,请确保数据文件是大档案或许多较小的档案。例如:-不要使用100000个图像文件。使用100个存档,每个存档1000个图像。这种方式上传到Google驱动器的速度也更快,从Google驱动器复制到colab的速度也更快
saurabheights

47

上载

from google.colab import files
files.upload()

下载

files.download('filename')

清单目录

files.os.listdir()

6
上传的文件是否存储在用户的Google驱动器或笔记本计算机所连接的服务器上?
RodrikTheReader

1
这些文件不是临时文件吗?
Acumenus

有上传参数吗?
user25004

这个答案应该在顶部。问题是关于导入数据,而不是挂载Google驱动器。
Fernando Wittmann

18

从您的googledrive导入数据的简单方法-这样做可以节省人们的时间(不知道为什么Google只是没有明确列出此步骤)。

安装并认证PYDRIVE

     !pip install -U -q PyDrive ## you will have install for every colab session

     from pydrive.auth import GoogleAuth
     from pydrive.drive import GoogleDrive
     from google.colab import auth
     from oauth2client.client import GoogleCredentials

     # 1. Authenticate and create the PyDrive client.
     auth.authenticate_user()
     gauth = GoogleAuth()
     gauth.credentials = GoogleCredentials.get_application_default()
     drive = GoogleDrive(gauth)

上载

如果您需要从本地驱动器上载数据:

    from google.colab import files

    uploaded = files.upload()

    for fn in uploaded.keys():
       print('User uploaded file "{name}" with length {length} bytes'.format(name=fn, length=len(uploaded[fn])))

执行,这将显示一个选择文件按钮-查找您的上传文件-单击打开

上传后,它将显示:

    sample_file.json(text/plain) - 11733 bytes, last modified: x/xx/2018 - %100 done
    User uploaded file "sample_file.json" with length 11733 bytes

创建笔记本文件

如果数据文件已经在gdrive中,则可以跳到此步骤。

现在它在您的Google驱动器中。在您的Google驱动器中找到文件,然后右键单击。点击获取“共享链接”。您将看到一个窗口:

    https://drive.google.com/open?id=29PGh8XCts3mlMP6zRphvnIcbv27boawn

复制-'29PGh8XCts3mlMP6zRphvnIcbv27boawn'-这是文件ID。

在您的笔记本中:

    json_import = drive.CreateFile({'id':'29PGh8XCts3mlMP6zRphvnIcbv27boawn'})

    json_import.GetContentFile('sample.json') - 'sample.json' is the file name that will be accessible in the notebook.

将数据导入笔记本

要将上传的数据导入笔记本(此示例中的json文件-加载方式取决于文件/数据类型-.txt,.csv等):

    sample_uploaded_data = json.load(open('sample.json'))

现在,您可以打印以查看其中的数据:

    print(sample_uploaded_data)

1
值得指出的是,通过google.colab.files.upload()Firefox 的UPLOADING建议似乎不适用于Firefox和Safari(仅适用于Chrome)。看到这里
5agado

15

第1步-将您的Google云端硬盘安装到协作

from google.colab import drive
drive.mount('/content/gdrive')

第2步-现在,您将在左窗格(文件资源管理器)中看到您的Google云端硬盘文件。右键单击您需要导入的文件,然后选择çopypath。然后,使用此复制的路径照常导入熊猫。

import pandas as pd
df=pd.read_csv('gdrive/My Drive/data.csv')

做完了!


以简洁明了取胜,并具有同等效力。我认为采用更多涉及的方法没有任何好处。
Elroch

7

我制作的最简单的方法是:

  1. 使用数据集在github上建立存储库
  2. 用克隆您的存储库!git clone --recursive [GITHUB LINK REPO]
  3. 查找数据在哪里(!ls命令)
  4. 像在普通的jupyter笔记本中一样用熊猫打开文件。

嗨,有了这个gapminder = pd.read_csv(“ Data-Analysis / pairplots / data / gapminder_data.csv”),我只会得到只有两个观测值的“版本https:// ..”变量
Mukul Sharma,

2
如果单个文件的大小大于github允许的限制,则此解决方案将无法解决,如果我猜为20MB,则为免费版本。
Akshay Soam,

7

这使您可以通过Google云端硬盘上传文件。

运行下面的代码(以前在某个地方找到了它,但是我再也找不到源了-归功于谁写的!)

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse

from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass

!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

点击出现的第一个链接,提示您登录Google;之后,将出现另一个请求访问您的Google云端硬盘的权限。

然后,运行此命令,创建一个名为“ drive”的目录,并将您的Google Drive链接到该目录:

!mkdir -p drive
!google-drive-ocamlfuse drive

如果您!ls现在进行操作,则将有一个目录驱动器,如果您执行一个!ls drive,则可以看到Google云端硬盘的所有内容。

因此,例如,如果将我的文件保存在Google云端硬盘abc.txt中的文件夹ColabNotebooks中,则现在可以通过路径访问该文件drive/ColabNotebooks/abc.txt



5

在任何协作的左侧栏中,都有一个名为“文件”的部分。在此处上传文件并使用此路径

"/content/YourFileName.extension"

例如: pd.read_csv('/content/Forbes2015.csv');


2
确保您已直接上传到根目录,而不是在“ sample_data”目录中。此外,您可以删除“内容”,而只需输入文件名,例如:pd.read_csv('Forbes2015.csv');
Vivek Solanki

如果仍然无法正常工作,您能告诉我错误消息吗?
Vivek Solanki

@flashliquid不需要。即使没有'/',它也可以工作。您可以在colab上进行测试。
Vivek Solanki

3

到目前为止,我发现最适合中小型CSV文件的最简单解决方案是:

  1. 在gist.github.com上创建一个秘密要点,然后上传(或复制并粘贴)您的文件。
  2. 单击原始视图并复制原始文件URL。
  3. 呼叫时,请使用复制的URL作为文件地址 pandas.read_csv(URL)

这对于逐行读取文本文件或二进制文件可能有用,也可能无效。


1
重要的是要注意,虽然秘密要点很难发现它们不是私人的,所以使用这种方法的任何人都应该小心。
Grae

2

从Dropbox轻松快速地导入:

!pip install dropbox
import dropbox
access_token = 'YOUR_ACCESS_TOKEN_HERE' # https://www.dropbox.com/developers/apps
dbx = dropbox.Dropbox(access_token)

# response = dbx.files_list_folder("")

metadata, res = dbx.files_download('/dataframe.pickle2')

with open('dataframe.pickle2', "wb") as f:
  f.write(res.content)

2

对于那些像我一样来自Google的关键字“ upload file colab”的用户:

from google.colab import files
uploaded = files.upload()

1

您也可以在https://github.com/ruelj2/Google_drive上的google.colab和PyDrive上使用我的实现,这使它变得容易得多。

!pip install - U - q PyDrive  
import os  
os.chdir('/content/')  
!git clone https://github.com/ruelj2/Google_drive.git  

from Google_drive.handle import Google_drive  
Gd = Google_drive()  

然后,如果您想将所有文件加载到Google云端硬盘目录中,

Gd.load_all(local_dir, drive_dir_ID, force=False)  

或者只是一个特定的文件

Gd.load_file(local_dir, file_ID)

在这种情况下,“ drive_dir_ID”是什么?
Parseltongue

如git repo中所述,drive_dir_ID是所请求目录的相应Google Drive ID。有关更多信息,请检查github.com/ruelj2/Google_drive。还有一个明显的用法示例。
Jean-Christophe

1

如@Vivek Solanki所述,我还将文件上传到了“文件”部分下的协调仪表板上。只要记下文件已上传到哪里。对我来说, train_data = pd.read_csv('/fileName.csv')工作了。


1

在Google colabs中(如果您是第一次),

from google.colab import drive
drive.mount('/content/drive')

运行这些代码,并通过outputlink,然后通过密码框

复制时,您可以按以下方式复制,转到文件右键单击并复制路径***不要忘记删除“ / content”

f = open("drive/My Drive/RES/dimeric_force_field/Test/python_read/cropped.pdb", "r")

0

它已解决,请在此处查找详细信息,请使用以下功能:https : //stackoverflow.com/questions/47212852/how-to-import-and-read-a-shelve-or-numpy-file-in-google -colaboratory / 49467113#49467113

from google.colab import files
import zipfile, io, os

    def read_dir_file(case_f):
        # author: yasser mustafa, 21 March 2018  
        # case_f = 0 for uploading one File and case_f = 1 for uploading one Zipped Directory
        uploaded = files.upload()    # to upload a Full Directory, please Zip it first (use WinZip)
        for fn in uploaded.keys():
            name = fn  #.encode('utf-8')
            #print('\nfile after encode', name)
            #name = io.BytesIO(uploaded[name])
        if case_f == 0:    # case of uploading 'One File only'
            print('\n file name: ', name)
            return name
        else:   # case of uploading a directory and its subdirectories and files
            zfile = zipfile.ZipFile(name, 'r')   # unzip the directory 
            zfile.extractall()
            for d in zfile.namelist():   # d = directory
                print('\n main directory name: ', d)
                return d
    print('Done!')

0

这是从Google驱动器将文件导入笔记本的一种方法。

打开jupyter笔记本并运行以下代码并完成身份验证过程

!apt-get install -y -qq software-properties-common python-software-properties   module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret=  {creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

完成上述代码后,请运行以下代码以安装Google驱动器

!mkdir -p drive
!google-drive-ocamlfuse drive

将文件从Google驱动器导入笔记本(例如:Colab_Notebooks / db.csv)

假设您的数据集文件位于Colab_Notebooks文件夹中,名称为db.csv

import pandas as pd
dataset=pd.read_csv("drive/Colab_Notebooks/db.csv")

希望对您有所帮助


0

如果您想在不使用代码的情况下完成此操作,则非常简单。在我的情况下,将您的文件夹压缩为

数据集

然后在Colab中,右键单击要放置此文件的文件夹,然后按“上传”并上传此zip文件。之后,编写此Linux命令。

!unzip <your_zip_file_name>

您可以看到您的数据已成功上传。


0

如果数据集大小小于25mb,则上载CSV文件的最简单方法是从GitHub存储库中。

  1. 单击存储库中的数据集
  2. 单击查看原始按钮
  3. 复制链接并将其存储在变量中
  4. 将变量加载到Pandas read_csv中以获取数据帧

例:

import pandas as pd
url = 'copied_raw_data_link'
df1 = pd.read_csv(url)
df1.head()

0
  1. 您可以通过运行以下命令安装到Google驱动器

    from google.colab import drive drive.mount('/content/drive')

  2. 之后为了进行训练,将数据从gdrive复制到colab根文件夹。

!cp -r '/content/drive/My Drive/Project_data' '/content'

其中第一个路径是gdrive路径,第二个是colab根文件夹。

这样,对于大数据的训练更快。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.