Не удается определить фрейм данных после импорта csv с помощью tkinter - PullRequest
0 голосов
/ 14 июля 2020

Я новый пользователь Tkinter.

У меня есть кнопки для (импорта CSV и прогнозов). Мне нужен CSV-файл, который я только что импортировал, для обработки (прогнозирования) с помощью кнопки прогнозирования. Это мой код:

  import tkinter as tk
    import tkinter.ttk as ttk
    from tkinter import filedialog
    import pandas as pd
    import numpy as np
    from statsmodels.tsa.arima_model import ARIMA
    from sklearn.metrics import mean_squared_error
    
class NewprojectApp:
    def __init__(self, master=None):
        # build ui
        main_window = ttk.Frame(master)
        label_1 = ttk.Label(main_window)
        label_1.config(font='{sans } 12 {bold}', justify='center', padding='100', text='PREDIKSI IHSG BBCA.JK')
        label_1.pack(side='top')
        button_1 = ttk.Button(main_window)
        button_1.config(text='Import CSV', command = self.getCSV)
        button_1.place(anchor='nw', relx='0.14', rely='0.66', x='0', y='0')
        button_2 = ttk.Button(main_window)
        button_2.config(text='Prediksi', command = self.prediksi)
        button_2.place(anchor='nw', relwidth='0.31', relx='0.55', rely='0.66', x='0', y='0')
        main_window.config(height='200', width='200')
        main_window.pack(side='top')

        # Main widget
        self.mainwindow = main_window
        

    def run(self):
        self.mainwindow.mainloop()
        
    def getCSV(self):
        global df
        
        import_file_path = filedialog.askopenfilename()
        df = pd.read_csv(import_file_path, usecols=['Date','Open'])
        df.timestamp = pd.to_datetime(df.Date , format = '%Y-%m-%d')
        df.index = df.timestamp
        df.drop('Date',axis = 1, inplace = True)
        df.fillna(df.mean(),inplace=True)
        df_transform = np.log(df)
        
        
    def prediksi(self):
        split_point = round(len(df_transform)* 90/100)
        data_train, data_validation = df_transform[0:split_point], df_transform[split_point:]
        history = [x for x in data_train['Open']]
        predictions = list()
        for t in range(len(data_validation)):
            model = ARIMA(history, order=(1,1,1))
            model_fit = model.fit(trend='c', disp=0)
            output = model_fit.forecast()
            yhat = output[0]
            predictions.append(yhat)
            obs = data_validation['Open'][t]
            history.append(obs)
            print('predicted=%.4f, expected=%.4f' % (np.exp(yhat), np.exp(obs)))
        error = mean_squared_error(np.exp(data_validation['Open']),np.exp(predictions))
        print('Test MSE: %.3f' % error)
    
        
    

if __name__ == '__main__':
    root = tk.Tk()
    app = NewprojectApp(root)
    app.run()

ERROR Я получаю сообщение о том, что мои данные не определены. Предоставьте некоторую информацию об этом. Выше полный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...