読み込んだcsvファイル(データフレーム)のカラムを選択して
選択カラムに対する解析ができるように、Listboxを活用して作成したいなと考えています。
List boxカラムを選択 → Entryに挿入 → 挿入したカラムを配列として解析処理用def ana_doに渡す → 選択カラムを使い X ,yの配列を作成 → 解析処理
Entryから選択カラムを渡す所がうまくいきません。X ,yに選択したカラムで配列を組む方法ないでしょうか?
素人な質問で申し訳ありません。
python
1import sys 2import tkinter as tk 3import tkinter.filedialog as tkfile 4from tkinter import filedialog 5from tkinter import ttk 6from datetime import datetime 7import pandas as pd 8from sklearn.model_selection import train_test_split 9import os, tkinter, tkinter.filedialog, tkinter.messagebox 10 11 12class Application(tk.Frame): 13 def __init__(self, master): 14 super().__init__(master) 15 16 self.master = master 17 self.master.title('ana_ver2') 18 self.master.geometry("500x700") 19 self.master.configure(bg='azure') 20 self.create_widgets() #widget作る時に必要コード 21 22 23#--------------------widjet----------------------------------------------------------------------- 24 def create_widgets(self): 25 varS = tkinter.StringVar() 26 varT = tkinter.BooleanVar() 27 #------csv read-------------------------------------------------------------- 28 self.input_box = tkinter.Entry(width=40,fg='grey') #csvログインプット 29 self.input_box.place(x=10, y=50) 30 31 self.input_label = tkinter.Label(text="----csv read----",fg='grey',bg='snow') 32 self.input_label.place(x=10, y=20) 33 34 self.button = tkinter.Button(text="read",command=file_select) 35 self.button.place(x=400, y=52) 36 #------select X, y--------------------------------------------------------------------- 37 self.input_label = tkinter.Label(text="----select X , y----",fg='grey',bg='snow') 38 self.input_label.place(x=10, y=80) 39 40 self.input_box2 = tkinter.Entry(textvariable=varT,width=40) 41 self.input_box2.delete(0,tk.END) 42 self.input_box2.place(x=10, y=110) 43 44 self.listbox = tk.Listbox(selectmode="multiple") 45 self.listbox.configure(width=30,height=10) 46 self.listbox.place(x=10, y=200) 47 48 self.btn3 = tk.Button(text='X_select',command = lambda : btn_click3(self.input_box.get())) 49 self.btn3.place(x=400,y=106) 50 51 self.input_box3 = tkinter.Entry(textvariable=varT,width=40) 52 self.input_box3.delete(0,tk.END) 53 self.input_box3.place(x=10, y=140) 54 55 self.btn4 = tk.Button(text='y_select',command = lambda : btn_click4(self.input_box.get())) 56 self.btn4.place(x=400,y=146) 57 #------- time ---------------------------------------------------------------------------------------------------------------- 58 59 self.label4 = tk.Label(text=datetime.now().strftime("%Y/%m/%d %H:%M:%S"),fg="black",bg="snow",font=("meiryo",20,"bold")) 60 self.label4.place(x=40,y=600) 61 self.master.after(50,self.update) 62 63 #--------ana ---------------------------------------------------------------------------------------------------------------------------- 64 65 self.btn5 = tk.Button(text='----ana-----',command = lambda : ana_do(self.input_box.get(),self.input_box2.get(),self.input_box3.get())) 66 self.btn5.place(x=200,y=400) 67 68#---------------------------------------------------------------------------------------------------------- 69 70 71 72#------csv botton1 push------------------------------------------------------------------------ 73def file_select(): 74 idir = 'C:\python_test' #初期フォルダ 75 filetype = [("","*")] #拡張子の選択 76 file_path = tkinter.filedialog.askopenfilename(filetypes = filetype, initialdir = idir) 77 app.input_box.insert(tkinter.END, file_path) #結果を表示 78 79 df_a = pd.read_csv(file_path) 80 #カラムlistbox表示 81 col_name=df_a.columns.values 82 83 for item in col_name: 84 app.listbox.insert(tkinter.END, item) 85#------select botton3 , 4 push------------------------------------------------------------------------------------ 86 87def btn_click3(FP): 88 df_a = pd.read_csv(FP) 89 col_name=df_a.columns.values 90 91 if len(app.listbox.curselection()) == 0: 92 return 93 index = list(app.listbox.curselection())#タプルをかえす 94 95 app.input_box2.insert(tkinter.END, col_name[index]) 96 #テキストbox clear 97 app.listbox.select_clear(0,tk.END) 98 99def btn_click4(FP): 100 df_a = pd.read_csv(FP) 101 col_name=df_a.columns.values 102 103 if len(app.listbox.curselection()) == 0: 104 return 105 index = list(app.listbox.curselection())#タプルをかえす 106 107 app.input_box3.insert(tkinter.END, col_name[index]) 108 #テキストbox clear 109 app.listbox.select_clear(0,tk.END) 110 111#---ana botton5 push -------------------------------------------------------------- 112def ana_do(FP,X,y): 113 df_a = pd.read_csv(FP) 114 col_name=df_a.columns.values 115 116 X_a=df_a[X] 117 y_a=df_a[y] 118 119#この後解析処理 120 121#------------------------------------------------------------------------------ 122root = tk.Tk() 123app = Application(master=root) 124app.mainloop()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/09 08:51
2020/06/09 09:20 編集
2020/06/09 10:56