Importuj dane do Google Colaboratory

156

Jakie są typowe sposoby importowania prywatnych danych do notatników Google Colaboratory? Czy można zaimportować niepubliczny arkusz Google? Nie możesz czytać z plików systemowych. Wstępne dokumenty prowadzą do przewodnika po korzystaniu z BigQuery , ale to wydaje się trochę ... dużo.

Grae
źródło

Odpowiedzi:

197

Oficjalny przykładowy notatnik demonstrujący lokalne przesyłanie / pobieranie plików oraz integrację z Dyskiem i arkuszami jest dostępny tutaj: https://colab.research.google.com/notebooks/io.ipynb

Najprostszym sposobem udostępniania plików jest zamontowanie Dysku Google.

Aby to zrobić, uruchom w komórce kodu następujące polecenie:

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

Poprosi Cię o otwarcie linku ZEZWÓL „Google Files Stream” na dostęp do dysku. Następnie pojawi się długi alfanumeryczny kod autoryzacji, który należy wprowadzić w notatniku Colaba.

Następnie pliki na Dysku zostaną zamontowane i będzie można je przeglądać za pomocą przeglądarki plików w panelu bocznym.

wprowadź opis obrazu tutaj

Oto pełny przykładowy notatnik

Bob Smith
źródło
3
Przykładowy arkusz jest teraz dołączony do dołączonego przykładowego notatnika, który zawiera również przepisy na Dysk i Google Cloud Storage: colab.research.google.com/notebook#fileId=/v2/external/ ...
Bob Smith
9
Czy mogę zaimportować określony folder na moim Dysku? Dzielę się tym colabem z kimś innym i nie chcę udzielać dostępu do całego mojego dysku Google, który zawiera poufne informacje
yellow01
4
Pliki na Dysku nie zostaną udostępnione, jeśli udostępnisz notatnik. Użytkownik nadal będzie musiał zamontować własny dysk, który jest oddzielny. W razie potrzeby możesz udostępniać pliki temu użytkownikowi, ale wszystko to jest kontrolowane przez zwykłe listy ACL Dysku. Udostępnianie notatnika Colab powoduje udostępnienie tylko notatnika, a nie plików na Dysku, do których odwołuje się ten notatnik.
Bob Smith,
mój montaż się powiódł, ale nie widzę listy plików po lewej stronie pod plikami. Jakieś sugestie?
Swapnil B.
3
Nie trenuj na danych w zamontowanym dysku Google. Najpierw skopiuj dane na dysk lokalny, a następnie przećwicz na nim. Będzie prawie 10 razy szybszy. Aby przyspieszyć kopiowanie, upewnij się, że pliki danych to duże archiwa lub kilka mniejszych. Na przykład: - Nie używaj 100000 plików graficznych. Użyj 100 archiwów po 1000 obrazów w każdym. W ten sposób przesyłania na Dysk Google jest również szybsze i tak jest kopiowanie z Dysku Google na colab
saurabheights
47

Przekazać plik

from google.colab import files
files.upload()

Pobieranie

files.download('filename')

Katalog listy

files.os.listdir()
井上 智 文
źródło
6
Czy przesłane pliki są przechowywane na dysku Google użytkownika lub serwerze, do którego jest podłączony notebook?
RodrikTheReader
1
Czy te pliki nie są ulotne?
Acumenus
Jakiś argument za przesłaniem?
user25004
ta odpowiedź powinna być u góry. Pytanie dotyczy importu danych, a nie montowania dysku google.
Fernando Wittmann
18

Prosty sposób na importowanie danych z googledrive - dzięki temu oszczędzasz czas (nie wiem, dlaczego Google po prostu nie podaje tego krok po kroku).

ZAINSTALUJ I Uwierzytelnij 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)

PRZESYŁANIE

jeśli chcesz przesłać dane z dysku lokalnego:

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

wykonaj, co spowoduje wyświetlenie przycisku wyboru pliku - znajdź plik do przesłania - kliknij otwórz

Po przesłaniu wyświetli się:

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

UTWÓRZ PLIK DLA NOTEBOOKA

Jeśli plik danych znajduje się już na dysku gdrive, możesz przejść do tego kroku.

Teraz jest na Twoim dysku Google. Znajdź plik na dysku Google i kliknij prawym przyciskiem myszy. Kliknij „Uzyskaj link do udostępniania”. Otrzymasz okno z:

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

