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

时间:2017-11-22 09:03:46

标签: python excel pandas pydrive google-colaboratory

如何从谷歌硬盘导入MS-excel(.xlsx)文件到colaboratory?

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

工作正常(drivepydrive.drive.GoogleDrive个对象)。但是,

print excel_file.FetchContent()

返回None。和

excel_file.content()

抛出:

  

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

     

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

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

4 个答案:

答案 0 :(得分:5)

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

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

我做的更详细:

我创建了一个新的spreadsheet in sheets作为.xlsx文件导出。

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

请注意文件ID。就我而言,它是1Sv4ib5i7CKWhAHZkKg-uitIkS3xwxtXM

然后,在Colab中,我调整了Drive download snippet来下载文件。关键位是:

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

最后,创建一个Pandas DataFrame:

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

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

答案 1 :(得分:2)

首先,我从 google.colab

导入 iopandas文件
import io
import pandas as pd
from google.colab import files

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

uploaded = files.upload()

您将看到类似的内容(单击“选择文件”并上传 xlsx 文件): enter image description here

假设文件名是 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')

答案 2 :(得分:1)

也许是一种更简单的方法:

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

答案 3 :(得分:-2)

我在这里要解决此问题。因此,您可以将任何文件(.csv,.xlsx等)从Google驱动器导入到Google Colab。

解决方案:

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

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

df.shape

df

!pip install --upgrade --quiet gspread

from google.colab import auth
auth.authenticate_user()

import gspread
from oauth2client.client import GoogleCredentials
gc=gspread.authorize(GoogleCredentials.get_application_default())

worksheet=gc.open('SampleData').sheet1
cell_list=worksheet

rows=worksheet.get_all_values()
print(rows)

import pandas as pd
pd.DataFrame.from_records(rows)