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

时间:2017-11-29 15:05:13

标签: 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.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'

image of csv files in a folder samples

在'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()

0 个答案:

没有答案