Почему эта ошибка возникает, когда я пытаюсь построить массив, извлеченный из Excel - PullRequest
0 голосов
/ 06 июня 2019

Я прочитал диапазон ячеек из электронной таблицы Excel, используя xlrd, в массив, и я хочу построить массив на графике, используя matplotlib, но я получаю это сообщение об ошибке:

TypeError: float() argument must be a string or a number

код:

import xlrd
import matplotlib.pyplot as plt

workbook = xlrd.open_workbook('values.xls')
worksheet = workbook.sheet_by_index(0)
xvals = worksheet.col_slice(colx=0, start_rowx=11, end_rowx=75)
yvals = worksheet.col_slice(colx=1, start_rowx=11, end_rowx=75)
plt.plot(xvals, yvals)
plt.xlabel('xvals')
plt.ylabel('yvals')
plt.show()

Я могу напечатать массив и посмотреть значения, и я подтвердил, что тип для каждого значения в массиве - float.

Но когда я пытаюсь построить массив, я получаю сообщение об ошибке и пустой график

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

я изменил

worksheet.col_slice 

до

worksheet.col_values

и все заработало как положено.

0 голосов
/ 06 июня 2019

попробуйте это:

import xlrd
import matplotlib.pyplot as plt

workbook = xlrd.open_workbook('values.xls')
worksheet = workbook.sheet_by_index(0)
xvals = worksheet.col_slice(colx=0, start_rowx=11, end_rowx=75)
yvals = worksheet.col_slice(colx=1, start_rowx=11, end_rowx=75)

xvals = [int(i) for i in xvals ]
xvals = [int(i) for i in yvals ]

plt.plot(xvals, yvals)
plt.xlabel('xvals')
plt.ylabel('yvals')
plt.show()
...