我目前正在进行一个简单的演示,该演示读取一个包含两列的excel文件,并将每行列中的数据提取到两个不同的列表中。
这一切都很好,但当我尝试使用matplotlib绘制数据时,我会遇到这个错误。
TypeError:foat()参数必须是字符串或数字
我知道错误是由第二个列表中的浮点值引起的,应该只是整数。我不明白的是,当它们被读取到列表中时,如何防止它们变成浮动。
[text:u'Joe', text:u'Sam', text:u'Bobby', text:u'Tom', text:u'Jane']
[number:23.0, number:36.0, number:19.0, number:31.0, number:28.0]
我在几个不同的地方尝试过打字,但总是会出现同样的错误。
TypeError: int() argument must be a string or a number, not 'Cell'
这是我在这个程序中使用的方法
def bargraph(self, fileName, xlabel, title):
people = list()
dollars = list()
workbook = xlrd.open_workbook(fileName)
worksheet = workbook.sheet_by_index(0)
for row in range(worksheet.nrows):
people.append(worksheet.cell(row ,0))
for row in range(worksheet.nrows):
dollars.append(worksheet.cell(row, 1))
plt.bar(people, dollars, 1, color="blue")
plt.xlabel(xlabel)
plt.title(title)
plt.show()
发生此错误是因为使用worksheet.cell(row,idx)检索cell实例。因此,您正在创建一个单元格列表,而打印库需要一个int列表。
请尝试使用xlrd库的函数worksheet.cell_value和worksheet.cell_type。例如尝试:
for row in range(worksheet.nrows):
people.append(worksheet.cell_value(row ,0))
for row in range(worksheet.nrows):
dollars.append(worksheet.cell_value(row, 1))