Nhập dữ liệu vào Google Colaboratory


156

Các cách phổ biến để nhập dữ liệu riêng tư vào sổ ghi chép Google Colaboratory là gì? Có thể nhập một trang Google không công khai? Bạn không thể đọc từ các tập tin hệ thống. Các tài liệu giới thiệu liên kết đến một hướng dẫn sử dụng BigQuery , nhưng điều đó có vẻ hơi ... nhiều.

Câu trả lời:


197

Một sổ ghi chép ví dụ chính thức thể hiện tải lên / tải xuống tệp cục bộ và tích hợp với Drive và trang tính có sẵn tại đây: https://colab.research.google.com/notebooks/io.ipynb

Cách đơn giản nhất để chia sẻ tệp là gắn Google Drive.

Để làm điều này, hãy chạy như sau trong một ô mã:

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

Nó sẽ yêu cầu bạn truy cập một liên kết đến ALLOW "Google Files Stream" để truy cập ổ đĩa của bạn. Sau đó, một mã xác thực chữ và số dài sẽ được hiển thị cần được nhập vào sổ ghi chép của Colab.

Sau đó, các tệp Drive của bạn sẽ được gắn kết và bạn có thể duyệt chúng bằng trình duyệt tệp trong bảng điều khiển bên.

nhập mô tả hình ảnh ở đây

Đây là một ví dụ đầy đủ


3
Một ví dụ về trang tính hiện được bao gồm trong sổ ghi chép mẫu kèm theo, bao gồm các công thức cho Drive và Google Cloud Storage: colab.research.google.com/notebook#fileId=/v2/external/ trộm
Bob Smith

9
Tôi có thể nhập một thư mục cụ thể trong Drive không? Tôi đang chia sẻ colab này với người khác và tôi không muốn cấp quyền truy cập vào tất cả các ổ google của mình có chứa thông tin nhạy cảm
yellow01

4
Các tệp trong Drive của bạn sẽ không được chia sẻ nếu bạn chia sẻ sổ ghi chép. Người dùng sẽ vẫn cần phải gắn ổ đĩa riêng của họ, riêng biệt. Bạn có thể chia sẻ các tệp với người dùng đó nếu cần, nhưng tất cả các tệp đó được điều khiển bởi các ổ ACL thông thường. Chia sẻ sổ ghi chép Colab chỉ chia sẻ sổ ghi chép, không chia sẻ tệp Drive được tham chiếu trong sổ ghi chép đó.
Bob Smith

mount của tôi thành công nhưng tôi không thể thấy các tập tin được liệt kê ở phía bên trái dưới các tập tin. Bất kỳ đề xuất?
Swapnil B.

3
Không đào tạo dữ liệu trong ổ đĩa google gắn. Đầu tiên sao chép dữ liệu vào ổ đĩa cục bộ và sau đó đào tạo về nó. Nó sẽ nhanh hơn gần 10 lần. Để sao chép nhanh hơn, hãy đảm bảo các tệp dữ liệu là kho lưu trữ lớn hoặc một số tệp nhỏ hơn. Ví dụ: - Không sử dụng 100000 tệp hình ảnh. Sử dụng 100 lưu trữ 1000 hình ảnh mỗi. Cách này tải lên google drive cũng nhanh hơn và việc sao chép từ google drive sang
colab

47

Tải lên

from google.colab import files
files.upload()

Tải xuống

files.download('filename')

Danh sách thư mục

files.os.listdir()

6
Các tệp đã tải lên được lưu trữ trên ổ đĩa google của người dùng hoặc máy chủ mà máy tính xách tay được kết nối?
RodrikTheReader

1
Không phải những tập tin này là phù du?
Acumenus

Bất kỳ đối số để tải lên?
dùng25004

Câu trả lời này nên ở trên cùng. Câu hỏi là về việc nhập dữ liệu, không gắn ổ đĩa google.
Fernando Wittmann

18

Cách đơn giản để nhập dữ liệu từ googledrive của bạn - làm điều này giúp mọi người tiết kiệm thời gian (không biết tại sao google chỉ không liệt kê rõ ràng từng bước này).

CÀI ĐẶT VÀ PYDRIVE TỰ ĐỘNG

     !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)

TẢI LÊN

nếu bạn cần tải lên dữ liệu từ ổ đĩa cục bộ:

    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])))

thực hiện và điều này sẽ hiển thị nút chọn tệp - tìm tệp tải lên của bạn - nhấp vào mở

Sau khi tải lên, nó sẽ hiển thị:

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

TẠO FILE CHO NOTEBOOK

Nếu tệp dữ liệu của bạn đã có trong gdrive của bạn, bạn có thể bỏ qua bước này.

