Ошибка значения: x и y должны иметь одинаковое первое измерение, но иметь формы (13500,) и (13476,), несмотря на работу с другим набором данных?

#python #excel #matplotlib #xlrd

Вопрос:

Я пытался построить набор данных excel, однако один набор данных способен строить, а со вторым я получаю сообщение об ошибке.

Мой код:

 from matplotlib import pyplot as plt
from xlrd import open_workbook

x_time = list()
y_absorbance = list()

book = open_workbook("SP1.xls")
sheet = book.sheet_by_index(0)                  #data is on sheet 1

column1 = sheet.col_values(0)
column2 = sheet.col_values(1)

for x in column1:
    try:
        num = float(x)
        time = num/1000000
        x_time.append(time)
    except:
        continue

for y in column2:
    try:
        num = float(y)
        absorbance = num/1000000
        y_absorbance.append(absorbance)
    except:
        continue

plt.plot(x_time, y_absorbance)

plt.title("Final Analysis native R5 Main Pool", fontname="Times New Roman",fontweight="bold", size=20)
plt.xlabel("run time [min]", fontname="Times New Roman")
plt.ylabel("Absorbance [mAU]", fontname="Times New Roman")
plt.legend(("UV-VIS 214 nm",), loc="upper right")

plt.show()
 

Сообщение об ошибке:

 Traceback (most recent call last):
  File "/Users/nico/PycharmProjects/Exercise/HPLC_plot.py", line 29, in <module>
plt.plot(x_time, y_absorbance)
  File "/Users/nico/PycharmProjects/venv/lib/python3.9/site-packages/matplotlib/pyplot.py", line 2840, in plot
return gca().plot(
  File "/Users/nico/PycharmProjects/venv/lib/python3.9/site-packages/matplotlib/axes/_axes.py", line 1743, in plot
lines = [*self._get_lines(*args, data=data, **kwargs)]
  File "/Users/nico/PycharmProjects/venv/lib/python3.9/site-packages/matplotlib/axes/_base.py", line 273, in __call__
yield from self._plot_args(this, kwargs)
  File "/Users/nico/PycharmProjects/venv/lib/python3.9/site-packages/matplotlib/axes/_base.py", line 399, in _plot_args
raise ValueError(f"x and y must have same first dimension, but "
ValueError: x and y must have same first dimension, but have shapes (13500,) and (13476,)
 

Данные представляют собой лист Excel и выглядят следующим образом:

https://i.stack.imgur.com/npJDy.png

Другой сюжет выглядит так

так вот как должен выглядеть сюжет.

Я не знаю, что я делаю неправильно, так как с первым набором данных это работает, а второй набор данных взят из того же программного обеспечения HPLC, только с другого запуска.

Любые предложения принимаются заранее! 🙂

Комментарии:

1. Использование модуля matplotlib и xlrd

2. Вы должны объединить оба цикла try-except в один.

3. Ооочень большое спасибо!! работает с itertools и объединяет эти два цикла for в один, который дает только одну попытку-кроме блока !!

4. Просто for x, y in zip(column1, column2):