Проблема с импортом матрицы в Python из Excel и, возможно, некоторые проблемы с утверждениями if elif

#python #excel #pandas #if-statement

Вопрос:

Я пытаюсь запустить этот код с некоторыми проблемами, которые нужно решить. Сначала я пытаюсь вставить «BOD» в качестве имени вывода и «6» в качестве количества входных параметров.

     import os
    import numpy as np
    import pandas as pd
    from pandas import ExcelWriter
    from numpy import *
    
    OutputName = input('please enter the name of the output (BOD,COD,TSS)');
    InputNum = input('please enter the number of input parameters (6 or 12) = ');
    file_name = 'biowin_withMalfunction.xlsx'
    
    if OutputName == 'BOD':
               Output_num=1
               if InputNum == 6:
                  Data = pd.read_excel(open(r'C:UsersElisatest_conv_Fatonebiowin_withMalfunction.xlsx', 'rb'), sheet_name='ANN full data for BOD_6Params')
                  print (Data)
               elif InputNum ==12:
                Data = pd.read_excel(open(r'C:UsersElisatest_conv_Fatonebiowin_withMalfunction.xlsx', 'rb'), sheet_name='ANN full data for BOD')
    elif OutputName == 'COD':
               Output_num=2
               if InputNum == 6:
                Data = pd.read_excel(open(r'C:UsersElisatest_conv_Fatonebiowin_withMalfunction.xlsx', 'rb'), sheet_name='ANN full data for COD_6ParamsD')
               elif InputNum ==12:
                Data = pd.read_excel(open(r'C:UsersElisatest_conv_Fatonebiowin_withMalfunction.xlsx', 'rb'), sheet_name='ANN full data for COD')
    else:
               Output_num=3
               if InputNum == 6:
                Data = pd.read_excel(open(r'C:UsersElisatest_conv_Fatonebiowin_withMalfunction.xlsx', 'rb'), sheet_name='ANN full data for TSS_6Params')
               elif InputNum ==12:
                Data = pd.read_excel(file_name, sheet_name="ANN full data for TSS")
    
    index = Output_num -3;
    X = Data[0:end-2,0:end]
 

ошибка в том, что:

     Traceback (most recent call last):
      File "C:UsersElisatest_convANN_Converted.py", line 42, in <module>
        X = Data[0:end-2,0:end]
    NameError: name 'Data' is not defined
 

Похоже, что переменные данные не создаются с помощью pd.reading, на самом деле, если я попытаюсь распечатать(данные), их не существует. Кто-нибудь может помочь мне найти проблему/проблемы?
Могу ли я поделиться входным файлом excel? Как?

Ответ №1:

Подумайте о своих условиях. Что произойдет, если каждый отдельный тест будет False ? Что произойдет, если все ваши тесты будут False ?

В вашем дереве решений есть путь, по которому файл не открывается. В настоящее время это получение, поэтому Data его не существует, как вы определили.

В этом случае проблема, скорее всего, заключается в том, что input() возвращается строка, в то время как вы тестируете целое число.

Таким образом, либо тест на строки:

 if inputNum == "5"
 

или приведите inputNum к int:

 inputNum = int(inputNum)
 

прежде чем вы проведете какое-либо тестирование.

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

1. да, именно так. Но если я вставлю BOD в качестве имени вывода, а затем 6 в качестве номера ввода, первые условия будут выполнены, поэтому они ВЕРНЫ. Код должен считывать данные excel и печатать данные. Разве не ригт? @2e0byo

2. см. Обновленный ответ

3. хорошо…. итак, как я могу это исправить должным образом?

4. проверьте строку («5» , а не 5) или приведите к int ( inputNum = int(inputNUm) ). И вообще привыкайте использовать type(thing) для проверки такого рода вещей-это может очень помочь