Importez des données dans Google Colaboratory

156

Quels sont les moyens courants d'importer des données privées dans les blocs-notes Google Colaboratory? Est-il possible d'importer une feuille Google non publique? Vous ne pouvez pas lire à partir des fichiers système. La documentation d'introduction renvoie à un guide sur l'utilisation de BigQuery , mais cela semble un peu ... beaucoup.

Grae
la source

Réponses:

197

Un exemple de bloc-notes officiel montrant le chargement / téléchargement de fichiers locaux et l'intégration avec Drive et les feuilles est disponible ici: https://colab.research.google.com/notebooks/io.ipynb

Le moyen le plus simple de partager des fichiers est de monter votre Google Drive.

Pour ce faire, exécutez ce qui suit dans une cellule de code:

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

Il vous demandera de visiter un lien pour AUTORISER "Google Files Stream" pour accéder à votre lecteur. Après cela, un long code d'authentification alphanumérique s'affiche et doit être saisi dans le carnet de notes de votre Colab.

Ensuite, vos fichiers Drive seront montés et vous pourrez les parcourir avec le navigateur de fichiers dans le panneau latéral.

entrez la description de l'image ici

Voici un exemple de cahier complet

Bob Smith
la source
3
Un exemple de feuilles est maintenant inclus dans un exemple de bloc-notes fourni qui comprend également des recettes pour Drive et Google Cloud Storage: colab.research.google.com/notebook#fileId=/v2/external/…
Bob Smith
9
Puis-je importer un dossier spécifique dans mon Drive? Je partage ce colab avec quelqu'un d'autre, et je ne veux pas donner accès à tout mon lecteur Google qui contient des informations sensibles
jaune01
4
Les fichiers de votre Drive ne seront pas partagés si vous partagez le bloc-notes. L'utilisateur devra toujours monter son propre lecteur, qui est séparé. Vous pouvez partager les fichiers avec cet utilisateur si nécessaire, mais tout cela est contrôlé par les ACL Drive normales. Le partage d'un bloc-notes Colab ne partage que le bloc-notes, pas les fichiers Drive référencés dans ce bloc-notes.
Bob Smith le
mon montage est réussi mais je ne peux pas voir la liste des fichiers dans la partie gauche sous les fichiers. Aucune suggestion?
Swapnil B.
3
Ne vous entraînez pas sur les données de Google Drive monté. Copiez d'abord les données sur le lecteur local, puis entraînez-vous dessus. Ce sera presque 10 fois plus rapide. Pour une copie plus rapide, assurez-vous que les fichiers de données sont de grandes archives ou un certain nombre de plus petites. Par exemple: - N'utilisez pas 100 000 fichiers image. Utilisez 100 archives de 1000 images chacune. De cette façon, le téléchargement sur Google Drive est également plus rapide, tout comme la copie de Google Drive vers Colab
saurabheights
47

Télécharger

from google.colab import files
files.upload()

Télécharger

files.download('filename')

Répertoire de liste

files.os.listdir()
井上 智 文
la source
6
Les fichiers téléchargés sont-ils stockés sur le lecteur Google de l'utilisateur ou sur le serveur auquel le notebook est connecté?
RodrikTheReader
1
Ces fichiers ne sont-ils pas éphémères?
Acumenus
Un argument pour le téléchargement?
user25004
cette réponse devrait être au sommet. La question concerne l'importation de données et non le montage de Google Drive.
Fernando Wittmann
18

Un moyen simple d'importer des données depuis votre googledrive - cela fait gagner du temps aux gens (je ne sais pas pourquoi Google ne répertorie pas cette étape par étape explicitement).

INSTALLER ET AUTHENTIFIER 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)

TÉLÉCHARGEMENT

si vous devez télécharger des données à partir du lecteur 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])))

exécuter et cela affichera un bouton de sélection de fichier - recherchez votre fichier de téléchargement - cliquez sur Ouvrir

Après le téléchargement, il affichera:

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

CRÉER UN FICHIER POUR LE CARNET

Si votre fichier de données est déjà dans votre gdrive, vous pouvez passer à cette étape.

Maintenant, il est dans votre lecteur Google. Recherchez le fichier dans votre lecteur Google et faites un clic droit. Cliquez sur "Obtenir un lien partageable". Vous obtiendrez une fenêtre avec:

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

