Загрузить файл 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
зависимости не нужны
Самый простой способ, который я нашел
Сначала подключите свой Google-диск
import pandas as pd from google.colab import drive drive.mount('/content/gdrive')
Получите путь к файлу и используйте 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')