我正在从excel加载数据以填充对象,即教师(lastName,firstName,user_ID)。然后将这些教师对象放入列表中,进行进一步的操作和分析(即查找匹配和其他模式)。我这样做的方法是使用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个。我的问题是,是否有另一种方式以更有效的方式加载这样的数据?我愿意接受范围界定,所以如果这个问题听起来很愚蠢,我很乐意听取其他选择,谢谢
答案 0 :(得分:5)
另一种方法是将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
<强>解释强>
csv.reader
对象导入为csv_reader
(我的个人约定)。data.csv
阅读"r"
,将生成的文件对象放入fd
。csv_reader(file_object)
提供给我们的CSV库处理提供的数据行。userid, firstname, lastname
,因此我们可以将列表row
解压缩到参考/变量中。请参阅:Tuples and Sequences 另请注意:如果您的数据包含Unicode字符,则需要安装并使用unicodecsv中的Python Package Index第三方库(的PyPI )。
答案 1 :(得分:1)
您可以使用pandas
直接从Excel加载数据到pandas
DataFrame
import pandas as pd
df = pd.read_excel('filename')
然后您可以使用pandas
进行快速操作和分析。
最后,您可以将其保存为Excel,CSV,JSON,HTML,LaTeX,甚至可以直接保存在数据库中。
所以也许你不需要一些&#34;老师对象&#34;。
pandas - Python Data Analysis Library
Pandas Cookbook
Pandas Lessons
答案 2 :(得分:0)
XLRD提供了一个行(行#)方法,可以节省2次返回文件。
for row in range(11) :
userID, firstName, junk, lastName = sheet1.row_values(row, 0, 3)
在大多数情况下,您希望在单元格上使用行,从数据集中取出切片并使用它更有效,然后每次返回数据集。
10000行是相当多的,所以加载它需要一段时间。您可能需要考虑XML或JSON等通常在其库中具有高效搜索方法的格式,或者像SQLite这样的平面数据库引擎。
一旦你击中了大约一千行左右,通常最好转向程序员友好格式或数据库,因为这些都是为了提高效率。
*我猜测从上面的代码中有4列,第三列被忽略,因此是垃圾变量。