Import danych do Google Colaboratory

Jakie są popularne sposoby importowania prywatnych danych do notebooków Google? Czy można zaimportować Niepubliczny arkusz Google? Nie można czytać z plików systemowych. Docs wprowadzający link do poradnika na temat korzystania z BigQuery, ale to wydaje się trochę... much.

Author: V.Y., 2017-10-28

9 answers

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 następujący kod w komórce:

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

Następnie pliki na dysku zostaną zamontowane i można je przeglądać za pomocą przeglądarki plików z boku panel.

Tutaj wpisz opis obrazka

Oto pełny przykładowy zeszyt

 47
Author: Bob Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-13 04:32:16

Upload

from google.colab import files
files.upload()

Pobierz

files.download('filename')

Katalog List

files.os.listdir()
 20
Author: 井上智文,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-14 10:50:04

Prosty sposób na import danych z googledrive-robi to zaoszczędzić ludziom czas(Nie wiem, dlaczego google po prostu nie wymienia tego krok po kroku jawnie).

INSTALL AND AUTHENTICATE 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

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 i wyświetli się przycisk Wybierz plik-Znajdź swój przesłany plik - kliknij Otwórz

Po załadowaniu 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 DO NOTATNIKA

Jeśli Twój plik danych jest już w gdrive, możesz przejść do tego kroku.

Teraz jest na Twoim Dysku google. Znajdź plik na Dysku google i kliknij prawym przyciskiem myszy. Kliknij get ' shareable link.'Dostaniesz okno z:

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

Copy - '29pgh8xcts3mlmp6zrphvnicbv27boawn' - czyli ID pliku.

W notatniku:

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

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

IMPORTUJ DANE DO NOTATNIKA

Aby zaimportować dane przesłane do notatnika (plik json w tym przykładzie-to, jak wczytasz, będzie zależeć na plik / typ danych - .txt,csv itp. ):

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

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

    print(sample_uploaded_data)
 12
Author: E G,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-21 00:20:55

Najprostszy sposób jaki zrobiłem to:

  1. Utwórz repozytorium na GitHubie za pomocą zestawu danych
  2. Sklonuj swoje repozytorium z ! git clone --recursive [GITHUB LINK REPO]
  3. Znajdź gdzie są Twoje dane (!LS command)
  4. Otwórz Plik z pand tak jak to robisz w normalnym notatniku jupytera.
 6
Author: Rafał B.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-10 18:50:53

Pozwala to na przesyłanie plików przez Dysk Google.

Uruchom poniższy kod (znalazłem to gdzieś wcześniej, ale nie mogę znaleźć źródła ponownie - podziękowania 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 wyświetli monit o zalogowanie się do Google; następnie pojawi się inny, który poprosi o pozwolenie na dostęp do Twojego Dysku Google.

Następnie uruchom ten, który utworzy katalog o nazwie 'drive' i połączy twój dysk Google z it:

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

Jeśli zrobisz !ls Teraz, będzie dysk katalogowy, a jeśli zrobisz {[3] } możesz zobaczyć całą zawartość Twojego Dysku Google.

Więc na przykład, jeśli zapiszę mój plik o nazwie abc.txt w folderze o nazwie ColabNotebooks na moim dysku Google, mogę teraz uzyskać do niego dostęp za pomocą ścieżki drive/ColabNotebooks/abc.txt

 6
Author: yl_low,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-17 02:55:09

Najprostszym rozwiązaniem, jakie do tej pory znalazłem, które sprawdza się idealnie dla małych i średnich plików CSV jest:

  1. Stwórz tajny gist na gist.github.com i prześlij (lub skopiuj-wklej zawartość) swój plik.
  2. Kliknij na Raw i skopiuj adres URL pliku raw.
  3. Użyj skopiowanego adresu URL jako adresu pliku podczas wywoływania pandas.read_csv(URL)

To może, ale nie musi działać przy odczycie pliku tekstowego linia po linii lub pliki binarne.

 2
Author: Borhan Kazimipour,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-01 23:28:34

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)
 2
Author: delica,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-10 17:16:51

To zostało rozwiązane, Znajdź szczegóły tutaj i skorzystaj z poniższej funkcji: 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
Author: Yasser Mustafa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-29 13:34:07

Oto jeden ze sposobów importowania plików z Dysku google do notebooków.

Otwórz notatnik jupyter, 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}

Po wykonaniu powyższego kodu 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 Twój plik dataset 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

 0
Author: Ravi Gurnatham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-14 18:00:45