Importar dados para o Google Colaboratory

156

Quais são as maneiras comuns de importar dados particulares para os blocos de anotações do Google Colaboratory? É possível importar uma planilha do Google não pública? Você não pode ler os arquivos do sistema. Os documentos introdutórios apontam para um guia sobre o uso do BigQuery , mas isso parece um pouco ... muito.

Grae
fonte

Respostas:

197

Um caderno de exemplo oficial que demonstra o upload / download de arquivos locais e a integração com o Drive e as folhas está disponível aqui: https://colab.research.google.com/notebooks/io.ipynb

A maneira mais simples de compartilhar arquivos é montar o seu Google Drive.

Para fazer isso, execute o seguinte em uma célula de código:

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

Ele solicitará que você visite um link para PERMITIR "Google Files Stream" para acessar sua unidade. Depois disso, será mostrado um código de autenticação alfanumérico longo que precisa ser inserido no bloco de anotações do seu Colab.

Posteriormente, seus arquivos do Drive serão montados e você poderá procurá-los com o navegador de arquivos no painel lateral.

insira a descrição da imagem aqui

Aqui está um caderno de exemplo completo

Bob Smith
fonte
3
Um exemplo de planilha agora está incluído em um bloco de anotações incluído que também inclui receitas para o Drive e o Google Cloud Storage: colab.research.google.com/notebook#fileId=/v2/external/…
Bob Smith,
9
Posso importar uma pasta específica no meu Drive? Eu estou compartilhando esta colab com outra pessoa, e eu não quero dar acesso a toda a movimentação da minha google que contém informações sensíveis
yellow01
4
Os arquivos no seu Drive não serão compartilhados se você compartilhar o notebook. O usuário ainda precisará montar sua própria unidade, que é separada. Você pode compartilhar os arquivos com esse usuário, se necessário, mas tudo isso é controlado pelas ACLs normais da unidade. Compartilhar um notebook Colab compartilha apenas o notebook, não os arquivos do Drive mencionados nesse notebook.
Bob Smith
minha montagem foi bem-sucedida, mas não consigo ver os arquivos listados no lado esquerdo em arquivos. Alguma sugestão?
Swapnil B.
3
Não treine os dados no Google Drive montado. Primeiro copie os dados para a unidade local e depois treine nela. Será quase 10 vezes mais rápido. Para uma cópia mais rápida, verifique se os arquivos de dados são arquivos grandes ou vários arquivos menores. Por exemplo: - Não use 100000 arquivos de imagem. Use 100 arquivos de 1000 imagens cada. Desta forma o upload para o Google Drive também é mais rápido e por isso é a cópia a partir do Google Drive para CoLab
saurabheights
47

Envio

from google.colab import files
files.upload()

Baixar

files.download('filename')

Diretório de lista

files.os.listdir()
井上 智 文
fonte
6
Os arquivos enviados são armazenados no Google Drive do usuário ou no servidor ao qual o notebook está conectado?
RodrikTheReader
1
Esses arquivos não são efêmeros?
Acumenus 21/09
Algum argumento para upload?
user25004
esta resposta deve estar no topo. A questão é sobre a importação de dados, não a montagem do Google Drive.
Fernando Wittmann 27/03
18

Maneira simples de importar dados do seu googledrive - economizando tempo para as pessoas (não sei por que o Google simplesmente não lista explicitamente este passo a passo).

INSTALAR E 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)

ENVIANDO

se você precisar enviar dados da unidade 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])))

execute e isso exibirá um botão de escolha de arquivo - encontre seu arquivo de upload - clique em abrir

Após o upload, ele exibirá:

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

CRIAR ARQUIVO PARA O NOTEBOOK

Se o seu arquivo de dados já estiver no seu gdrive, você pode pular para esta etapa.

Agora está no seu Google Drive. Encontre o arquivo no seu Google Drive e clique com o botão direito. Clique em obter 'link compartilhável'. Você verá uma janela com:

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

