Python/Pandas - 用于查看DataFrame或Matrix的GUI

Ros*_*s R 57 python user-interface dataframe pandas

我正在使用Pandas包,它创建了一个DataFrame对象,它基本上是一个带标签的矩阵.通常我的列具有长字符串字段,或者具有许多列的数据帧,因此简单的打印命令不能很好地工作.我写了一些文本输出函数,但它们并不好.

我真正喜欢的是一个简单的GUI,它允许我与数据帧/矩阵/表进行交互.就像你在SQL工具中找到的一样.基本上是一个窗口,它有一个只读电子表格,如查看数据.我可以通过长桌等扩展列,页面向上和向下翻页等.

我怀疑这样的事情存在,但我必须用错误的条款谷歌搜索.如果它是特定的熊猫会很棒,但我猜我可以使用任何矩阵接受工具.(顺便说一句 - 我在Windows上.)

有什么指针吗?

或者,相反,如果有人知道这个空间并且知道这可能不存在,那么是否有一个简单的GUI框架/小部件可以用来推动我自己的任何建议?(但由于我的需求有限,我不愿意学习一个大的GUI框架并为这一部分做一堆编码.)

blu*_*e10 42

我对其他一些GUI并不完全满意,所以我创建了自己的GUI,我现在正在Github上维护.例:

在此输入图像描述

除了基本的表格+绘图功能外,我想要一种特定的方法来过滤数据:

  • 从组合框中选择要过滤的列
  • 写一个"下划线表达式"来使用任意Python代码过滤该列.例如:_ > 0仅过滤正值,或更复杂的表达式,(_ >= date(2016, 1, 1)) & (_ <= date(2016, 1, 31))例如日期时间列.


use*_*128 18

我用QTableWidgetPyQt来显示一个DataFrame.我创建一个QTableWidgetObject然后填充QTableWidgetItemsDataFrame值创建.以下是读取CSV文件,创建a DataFrame,然后在GUI中显示的代码片段:

df  = read_csv(filename, index_col = 0,header = 0)
self.datatable = QtGui.QTableWidget(parent=self)
self.datatable.setColumnCount(len(df.columns))
self.datatable.setRowCount(len(df.index))
for i in range(len(df.index)):
    for j in range(len(df.columns)):
        self.datatable.setItem(i,j,QtGui.QTableWidgetItem(str(df.iget_value(i, j))))
Run Code Online (Sandbox Code Playgroud)

更新:

由于这个答案很老,所以值得更新.现在有很多选项可用于查看GUI中的数据帧.

  1. 正如其他人所指出的那样,Spyder等Python IDE带有数据帧查看器.
  2. qgrid是jupyter笔记本小部件的另一个选项,用于呈现笔记本中的数据帧.

如果有人仍想编写一个简单的GUI来查看Jupyter中的数据帧,以下是使用Pyqt5的完整,最小的示例.

%gui qt5 
from PyQt5.QtWidgets import QWidget,QScrollArea, QTableWidget, QVBoxLayout,QTableWidgetItem
import pandas as pd

win = QWidget()
scroll = QScrollArea()
layout = QVBoxLayout()
table = QTableWidget()
scroll.setWidget(table)
layout.addWidget(table)
win.setLayout(layout)    


df = pd.DataFrame({"a" : [4 ,5, 6],"b" : [7, 8, 9],"c" : [10, 11, 12]},index = [1, 2, 3])
table.setColumnCount(len(df.columns))
table.setRowCount(len(df.index))
for i in range(len(df.index)):
    for j in range(len(df.columns)):
        table.setItem(i,j,QTableWidgetItem(str(df.iloc[i, j])))

win.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


guo*_*guo 16

这个问题是在2012年发布的,其他答案可能太旧而无法应用.

2016年的答案是,我们应该使用Pycharm,它随DataFrame观众一起提供.

在此输入图像描述

在此输入图像描述

  • 你没有使用调试模式的情况怎么样? (2认同)

wor*_*ins 11

Pandas 0.13提供了一个实验性功能:

PySide支持qtpandas DataFrameModelDataFrameWidget

请参阅https://github.com/pydata/pandas/blob/master/doc/source/faq.rst

您可以使用添加此功能

from pandas.sandbox.qtpandas import DataFrameModel, DataFrameWidget
Run Code Online (Sandbox Code Playgroud)


Yof*_*ofe 8

您可以使用to_html()数据框方法将数据框转换为html并在浏览器中显示它.假设您有一个名为df的数据帧,这是一个示例.您应该检查文档以查看to_html()方法中可用的其他选项.

# Format floating point numbers with 2 decimal places.
data_table = df.to_html(float_format=lambda x: '%6.2f' % x,
    classes="table display")
# The to_html() method forces a html table border of 1 pixel.
# I use 0  in my table so I  change the html, since there is no 
# border argument in the to_html() method.
data_table = data_table.replace('border="1"','border="0"')
# I alson like to display blanks instead on nan.
data_table = data_table.replace('nan', '')
Run Code Online (Sandbox Code Playgroud)

如果你想让表格格式化和可滚动,那么你可以使用jQuery www.datatables.net的datatables插件.这是我用来显示x和y directiions中的滚动表的javascript.

$('.table').dataTable({
    "bPaginate": true,
    "bLengthChange": true,
    "bSort": false,
    "bStateSave": true,
    "sScrollY": 900,
    "sScrollX": 1000,
    "aLengthMenu": [[50, 100, 250, 500, 1000, -1], [50, 100, 250, 500, 1000, "All"]],
    "iDisplayLength": 100,
});
Run Code Online (Sandbox Code Playgroud)


Mik*_*ter 7

数据框的 to_clipboard() 方法可用于快速复制,然后将数据框粘贴到电子表格中:

df.to_clipboard()
Run Code Online (Sandbox Code Playgroud)


ost*_*ach 5

tkintertable的python2.7和pandastable为python3。


cd9*_*d98 5

我发现最好的解决方案是使用qgrid(参见此处,并在pandas文档中也提到过).你可以安装

pip install qgrid
Run Code Online (Sandbox Code Playgroud)

然后你需要在你的IPython笔记本上进行进一步的安装(只需一次)

qgrid.nbinstall()
Run Code Online (Sandbox Code Playgroud)

之后,就像开始pandas df跑步一样简单

qgrid.show_grid(df)
Run Code Online (Sandbox Code Playgroud)

另一个好处是它也呈现出来nbviewer.在这里看到它

  • 我安装了qgrid,发现还安装了大量的依赖。对于删除,我必须使用 pip-autoremove 实用程序 `pip install pip-autoremove` 和 `pip-autoremove qgrid -y` 来删除它未使用的依赖项(如 /sf/ask/554119891/ 中所述) -uninstalling-a-package-with-pip-also-remove-the-dependent-packages)。 (2认同)

Adr*_*ero 5

除了所有有价值的答案之外,我想提一下Spyder IDE(https://github.com/spyder-ide)具有此功能,您可以在我的打印屏幕中看到:

在此输入图像描述

这只是一个客观事实而不是任何IDE的广告:)我不想引发对这个问题的任何争论.


归档时间:

查看次数:

62224 次

最近记录:

5 年,9 月 前