From 0e74a969b1e7a128eb875f3af774e845be683c28 Mon Sep 17 00:00:00 2001 From: lennlouis Date: Sat, 8 Jun 2024 03:00:08 +0800 Subject: [PATCH] first commit --- .DS_Store | Bin 0 -> 6148 bytes .gitignore | 2 + MainWindow.ui | 263 +++++++++++++++++++++++++++++++++++++++++++++ MainWindows.py | 43 ++++++++ Ui_MainWindow.py | 192 +++++++++++++++++++++++++++++++++ data.csv | 0 data_set_read.py | 16 +++ images.qrc | 5 + main.py | 10 ++ src/.DS_Store | Bin 0 -> 6148 bytes src/image/icon.jpg | Bin 0 -> 45191 bytes 11 files changed, 531 insertions(+) create mode 100644 .DS_Store create mode 100644 .gitignore create mode 100644 MainWindow.ui create mode 100644 MainWindows.py create mode 100644 Ui_MainWindow.py create mode 100644 data.csv create mode 100644 images.qrc create mode 100644 src/.DS_Store create mode 100644 src/image/icon.jpg diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5e82ce06e10881004c190703a29205bebf9f7596 GIT binary patch literal 6148 zcmeHK!A=4(5N!dq8)L#j6OK*1lE_BUgO?TY2VA2EHORUIH!fRbK@Nmu&-z0iJ^2ZK zi67v!9aMsNRAOe5>1(Gm-S)LW2D_6 zRspo0g6@nr85WTNy?1$*vL3q*hF|wDj?#Xm^2&4h!qW1JSP`q@(!Wtdzu)W+(ps~3 zu3INc#lfWB3{Ioguu)t;R7t-XC9R$bh{6`QT%1KosD?E)NW#>_`nE$j!f6ysqfym$ z%d+ZL$7MO%+pCo2&i3wj?1+uct^MQ1ZQM!JgQbweX*05hIDto~;A-Nw>tCzR*K>$H z9aXR6ITh`@x9+p^a_||~QQ;50-J5x%-ut~IR!JL1n#^u8D?(y`7$61~jRCx;#Ok6= zjOIfO5CebCfW99js74PlvuLgkC`<|fSOBvTsOwxp$4EpEF|!CgAl!xm+E9)u2Djm0 zm+0pqW)^KYQ5`mL3qSD;$7UuN+m1S;k!24DRYmq3kxUFr&;hnQIe3kdxP7#gS` I27Z-+ccH*z7ytkO literal 0 HcmV?d00001 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a047a94 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea/ +__pycache__/ \ No newline at end of file diff --git a/MainWindow.ui b/MainWindow.ui new file mode 100644 index 0000000..bec446f --- /dev/null +++ b/MainWindow.ui @@ -0,0 +1,263 @@ + + + MainWindow + + + + 0 + 0 + 800 + 600 + + + + MainWindow + + + + + + + + + + + + 打开数据 + + + + + + + 清除 + + + + + + + + + + + + + + 线性回归 + + + + + + + 聚类算法 + + + + + + + PushButton + + + + + + + PushButton + + + + + + + + + 1 + + + + + + + + + + + + Linear Regression + + + + + + + 0 + + + + + 数据清洗 + + + + + + + 数据归一化 + + + + + + + 开始预处理 + + + + + + + + + 24 + + + + + + + + + 原始数据 + + + + + + + + + + + + + + + + + 目标数据 + + + + + + + + + + + + + + + + + + + + + 开始拟合 + + + + + + + 保存数据 + + + + + + + 显示结果 + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 800 + 24 + + + + + 文件 + + + + + + + + 关于 + + + + + + + + + + + Open + + + + + Clear + + + + + About At + + + + + About + + + + + Exit + + + + + + + + diff --git a/MainWindows.py b/MainWindows.py new file mode 100644 index 0000000..333d062 --- /dev/null +++ b/MainWindows.py @@ -0,0 +1,43 @@ +import Ui_MainWindow +from PyQt5.QtCore import QFile, QFileInfo, pyqtSlot, pyqtSignal +from PyQt5 import QtGui, QtWidgets, QtCore +from PyQt5.QtWidgets import QPushButton +from PyQt5.QtGui import QIcon, QPixmap +from data_set_read import Data_Read + +class MainWindows: + def __init__(self) -> None: + self.MainWindow = QtWidgets.QMainWindow() + self.ui = Ui_MainWindow.Ui_MainWindow() + self.ui.setupUi(self.MainWindow) + self.window_ui_init() + self.file_object_init() + + def window_ui_init(self): + self.MainWindow.setWindowTitle("Data Analysis By Python") + self.MainWindow.setWindowIcon(QIcon(QPixmap(":/src/image/icon.jpg"))) + self.ui.progressBar_linear_regression.setValue(0) + + def file_object_init(self): + self.ui.pushButton_filepath.clicked.connect(self.pushButton_filepath_clicked) + self.ui.pushButton_filepath_clear.clicked.connect(self.pushButton_filepath_clear_clicked) + self.ui.pushButton_linear_regression.clicked.connect(lambda checked: self.ui.stackedWidget.setCurrentIndex(0)) + self.ui.pushButton_Kmeans.clicked.connect(lambda checked: self.ui.stackedWidget.setCurrentIndex(1)) + + def pushButton_filepath_clicked(self): + file_path = QtWidgets.QFileDialog.getOpenFileName(self.MainWindow, "Open File", ".", "All Files(*);;csv Files(*.csv);;Old Excel Files(*.xls);;New Excel Files(*.xlsx)") + print(file_path[0]) + info = QFileInfo(file_path[0]) + suffix = info.suffix() + if suffix == "csv": + #self.data_read = Data_Read(file_path[0], suffix) + self.ui.lineEdit_filepath.setText(file_path[0]) + elif suffix == "xls" or suffix == "xlsx": + #self.data_read = Data_Read(file_path[0], suffix) + self.ui.lineEdit_filepath.setText(file_path[0]) + # if file_path is not None: + # self.ui.lineEdit_filepath.setText(file_path) + + def pushButton_filepath_clear_clicked(self): + self.ui.lineEdit_filepath.clear() + \ No newline at end of file diff --git a/Ui_MainWindow.py b/Ui_MainWindow.py new file mode 100644 index 0000000..c917cff --- /dev/null +++ b/Ui_MainWindow.py @@ -0,0 +1,192 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file '/Users/lennlouis/lenn_ws/python_ws/pyqt_data_analysis/MainWindow.ui' +# +# Created by: PyQt5 UI code generator 5.15.9 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.resize(800, 600) + self.centralwidget = QtWidgets.QWidget(MainWindow) + self.centralwidget.setObjectName("centralwidget") + self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.centralwidget) + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.lineEdit_filepath = QtWidgets.QLineEdit(self.centralwidget) + self.lineEdit_filepath.setObjectName("lineEdit_filepath") + self.horizontalLayout.addWidget(self.lineEdit_filepath) + self.pushButton_filepath = QtWidgets.QPushButton(self.centralwidget) + self.pushButton_filepath.setObjectName("pushButton_filepath") + self.horizontalLayout.addWidget(self.pushButton_filepath) + self.pushButton_filepath_clear = QtWidgets.QPushButton(self.centralwidget) + self.pushButton_filepath_clear.setObjectName("pushButton_filepath_clear") + self.horizontalLayout.addWidget(self.pushButton_filepath_clear) + self.verticalLayout_2.addLayout(self.horizontalLayout) + self.widget = QtWidgets.QWidget(self.centralwidget) + self.widget.setObjectName("widget") + self.verticalLayout = QtWidgets.QVBoxLayout(self.widget) + self.verticalLayout.setObjectName("verticalLayout") + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.pushButton_linear_regression = QtWidgets.QPushButton(self.widget) + self.pushButton_linear_regression.setObjectName("pushButton_linear_regression") + self.horizontalLayout_2.addWidget(self.pushButton_linear_regression) + self.pushButton_Kmeans = QtWidgets.QPushButton(self.widget) + self.pushButton_Kmeans.setObjectName("pushButton_Kmeans") + self.horizontalLayout_2.addWidget(self.pushButton_Kmeans) + self.pushButton_4 = QtWidgets.QPushButton(self.widget) + self.pushButton_4.setObjectName("pushButton_4") + self.horizontalLayout_2.addWidget(self.pushButton_4) + self.pushButton_5 = QtWidgets.QPushButton(self.widget) + self.pushButton_5.setObjectName("pushButton_5") + self.horizontalLayout_2.addWidget(self.pushButton_5) + self.verticalLayout.addLayout(self.horizontalLayout_2) + self.stackedWidget = QtWidgets.QStackedWidget(self.widget) + self.stackedWidget.setObjectName("stackedWidget") + self.page = QtWidgets.QWidget() + self.page.setObjectName("page") + self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.page) + self.horizontalLayout_5.setObjectName("horizontalLayout_5") + self.tableWidget_linear_regression = QtWidgets.QTableWidget(self.page) + self.tableWidget_linear_regression.setObjectName("tableWidget_linear_regression") + self.tableWidget_linear_regression.setColumnCount(0) + self.tableWidget_linear_regression.setRowCount(0) + self.horizontalLayout_5.addWidget(self.tableWidget_linear_regression) + self.verticalLayout_3 = QtWidgets.QVBoxLayout() + self.verticalLayout_3.setObjectName("verticalLayout_3") + self.label = QtWidgets.QLabel(self.page) + self.label.setObjectName("label") + self.verticalLayout_3.addWidget(self.label) + self.horizontalLayout_3 = QtWidgets.QHBoxLayout() + self.horizontalLayout_3.setSpacing(0) + self.horizontalLayout_3.setObjectName("horizontalLayout_3") + self.checkBox_linear_regression_data_cleaning = QtWidgets.QCheckBox(self.page) + self.checkBox_linear_regression_data_cleaning.setObjectName("checkBox_linear_regression_data_cleaning") + self.horizontalLayout_3.addWidget(self.checkBox_linear_regression_data_cleaning) + self.checkBox_linear_regression_normalize = QtWidgets.QCheckBox(self.page) + self.checkBox_linear_regression_normalize.setObjectName("checkBox_linear_regression_normalize") + self.horizontalLayout_3.addWidget(self.checkBox_linear_regression_normalize) + self.pushButton_linear_regression_preview = QtWidgets.QPushButton(self.page) + self.pushButton_linear_regression_preview.setObjectName("pushButton_linear_regression_preview") + self.horizontalLayout_3.addWidget(self.pushButton_linear_regression_preview) + self.verticalLayout_3.addLayout(self.horizontalLayout_3) + self.progressBar_linear_regression = QtWidgets.QProgressBar(self.page) + self.progressBar_linear_regression.setProperty("value", 24) + self.progressBar_linear_regression.setObjectName("progressBar_linear_regression") + self.verticalLayout_3.addWidget(self.progressBar_linear_regression) + self.gridLayout = QtWidgets.QGridLayout() + self.gridLayout.setObjectName("gridLayout") + self.label_linear_regression_original = QtWidgets.QLabel(self.page) + self.label_linear_regression_original.setObjectName("label_linear_regression_original") + self.gridLayout.addWidget(self.label_linear_regression_original, 0, 0, 1, 1) + self.lineEdit = QtWidgets.QLineEdit(self.page) + self.lineEdit.setObjectName("lineEdit") + self.gridLayout.addWidget(self.lineEdit, 0, 1, 1, 1) + self.label_linear_regression_original_col = QtWidgets.QLabel(self.page) + self.label_linear_regression_original_col.setObjectName("label_linear_regression_original_col") + self.gridLayout.addWidget(self.label_linear_regression_original_col, 0, 2, 1, 1) + self.label_linear_regression_target = QtWidgets.QLabel(self.page) + self.label_linear_regression_target.setObjectName("label_linear_regression_target") + self.gridLayout.addWidget(self.label_linear_regression_target, 1, 0, 1, 1) + self.lineEdit_linear_regression_target = QtWidgets.QLineEdit(self.page) + self.lineEdit_linear_regression_target.setObjectName("lineEdit_linear_regression_target") + self.gridLayout.addWidget(self.lineEdit_linear_regression_target, 1, 1, 1, 1) + self.label_linear_regression_target_col = QtWidgets.QLabel(self.page) + self.label_linear_regression_target_col.setObjectName("label_linear_regression_target_col") + self.gridLayout.addWidget(self.label_linear_regression_target_col, 1, 2, 1, 1) + self.verticalLayout_3.addLayout(self.gridLayout) + self.horizontalLayout_4 = QtWidgets.QHBoxLayout() + self.horizontalLayout_4.setObjectName("horizontalLayout_4") + self.pushButton_linear_regression_begin = QtWidgets.QPushButton(self.page) + self.pushButton_linear_regression_begin.setObjectName("pushButton_linear_regression_begin") + self.horizontalLayout_4.addWidget(self.pushButton_linear_regression_begin) + self.pushButton_linear_regression_save = QtWidgets.QPushButton(self.page) + self.pushButton_linear_regression_save.setObjectName("pushButton_linear_regression_save") + self.horizontalLayout_4.addWidget(self.pushButton_linear_regression_save) + self.pushButton_linear_regression_show = QtWidgets.QPushButton(self.page) + self.pushButton_linear_regression_show.setObjectName("pushButton_linear_regression_show") + self.horizontalLayout_4.addWidget(self.pushButton_linear_regression_show) + self.verticalLayout_3.addLayout(self.horizontalLayout_4) + self.horizontalLayout_5.addLayout(self.verticalLayout_3) + self.stackedWidget.addWidget(self.page) + self.page_2 = QtWidgets.QWidget() + self.page_2.setObjectName("page_2") + self.stackedWidget.addWidget(self.page_2) + self.page_3 = QtWidgets.QWidget() + self.page_3.setObjectName("page_3") + self.stackedWidget.addWidget(self.page_3) + self.page_4 = QtWidgets.QWidget() + self.page_4.setObjectName("page_4") + self.stackedWidget.addWidget(self.page_4) + self.verticalLayout.addWidget(self.stackedWidget) + self.verticalLayout_2.addWidget(self.widget) + MainWindow.setCentralWidget(self.centralwidget) + self.menubar = QtWidgets.QMenuBar(MainWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 24)) + self.menubar.setObjectName("menubar") + self.menu_file = QtWidgets.QMenu(self.menubar) + self.menu_file.setObjectName("menu_file") + self.menu_about = QtWidgets.QMenu(self.menubar) + self.menu_about.setObjectName("menu_about") + MainWindow.setMenuBar(self.menubar) + self.statusbar = QtWidgets.QStatusBar(MainWindow) + self.statusbar.setObjectName("statusbar") + MainWindow.setStatusBar(self.statusbar) + self.actionOpen = QtWidgets.QAction(MainWindow) + self.actionOpen.setObjectName("actionOpen") + self.actionClear = QtWidgets.QAction(MainWindow) + self.actionClear.setObjectName("actionClear") + self.actionAbout_At = QtWidgets.QAction(MainWindow) + self.actionAbout_At.setObjectName("actionAbout_At") + self.actionAbout = QtWidgets.QAction(MainWindow) + self.actionAbout.setObjectName("actionAbout") + self.actionExit = QtWidgets.QAction(MainWindow) + self.actionExit.setObjectName("actionExit") + self.menu_file.addAction(self.actionOpen) + self.menu_file.addAction(self.actionClear) + self.menu_file.addAction(self.actionExit) + self.menu_about.addAction(self.actionAbout_At) + self.menu_about.addAction(self.actionAbout) + self.menubar.addAction(self.menu_file.menuAction()) + self.menubar.addAction(self.menu_about.menuAction()) + + self.retranslateUi(MainWindow) + self.stackedWidget.setCurrentIndex(1) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) + self.pushButton_filepath.setText(_translate("MainWindow", "打开数据")) + self.pushButton_filepath_clear.setText(_translate("MainWindow", "清除")) + self.pushButton_linear_regression.setText(_translate("MainWindow", "线性回归")) + self.pushButton_Kmeans.setText(_translate("MainWindow", "聚类算法")) + self.pushButton_4.setText(_translate("MainWindow", "PushButton")) + self.pushButton_5.setText(_translate("MainWindow", "PushButton")) + self.label.setText(_translate("MainWindow", "Linear Regression")) + self.checkBox_linear_regression_data_cleaning.setText(_translate("MainWindow", "数据清洗")) + self.checkBox_linear_regression_normalize.setText(_translate("MainWindow", "数据归一化")) + self.pushButton_linear_regression_preview.setText(_translate("MainWindow", "开始预处理")) + self.label_linear_regression_original.setText(_translate("MainWindow", "原始数据")) + self.label_linear_regression_original_col.setText(_translate("MainWindow", "列")) + self.label_linear_regression_target.setText(_translate("MainWindow", "目标数据")) + self.label_linear_regression_target_col.setText(_translate("MainWindow", "列")) + self.pushButton_linear_regression_begin.setText(_translate("MainWindow", "开始拟合")) + self.pushButton_linear_regression_save.setText(_translate("MainWindow", "保存数据")) + self.pushButton_linear_regression_show.setText(_translate("MainWindow", "显示结果")) + self.menu_file.setTitle(_translate("MainWindow", "文件")) + self.menu_about.setTitle(_translate("MainWindow", "关于")) + self.actionOpen.setText(_translate("MainWindow", "Open")) + self.actionClear.setText(_translate("MainWindow", "Clear")) + self.actionAbout_At.setText(_translate("MainWindow", "About At")) + self.actionAbout.setText(_translate("MainWindow", "About")) + self.actionExit.setText(_translate("MainWindow", "Exit")) diff --git a/data.csv b/data.csv new file mode 100644 index 0000000..e69de29 diff --git a/data_set_read.py b/data_set_read.py index e69de29..b3b664d 100644 --- a/data_set_read.py +++ b/data_set_read.py @@ -0,0 +1,16 @@ +import pandas as pd +import numpy as np + +class Data_Read: + def __init__(self, file_path, suffix) -> None: + self.file_path = file_path + if suffix == "csv": + self.data_frame = pd.read_csv(self.file_path) + elif suffix == "xls" or suffix == "xlsx": + self.data_frame = pd.read_excel(self.file_path) + + def get_head_data(self, n : int): + return self.data_frame.head(n) + + + \ No newline at end of file diff --git a/images.qrc b/images.qrc new file mode 100644 index 0000000..91d1c39 --- /dev/null +++ b/images.qrc @@ -0,0 +1,5 @@ + + + src/image/icon.jpg + + diff --git a/main.py b/main.py index e69de29..dcc7b42 100644 --- a/main.py +++ b/main.py @@ -0,0 +1,10 @@ +from MainWindows import MainWindows +from PyQt5.QtCore import QFile, QFileInfo +from PyQt5 import QtGui, QtWidgets, QtCore +import sys + +if __name__ == "__main__": + app = QtWidgets.QApplication(sys.argv) + mainwindows = MainWindows() + mainwindows.MainWindow.show() + sys.exit(app.exec_()) \ No newline at end of file diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..05f74b2802c103c712f9c2d867c8cf8fc898ec6a GIT binary patch literal 6148 zcmeHK%}T>S5Zf4q=IHq8 zAn_yNFT|qbZ!#d?U4ew8M?BIcv+wW8Poi)ztX5xXZY5t>EwUn8W0&rYNZp|~91WUY z|6KM?goym9?fIu+CvBHD4n;il!no5{31QHIkc+c04n*1%qc|9-Tvrb;i&^bbc|5M! zc7@mM+N8qA^?J3!_jdOu6N_zb?=+6vw^1(^51L2{U!0P4gHw0}V`fKD*LJT(FPRR{ zkM=~XWxiL|NVe{ut(Sw35y1};$<22w+`0WY5^)!1oj&o*qo9clAOpz2QW!Aj5nEfz z>bNK}fDHU)2ITp`K_xl{GmYx#fJT)7fO&8$0bAA*GKU*<3}zZ(1cd5TK%GiWi9vNb z__>L53}za2I-#ccpk`%iDio?#hxxe*C)Cl1Ei!-%%rmf}yCr%5AAMc_&nICI89)a9 z6$3Qia$8NrTRAoE> literal 0 HcmV?d00001 diff --git a/src/image/icon.jpg b/src/image/icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d70eb45054a5a381a613093e10b7f2737a9420a5 GIT binary patch literal 45191 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