我正在从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行,我需要花费10000行。我的问题是,有没有其他方法可以更有效地加载这样的数据?我对范围的界定持开放态度,所以如果这个问题听起来很愚蠢,我很乐意听到其他选择,谢谢
您可以使用
pandas
将数据直接从excel加载到pandas
DataFrame
然后可以使用
pandas
进行快速操作和分析。在最后,您可以将其保存在Excel、CSV、JSON、HTML、LaTeX中,甚至可以直接保存在数据库中。在
所以也许你不需要一些“教师对象”。在
pandas - Python Data Analysis Library
Pandas Cookbook
Pandas Lessons
另一种方法是将Excel电子表格转换为CSV格式。在
然后使用标准库中的Pythoncsv模块。在
说明:
csv.reader
对象导入为csv_reader
(我的个人约定)。在data.csv
读取"r"
,将生成的file对象放入fd
。在csv_reader(file_object)
提供给我们。在另请注意:如果您的数据包含Unicode字符,您将希望安装并使用Python Package Index(PyPi)中的unicodecsv第三方库。在
XLRD向提供了一个row(row#)方法,该方法应该可以节省2次返回该文件的行程。在
此处的文档: https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html?p=4966#sheet.Sheet.row_values-method
在大多数情况下,您希望处理单元格上的行,从数据集中提取一个切片并处理它比每次返回数据集更有效。在
10000行太多了,所以加载它需要一段时间。您可能需要考虑像XML或JSON这样的格式,它们的库中通常有高效的搜索方法,或者像SQLite这样的平面数据库引擎。在
一旦你点击了一千多行,通常最好使用程序员友好的格式或数据库,因为这些都是为了提高效率。在
*我从上面的代码中猜到有4列,第三列被忽略,因此产生了垃圾变量。在
相关问题 更多 >
编程相关推荐