用Pyqt5展示dataframe

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:
在大数据处理时,我们往往需要将pandas的dataframe用pyqt展示出来,这里提供一个简单的参考类,来帮助大家。


提示:以下是本篇文章正文内容,下面案例可供参考

一、具体思路

获取dataframe的行和列,然后遍历dataframe,把其数据放到QTableView()中。

二、实现代码

代码如下:

import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import numpy as np
import pandas as pd


class QDataTable(QWidget):
    """
    @MethodName: QDataTable
    @Description: 用来接纳数据的数据表,在显示窗口显示
    @CalledBy:pyqtflowchart的QtreeWidegt
    @return: result_a
    @rtype: int
    """
    def __init__(self, data, parent=None):
        super(QDataTable, self).__init__(parent)
        # 设置初始大小
        self.resize(500, 300)
        # 获取dataframe的行列
        self.model = QStandardItemModel(data.shape[0], data.shape[1])
        # 设置水平方向的标头内容
        self.model.setHorizontalHeaderLabels(data.columns.values)
        for row in range(data.shape[0]):
            for column in range(data.shape[1]):
                sss = data[data.columns.values[column]][data.index.values[row]]
                sss = str(sss)
                item = QStandardItem(sss)
                # 设置每个位置的文本值
                self.model.setItem(row, column, item)

        # 实例化表格视图,设置模型为自定义的模型
        self.tableView = QTableView()
        self.tableView.setModel(self.model)
        #  设置它不能被编辑
        self.tableView.setEditTriggers(QAbstractItemView.NoEditTriggers)

        # 水平方向标签拓展剩下的窗口部分,填满表格
        self.tableView.horizontalHeader().setStretchLastSection(True)
        # 水平方向,表格大小拓展到适当的尺寸
        self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

        # 设置布局
        layout = QVBoxLayout()
        layout.addWidget(self.tableView)
        self.setLayout(layout)



if __name__ == '__main__':
    app = QApplication(sys.argv)
    a = pd.DataFrame(np.arange(18).reshape(3, 6), index=['a', 'b', 'c'], columns=['A', 'B', 'C', 'D', 'E', 'F'])
    data = a
    table = QDataTable(data)
    table.show()
    sys.exit(app.exec_())


总结

使用的时候,直接往QDataTable类里面传一个自己的dataframe就行。

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值