Importieren Sie Daten in Google Colaboratory


156

Wie werden private Daten häufig in Google Colaboratory-Notizbücher importiert? Ist es möglich, ein nicht öffentliches Google-Blatt zu importieren? Sie können nicht aus Systemdateien lesen. Die einleitenden Dokumente enthalten einen Link zu einer Anleitung zur Verwendung von BigQuery , aber das scheint ein bisschen ... viel zu sein.

Antworten:


197

Ein offizielles Beispielnotizbuch zum Hochladen / Herunterladen lokaler Dateien und zur Integration in Drive und Sheets finden Sie hier: https://colab.research.google.com/notebooks/io.ipynb

Die einfachste Möglichkeit, Dateien freizugeben, besteht darin, Ihr Google Drive bereitzustellen.

Führen Sie dazu in einer Codezelle Folgendes aus:

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

Sie werden aufgefordert, einen Link zu "Google Files Stream" zuzulassen, um auf Ihr Laufwerk zuzugreifen. Danach wird ein langer alphanumerischer Authentifizierungscode angezeigt, der in das Notizbuch Ihres Colab eingegeben werden muss.

Anschließend werden Ihre Laufwerksdateien bereitgestellt und Sie können sie mit dem Dateibrowser im Seitenbereich durchsuchen.

Geben Sie hier die Bildbeschreibung ein

Hier ist ein vollständiges Beispielnotizbuch


3
Ein Beispiel für ein Blatt ist jetzt in einem mitgelieferten Beispielnotizbuch enthalten, das auch Rezepte für Drive und Google Cloud Storage enthält: colab.research.google.com/notebook#fileId=/v2/external/…
Bob Smith

9
Kann ich einen bestimmten Ordner in mein Laufwerk importieren? Ich teile dieses Colab mit jemand anderem und möchte nicht auf alle meine Google-Laufwerke zugreifen, die vertrauliche Informationen enthalten
yellow01

4
Dateien in Ihrem Laufwerk werden nicht freigegeben, wenn Sie das Notebook freigeben. Der Benutzer muss weiterhin sein eigenes Laufwerk bereitstellen, das separat ist. Sie können die Dateien bei Bedarf für diesen Benutzer freigeben, aber all dies wird von normalen Laufwerks-ACLs gesteuert. Wenn Sie ein Colab-Notizbuch freigeben, wird nur das Notizbuch freigegeben, nicht die Laufwerksdateien, auf die in diesem Notizbuch verwiesen wird.
Bob Smith

Mein Mount ist erfolgreich, aber ich kann die Liste der Dateien auf der linken Seite unter "Dateien" nicht sehen. Irgendwelche Vorschläge?
Swapnil B.

3
Trainieren Sie nicht die Daten in einem bereitgestellten Google-Laufwerk. Kopieren Sie zuerst die Daten auf das lokale Laufwerk und trainieren Sie dann darauf. Es wird fast zehnmal schneller sein. Stellen Sie zum schnelleren Kopieren sicher, dass es sich bei den Datendateien um große oder mehrere kleinere Archive handelt. Zum Beispiel: - Verwenden Sie keine 100000 Bilddateien. Verwenden Sie 100 Archive mit jeweils 1000 Bildern. Auf diese Weise ist das Hochladen auf Google Drive auch schneller, ebenso wie das Kopieren von Google Drive nach Colab
Saurabheights

47

Hochladen

from google.colab import files
files.upload()

Herunterladen

files.download('filename')

Listenverzeichnis

files.os.listdir()

6
Werden die hochgeladenen Dateien auf dem Google-Laufwerk des Benutzers oder auf dem Server gespeichert, mit dem das Notebook verbunden ist?
RodrikTheReader

1
Sind diese Dateien nicht kurzlebig?
Acumenus

Irgendwelche Argumente für den Upload?
user25004

Diese Antwort sollte oben stehen. Die Frage betrifft das Importieren von Daten und nicht das Mounten von Google Drive.
Fernando Wittmann

18

Einfache Möglichkeit, Daten von Ihrem Google-Laufwerk zu importieren - dies spart Zeit (ich weiß nicht, warum Google dies nicht Schritt für Schritt explizit auflistet).

PYDRIVE INSTALLIEREN UND AUTHENTIFIZIEREN

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

HOCHLADEN

Wenn Sie Daten vom lokalen Laufwerk hochladen müssen:

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

Ausführen und dies zeigt eine Schaltfläche zum Auswählen einer Datei an - suchen Sie Ihre Upload-Datei - klicken Sie auf Öffnen

Nach dem Hochladen wird Folgendes angezeigt:

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

DATEI FÜR NOTIZBUCH ERSTELLEN

