Importar datos a Google Colaboratory

156

¿Cuáles son las formas comunes de importar datos privados en los cuadernos de colaboración de Google? ¿Es posible importar una hoja de Google no pública? No puede leer de los archivos del sistema. Los documentos introductorios enlazan a una guía sobre el uso de BigQuery , pero eso parece un poco ... mucho.

Grae
fuente

Respuestas:

197

Un cuaderno de ejemplo oficial que muestra la carga / descarga de archivos locales y la integración con Drive y las hojas está disponible aquí: https://colab.research.google.com/notebooks/io.ipynb

La forma más sencilla de compartir archivos es montar su Google Drive.

Para hacer esto, ejecute lo siguiente en una celda de código:

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

Le pedirá que visite un enlace para PERMITIR "Google Files Stream" para acceder a su unidad. Después de eso, se mostrará un código de autenticación alfanumérico largo que debe ingresarse en el cuaderno de su Colab.

Luego, los archivos de Drive se montarán y podrá explorarlos con el explorador de archivos en el panel lateral.

ingrese la descripción de la imagen aquí

Aquí hay un cuaderno de ejemplos completo

Bob Smith
fuente
3
Ahora se incluye un ejemplo de hojas en un cuaderno de ejemplo incluido que también incluye recetas para Drive y Google Cloud Storage: colab.research.google.com/notebook#fileId=/v2/external/…
Bob Smith
9
¿Puedo importar una carpeta específica en mi unidad? Estoy compartiendo esta colab con otra persona, y no quiere dar acceso a toda la unidad My Google que contiene información sensible
yellow01
44
Los archivos en su Drive no se compartirán si comparte el cuaderno. El usuario aún necesitará montar su propio disco, que está separado. Puede compartir los archivos con ese usuario si es necesario, pero todo eso está controlado por las ACL de Drive normales. Compartir un cuaderno Colab comparte solo el cuaderno, no los archivos de Drive a los que se hace referencia en ese cuaderno.
Bob Smith
mi montaje es exitoso pero no puedo ver la lista de archivos en el lado izquierdo debajo de los archivos. ¿Alguna sugerencia?
Swapnil B.
3
No entrene en los datos en Google Drive montado. Primero copie los datos en la unidad local y luego entrene en ellos. Será casi 10 veces más rápido. Para una copia más rápida, asegúrese de que los archivos de datos sean archivos grandes o varios más pequeños. Por ejemplo: - No use 100000 archivos de imagen. Use 100 archivos de 1000 imágenes cada uno. Esta manera de subir de Google Drive también es más rápido y también lo es la copia de la unidad de Google a Colab
saurabheights
47

Subir

from google.colab import files
files.upload()

Descargar

files.download('filename')

Directorio de listas

files.os.listdir()
井上 智 文
fuente
66
¿Los archivos cargados se almacenan en la unidad de Google del usuario o en el servidor al que está conectada la computadora portátil?
RodrikTheReader
1
¿No son efímeros estos archivos?
Acumenus
¿Algún argumento para subir?
user25004
Esta respuesta debe estar en la parte superior. La pregunta es sobre la importación de datos, no sobre el montaje de Google Drive.
Fernando Wittmann
18

Una forma sencilla de importar datos desde su unidad de Google: esto ahorra tiempo a las personas (no sé por qué Google simplemente no enumera esto paso a paso explícitamente).

INSTALAR Y AUTENTICAR 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)

CARGANDO

Si necesita cargar datos del disco local:

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

ejecutar y esto mostrará un botón de elegir archivo - encuentre su archivo de carga - haga clic en abrir

Después de cargar, mostrará:

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

CREAR ARCHIVO PARA CUADERNO

Si su archivo de datos ya está en su gdrive, puede saltar a este paso.

Ahora está en tu unidad de Google. Encuentra el archivo en tu Google Drive y haz clic derecho. Haz clic en "enlace para compartir". Obtendrá una ventana con:

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

