Импортировать данные в Google Colab Laboratory


156

Каковы обычные способы импорта личных данных в записные книжки Google Colab Laboratory? Можно ли импортировать непубличный гугл лист? Вы не можете читать из системных файлов. Вступительные документы ссылаются на руководство по использованию BigQuery , но это кажется немного ... много.

Ответы:


197

Официальный пример записной книжки, демонстрирующей загрузку / выгрузку локальных файлов и интеграцию с Диском и листами, доступен здесь: https://colab.research.google.com/notebooks/io.ipynb

Самый простой способ обмениваться файлами - это подключить Google Drive.

Для этого запустите следующее в ячейке кода:

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

Вам будет предложено перейти по ссылке РАЗРЕШИТЬ «Поток файлов Google» для доступа к вашему диску. После этого будет показан длинный буквенно-цифровой код авторизации, который необходимо ввести в записную книжку вашего Colab.

После этого ваши диски будут смонтированы, и вы сможете просматривать их с помощью браузера файлов на боковой панели.

введите описание изображения здесь

Вот полный пример тетради


3
Пример листов теперь включен в блокнот в виде примера, который также содержит рецепты для Drive и Google Cloud Storage: colab.research.google.com/notebook#fileId=/v2/external/…
Боб Смит,

9
Могу ли я импортировать определенную папку на моем диске? Я делюсь этим колабом с кем-то другим, и я не хочу предоставлять доступ ко всем моим дискам Google, которые содержат конфиденциальную информацию
yellow01

4
Файлы на вашем диске не будут доступны, если вы поделитесь записной книжкой. Пользователь по-прежнему должен будет смонтировать свой собственный диск, который является отдельным. Вы можете поделиться файлами с этим пользователем, если это необходимо, но все это контролируется обычными списками ACL. Совместное использование записной книжки Colab использует только записную книжку, а не файлы диска, на которые есть ссылки в этой записной книжке.
Боб Смит,

мое монтирование прошло успешно, но я не вижу списка файлов в левой части под файлами. Какие-либо предложения?
Свопнил Б.

3
Не тренируйтесь на данных в смонтированном гугл-диске. Сначала скопируйте данные на локальный диск, а затем обучайтесь на нем. Это будет почти в 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 Drive.
Фернандо Виттманн

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)

UPLOADING

если вам нужно загрузить данные с локального диска:

    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' - это идентификатор файла.

В вашей записной книжке:

    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
Стоит отметить, что предложение UPLOADING , via google.colab.files.upload(), похоже, не работает ни на Firefox, ни на Safari, только на Chrome. Смотрите здесь
Агадо

15

Шаг 1. Подключите ваш Google Drive к совместной работе.

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

Шаг 2. Теперь вы увидите файлы Google Диска на левой панели (проводник). Щелкните правой кнопкой мыши файл, который нужно импортировать, и выберите «Копировать путь». Затем импортируйте как обычно в пандах, используя этот скопированный путь.

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

Готово!


Побеждает на четкость и краткость и имеет равную эффективность. Я не вижу преимущества в гораздо более сложных способах сделать это.
Элроч

7

Самый простой способ, который я сделал, это:

  1. Сделайте репозиторий на GitHub с вашим набором данных
  2. Клонировать Ваш репозиторий с! git clone --recursive [РЕЙТ GITUB LINK]
  3. Найдите, где находятся ваши данные (команда! Ls)
  4. Откройте файл с пандами, как вы делаете это в обычном блокноте Jupyter.

Привет, с этим gapminder = pd.read_csv ("Анализ данных / pairplots / data / gapminder_data.csv") Я получаю только переменную "версия https: // .." только с двумя наблюдениями
Мукул Шарма

2
Это решение не сработает, если размер одного файла превышает допустимый предел github, который, если я думаю, в бесплатной версии составляет 20 МБ.
Акшай Соам

7

Это позволяет загружать ваши файлы через Google Drive.

Запустите приведенный ниже код (нашел это где-то ранее, но я не могу найти источник снова - кредиты тому, кто его написал!):

