Пример #1
0
    def executefilter(self):
        # Execute filter chosen(Column filtering)
        if self.data.empty:
            self.emptydataalert()
            return
        if self.slider.value() == None:
            error_dialog = QtWidgets.QErrorMessage()
            error_dialog.showMessage('Choose a Value to filter using the slider!')
        col = self.combobox3.currentText()
        model2 = None
        operator = self.combobox4.currentText()
        value = self.slider.value()
        if operator == "Bigger than":
            model2 = pandasModel(self.data[self.data[col] > value])
            self.data = self.data[self.data[col] > value]
        if operator == "Smaller than":
            model2 = pandasModel(self.data[self.data[col] < value])
            self.data = self.data[self.data[col] < value]
        if operator == "Equals to":
            model2 = pandasModel(self.data[self.data[col] == value])
            self.data = self.data[self.data[col] == value]
        if self.table != None:
            self.table.setModel(model2)
        try:
            if not math.isnan(self.data[self.combobox3.currentText()].max()):
                self.slider.setMaximum(int(self.data[self.combobox3.currentText()].max()))
                self.slider.setMinimum(int(self.data[self.combobox3.currentText()].min()))

        except:
            self.General_error(str(sys.exc_info()[0].__name__))  # shouldn't appear, this is a safety meas.
Пример #2
0
    def manipulate_table(self):
        # Execute filter chosen(Row manual filtering)
        if self.data.empty:
            self.emptydataalert()
            return
        rows = sorted(set(index.row() for index in
                          self.table.selectedIndexes()))
        if rows == []:
            model2 = pandasModel(self.data2)
            self.data = self.data2.copy()
        else:
            model2 = pandasModel(self.data.iloc[rows, :])
            self.data = self.data.iloc[rows, :]

        self.slider.setMaximum(int(self.data[self.combobox3.currentText()].max()))
        self.slider.setMinimum(int(self.data[self.combobox3.currentText()].min()))
        self.table.setModel(model2)
Пример #3
0
 def loaddata(self):
     self.fname = QFileDialog.getOpenFileName(self, 'Open file',
                                              'c:\\', "table (*.csv *.xls)")
     if self.fname != ("", ""):
         self.data = self.csv_opener(self.fname[0])
         self.data2 = self.data.copy()
     model2 = pandasModel(self.data)
     self.table.setModel(model2)
     self.comboboxdata()
Пример #4
0
 def groupby(self):
     # divide data into groups
     if self.data.empty:
         self.emptydataalert()
         return
     if self.combobox6.currentText() == "Mean lvl":
         self.data = self.data.groupby([self.combobox5.currentText()], as_index=False).mean()
     if self.combobox6.currentText() == "Maximum Value":
         self.data = self.data.groupby([self.combobox5.currentText()], as_index=False).max()
     if self.combobox6.currentText() == "Minimum Value":
         self.data = self.data.groupby([self.combobox5.currentText()], as_index=False).min()
     model2 = pandasModel(self.data)
     self.table.setModel(model2)
     self.comboboxdata()
Пример #5
0
 def Resetdata(self):
     # Reset to data2(the backup data)
     self.data = self.data2
     model2 = pandasModel(self.data)
     self.table.setModel(model2)
     self.comboboxdata()