Copia - '29PGh8XCts3mlMP6zRphvnIcbv27boawn' - esa es la ID del archivo.

En tu cuaderno:

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

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

IMPORTAR DATOS EN EL CUADERNO

Para importar los datos que cargó en el bloc de notas (en este ejemplo, un archivo json; la forma de cargar dependerá del tipo de archivo / datos: .txt, .csv, etc.):

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

Ahora puede imprimir para ver que los datos están ahí:

    print(sample_uploaded_data)
P.EJ
fuente
1
Vale la pena señalar que la sugerencia CARGAR , google.colab.files.upload()no parece funcionar en Firefox ni Safari, solo en Chrome. Ver aquí
5agado
15

paso 1- Monta tu Google Drive en Collaboratory

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

paso 2- Ahora verás tus archivos de Google Drive en el panel izquierdo (explorador de archivos). Haga clic derecho en el archivo que necesita importar y seleccione Copiar ruta. Luego importe como de costumbre en pandas, utilizando esta ruta copiada.

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

¡Hecho!

Garima Jain
fuente
Gana en claridad y brevedad y tiene la misma efectividad. No veo ninguna ventaja en las formas mucho más complicadas de hacer esto.
Elroch
7

La forma más simple que he hecho es:

  1. Haga un repositorio en github con su conjunto de datos
  2. Clone su repositorio con! git clone --recursive [REPO DE ENLACE DE GITHUB]
  3. Encuentre dónde están sus datos (comando! Ls)
  4. Abra el archivo con pandas como lo hace en el cuaderno Jupyter normal.
Rafał B.
fuente
Hola, con este gapminder = pd.read_csv ("Data-Analysis / pairplots / data / gapminder_data.csv") Solo obtengo la variable "versión https: // .." con solo 2 observaciones
Mukul Sharma
2
Esta solución no funcionará si un solo tamaño de archivo es mayor que el límite permitido por github, que si es de 20 MB, supongo que en la versión gratuita.
Akshay Soam
7

Esto le permite cargar sus archivos a través de Google Drive.

Ejecute el código a continuación (encontré esto en algún lugar anteriormente, pero no puedo encontrar la fuente nuevamente, ¡créditos para quien lo escribió!):

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

Haga clic en el primer enlace que aparece que le pedirá que inicie sesión en Google; luego aparecerá otro que le pedirá permiso para acceder a su Google Drive.

Luego, ejecute esto, que crea un directorio llamado 'unidad' y vincula su Google Drive a él:

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

Si lo hace !lsahora, habrá una unidad de directorio, y si lo hace !ls drive, puede ver todos los contenidos de su Google Drive.

Entonces, por ejemplo, si guardo mi archivo llamado abc.txten una carpeta llamada ColabNotebooksen mi Google Drive, ahora puedo acceder a él a través de una rutadrive/ColabNotebooks/abc.txt

yllow
fuente
1
Fuente
Karan Singh
5

En la barra izquierda de cualquier colaborativo hay una sección llamada "Archivos". Sube tus archivos allí y usa esta ruta

"/content/YourFileName.extension"

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

Vivek Solanki
fuente
2
Asegúrese de haber cargado directamente en el directorio raíz y no en el directorio 'sample_data'. Además, puede eliminar el "contenido" y simplemente escribir el nombre del archivo como:pd.read_csv('Forbes2015.csv');
Vivek Solanki
Si todavía no funciona, ¿puede decirme el mensaje de error?
Vivek Solanki
@flashliquid No es necesario. Funciona incluso sin '/'. Puedes probarlo en colab.
Vivek Solanki
3

La solución más simple que he encontrado hasta ahora y que funciona perfectamente para archivos CSV pequeños a medianos es:

  1. Cree una esencia secreta en gist.github.com y cargue (o copie y pegue el contenido de) su archivo.
  2. Haga clic en la vista sin formato y copie la URL del archivo sin formato.
  3. Use la URL copiada como la dirección del archivo cuando llame pandas.read_csv(URL)

