Python 3.x 如何在python中使用浏览器按钮从多个csv文件文件夹中选择特定csv文件并绘制图形

Python 3.x 如何在python中使用浏览器按钮从多个csv文件文件夹中选择特定csv文件并绘制图形,python-3.x,pandas,csv,matplotlib,tkinter,Python 3.x,Pandas,Csv,Matplotlib,Tkinter,如何从包含“n”个csv文件的文件夹中选择特定的csv文件,并且所有csv文件都是相同类型的,有3列,但值不同。因此,我的目标是通过单击浏览器按钮选择单个csv文件,然后用我所做的选择绘制图形 Sample csv file points z,x,y 23,0,0 23,0.05387,6.66634 23,0.11799,13.787 23,0.19989,22.9338 23,0.3072,35.0772 23,0.56904,63.648 23,0.84889,91.5284 23,1.2

如何从包含“n”个csv文件的文件夹中选择特定的csv文件,并且所有csv文件都是相同类型的,有3列,但值不同。因此,我的目标是通过单击浏览器按钮选择单个csv文件,然后用我所做的选择绘制图形

Sample csv file points
z,x,y
23,0,0
23,0.05387,6.66634
23,0.11799,13.787
23,0.19989,22.9338
23,0.3072,35.0772
23,0.56904,63.648
23,0.84889,91.5284
23,1.22228,123.65
23,1.72457,156.606
23,1.95494,167.717
23,2.25261,178.844
23,2.59162,186.982
23,2.91377,190.805
23,3.23132,190.89
120,0,0
120,0.08749,5.44471
120,0.16471,9.48296
120,0.31905,16.8751
120,0.82326,37.8111
120,1.45144,56.0784
120,2.24965,72.0364
120,3.01642,82.2629
120,3.82591,89.1323
120,4.91071,94.4476
120,6.15553,97.6881
120,7.45795,99.0951
120,8.31468,98.7398
160,0,0
160,0.1142,5.59709
160,0.24587,10.7453
160,0.77917,27.9152
160,1.50412,42.5702
160,2.4017,53.905
160,3.49796,62.7076
160,4.77411,69.3479
160,6.24681,74.2705
160,7.93673,77.5658
160,9.78794,79.1005
160,10.1071,78.9901
我已经写了一段代码,但是我的代码总是需要更改“文件名”

在“filename.csv”中,然后需要根据文件名从浏览器中进行选择。我想在不更改文件名的情况下简化任何csv文件的选择

from tkinter import * 
import csv
import os
import tkinter as tk
import sys
from tkinter import filedialog
import pandas as pd
import matplotlib.pyplot as plt
import math
#from sympy import *
from tkinter import ttk


class Application(Frame):
    def __init__(self, master = None):
        Frame.__init__(self,master)
        self.grid()
        self.createWidgets()

    def createWidgets(self):
        top = self.winfo_toplevel()
        self.menuBar = Menu(top)
        top["menu"] = self.menuBar
        self.subMenu = Menu(self.menuBar)
        self.menuBar.add_cascade(label = "File", menu = self.subMenu)
        self.subMenu.add_command( label = "Read Data",command = self.readCSV)


    def readCSV(self):
        x=[]
        y=[]
        z=[]
        self.filename = filedialog.askopenfilename()
        df=pd.read_csv('GF30.csv', error_bad_lines=False)
        read = csv.reader(df, delimiter = ",")
        fig = plt.figure()
        data_list = []
        ax= fig.add_subplot(111)
        buttons = next(read)
        df.set_index('x', inplace=True)
        df.groupby('z')['y'].plot(legend=True,ax=ax)
        leg = ax.legend(bbox_to_anchor = [1.1, 0.7], fancybox=True, shadow=True)
        leg.get_frame().set_alpha(0.4)
        plt.show()
        print
        for btn in buttons:
            new_btn = Button(self, text="btn", command = self.btnClick)
            new_btn.pack()
            self.root.mainloop()
    def btnClick(self):
        root.destroy()

我不明白这个问题。您可以将文件名放入
read\u csv
调用:
df=pd.read\u csv(self.filename,error\u bad\u lines=False)
。我也不理解这个问题。问题解决了。我定义的语法错误。我不理解这个问题。您可以将文件名放入
read\u csv
调用:
df=pd.read\u csv(self.filename,error\u bad\u lines=False)
。我也不理解这个问题。问题解决了,我定义的语法错误。