在colaboratory中从驱动器加载xlsx文件

dd_*_*kie 4 python excel pandas pydrive google-colaboratory

如何从谷歌驱动器导入MS-excel(.xlsx)文件到colaboratory?

excel_file = drive.CreateFile({'id':'some id'})
Run Code Online (Sandbox Code Playgroud)

工作(drive是一个pydrive.drive.GoogleDrive对象).但,

print excel_file.FetchContent()
Run Code Online (Sandbox Code Playgroud)

返回无.和

excel_file.content()
Run Code Online (Sandbox Code Playgroud)

抛出:

()----> 1 excel_file.content()中的TypeErrorTraceback(最近一次调用最后一次)

TypeError:'_ no.BytesIO'对象不可调用

我的意图是(给定一些有效的文件'id')将其作为io对象导入,可以通过pandas读取read_excel(),最后从中获取pandas数据帧.

Bob*_*ith 5

您将要用于excel_file.GetContentFile在本地保存文件.然后,您可以使用Pandas read_excel方法!pip install -q xlrd.

以下是一个完整的示例:https: //colab.research.google.com/notebook#fileId=1SU176zTQvhflodEzuiacNrzxFQ6fWeWC

我做的更详细:

我在工作表中创建了一个新的电子表格,以导出为.xlsx文件.

接下来,我将其导出为.xlsx文件并再次上传到云端硬盘.该网址为:https: //drive.google.com/open?id = 1Sv4ib5i7CKWhAHZkKg -uitIkS3xwxtXM

记下文件ID.就我而言,它是1Sv4ib5i7CKWhAHZkKg-uitIkS3xwxtXM.

然后,在Colab中,我调整了Drive下载代码片段以下载该文件.关键位是:

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

最后,创建一个Pandas DataFrame:

!pip install -q xlrd
import pandas as pd
df = pd.read_excel('exported.xlsx')
df
Run Code Online (Sandbox Code Playgroud)

!pip install...行安装了xlrd库,这是读取Excel文件所必需的.


Zil*_*g Z 5

也许更简单的方法:

#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.')

Run Code Online (Sandbox Code Playgroud)


neo*_*gio 5

首先,我从google.colab导入iopandas文件

import io
import pandas as pd
from google.colab import files
Run Code Online (Sandbox Code Playgroud)

然后我使用上传小部件上传文件

uploaded = files.upload()
Run Code Online (Sandbox Code Playgroud)

您将看到类似的内容(单击“选择文件”并上传 xlsx 文件): 在此输入图像描述

假设文件的名称是 my_spreadsheet.xlsx,因此您需要在以下行中使用它:

df = pd.read_excel(io.BytesIO(uploaded.get('my_spreadsheet.xlsx')))
Run Code Online (Sandbox Code Playgroud)

就这样,现在您有了df数据框中的第一张工作表。但是,如果您有多个工作表,您可以将代码更改为:

首先,将 io 调用移至另一个变量

xlsx_file = io.BytesIO(uploaded.get('my_spreadsheet.xlsx'))
Run Code Online (Sandbox Code Playgroud)

然后,使用新变量指定工作表名称,如下所示:

df_first_sheet = pd.read_excel(xlsx_file, 'My First Sheet')
df_second_sheet = pd.read_excel(xlsx_file, 'My Second Sheet')
Run Code Online (Sandbox Code Playgroud)