Cópia - '29PGh8XCts3mlMP6zRphvnIcbv27boawn' - esse é o ID do arquivo.

No seu caderno:

    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 DADOS NO CADERNO

Para importar os dados que você enviou para o notebook (um arquivo json neste exemplo - como você carrega dependerá do tipo de arquivo / dados - .txt, .csv etc.):

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

Agora você pode imprimir para ver os dados disponíveis:

    print(sample_uploaded_data)
POR EXEMPLO
fonte
1
Vale ressaltar que a sugestão UPLOADING via google.colab.files.upload()não parece funcionar no Firefox nem no Safari, apenas no Chrome. Veja aqui
5agado 23/02
15

Etapa 1 - Monte seu Google Drive no Collaborative

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

Etapa 2 - Agora você verá seus arquivos do Google Drive no painel esquerdo (explorador de arquivos). Clique com o botão direito do mouse no arquivo que você precisa importar e selecione o caminho de cópia. Em seguida, importe como de costume nos pandas, usando esse caminho copiado.

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

Feito!

Garima Jain
fonte
Ganha clareza e concisão e tem igual eficácia. Não vejo vantagem nas formas muito mais envolvidas de fazer isso.
Elroch
7

A maneira mais simples que eu fiz é:

  1. Faça repositório no github com seu conjunto de dados
  2. Clone seu repositório com! git clone --recursive [GITHUB LINK REPO]
  3. Encontre onde estão seus dados (comando! Ls)
  4. Abra o arquivo com os pandas ao fazê-lo no notebook jupyter normal.
Rafał B.
fonte
Oi, com esta "versão https: // .." Gapminder = pd.read_csv ( "Data-Análise / pairplots / data / gapminder_data.csv") Estou ficando apenas variável com apenas 2 observatons
Mukul Sharma
2
Esta solução não funcionará se um único tamanho de arquivo for maior que o limite permitido pelo github, que se 20MB eu acho na versão gratuita.
Akshay Soam
7

Isso permite que você envie seus arquivos pelo Google Drive.

Execute o código abaixo (encontrei isso em algum lugar anteriormente, mas não consigo encontrar a fonte novamente - créditos para quem o escreveu!):

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

Clique no primeiro link que solicitará que você faça login no Google; depois disso, outro será exibido, solicitando permissão para acessar seu Google Drive.

Em seguida, execute isso que cria um diretório chamado 'drive' e vincula seu Google Drive a ele:

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

Se você fizer um !lsagora, haverá uma unidade de diretório e, se você fizer !ls driveisso, poderá ver todo o conteúdo do seu Google Drive.

Por exemplo, se eu salvar meu arquivo chamado abc.txtem uma pasta chamada ColabNotebooksno meu Google Drive, agora posso acessá-lo através de um caminhodrive/ColabNotebooks/abc.txt

yl_low
fonte
1
Fonte
Karan Singh
5

Na barra esquerda de qualquer colaborador, há uma seção chamada "Arquivos". Envie seus arquivos para lá e use este caminho

"/content/YourFileName.extension"

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

Vivek Solanki
fonte
2
Verifique se você fez o upload diretamente no diretório raiz e não no diretório 'sample_data'. Além disso, você pode remover o "conteúdo" e escrever o nome do arquivo como:pd.read_csv('Forbes2015.csv');
Vivek Solanki
Se ainda não funcionar, você pode me dizer a mensagem de erro?
Vivek Solanki
@flashliquid Não é necessário. Funciona mesmo sem '/'. Você pode testá-lo em colab.
Vivek Solanki 12/03
3

A solução mais simples que encontrei até o momento e que funciona perfeitamente para arquivos CSV pequenos e médios é:

  1. Crie uma essência secreta em gist.github.com e faça o upload (ou copie e cole o conteúdo de) seu arquivo.
  2. Clique na visualização Raw e copie o URL do arquivo bruto.
  3. Use o URL copiado como o endereço do arquivo quando ligar pandas.read_csv(URL)

