Загрузить файл xlsx с диска в колабораторию

Как я могу импортировать файл MS-Excel(.xlsx) с диска Google в колабораторию?

excel_file = drive.CreateFile({'id':'some id'})

работает(drive это pydrive.drive.GoogleDrive объект). Но,

print excel_file.FetchContent()

Возвращает None. А также

excel_file.content()

броски:

TypeErrorTraceback (последний вызов был последним) в () ----> 1 excel_file.content()

Ошибка типа: объект '_io.BytesIO' не вызывается

Мое намерение (учитывая некоторый действительный идентификатор файла) импортировать его как объект io, который может быть прочитан pandas read_excel()и, наконец, вытащить из него панду.

6 ответов

Решение

Вы хотите использовать excel_file.GetContentFile сохранить файл локально. Затем вы можете использовать панд read_excel метод после вас !pip install -q xlrd,

Вот полный пример: https://colab.research.google.com/notebook

Что я сделал более подробно:

Я создал новую таблицу в листах для экспорта в виде файла.xlsx.

Затем я экспортировал его как файл.xlsx и снова загрузил на диск. URL-адрес: https://drive.google.com/open?id=1Sv4ib5i7CKWhAHZkKg-uitIkS3xwxtXM

Обратите внимание на идентификатор файла. В моем случае это 1Sv4ib5i7CKWhAHZkKg-uitIkS3xwxtXM,

Затем в Colab я настроил фрагмент загрузочного диска, чтобы загрузить файл. Ключевые биты:

file_id = '1Sv4ib5i7CKWhAHZkKg-uitIkS3xwxtXM'
downloaded = drive.CreateFile({'id': file_id})
downloaded.GetContentFile('exported.xlsx')

Наконец, для создания DataFrame Pandas:

!pip install -q xlrd
import pandas as pd
df = pd.read_excel('exported.xlsx')
df

!pip install... line устанавливает библиотеку xlrd, которая необходима для чтения файлов Excel.

Возможно, более простой способ:

#To read/write data from Google Drive:
#Reference: https://colab.research.google.com/notebooks/io.ipynb#scrollTo=u22w3BFiOveAå
from google.colab import drive
drive.mount('/content/drive')

df = pd.read_excel('/content/drive/My Drive/folder_name/file_name.xlsx')

# #When done, 
# drive.flush_and_unmount()
# print('All changes made in this colab session should now be visible in Drive.')

Сначала я импортирую io , pandas и файлы из google.colab

      import io
import pandas as pd
from google.colab import files

Затем я загружаю файл с помощью виджета загрузки

      uploaded = files.upload()

У вас будет что-то похожее на это (нажмите Выбрать файлы и загрузите файл xlsx):

Предположим, что имя файлов - my_spreadsheet.xlsx, поэтому вам нужно использовать его в следующей строке:

      df = pd.read_excel(io.BytesIO(uploaded.get('my_spreadsheet.xlsx')))

И все, теперь у вас есть первый лист в фрейме данных df . Однако, если у вас несколько листов, вы можете изменить код следующим образом:

Сначала переместите вызов io в другую переменную

      xlsx_file = io.BytesIO(uploaded.get('my_spreadsheet.xlsx'))

А затем используйте новую переменную, чтобы указать имя листа, например:

      df_first_sheet = pd.read_excel(xlsx_file, 'My First Sheet')
df_second_sheet = pd.read_excel(xlsx_file, 'My Second Sheet')
      import pandas as pd

xlsx_link = 'https://docs.google.com/spreadsheets/d/1Sv4ib5i7CKWhAHZkKg-uitIkS3xwxtXM/export'
df = pd.read_excel(xlsx_link)

если xlsx размещен на диске Google, после совместного использования любой может использовать ссылку для доступа к нему, с учетной записью Google или без нее. google.colab.driveили же google.colab.filesзависимости не нужны

Самый простой способ, который я нашел

  1. Сначала подключите свой Google-диск

             import pandas as pd
     from google.colab import drive
     drive.mount('/content/gdrive')
    
  2. Получите путь к файлу и используйте pd.read_excel().

    df = pd.read_excel('/content/gdrive/MyDrive/data.xlsx')

    df.head()

Самый простой способ, который я нашел до сих пор.

Очень похоже на то, что мы делаем на рабочем столе.

Учитывая, что вы загрузили файл в папку Google Диска:

  • На левой панели нажмите «Файлы» (под {x}).
  • Выберите «Смонтировать драйвер»> «Диск»> «Папка»> «Файл» (щелкните левой кнопкой мыши и «Копировать путь»)

После этого просто перейдите к коду и пройдите путь

      pd.read_excel('/content/drive/MyDrive/Colab Notebooks/token_rating.xlsx')
Другие вопросы по тегам