Wenn sich Ihre Datendatei bereits in Ihrem Laufwerk befindet, können Sie mit diesem Schritt fortfahren.

Jetzt ist es in Ihrem Google Drive. Suchen Sie die Datei in Ihrem Google Drive und klicken Sie mit der rechten Maustaste. Klicken Sie auf "Gemeinsam nutzbarer Link". Sie erhalten ein Fenster mit:

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

Kopie - '29PGh8XCts3mlMP6zRphvnIcbv27boawn' - das ist die Datei-ID.

In Ihrem Notebook:

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

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

DATEN IN NOTIZBUCH IMPORTIEREN

So importieren Sie die Daten, die Sie in das Notizbuch hochgeladen haben (eine JSON-Datei in diesem Beispiel - wie Sie sie laden, hängt vom Datei- / Datentyp ab - TXT, CSV usw.):

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

Jetzt können Sie drucken, um zu sehen, ob die Daten vorhanden sind:

    print(sample_uploaded_data)

1
Es sei darauf hingewiesen, dass der UPLOADING- Vorschlag via google.colab.files.upload()nicht nur auf Firefox oder Safari, Chrome , zu funktionieren scheint. Siehe hier
5agado

15

Schritt 1: Hängen Sie Ihr Google Drive in Collaboratory ein

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

Schritt 2: Jetzt sehen Sie Ihre Google Drive-Dateien im linken Bereich (Datei-Explorer). Klicken Sie mit der rechten Maustaste auf die Datei, die Sie importieren möchten, und wählen Sie den Kopierpfad aus. Importieren Sie dann wie gewohnt in Pandas über diesen kopierten Pfad.

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

Getan!


Gewinnt an Klarheit und Kürze und hat die gleiche Wirksamkeit. Ich sehe keinen Vorteil gegenüber den viel komplizierteren Möglichkeiten, dies zu tun.
Elroch

7

Der einfachste Weg, den ich gemacht habe, ist:

  1. Erstellen Sie mit Ihrem Datensatz ein Repository auf Github
  2. Klonen Sie Ihr Repository mit! Git-Klon - rekursiv [GITHUB LINK REPO]
  3. Finden Sie heraus, wo sich Ihre Daten befinden (Befehl! Ls)
  4. Öffnen Sie die Datei mit Pandas wie im normalen Jupyter-Notebook.

Hallo, mit diesem gapminder = pd.read_csv ("Data-Analysis / pairplots / data / gapminder_data.csv") erhalte ich nur die Variable "version https: // .." mit nur 2 Beobachtungen
Mukul Sharma

2
Diese Lösung funktioniert nicht, wenn eine einzelne Dateigröße mehr als das zulässige Github-Limit beträgt, was bei 20 MB in der kostenlosen Version der Fall ist.
Akshay Soam

7

Auf diese Weise können Sie Ihre Dateien über Google Drive hochladen.

Führen Sie den folgenden Code aus (habe ihn zuvor irgendwo gefunden, aber ich kann die Quelle nicht wiederfinden - Credits an denjenigen, der ihn geschrieben hat!):

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

Klicken Sie auf den ersten Link, der Sie auffordert, sich bei Google anzumelden. Danach wird eine weitere angezeigt, die Sie um Erlaubnis zum Zugriff auf Ihr Google Drive bittet.

Führen Sie dann Folgendes aus, wodurch ein Verzeichnis mit dem Namen "Laufwerk" erstellt und Ihr Google Drive damit verknüpft wird:

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

Wenn Sie dies !lsjetzt tun , wird es ein Verzeichnislaufwerk geben, und wenn Sie dies tun !ls drive, können Sie den gesamten Inhalt Ihres Google Drive anzeigen.

Wenn ich meine aufgerufene Datei beispielsweise abc.txtin einem Ordner speichere, der ColabNotebooksin meinem Google Drive aufgerufen wird , kann ich jetzt über einen Pfad darauf zugreifendrive/ColabNotebooks/abc.txt



5

In der linken Leiste eines Labors befindet sich ein Abschnitt namens "Dateien". Laden Sie dort Ihre Dateien hoch und verwenden Sie diesen Pfad

"/content/YourFileName.extension"

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


2
Stellen Sie sicher, dass Sie direkt in das Stammverzeichnis und nicht in das Verzeichnis 'sample_data' hochgeladen haben. Sie können auch "Inhalt" entfernen und einfach den Dateinamen wie pd.read_csv('Forbes2015.csv');
folgt

Wenn es immer noch nicht funktioniert, können Sie mir die Fehlermeldung mitteilen?
Vivek Solanki

@flashliquid Nicht notwendig. Es funktioniert auch ohne '/'. Sie können es auf Colab testen.
Vivek Solanki