!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 Диска.

Так, например, если я сохраню свой файл с именем abc.txtв папке ColabNotebooksна моем Google Диске, я могу теперь получить к нему доступ через путьdrive/ColabNotebooks/abc.txt



5

На левой панели любой колаборатории есть раздел «Файлы». Загрузите туда свои файлы и используйте этот путь

"/content/YourFileName.extension"

например: pd.read_csv('/content/Forbes2015.csv');


2
Убедитесь, что вы загрузили прямо в корневой каталог, а не в каталог sample_data. Также вы можете удалить «контент» и просто написать имя файла, например:pd.read_csv('Forbes2015.csv');
Vivek Solanki

Если все еще не работает, можете ли вы сказать мне сообщение об ошибке?
Вивек Соланки

@flashliquid Не обязательно. Работает даже без '/'. Вы можете проверить это на колабе.
Вивек Соланки

3

Самое простое решение, которое я нашел до сих пор и которое идеально подходит для CSV-файлов малого и среднего размера:

  1. Создайте секретный список на gist.github.com и загрузите (или скопируйте и вставьте содержимое) свой файл.
  2. Нажмите на сырье вид и скопируйте URL-адрес необработанного файла.
  3. Используйте скопированный URL в качестве адреса файла при вызове pandas.read_csv(URL)

Это может или не может работать для чтения текстового файла построчно или двоичных файлов.


1
Важно отметить, что хотя секретные суть трудно обнаружить, они не являются частными, поэтому любой, кто использует этот подход, должен быть осторожен.
Грей

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)


1

Вы также можете использовать мои реализации на google.colab и PyDrive по адресу https://github.com/ruelj2/Google_drive, что значительно облегчает эту задачу.

!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 Drive, просто

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

Или просто конкретный файл с

Gd.load_file(local_dir, file_ID)

В этом случае, что такое "drive_dir_ID?"
Парселтонг

Как указано в git-репозитории, drive_dir_ID - это соответствующий идентификатор Google Drive для запрошенного каталога. Для получения дополнительной информации, пожалуйста, проверьте github.com/ruelj2/Google_drive . Существует также явный пример использования.
Жан-Кристоф

1

Как упомянул @Vivek Solanki, я также загрузил свой файл на панель инструментов колаборатории в разделе «Файл». Просто запомните, куда был загружен файл. Для меня train_data = pd.read_csv('/fileName.csv')сработало.


1

в Google Colabs, если это ваш первый раз,

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

запустите эти коды и пройдите через выходную ссылку, затем пройдите через pass-prase в поле

когда вы копируете, вы можете копировать следующим образом, перейдите к файлу правой кнопкой мыши и скопируйте путь *** не забудьте удалить "/ content"

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

1
  1. Вы можете подключиться к Google Drive, запустив следующую

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

  2. Впоследствии Для обучения скопируйте данные из gdrive в корневую папку colab.

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

где первый путь - это путь gdrive, а второй - корневая папка colab.

Таким образом, обучение быстрее для больших данных.


0

Это было решено, найдите подробности здесь и используйте следующую функцию: /programming/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 Drive на ноутбуки.

откройте блокнот 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 Drive

!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

если вы хотите сделать это без кода, это довольно просто. Zip ваша папка в моем случае это

dataset.zip

Затем в Colab щелкните правой кнопкой мыши папку, в которую вы хотите поместить этот файл, и нажмите Загрузить и загрузить этот zip-файл. После этого напишите эту команду Linux.

!unzip <your_zip_file_name>

Вы можете видеть, что ваши данные успешно загружены.


0

Если размер набора данных меньше 25 МБ, самый простой способ загрузить файл CSV - это использовать репозиторий GitHub.

  1. Нажмите на набор данных в хранилище
  2. Нажмите на кнопку View Raw
  3. Скопируйте ссылку и сохраните ее в переменной
  4. загрузить переменную в Pandas read_csv, чтобы получить фрейм данных

Пример:

import pandas as pd
url = 'copied_raw_data_link'
df1 = pd.read_csv(url)
df1.head()
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.