Esto puede o no funcionar para leer un archivo de texto línea por línea o archivos binarios.

Borhan Kazimipour
fuente
1
Es importante tener en cuenta que, si bien los GIST secretos son difíciles de descubrir que son no privado, por lo que cualquier persona que utilice este enfoque debe tener cuidado.
Grae
2

Importación rápida y fácil desde 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)
delicada
fuente
2

Para aquellos que, como yo, vinieron de Google para la palabra clave "upload file colab":

from google.colab import files
uploaded = files.upload()
Fernando Wittmann
fuente
1

También puede usar mis implementaciones en google.colab y PyDrive en https://github.com/ruelj2/Google_drive, lo que lo hace mucho más fácil.

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

Luego, si desea cargar todos los archivos en un directorio de Google Drive, simplemente

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

O simplemente un archivo específico con

Gd.load_file(local_dir, file_ID)
Jean-Christophe
fuente
En este caso, ¿qué es "drive_dir_ID"?
Lengua
Como se menciona en el repositorio de git, drive_dir_ID es el ID de Google Drive correspondiente del directorio solicitado. Para obtener más información, consulte github.com/ruelj2/Google_drive . También hay un claro ejemplo de uso.
Jean-Christophe
1

Como mencionó @Vivek Solanki, también cargué mi archivo en el panel de colaboración en la sección "Archivo". Simplemente tome nota de dónde se ha cargado el archivo. Para mí, train_data = pd.read_csv('/fileName.csv')funcionó.

Ishani
fuente
1

en google colabs si esta es tu primera vez,

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

ejecute estos códigos y vaya a través del enlace de salida, luego pase el pase hacia la caja

cuando copie puede copiar de la siguiente manera, vaya al archivo, haga clic derecho y copie la ruta *** no olvide eliminar "/ contenido"

f = open("drive/My Drive/RES/dimeric_force_field/Test/python_read/cropped.pdb", "r")
Niransha
fuente
1
  1. Puede montar en Google Drive ejecutando siguiente

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

  2. Luego, para entrenar, copie los datos de gdrive a la carpeta raíz de colab.

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

donde la primera ruta es la ruta gdrive y la segunda es la carpeta raíz colab.

De esta forma, el entrenamiento es más rápido para grandes datos.

Asheer Qureshi
fuente
0

Se ha resuelto, encuentre los detalles aquí y utilice la función a continuación: /programming/47212852/how-to-import-and-read-a-shelve-or-numpy-file-in-google -colaboratorio / 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
fuente
0

Aquí hay una forma de importar archivos de Google Drive a portátiles.

abra el cuaderno jupyter y ejecute el siguiente código y complete el proceso de autenticació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}

Una vez que haya terminado con el código anterior, ejecute el siguiente código para montar Google Drive

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

Importación de archivos de Google Drive a portátiles (Ej .: Colab_Notebooks / db.csv)

digamos que su archivo de conjunto de datos en la carpeta Colab_Notebooks y su nombre es db.csv

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

Espero que ayude

Ravi G
fuente
0

si quieres hacer esto sin código, es bastante fácil. Comprime tu carpeta en mi caso, es

dataset.zip

luego, en Colab, haga clic derecho en la carpeta donde desea colocar este archivo y presione Cargar y cargar este archivo zip. Después de eso, escribe este comando de Linux.

!unzip <your_zip_file_name>

puede ver que sus datos se cargan correctamente.

Arham Aalam
fuente
0

Si el tamaño del conjunto de datos es inferior a 25 mb, la forma más fácil de cargar un archivo CSV es desde el repositorio de GitHub.

  1. Haga clic en el conjunto de datos en el repositorio
  2. Haga clic en el botón Ver sin formato
  3. Copie el enlace y guárdelo en una variable
  4. cargar la variable en Pandas read_csv para obtener el marco de datos

Ejemplo:

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