Copiez - '29PGh8XCts3mlMP6zRphvnIcbv27boawn' - c'est l'ID de fichier.

Dans ton cahier:

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

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

IMPORTATION DES DONNÉES DANS LE CARNET

Pour importer les données que vous avez téléchargées dans le notebook (un fichier json dans cet exemple - la façon dont vous chargez dépendra du type de fichier / données - .txt, .csv etc.):

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

Vous pouvez maintenant imprimer pour voir que les données sont là:

    print(sample_uploaded_data)
PAR EXEMPLE
la source
1
Il est à noter que la suggestion UPLOADING , via google.colab.files.upload()ne semble pas fonctionner ni sur Firefox ni sur Safari, Chrome uniquement. Voir ici
5agado
15

étape 1 - Montez votre Google Drive sur Collaboratory

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

étape 2 - Vous verrez maintenant vos fichiers Google Drive dans le volet gauche (explorateur de fichiers). Cliquez avec le bouton droit sur le fichier à importer et sélectionnez le chemin de copie. Puis importez comme d'habitude dans les pandas, en utilisant ce chemin copié.

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

Terminé!

Garima Jain
la source
Gagne sur la clarté et la brièveté et a une efficacité égale. Je ne vois aucun avantage aux moyens beaucoup plus complexes de le faire.
Elroch
7

La façon la plus simple que j'ai faite est:

  1. Créez un référentiel sur github avec votre ensemble de données
  2. Clonez votre référentiel avec! git clone --recursive [GITHUB LINK REPO]
  3. Trouvez où sont vos données (commande! Ls)
  4. Ouvrez le fichier avec des pandas comme vous le faites dans un cahier jupyter normal.
Rafał B.
la source
Salut, avec ce gapminder = pd.read_csv ("Data-Analysis / pairplots / data / gapminder_data.csv") Je ne reçois que la variable "version https: // .." avec seulement 2 observatons
Mukul Sharma
2
Cette solution ne fonctionnera pas si la taille d'un seul fichier est supérieure à la limite autorisée par github, ce qui est de 20 Mo, je suppose dans la version gratuite.
Akshay Soam
7

Cela vous permet de télécharger vos fichiers via Google Drive.