3

Die einfachste Lösung, die ich bisher gefunden habe und die perfekt für kleine bis mittelgroße CSV-Dateien funktioniert, ist:

  1. Erstellen Sie eine geheime Liste auf gist.github.com und laden Sie Ihre Datei hoch (oder kopieren Sie den Inhalt).
  2. Klicken Sie auf die Rohansicht und kopieren Sie die Rohdatei-URL.
  3. Verwenden Sie beim Aufrufen die kopierte URL als Dateiadresse pandas.read_csv(URL)

Dies kann zum zeilenweisen Lesen einer Textdatei oder von Binärdateien funktionieren oder nicht.


1
Es ist wichtig zu beachten, dass geheime Kernpunkte zwar schwer zu entdecken sind, aber nicht privat. Daher sollte jeder, der diesen Ansatz verwendet, vorsichtig sein.
Grae

2

Schneller und einfacher Import aus 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

Für diejenigen, die wie ich von Google für das Keyword "Upload File Colab" kamen:

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

1

Sie können meine Implementierungen auch auf google.colab und PyDrive unter https://github.com/ruelj2/Google_drive verwenden , was es viel einfacher macht.

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

Wenn Sie dann alle Dateien in ein Google Drive-Verzeichnis laden möchten, einfach

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

Oder nur eine bestimmte Datei mit

Gd.load_file(local_dir, file_ID)

Was ist in diesem Fall "drive_dir_ID"?
Parseltongue

Wie im Git-Repo erwähnt, ist drive_dir_ID die entsprechende Google Drive-ID des angeforderten Verzeichnisses. Weitere Informationen finden Sie unter github.com/ruelj2/Google_drive . Es gibt auch ein klares Beispiel für die Verwendung.
Jean-Christophe

1

Wie von @Vivek Solanki erwähnt, habe ich meine Datei auch im Labor-Dashboard unter "Datei" hochgeladen. Notieren Sie sich einfach, wo die Datei hochgeladen wurde. Für mich hat train_data = pd.read_csv('/fileName.csv')gearbeitet.


1

in Google Colabs, wenn dies Ihr erstes Mal ist,

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

Führen Sie diese Codes aus und gehen Sie über den Ausgabelink und dann an der Pass-Prase vorbei zur Box

Wenn Sie kopieren, können Sie wie folgt kopieren, gehen Sie mit der rechten Maustaste zur Datei und kopieren Sie den Pfad. *** Vergessen Sie nicht, "/ content" zu entfernen.

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

0

Es wurde behoben, Details finden Sie hier und verwenden Sie die folgende Funktion: /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

Hier ist eine Möglichkeit, Dateien von Google Drive in Notebooks zu importieren.

Öffnen Sie das Jupyter-Notizbuch, führen Sie den folgenden Code aus und schließen Sie den Authentifizierungsprozess ab

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

Wenn Sie mit dem obigen Code fertig sind, führen Sie den folgenden Code aus, um Google Drive zu mounten

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

Importieren von Dateien von Google Drive in Notebooks (Beispiel: Colab_Notebooks / db.csv)

Angenommen, Ihre Dataset-Datei befindet sich im Ordner Colab_Notebooks und heißt db.csv

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

Ich hoffe, es hilft


0

Wenn Sie dies ohne Code tun möchten, ist es ziemlich einfach. Zip dein Ordner in meinem Fall ist es

datet.zip

Klicken Sie dann in Colab mit der rechten Maustaste auf den Ordner, in dem Sie diese Datei ablegen möchten, und klicken Sie auf Hochladen und laden Sie diese Zip-Datei hoch. Danach schreiben Sie diesen Linux-Befehl.

!unzip <your_zip_file_name>

Sie können sehen, dass Ihre Daten erfolgreich hochgeladen wurden.


0

Wenn die Größe des Datensatzes weniger als 25 MB beträgt, können Sie eine CSV-Datei am einfachsten aus Ihrem GitHub-Repository hochladen.

  1. Klicken Sie auf den Datensatz im Repository
  2. Klicken Sie auf die Schaltfläche Raw anzeigen
  3. Kopieren Sie den Link und speichern Sie ihn in einer Variablen
  4. Laden Sie die Variable in Pandas read_csv, um den Datenrahmen abzurufen

Beispiel:

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

0
  1. Sie können auf Google Drive mounten, indem Sie Folgendes ausführen

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

  2. Anschließend Für das Training kopieren Sie die Daten von gdrive in den Stammordner von colab.

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

Dabei ist der erste Pfad der Gdrive-Pfad und der zweite der Colab-Stammordner.

Auf diese Weise ist das Training für große Datenmengen schneller.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.