Bây giờ nó là trong ổ đĩa google của bạn. Tìm tệp trong ổ đĩa google của bạn và nhấp chuột phải. Nhấp vào nhận 'liên kết có thể chia sẻ.' Bạn sẽ nhận được một cửa sổ với:

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

Sao chép - '29PGh8XCts3mlMP6zRphvnIcbv27boawn' - đó là ID tệp.

Trong quyển vở của bạn:

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

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

NHẬP DỮ LIỆU VÀO LƯU Ý

Để nhập dữ liệu bạn đã tải lên vào sổ ghi chép (một tệp json trong ví dụ này - cách bạn tải sẽ phụ thuộc vào tệp / loại dữ liệu - .txt, .csv, v.v.):

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

Bây giờ bạn có thể in để xem dữ liệu ở đó:

    print(sample_uploaded_data)

1
Điều đáng nói là đề xuất TẢI LÊN , thông qua google.colab.files.upload()dường như không hoạt động trên cả Firefox và Safari, chỉ Chrome. Xem tại đây
5agado

15

bước 1- Gắn Google Drive của bạn vào Cộng tác

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

Bước 2- Bây giờ bạn sẽ thấy các tệp Google Drive của mình trong khung bên trái (trình duyệt tệp). Nhấp chuột phải vào tệp mà bạn cần nhập và chọn đường dẫn çopy. Sau đó nhập như bình thường trong gấu trúc, sử dụng đường dẫn sao chép này.

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

Làm xong!


Thắng về sự rõ ràng và ngắn gọn và có hiệu quả tương đương. Tôi thấy không có lợi thế cho các cách liên quan nhiều hơn để làm điều này.
Elroch

7

Cách đơn giản nhất tôi đã thực hiện là:

  1. Tạo kho lưu trữ trên github với tập dữ liệu của bạn
  2. Sao chép kho lưu trữ của bạn với! git clone --recursive [GITHUB LINK REPO]
  3. Tìm dữ liệu của bạn ở đâu (lệnh ls)
  4. Mở tệp với gấu trúc khi bạn làm điều đó trong sổ ghi chép jupyter bình thường.

Hi, với điều này "phiên bản https: // .." gapminder = pd.read_csv ( "Dữ liệu-Phân tích / pairplots / data / gapminder_data.csv") Tôi chỉ nhận được biến với chỉ 2 observatons
Mukul Sharma

2
Giải pháp này sẽ không hoạt động nếu một kích thước tệp duy nhất vượt quá giới hạn cho phép của github mà nếu tôi đoán là 20 MB trong phiên bản miễn phí.
Akshay Soam

7

Điều này cho phép bạn tải lên các tệp của mình thông qua Google Drive.

Chạy mã dưới đây (tìm thấy mã này ở đâu đó trước đây nhưng tôi không thể tìm lại nguồn - tín dụng cho bất cứ ai đã viết nó!):

!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}

Nhấp vào liên kết đầu tiên xuất hiện sẽ nhắc bạn đăng nhập vào Google; sau đó, một cái khác sẽ xuất hiện để xin phép truy cập vào Google Drive của bạn.

Sau đó, chạy cái này để tạo một thư mục có tên 'drive' và liên kết Google Drive của bạn với nó:

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

Nếu bạn làm !lsngay bây giờ, sẽ có một ổ đĩa thư mục và nếu bạn làm điều đó, !ls drivebạn có thể thấy tất cả nội dung của Google Drive.

Vì vậy, ví dụ: nếu tôi lưu tệp được gọi abc.txttrong thư mục có tên ColabNotebookstrong Google Drive, bây giờ tôi có thể truy cập tệp qua đường dẫndrive/ColabNotebooks/abc.txt



5

Trên thanh bên trái của bất kỳ bảng màu nào cũng có một phần gọi là "Tệp". Tải tệp của bạn lên đó và sử dụng đường dẫn này

"/content/YourFileName.extension"

Ví dụ: pd.read_csv('/content/Forbes2015.csv');


2
Hãy chắc chắn rằng bạn đã tải trực tiếp lên thư mục gốc chứ không phải trong thư mục 'sample_data'. Ngoài ra, bạn có thể xóa "nội dung" và chỉ cần viết tên tệp như:pd.read_csv('Forbes2015.csv');
Vivek Solanki

Nếu vẫn không hoạt động, bạn có thể cho tôi biết thông báo lỗi không?
Vivek Solanki

@flashl Liquid Không cần thiết. Nó hoạt động ngay cả khi không có '/'. Bạn có thể kiểm tra nó trên colab.
Vivek Solanki

3

