TypeError:Float()参数在读取列表时必须是字符串或数字()

时间:2016-05-17 21:54:39

标签: python input matplotlib

我目前正在开发一个简单的演示,它读取带有两列的excel文件,并将列的每一行中的数据提取到两个不同的列表中。

一切正常,但是当我尝试使用matplotlib绘制数据时,我得到了这个错误。

  

TypeError:float()参数必须是字符串或数字

我知道错误是由第二个列表中的浮点值引起的,应该只是整数。我不明白的是当它们被读入列表时如何防止它们浮动。

[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()

1 个答案:

答案 0 :(得分:1)

发生此错误是因为使用worksheet.cell(row,idx)检索Cell实例。因此,您要创建单元格列表,而绘图库需要一个整数列表。

尝试使用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))