Kopiuj - „29PGh8XCts3mlMP6zRphvnIcbv27boawn” - to jest identyfikator pliku.

W swoim zeszycie:

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

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

IMPORT DANYCH DO NOTEBOOKA

Aby zaimportować dane przesłane do notatnika (w tym przykładzie plik json - sposób wczytywania zależy od typu pliku / danych - .txt, .csv itp.):

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

Teraz możesz wydrukować, aby zobaczyć, czy dane tam są:

    print(sample_uploaded_data)
NA PRZYKŁAD
źródło
1
Warto zaznaczyć, że sugestia UPLOADING via google.colab.files.upload()nie działa ani na Firefox, ani Safari, tylko w Chrome. Zobacz tutaj
5agado,
15

krok 1- Zamontuj swój Dysk Google do współpracy

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

krok 2 - Teraz zobaczysz swoje pliki z Dysku Google w lewym okienku (eksplorator plików). Kliknij prawym przyciskiem myszy plik, który chcesz zaimportować i wybierz ścieżkę kopiowania. Następnie importuj jak zwykle w pandach, używając tej skopiowanej ścieżki.

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

Gotowe!

Garima Jain
źródło
Wygrywa jasnością i zwięzłością oraz ma taką samą skuteczność. Nie widzę korzyści w znacznie bardziej zaangażowanych sposobach osiągnięcia tego celu.
Elroch
7

Najprostszy sposób, jaki zrobiłem, to:

  1. Utwórz repozytorium na githubie ze swoim zestawem danych
  2. Sklonuj swoje repozytorium za pomocą! git clone --recursive [GITHUB LINK REPO]
  3. Znajdź, gdzie są twoje dane (! Ls polecenie)
  4. Otwórz plik z pandami tak, jak robisz to w normalnym notatniku jupyter.
Rafał B.
źródło
Cześć, z tą gapminder = pd.read_csv ("Data-Analysis / pairplots / data / gapminder_data.csv") Otrzymuję tylko zmienną „wersja https: // ..” z tylko 2 obserwacjami
Mukul Sharma,
2
To rozwiązanie nie zadziała, jeśli rozmiar pojedynczego pliku jest większy niż dozwolony limit github, który, jeśli 20 MB, to chyba w wersji darmowej.
Akshay Soam
7

Umożliwia to przesyłanie plików za pośrednictwem Dysku Google.

Uruchom poniższy kod (znalazłem go gdzieś wcześniej, ale nie mogę ponownie znaleźć źródła - kredyty dla tego, kto go napisał!):

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

Kliknij pierwszy link, który się pojawi, który poprosi Cię o zalogowanie się do Google; potem pojawi się kolejna, która poprosi o pozwolenie na dostęp do Twojego Dysku Google.

Następnie uruchom to, co tworzy katalog o nazwie „dysk” i łączy z nim Twój Dysk Google:

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

Jeśli zrobisz !lsteraz, pojawi się dysk katalogowy, a jeśli zrobisz !ls drive, możesz zobaczyć całą zawartość Dysku Google.

Na przykład, jeśli zapiszę plik o nazwie abc.txtw folderze o nazwie ColabNotebooksna moim Dysku Google, mogę teraz uzyskać do niego dostęp za pośrednictwem ścieżkidrive/ColabNotebooks/abc.txt

yl_low
źródło
1
Źródło
Karan Singh
5

Na lewym pasku dowolnego współpracownika znajduje się sekcja „Pliki”. Prześlij tam swoje pliki i użyj tej ścieżki

"/content/YourFileName.extension"

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

Vivek Solanki
źródło
2
Upewnij się, że przesłałeś plik bezpośrednio do katalogu głównego, a nie do katalogu „sample_data”. Możesz także usunąć „zawartość” i po prostu wpisać nazwę pliku, taką jak:pd.read_csv('Forbes2015.csv');
Vivek Solanki
Jeśli nadal nie działa, czy możesz podać komunikat o błędzie?
Vivek Solanki
@flashliquid Nie jest konieczne. Działa nawet bez „/”. Możesz to przetestować na colabie.
Vivek Solanki
3

Najprostszym rozwiązaniem, które do tej pory znalazłem, które działa idealnie w przypadku małych i średnich plików CSV, jest:

  1. Utwórz tajną treść na gist.github.com i prześlij (lub skopiuj i wklej zawartość) swojego pliku.
  2. Kliknij widok Raw i skopiuj adres URL surowego pliku.
  3. Podczas rozmowy użyj skopiowanego adresu URL jako adresu pliku pandas.read_csv(URL)