Giải pháp đơn giản nhất mà tôi đã tìm thấy cho đến nay hoạt động hoàn hảo cho các tệp CSV cỡ nhỏ đến trung bình là:

  1. Tạo một ý chính bí mật trên gist.github.com và tải lên (hoặc sao chép-dán nội dung của) tệp của bạn.
  2. Bấm vào Nguyên chế độ xem và sao chép URL tệp thô.
  3. Sử dụng URL được sao chép làm địa chỉ tệp khi bạn gọi pandas.read_csv(URL)

Điều này có thể hoặc không thể làm việc để đọc một dòng tệp văn bản theo dòng hoặc tệp nhị phân.


1
Điều quan trọng cần lưu ý là trong khi các bí mật khó phát hiện ra chúng không riêng tư, vì vậy bất kỳ ai sử dụng phương pháp này cũng nên cẩn thận.
Grae

2

Nhập nhanh chóng và dễ dàng từ 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

Đối với những người, giống như tôi, đến từ Google cho từ khóa "tải lên tệp colab":

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

1

Bạn cũng có thể sử dụng các triển khai của tôi trên google.colab và PyDrive tại https://github.com/ruelj2/Google_drive , điều này giúp việc này dễ dàng hơn rất nhiều.

!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()  

Sau đó, nếu bạn muốn tải tất cả các tệp trong thư mục Google Drive, chỉ cần

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

Hoặc chỉ là một tập tin cụ thể với

Gd.load_file(local_dir, file_ID)

Trong trường hợp này "drive_dir_ID là gì?"
Parseltongue

Như đã đề cập trong git repo, drive_dir_ID là ID Google Drive tương ứng của thư mục được yêu cầu. Để biết thêm thông tin, vui lòng kiểm tra github.com/ruelj2/Google_drive . Ngoài ra còn có một ví dụ rõ ràng về việc sử dụng.
Jean-Barshe

1

Như được đề cập bởi @Vivek Solanki, tôi cũng đã tải lên tệp của mình trên bảng điều khiển colaboratory trong phần "Tệp". Chỉ cần ghi lại nơi tập tin đã được tải lên. Đối với tôi, train_data = pd.read_csv('/fileName.csv')đã làm việc.


1

trong google colabs nếu đây là lần đầu tiên của bạn,

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

chạy các mã này và đi qua liên kết đầu ra, sau đó vượt qua pass-prase đến hộp

Khi bạn sao chép, bạn có thể sao chép như sau, đi tới tệp nhấp chuột phải và sao chép đường dẫn *** đừng quên xóa "/ content"

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

0

Nó đã được giải quyết, tìm chi tiết tại đây và vui lòng sử dụng chức năng bên dưới: /programming/47212852/how-to-import-and-read-a-shelve-or-numpy-file-in-google -có màu / 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

Đây là một cách để nhập tệp từ google drive vào notebook.

mở sổ ghi chép jupyter và chạy mã dưới đây và hoàn tất quy trình xác thực

!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}

Khi bạn đã thực hiện với mã ở trên, hãy chạy mã bên dưới để gắn ổ đĩa google

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

Nhập tệp từ ổ đĩa google vào sổ ghi chép (Ví dụ: Colab_Notebooks / db.csv)

giả sử tệp dữ liệu của bạn trong thư mục Colab_Notebooks và tên của nó là db.csv

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

Tôi hy vọng nó sẽ giúp


0

Nếu bạn muốn làm điều này mà không cần mã, nó khá dễ dàng. Zip thư mục của bạn trong trường hợp của tôi đó là

tập dữ liệu.zip

sau đó trong Colab nhấp chuột phải vào thư mục mà bạn muốn đặt tệp này và nhấn Tải lên và tải lên tệp zip này. Sau đó viết lệnh Linux này.

!unzip <your_zip_file_name>

bạn có thể thấy dữ liệu của bạn được tải lên thành công.


0

Nếu kích thước Tập dữ liệu nhỏ hơn 25mb, Cách dễ nhất để tải lên tệp CSV là từ kho lưu trữ GitHub của bạn.

  1. Bấm vào tập dữ liệu trong kho
  2. Nhấp vào nút Xem thô
  3. Sao chép liên kết và lưu trữ nó trong một biến
  4. tải biến vào Pandas read_csv để lấy dataframe

Thí dụ:

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

0
  1. Bạn có thể gắn vào ổ đĩa google bằng cách chạy theo

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

  2. Sau đó Để đào tạo sao chép dữ liệu từ gdrive vào thư mục gốc colab.

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

trong đó đường dẫn đầu tiên là đường dẫn gdrive và đường dẫn thứ hai là thư mục gốc colab.

Cách này đào tạo nhanh hơn cho dữ liệu lớn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.