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数据帧.
您将要用于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文件所必需的.
也许更简单的方法:
#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)
首先,我从google.colab导入io、pandas和文件
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)