Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python tkinter中同时读取csv?_Python_Pandas_Csv_Dataframe_Tkinter - Fatal编程技术网

如何在Python tkinter中同时读取csv?

如何在Python tkinter中同时读取csv?,python,pandas,csv,dataframe,tkinter,Python,Pandas,Csv,Dataframe,Tkinter,我有一些问题要问你。 我的第一个问题是,我使用import_csv_data函数读取csv文件,但在读取数据之前,虽然我定义了“全局df”,但它表示df未定义。如果我创建一个类似df=pd.DataFrame(Columns=[“X”,“Y”])的df,那么这次的选项菜单显示X和Y。如果我想显示数据帧的列,我需要删除df=pd.DataFrame(Columns=[“X”,“Y”]),然后我需要再次运行代码。和这个问题相关的一个问题是,当我阅读csv文件时,为了查看最后一个df,我需要关闭窗口。

我有一些问题要问你。 我的第一个问题是,我使用import_csv_data函数读取csv文件,但在读取数据之前,虽然我定义了“全局df”,但它表示df未定义。如果我创建一个类似df=pd.DataFrame(Columns=[“X”,“Y”])的df,那么这次的选项菜单显示X和Y。如果我想显示数据帧的列,我需要删除df=pd.DataFrame(Columns=[“X”,“Y”]),然后我需要再次运行代码。和这个问题相关的一个问题是,当我阅读csv文件时,为了查看最后一个df,我需要关闭窗口。所以我想读取csv文件,我想让程序同时记忆。 第二个问题是,当我更改OptionMenu上的SelectedValue时,我想获得SelectedValue-selected列名-并在tk.按钮上显示(Drop column+SelectedValue)<简言之,我想在OptionMenu上获得列名,同时在按钮上显示名称。第三个问题是我不能将按钮、文本或标签安装到框架中。这限制了我,我添加了一张描述这个问题的照片。[这是图片url.>] 多谢各位

def _quit():
    root.quit()     # stops mainloop
    root.destroy()  # this is necessary on Windows to prevent
                    # Fatal Python Error: PyEval_RestoreThread: NULL tstate
def option_changed(*args):
    global SelectedValue
    SelectedValue = selection.get()
    print(SelectedValue)

def hello():
    print("hello!")

def import_csv_data():
    global v
    global df 
    global a
    csv_file_path = askopenfilename()
    print(csv_file_path)
    v.set(csv_file_path)
    df = pd.read_csv(csv_file_path)
    a = csv_file_path

def removenans():
    print("Merhaba")
    print(df.head())
    df = pd.read_csv(csv_file_path)

def plotthefigure():
    df.dropna(inplace=True,axis=0)
    df.Sex = [1 if i=="female" else 0 for i in df.Sex]
    plt.figure(figsize=[6,5])
    plt.plot(range(len(df["Sex"])),df["Sex"])
    plt.title("Age vs Sex")
    # Plot window name
    plt.gcf().canvas.set_window_title("Plot Frame")

#Switching Frames
def raise_frame(frame):
    frame.tkraise()


# Opening new window
def aboutmenudef():
    window = tk.Toplevel(root)

def printdf():
    tk.Label(MainFrame,textvariable=df.head()).grid(row=6, 
            columnspan=7, 
        sticky='WE',padx=5, pady=5, ipadx=5, ipady=5)

root = tk.Tk()
root.wm_title("Machine Learning Implementer")

# FRAMES # 
#
MainFrame = Frame(root)
AboutFrame = Frame(root)
HelpFrame = Frame(root)
#
for frame in (MainFrame,AboutFrame,HelpFrame):
    frame.grid(row=0, column=0, sticky=NSEW)


v = tk.StringVar()

entry = tk.Entry(MainFrame,
                 textvariable=v).grid(row=0,
                               column=1,
                               ipadx=100)

head = tk.StringVar()
tk.Label(MainFrame,textvariable=head).grid(row=3, columnspan=2, 
        sticky='WE',padx=5, pady=5, ipadx=5, ipady=5)


