【发布时间】:2020-07-11 03:57:45
【问题描述】:
我有这些功能提示用户通过 GUI (Tkinter) 加载 csv 文件以执行基本统计和相关矩阵。输出保存在工作目录中。 我不想在代码中指定目录,但如果选择,用户将能够选择目录。我想修改此代码以更改静态目录并为用户提供一些灵活性来选择保存它的位置。请帮忙。 python新手
import tkinter as tk
from tkinter import filedialog
import pandas as pd
from pandas import DataFrame
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
import statsmodels.api as sm
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
root= tk.Tk()
canvas1 = tk.Canvas(root, width = 600, height = 500, relief = 'raised')
canvas1.pack()
label1 = tk.Label(root, text='EDA')
label1.config(font=('helvetica', 14))
canvas1.create_window(200, 25, window=label1)
label2 = tk.Label(root, text='Number of Clusters:')
label2.config(font=('helvetica', 8))
canvas1.create_window(200, 120, window=label2)
entry1 = tk.Entry (root)
canvas1.create_window(200, 140, window=entry1)
def getExcel():
global df
import_file_path = filedialog.askopenfilename()
date_cols = ['TimeStamp']
df = pd.read_csv (import_file_path, parse_dates = date_cols, index_col = 'TimeStamp')
browseButtonExcel = tk.Button(text=" Import Excel File (CSV) ", command=getExcel, bg='green', fg='white', font=('helvetica', 10, 'bold'))
canvas1.create_window(200, 70, window=browseButtonExcel)
def descriptiv(): #def descriptiv(self, df, path, filename):
stats = df.describe([.01,.1,.9,.99]).T
stats['variance'] = df.var()
stats['pct missing'] = df.isna().mean().round(4) * 100
#folder_path = filedialog.askdirectory() # I want to be able to use this to prompt the user to select a directory to save the file
return stats.to_csv('C:/Users/chall/Desktop/work/descriptive.csv') # I want to change this so user can decide where to save the output
def correl():
matri = df.corr(method = 'pearson').to_csv('C:/Users/chall/Desktop/work/correlation.csv') #same problem here.
return matri
processButton2 = tk.Button(text=' Descriptive Statistics', command= descriptiv, bg='brown', fg='white', font=('helvetica', 10, 'bold'))
canvas1.create_window(200, 200, window=processButton2)
processButton3 = tk.Button(text=' Correlation Matrix', command= correl, bg='brown', fg='white', font=('helvetica', 10, 'bold'))
canvas1.create_window(200, 230, window=processButton3)
root.mainloop()
【问题讨论】:
标签: python python-3.x tkinter tkinter-canvas tkinter-entry