Хочу сделать так, чтобы можно было:
1) загружать таблицу исходных данных def OpenFile, затем показывать def dataHead эту таблицу в окне приложения. (это мне удалось сделать)
2) конвертировать загруженную таблицу def prediction, затем показывать во втором окне приложения def dataHead2
Тут и возникли вопросы, т.к. файл из def OpenFile программы не видит, и соответсвенно мне нечего передать в def dataHead2
3) (пока еще не брался) в третьем окне построить гарфик по таблице, полученной из def prediction
Очень прошу подсказть, как передавать файл в последующие функции, чтобы все работало.
Заранее большое спасибо за ответ.
Вот код:
import os
import sys
import catboost
import plotly.graph_objs as go
import matplotlib.pyplot as plt
from catboost import CatBoostRegressor, CatBoostClassifier, Pool, EFstrType
from os.path import dirname, realpath, join
from PyQt5.QtWidgets import QApplication, QWidget, QFileDialog, QTableWidget, QTableWidgetItem
from PyQt5.uic import loadUiType
import pandas as pd
import numpy as np
from PyQt5 import QtCore, QtGui
from PyQt5.QtCore import Qt
#scriptDir = dirname(realpath("D:\python\Storage Area Network\Data-Analyze-in-gui-Pyqt5-python-main\Data-Analyze-in-gui-Pyqt5-python-main\bestsellers with categories.csv"))
#From_Main, _ = loadUiType(join(dirname("D:\python\Storage Area Network\Data-Analyze-in-gui-Pyqt5-python-main\Data-Analyze-in-gui-Pyqt5-python-main\Main.ui"), "Main.ui"))
From_Main, _ = loadUiType(join(dirname("D:\python\Storage Area Network\Data-Analyze-in-gui-Pyqt5-python-main\Data-Analyze-in-gui-Pyqt5-python-main\Main_modified.ui"
), "Main_modified.ui"))
class MainWindow(QWidget, CatBoostRegressor, From_Main):
def __init__(self):
super(MainWindow, self).__init__()
CatBoostRegressor.__init__(self)
QWidget.__init__(self)
self.setupUi(self)
self.ButtonOpen.clicked.connect(self.OpenFile)
self.BtnDescribe.clicked.connect(self.dataHead)
self.pushButton_2.clicked.connect(self.prediction)
self.pushButton.clicked.connect(self.dataHead2)
def OpenFile(self):
try:
path = QFileDialog.getOpenFileName(self, 'Open CSV', os.getenv('HOME'), 'CSV(*.csv)')[0]
self.all_data = pd.read_csv(path)
except:
print(path)
def dataHead(self):
numColomn = self.spinBox.value()
if numColomn == 0:
NumRows = len(self.all_data.index)
else:
NumRows = numColomn
self.tableWidget.setColumnCount(len(self.all_data.columns))
self.tableWidget.setRowCount(NumRows)
self.tableWidget.setHorizontalHeaderLabels(self.all_data.columns)
for i in range(NumRows):
for j in range(len(self.all_data.columns)):
self.tableWidget.setItem(i, j, QTableWidgetItem(str(self.all_data.iat[i, j])))
self.tableWidget.resizeColumnsToContents()
self.tableWidget.resizeRowsToContents()
def prediction(self):
bestmodel = CatBoostRegressor()
bestmodel.load_model('D:\python\Storage Area Network\model_catboost_regressor_prod')
dataset = self.path #pd.read_csv("D:\python\Storage Area Network\dataset_for_programm.csv")
dataset_param = dataset.drop(columns=['value'])
value_pd = dataset.loc[:, dataset.columns.intersection(['value'])]
value = value_pd.to_numpy()
diff_pred = bestmodel.predict(dataset_param)
value_pred = value[1] + 12 * diff_pred
value_pred_pd = pd.DataFrame(value_pred)
value_pred_pd.set_axis(['Pred'], axis='columns', inplace=True)
value_pred_pd.loc[:, "True"] = value_pd
dataframe = pd.DataFrame(value_pred_pd)
#dataframe.to_csv("D:\python\Storage Area Network\csv_export.csv", index=False)
self.all_data2 = pd.read_csv(dataframe)
def dataHead2(self):
numColomn = self.spinBox_2.value()
if numColomn == 0:
NumRows = len(self.all_data2.index)
else:
NumRows = numColomn
self.tableWidget.setColumnCount(len(self.all_data2.columns))
self.tableWidget.setRowCount(NumRows)
self.tableWidget.setHorizontalHeaderLabels(self.all_data2.columns)
for i in range(NumRows):
for j in range(len(self.all_data2.columns)):
self.tableWidget_2.setItem(i, j, QTableWidgetItem(str(self.all_data2.iat[i, j])))
self.tableWidget_2.resizeColumnsToContents()
self.tableWidget_2.resizeRowsToContents()
app = QApplication(sys.argv)
sheet = MainWindow()
sheet.show()
sys.exit(app.exec_())