tk.Label(AboutFrame,
         text="About Us").grid(row=0,column=0)

tk.Label(MainFrame,text="File Path").grid(row=0,
        column=0)

mainlabel = Label(MainFrame,text="DF Columns").grid(row=5,
     column=0)

###---------------------- BUTTON ----------------------###

tk.Button(MainFrame,
          text="          Read CSV        ",
          command=removenans).grid(row=1,
                       column=0)

tk.Button(MainFrame,
          text="  Drop Column\n  "+SelectedValue,
          command=removenans).grid(row=2,
                       column=0)

tk.Button(MainFrame,
          text="Remove NaN Values",
          command=removenans).grid(row=3,
                       column=0)

tk.Button(MainFrame,
          text="   Print Head of DF   ",
          command=printdf).grid(row=4,
                         column=0)
tk.Button(MainFrame,
          text="   Scale Parameters   ",
          command=printdf).grid(row=10,
                         column=0)
tk.Button(MainFrame,
          text="Plot the Graph",
          command=plotthefigure).grid(row=0,
                           column=2)

###---------------------- CHECKBOX ----------------------###

var = IntVar()
c = Checkbutton(root,text="Independent",variable = var)
c.grid(row=3, column=3)
c.config(state=DISABLED)

###---------------------- MENU & TOOLBARS ----------------------###

menubar = Menu(root)

# FILE MENU #

filemenu = Menu(menubar,tearoff=0)
filemenu.add_command(label="Open CSV File",
                     command=import_csv_data)
#filemenu.add_command(label="Save",
#                     command=hello)
filemenu.add_separator()
filemenu.add_command(label="Exit",
                     command=_quit)
menubar.add_cascade(label="   File   ",
                    menu=filemenu)

# MENU PLOT SECTION #

plotmenu = Menu(menubar,tearoff=0)
plotmenu.add_command(label="Open Plot",
                     command=hello)
#plotmenu.add_separator() 
plotmenu.add_command(label="Close Program",
                     command=_quit)
menubar.add_cascade(label="   Plot   ",
                    menu=plotmenu)

# HELP #

helpmenu = Menu(menubar,tearoff=0)
helpmenu.add_command(label="Help Index",
                     command=hello)
menubar.add_cascade(label="   Help   ",
                     menu=helpmenu)

# ABOUT #

aboutmenu = Menu(menubar,tearoff=0)
aboutmenu.add_command(label="About",
                      command=lambda:raise_frame(AboutFrame))
menubar.add_cascade(label="   About   ",
                    menu=aboutmenu)
root.config(menu=menubar)

# OPTION MENU # 

selection = StringVar(MainFrame)
selection.set("-") # default value
selection.trace("w", option_changed)

w = OptionMenu(MainFrame, selection, *df.columns).grid(row=2,
              column=1)

#

root.geometry("800x550")

raise_frame(MainFrame)
root.mainloop()

对于第一个问题,我创建了一个名为Read Csv的新按钮,因此在浏览Csv数据后,我用一个按钮读取它。对于第二个问题,我不能这样做。但我发现了一些关于label with label.config的信息,然后您可以使用def函数更改值,例如,您可以使用按钮连接该函数。对于最后一个问题,我想是关于root.geometry()的,我已经将其更改为root.geometry(“1200x800”),并且我已经在root=Tk()下面的顶部一节中定义了它。。。。如果您对tkinter有任何疑问,可以询问。

对于第一个问题,我创建了一个名为Read Csv的新按钮,因此在浏览Csv数据后,我会使用一个按钮来阅读它。对于第二个问题,我不能这样做。但我发现了一些关于label with label.config的信息,然后您可以使用def函数更改值,例如,您可以使用按钮连接该函数。对于最后一个问题,我想是关于root.geometry()的,我已经将其更改为root.geometry(“1200x800”),并且我已经在root=Tk()下面的顶部一节中定义了它。。。。如果您对tkinter有任何问题,可以询问