Exécutez le code ci-dessous (trouvé quelque part précédemment mais je ne peux pas trouver la source à nouveau - crédit à celui qui l'a écrit!):

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

Cliquez sur le premier lien qui apparaît et vous invite à vous connecter à Google; après cela, un autre apparaîtra qui vous demandera la permission d'accéder à votre Google Drive.

Ensuite, exécutez ceci qui crée un répertoire nommé `` lecteur '' et y lie votre Google Drive:

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

Si vous faites un !lsmaintenant, il y aura un lecteur de répertoire, et si vous le faites, !ls drivevous pouvez voir tout le contenu de votre Google Drive.

Ainsi par exemple, si j'enregistre mon fichier appelé abc.txtdans un dossier appelé ColabNotebooksdans mon Google Drive, je peux maintenant y accéder via un chemindrive/ColabNotebooks/abc.txt

yl_low
la source
1
Source
Karan Singh
5

Dans la barre de gauche de tout laboratoire, il y a une section intitulée «Fichiers». Téléchargez vos fichiers là-bas et utilisez ce chemin

"/content/YourFileName.extension"

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

Vivek Solanki
la source
2
Assurez-vous que vous avez téléchargé directement dans le répertoire racine et non dans le répertoire 'sample_data'. En outre, vous pouvez supprimer le "contenu" et simplement écrire le nom du fichier comme:pd.read_csv('Forbes2015.csv');
Vivek Solanki
Si cela ne fonctionne toujours pas, pouvez-vous me dire le message d'erreur?
Vivek Solanki
@flashliquid Pas nécessaire. Cela fonctionne même sans «/». Vous pouvez le tester sur colab.
Vivek Solanki
3

La solution la plus simple que j'ai trouvée jusqu'à présent et qui fonctionne parfaitement pour les fichiers CSV de petite et moyenne taille est:

  1. Créez un contenu secret sur gist.github.com et téléchargez (ou copiez-collez le contenu de) votre fichier.
  2. Cliquez sur la vue brute et copiez l'URL du fichier brut.
  3. Utilisez l'URL copiée comme adresse de fichier lorsque vous appelez pandas.read_csv(URL)

Cela peut ou non fonctionner pour la lecture d'un fichier texte ligne par ligne ou des fichiers binaires.

Borhan Kazimipour
la source
1
Il est important de noter que s'il est difficile de découvrir les principes secrets, ils ne sont pas privés, toute personne utilisant cette approche doit donc faire attention.
Grae
2

Importation rapide et facile depuis 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
la source
2

Pour ceux qui, comme moi, sont venus de Google pour le mot clé "upload file colab":

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

Vous pouvez également utiliser mes implémentations sur google.colab et PyDrive à https://github.com/ruelj2/Google_drive, ce qui facilite grandement les choses.

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

Ensuite, si vous souhaitez charger tous les fichiers dans un répertoire Google Drive, il suffit

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

Ou juste un fichier spécifique avec

Gd.load_file(local_dir, file_ID)
Jean-Christophe
la source
Dans ce cas, qu'est-ce que "drive_dir_ID?"
Fourchelangue
Comme mentionné dans le repo git, drive_dir_ID est l'ID Google Drive correspondant du répertoire demandé. Pour plus d'informations, veuillez consulter github.com/ruelj2/Google_drive . Il y a aussi un exemple clair d'utilisation.
Jean-Christophe
1

Comme mentionné par @Vivek Solanki, j'ai également téléchargé mon fichier sur le tableau de bord collaboratif dans la section "Fichier". Prenez simplement note de l'endroit où le fichier a été téléchargé. Pour moi, a train_data = pd.read_csv('/fileName.csv')fonctionné.

Ishani
la source
1

dans google colabs si c'est votre première fois,

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

exécutez ces codes et passez par le lien de sortie, puis passez le mot de passe à la boîte

lorsque vous copiez, vous pouvez copier comme suit, allez dans le fichier clic droit et copiez le chemin *** n'oubliez pas de supprimer "/ content"

f = open("drive/My Drive/RES/dimeric_force_field/Test/python_read/cropped.pdb", "r")
Niransha
la source
1
  1. Vous pouvez monter sur Google Drive en exécutant la suite

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

  2. Ensuite, pour la formation, copiez les données de gdrive dans le dossier racine de colab.

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

où le premier chemin est le chemin gdrive et le second est le dossier racine de colab.

De cette façon, la formation est plus rapide pour les données volumineuses.

asheer qureshi
la source
0

Le problème a été résolu, trouvez les détails ici et utilisez la fonction ci-dessous: /programming/47212852/how-to-import-and-read-a-shelve-or-numpy-file-in-google -colaboratoire / 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
la source
0

Voici une façon d'importer des fichiers de Google Drive vers des ordinateurs portables.

ouvrez le notebook jupyter et exécutez le code ci-dessous et terminez le processus d'authentification

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

une fois que vous avez terminé avec le code ci-dessus, exécutez le code ci-dessous pour monter google drive

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

Importation de fichiers de Google Drive vers des notebooks (Ex: Colab_Notebooks / db.csv)

disons votre fichier de jeu de données dans le dossier Colab_Notebooks et son nom est db.csv

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

J'espère que ça aide

Ravi G
la source
0

si vous voulez faire cela sans code, c'est assez facile. Zip votre dossier dans mon cas c'est

dataset.zip

puis dans Colab, faites un clic droit sur le dossier où vous souhaitez placer ce fichier et appuyez sur Télécharger et téléchargez ce fichier zip. Après cela, écrivez cette commande Linux.

!unzip <your_zip_file_name>

vous pouvez voir que vos données ont été téléchargées avec succès.

Arham Aalam
la source
0

Si la taille de l'ensemble de données est inférieure à 25 Mo, le moyen le plus simple de télécharger un fichier CSV est à partir de votre référentiel GitHub.

  1. Cliquez sur l'ensemble de données dans le référentiel
  2. Cliquez sur le bouton Afficher brut
  3. Copiez le lien et stockez-le dans une variable
  4. chargez la variable dans Pandas read_csv pour obtenir le dataframe

Exemple:

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