Isso pode ou não funcionar para ler um arquivo de texto linha por linha ou arquivos binários.

Borhan Kazimipour
fonte
1
É importante observar que, embora seja difícil descobrir as informações secretas, elas não são privadas, portanto, qualquer pessoa que use essa abordagem deve ter cuidado.
Grae 13/07/19
2

Importação rápida e fácil do 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
fonte
2

Para quem, como eu, veio do Google para a palavra-chave "upload file colab":

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

Você também pode usar minhas implementações no google.colab e PyDrive em https://github.com/ruelj2/Google_drive, o que facilita muito.

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

Então, se você deseja carregar todos os arquivos em um diretório do Google Drive, basta

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

Ou apenas um arquivo específico com

Gd.load_file(local_dir, file_ID)
Jean-Christophe
fonte
Nesse caso, o que é "drive_dir_ID?"
Parseltongue
Conforme mencionado no repositório git, drive_dir_ID é o ID do Google Drive correspondente do diretório solicitado. Para mais informações, consulte github.com/ruelj2/Google_drive . Há também um claro exemplo de uso.
19418 Jean-Christophe
1

Conforme mencionado por @Vivek Solanki, também enviei meu arquivo no painel colaborativo na seção "Arquivo". Basta anotar onde o arquivo foi enviado. Para mim, train_data = pd.read_csv('/fileName.csv')trabalhou.

Ishani
fonte
1

no google colabs, se esta é sua primeira vez,

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

execute esses códigos e passe pelo link de saída e depois passe o pass-prase para a caixa

ao copiar, você pode copiar da seguinte maneira, vá para o arquivo, clique com o botão direito do mouse e copie o caminho *** não se esqueça de remover "/ content"

f = open("drive/My Drive/RES/dimeric_force_field/Test/python_read/cropped.pdb", "r")
Niransha
fonte
1
  1. Você pode montar no Google Drive executando os seguintes

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

  2. Posteriormente Para o treinamento, copie os dados do gdrive para a pasta raiz do colab.

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

onde o primeiro caminho é o caminho do gdrive e o segundo é a pasta raiz do colab.

Dessa forma, o treinamento é mais rápido para grandes dados.

asheer qureshi
fonte
0

Foi resolvido, encontre detalhes aqui e use a função abaixo: /programming/47212852/how-to-import-and-read-a-shelve-or-numpy-file-in-google -colaboratório / 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
fonte
0

Aqui está uma maneira de importar arquivos do google drive para notebooks.

abra o notebook jupyter e execute o código abaixo e conclua o processo de autenticação

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

Depois de concluir o código acima, execute o código abaixo para montar o Google Drive

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

Importando arquivos do google drive para notebooks (Ex: Colab_Notebooks / db.csv)

digamos que seu arquivo de conjunto de dados na pasta Colab_Notebooks e seu nome é db.csv

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

Espero que ajude

Ravi G
fonte
0

se você quiser fazer isso sem código, é bem fácil. Zip sua pasta no meu caso, é

dataset.zip

Em seguida, no Colab, clique com o botão direito do mouse na pasta em que deseja colocar este arquivo e pressione Carregar e carregar este arquivo zip. Depois disso, escreva este comando do Linux.

!unzip <your_zip_file_name>

você pode ver que seus dados foram enviados com sucesso.

Arham Aalam
fonte
0

Se o tamanho do conjunto de dados for menor que 25 MB, a maneira mais fácil de fazer upload de um arquivo CSV é no seu repositório GitHub.

  1. Clique no conjunto de dados no repositório
  2. Clique no botão Visualizar Raw
  3. Copie o link e armazene-o em uma variável
  4. carrega a variável no Pandas read_csv para obter o dataframe

Exemplo:

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