有没有一种更有效的方法来加载10,000行Excel到Excel中?

我从Excel中加载数据填充对象,即老师(姓,名,用户名)。 然后将这些教师对象放在一个列表中,进行进一步的操作和分析(即查找匹配和其他模式)。 我的做法是使用xlrd模块从excel中加载数据。

for row in range(11) : lastName = sheet1.cell_value(row,3) firstName = sheet1.cell_value(row,1) userID = sheet1.cell_value(row,0) profList.append(tempProf) 

所以这个方法需要我的电脑20秒只做12行,我需要这样做的10,000。 我的问题是,还有另外一种更有效的方式来加载这样的数据吗? 我开放出去的范围,所以如果这个问题听起来很愚蠢,我很乐意听取替代scheme,谢谢

另一种方法是将您的Excel电子表格转换为CSV。

然后使用标准库中的Python csv模块。

 from csv import reader as csv_reader with open("data.csv", "r") as fd: for row in csv_reader(fd): userid, firstname, lastname = row 

说明:

  1. 导入csv.reader对象作为csv_reader我的个人约定 )。
  2. 使用上下文pipe理器和Python的内置,打开data.csv读取"r"放置生成的文件对象到fd
  3. 现在迭代由处理csv_reader(file_object)给我们的CSV库提供的数据行。
  4. 假设每一行的格式为userid, firstname, lastname ,所以我们可以将列表row解压缩为引用/variables。 请参阅: 元组和序列

另请注意:如果您的数据包含Unicode字符,您将需要从Python包索引 ( PyPi )安装和使用unicodecsv第三方库。

您可以使用pandas将数据直接从excel加载到pandas DataFrame

 import pandas as pd df = pd.read_excel('filename') 

然后你可以使用pandas进行快速操作和分析。

最后,您可以将它保存在Excel,CSV,JSON,HTML,LaTeX中,甚至可以直接保存在数据库中。

所以也许你不需要一些“老师对象”。

大pandas – Python数据分析库
pandas食谱
pandas的教训

XLRD提供了一个行(行#)的方法,它应该为您节省2次返回到文件。

 for row in range(11) : userID, firstName, junk, lastName = sheet1.row_values(row, 0, 3) 

文档在这里: https : //secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html?p=4966#sheet.Sheet.row_values-method

在大多数情况下,您希望在单元格上使用行,从数据集中取出一个切片,并且使用该切片更有效,然后每次都返回数据集。

10000行是相当多的,所以加载它将需要一段时间。 您可能需要考虑像XML或JSON这样的格式,它们的库中通常具有高效的search方法,或者像SQLite这样的平面数据库引擎。

一旦你达到了一千多行,通常是一个好主意,转向程序员友好的格式或数据库,因为这些都是为了提高效率。

*我从上面的代码猜测,有4列,第三个被忽略,因此垃圾variables。