Пример #6
0
    def setupUi(self, MainWindow):
        ###
        # Setting up the Window and Layout
        ###
        # creating a demo dataframe

        self.data = pd.DataFrame(np.random.randint(0,100,size=(100, 8)), columns=list('ABCDEFGH'))
        self.data2 = self.data.copy()

        # window setup
        MainWindow.setObjectName("Dashgraph")
        MainWindow.setWindowIcon(QtGui.QIcon("icon.png"))
        MainWindow.resize(1800, 900)
        model = pandasModel(self.data)
        view = QTableView()
        view.setModel(model)

        # setting up the central widget layer
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        # setting up the table and declaring all the widgets inside the central widget
        self.table = QtWidgets.QTableView(self.centralwidget)
        self.table.setModel(model)
        self.table.setObjectName("TABLE")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(220, 600, 360, 221))
        self.label.hide()
        self.label2 = QtWidgets.QLabel(self.centralwidget)
        self.label2.setObjectName("Xaxis")
        self.label3 = QtWidgets.QLabel(self.centralwidget)
        self.label3.setObjectName("Yaxis")
        self.label4 = QtWidgets.QLabel(self.centralwidget)
        self.label4.setObjectName("filter")
        self.label5 = QtWidgets.QLabel(self.centralwidget)
        self.label5.setObjectName("groupby")
        self.label6 = QtWidgets.QLabel(self.centralwidget)
        self.label6.setObjectName("slidervalue")
        self.label7 = QtWidgets.QLabel(self.centralwidget)
        self.label7.setObjectName("operator")
        self.label8 = QtWidgets.QLabel(self.centralwidget)
        self.label8.setObjectName("DataFiltering")
        self.label9 = QtWidgets.QLabel(self.centralwidget)
        self.label9.setObjectName("Plotting")
        self.label10 = QtWidgets.QLabel(self.centralwidget)
        self.label10.setObjectName("Descriptive Analysis")
        self.label11 = QtWidgets.QLabel(self.centralwidget)
        self.label11.setObjectName("Meas.Type")
        self.label12 = QtWidgets.QLabel(self.centralwidget)
        self.label12.setObjectName("Select col for boxplot")
        self.label13 = QtWidgets.QLabel(self.centralwidget)
        self.label13.setObjectName("scatter")
        self.combobox1 = QtWidgets.QComboBox(self.centralwidget)
        self.combobox2 = QtWidgets.QComboBox(self.centralwidget)
        self.combobox3 = QtWidgets.QComboBox(self.centralwidget)
        self.combobox4 = QtWidgets.QComboBox(self.centralwidget)
        self.combobox5 = QtWidgets.QComboBox(self.centralwidget)
        self.combobox6 = QtWidgets.QComboBox(self.centralwidget)
        self.combobox7 = CheckableComboBox()
        self.combobox8 = QtWidgets.QComboBox(self.centralwidget)
        self.combobox9 = QtWidgets.QComboBox(self.centralwidget)
        font3 = QtGui.QFont()
        font3.setPointSize(10)
        self.combobox1.setFont(font3)
        self.combobox2.setFont(font3)
        self.combobox3.setFont(font3)
        self.combobox4.setFont(font3)
        self.combobox5.setFont(font3)
        self.combobox6.setFont(font3)
        self.combobox7.setFont(font3)
        self.combobox8.setFont(font3)
        self.combobox9.setFont(font3)
        self.slider = QtWidgets.QSlider(orientation=0x1, parent=self.centralwidget)
        self.slider.setObjectName("filter slider")

        # inserting data to combobox's
        self.combobox4.addItem("Bigger than")
        self.combobox4.addItem("Smaller than")
        self.combobox4.addItem("Equals to")
        self.combobox6.addItem("Mean lvl")
        self.combobox6.addItem("Maximum Value")
        self.combobox6.addItem("Minimum Value")
        for i in self.data.columns:
            self.combobox1.addItem(i)
            self.combobox2.addItem(i)
            self.combobox5.addItem(i)
            if (np.issubdtype(self.data[i].dtype, np.number)):
                self.combobox3.addItem(i)
                self.combobox7.addItem(i)
                self.combobox8.addItem(i)
                self.combobox9.addItem(i)

        # inserting data to slider
        if (np.issubdtype(self.data[self.combobox3.currentText()].dtype, np.number)):
            self.slider.setMaximum(int(self.data[self.combobox3.currentText()].max()))
            self.slider.setMinimum(int(self.data[self.combobox3.currentText()].min()))

        # label font setup
        font = QtGui.QFont()
        font.setPointSize(36)
        font2 = QtGui.QFont()
        font2.setPointSize(12)
        font4 = QtGui.QFont("Times", 14, QtGui.QFont.Bold)
        self.label2.setFont(font2)
        self.label3.setFont(font2)
        self.label4.setFont(font2)
        self.label5.setFont(font2)
        self.label6.setFont(font2)
        self.label7.setFont(font2)
        self.label8.setFont(font4)
        self.label9.setFont(font4)
        self.label10.setFont(font4)
        self.label11.setFont(font2)
        self.label12.setFont(font2)
        self.label13.setFont(font2)
        self.label.setFont(font)
        self.label.setObjectName("label")

        # Menubar setup
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
        self.menubar.setObjectName("menubar")
        self.menuFile = QtWidgets.QMenu(self.menubar)
        self.menuFile.setObjectName("menuFile")
        self.menuExport_Data = QtWidgets.QMenu(self.menubar)
        self.menuExport_Data.setObjectName("menuExport_Data")
        self.menuEdit_View = QtWidgets.QMenu(self.menubar)
        self.menuEdit_View.setObjectName("menuEdit_View")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        # buttons setup
        self.Button1 = QtWidgets.QPushButton(self.centralwidget)
        self.Button1.setFixedHeight(60)
        self.Button1.setObjectName("Plot Graph")
        self.Button1.setFont(font2)
        self.Button2 = QtWidgets.QPushButton(self.centralwidget)
        self.Button2.setFont(font2)
        self.Button2.setObjectName("Manipulate rows")
        self.Button3 = QtWidgets.QPushButton(self.centralwidget)
        self.Button3.setObjectName("ExecuteFilter")
        self.Button4 = QtWidgets.QPushButton(self.centralwidget)
        self.Button4.setObjectName("Groupby")
        self.Button5 = QtWidgets.QPushButton(self.centralwidget)
        self.Button5.setObjectName("Plotbox")
        self.Button5.setFixedHeight(60)
        self.Button6 = QtWidgets.QPushButton(self.centralwidget)
        self.Button6.setObjectName("ResetData")
        self.Button7 = QtWidgets.QPushButton(self.centralwidget)
        self.Button7.setObjectName("Plotlinegraph")
        self.Button7.setFixedHeight(60)
        self.Button8 = QtWidgets.QPushButton(self.centralwidget)
        self.Button8.setObjectName("Plotscatter")
        self.Button8.setFixedHeight(60)

        # icons setup
        icon1 = QIcon("barplot")
        icon2 = QIcon("graphplot")
        icon3 = QIcon("filter")
        icon4 = QIcon("launch")
        icon5 = QIcon("groupby")
        icon6 = QIcon("reset")
        icon7 = QIcon("scatter")
        icon8 = QIcon("exit")
        icon9 = QIcon("load")
        icon10 = QIcon("daymode")
        icon11 = QIcon("darkmode")
        icon12 = QIcon("csv")
        icon13 = QIcon("xlsx")

        self.Button1.setIcon(icon1)
        self.Button7.setIcon(icon2)
        self.Button2.setIcon(icon3)
        self.Button3.setIcon(icon3)
        self.Button5.setIcon(icon4)
        self.Button4.setIcon(icon5)
        self.Button6.setIcon(icon6)
        self.Button8.setIcon(icon7)

        size = QSize(40, 40)
        size2 = QSize(30, 30)
        self.Button1.setIconSize(size)
        self.Button7.setIconSize(size)
        self.Button2.setIconSize(size2)
        self.Button3.setIconSize(size2)
        self.Button5.setIconSize(size)
        self.Button4.setIconSize(size2)
        self.Button6.setIconSize(size2)
        self.Button8.setIconSize(size)

        self.Button5.setFont(font2)
        self.Button3.setFont(font2)
        self.Button4.setFont(font2)
        self.Button6.setFont(font2)
        self.Button7.setFont(font2)
        self.Button8.setFont(font2)

        # grid setup
        layout = QGridLayout()
        self.label6.setAlignment(Qt.AlignCenter)
        layout.addWidget(self.table, 0, 0, 19, 1)
        layout.addWidget(self.label8, 0, 1, 1, 1)
        layout.addWidget(self.label4, 1, 1)
        layout.addWidget(self.combobox3, 1, 2)
        layout.addWidget(self.label7, 2, 1)
        layout.addWidget(self.combobox4, 2, 2)
        layout.addWidget(self.slider, 4, 1, 1, 2)
        layout.addWidget(self.label6, 5, 1, 1, 2)
        layout.addWidget(self.Button3, 6, 1, 1, 1)
        layout.addWidget(self.label10, 7, 1)
        layout.addWidget(self.label5, 8, 1)
        layout.addWidget(self.combobox5, 8, 2)
        layout.addWidget(self.label11, 9, 1)
        layout.addWidget(self.combobox6, 9, 2)
        layout.addWidget(self.Button4, 10, 1)
        layout.addWidget(self.Button6, 10, 2)
        layout.addWidget(self.label9, 11, 1)
        layout.addWidget(self.label2, 12, 1)
        layout.addWidget(self.label3, 12, 2)
        layout.addWidget(self.combobox1, 13, 1)
        layout.addWidget(self.combobox2, 13, 2)
        layout.addWidget(self.Button1, 14, 1, 1, 1)
        layout.addWidget(self.Button7, 14, 2, 1, 1)
        layout.addWidget(self.Button2, 5, 2, 3, 1)
        layout.addWidget(self.Button5, 18, 1, 1, 1)
        layout.addWidget(self.label12, 15, 1, 1, 1)
        layout.addWidget(self.label13, 15, 2, 1, 1)
        layout.addWidget(self.combobox7, 16, 1, 2, 1)
        layout.addWidget(self.Button8, 18, 2, 1, 1)
        layout.addWidget(self.combobox8, 16, 2, 1, 1)
        layout.addWidget(self.combobox9, 17, 2, 1, 1)
        # Set the layout on the application's window
        self.centralwidget.setLayout(layout)

        # set actions
        self.actionExit = QtWidgets.QAction(MainWindow)
        self.actionExit.setObjectName("actionExit")
        self.actionExport_Data = QtWidgets.QAction(MainWindow)
        self.actionExport_Data.setObjectName("actionExport_Data")
        self.actionLoad = QtWidgets.QAction(MainWindow)
        self.actionLoad.setObjectName("actionLoad")
        self.actionRefresh_Data = QtWidgets.QAction(MainWindow)
        self.actionRefresh_Data.setObjectName("actionRefresh_Data")
        self.actionDark = QtWidgets.QAction(MainWindow)
        self.actionDark.setObjectName("actionDark")
        self.actionDay = QtWidgets.QAction(MainWindow)
        self.actionDay.setObjectName("actionDay")
        self.actionExportToCSV = QtWidgets.QAction(MainWindow)
        self.actionExportToCSV.setObjectName("actionExportToCSV")
        self.actionExportToXLSX = QtWidgets.QAction(MainWindow)
        self.actionExportToXLSX.setObjectName("actionExportToXLSX")
        self.menuFile.addAction(self.actionLoad)
        self.menuFile.addAction(self.actionRefresh_Data)
        self.menuFile.addAction(self.actionExit)
        self.menuEdit_View.addAction(self.actionDay)
        self.menuEdit_View.addAction(self.actionDark)
        self.menuExport_Data.addAction(self.actionExportToCSV)
        self.menuExport_Data.addAction(self.actionExportToXLSX)
        self.menubar.addAction(self.menuFile.menuAction())
        self.menubar.addAction(self.menuExport_Data.menuAction())
        self.menubar.addAction(self.menuEdit_View.menuAction())

        # menu icon setup
        self.actionRefresh_Data.setIcon(icon6)
        self.actionExit.setIcon(icon8)
        self.actionLoad.setIcon(icon9)
        self.actionDay.setIcon(icon10)
        self.actionDark.setIcon(icon11)
        self.actionExportToCSV.setIcon(icon12)
        self.actionExportToXLSX.setIcon(icon13)

        # words to present
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

        # actions and functions calling
        self.actionLoad.triggered.connect(lambda: self.loaddata())
        self.actionExit.triggered.connect(lambda: self.exit())
        self.actionDay.triggered.connect(lambda: self.daymode())
        self.actionDark.triggered.connect(lambda: self.darkmode())
        self.actionRefresh_Data.triggered.connect(lambda: self.Resetdata())
        self.actionExportToCSV.triggered.connect(lambda: self.savefile())
        self.actionExportToXLSX.triggered.connect(lambda: self.savefile2())
        self.Button2.clicked.connect(lambda: self.manipulate_table())
        self.Button1.clicked.connect(lambda: self.show_bar_graph())
        self.Button3.clicked.connect(lambda: self.executefilter())
        self.Button4.clicked.connect(lambda: self.groupby())
        self.Button5.clicked.connect(lambda: self.show_boxplot())
        self.Button6.clicked.connect(lambda: self.Resetdata())
        self.Button7.clicked.connect(lambda: self.show_line_graph())
        self.Button8.clicked.connect(lambda: self.show_scatter())
        self.slider.valueChanged.connect(lambda: self.label6.setText("Value = " + str(self.slider.value())))
        self.combobox3.currentTextChanged.connect(self.on_combobox_changed)