Może to działać, ale nie musi, w przypadku odczytywania pliku tekstowego wiersz po wierszu lub plików binarnych.

Borhan Kazimipour
źródło
1
Ważne jest, aby pamiętać, że podczas tajnych GIST są trudne do odkrycia, że są nie prywatny, więc ktoś za pomocą tego podejścia powinien być ostrożny.
Grae
2

Szybki i łatwy import z 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)
delica
źródło
2

Dla tych, którzy, tak jak ja, wyszli z Google w związku ze słowem kluczowym „prześlij plik colab”:

from google.colab import files
uploaded = files.upload()
Fernando Wittmann
źródło
1

Możesz również użyć moich implementacji na google.colab i PyDrive na https://github.com/ruelj2/Google_drive, co znacznie ułatwia.

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

Następnie, jeśli chcesz załadować wszystkie pliki z katalogu Dysku Google, po prostu

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

Lub po prostu konkretny plik z rozszerzeniem

Gd.load_file(local_dir, file_ID)
Jean-Christophe
źródło
W takim przypadku co to jest „drive_dir_ID”?
Parseltongue
Jak wspomniano w repozytorium git, drive_dir_ID to odpowiedni identyfikator Dysku Google żądanego katalogu. Aby uzyskać więcej informacji, odwiedź stronę github.com/ruelj2/Google_drive . Jest też wyraźny przykład użycia.
Jean-Christophe,
1

Jak wspomniał @Vivek Solanki, wrzuciłem również swój plik na pulpit współpracy w sekcji "Plik". Po prostu zanotuj, gdzie plik został przesłany. U mnie train_data = pd.read_csv('/fileName.csv')zadziałało.

Ishani
źródło
1

w Google Colabs, jeśli to Twój pierwszy raz,

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

uruchom te kody i przejdź przez łącze wyjściowe, a następnie przejdź przez pass-prase do pudełka

kiedy kopiujesz, możesz skopiować w następujący sposób, przejdź do pliku kliknij prawym przyciskiem myszy i skopiuj ścieżkę *** nie zapomnij usunąć "/ content"

f = open("drive/My Drive/RES/dimeric_force_field/Test/python_read/cropped.pdb", "r")
Niransha
źródło
0

Zostało rozwiązane, znajdź szczegóły tutaj i skorzystaj z poniższej funkcji: /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!')
Yasser Mustafa
źródło
0

Oto jeden ze sposobów importowania plików z dysku Google do notatników.

otwórz notatnik jupyter i uruchom poniższy kod i zakończ proces uwierzytelniania

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

gdy skończysz z powyższym kodem, uruchom poniższy kod, aby zamontować dysk Google

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

Importowanie plików z dysku Google do notebooków (np .: Colab_Notebooks / db.csv)

powiedzmy, że plik zestawu danych znajduje się w folderze Colab_Notebooks i jego nazwa to db.csv

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

Mam nadzieję, że to pomoże

Ravi G
źródło
0

jeśli chcesz to zrobić bez kodu, jest to całkiem proste. W moim przypadku spakuj swój folder

dataset.zip

następnie w Colab kliknij prawym przyciskiem myszy folder, w którym chcesz umieścić ten plik i naciśnij Prześlij i prześlij ten plik zip. Następnie napisz to polecenie Linuksa.

!unzip <your_zip_file_name>

możesz zobaczyć, że Twoje dane zostały pomyślnie przesłane.

Arham Aalam
źródło
0

Jeśli rozmiar zestawu danych jest mniejszy niż 25 MB, najłatwiejszym sposobem przesłania pliku CSV jest repozytorium GitHub.

  1. Kliknij zestaw danych w repozytorium
  2. Kliknij przycisk View Raw
  3. Skopiuj link i zapisz go w zmiennej
  4. załaduj zmienną do Pandas read_csv, aby uzyskać ramkę danych

Przykład:

import pandas as pd
url = 'copied_raw_data_link'
df1 = pd.read_csv(url)
df1.head()
Lakshmikanth Gr
źródło
0
  1. Możesz zamontować na dysku Google, uruchamiając następujące

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

  2. Następnie w celu szkolenia skopiuj dane z gdrive do folderu głównego colab.

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

gdzie pierwsza ścieżka to ścieżka gdrive, a druga to folder główny colab.

W ten sposób szkolenie jest szybsze w przypadku dużych danych.

asheer qureshi
źródło