Ros*_*s R 57 python user-interface dataframe pandas
我正在使用Pandas包,它创建了一个DataFrame对象,它基本上是一个带标签的矩阵.通常我的列具有长字符串字段,或者具有许多列的数据帧,因此简单的打印命令不能很好地工作.我写了一些文本输出函数,但它们并不好.
我真正喜欢的是一个简单的GUI,它允许我与数据帧/矩阵/表进行交互.就像你在SQL工具中找到的一样.基本上是一个窗口,它有一个只读电子表格,如查看数据.我可以通过长桌等扩展列,页面向上和向下翻页等.
我怀疑这样的事情存在,但我必须用错误的条款谷歌搜索.如果它是特定的熊猫会很棒,但我猜我可以使用任何矩阵接受工具.(顺便说一句 - 我在Windows上.)
有什么指针吗?
或者,相反,如果有人知道这个空间并且知道这可能不存在,那么是否有一个简单的GUI框架/小部件可以用来推动我自己的任何建议?(但由于我的需求有限,我不愿意学习一个大的GUI框架并为这一部分做一堆编码.)
use*_*128 18
我用QTableWidget
PyQt来显示一个DataFrame
.我创建一个QTableWidgetObject
然后填充QTableWidgetItems
与DataFrame
值创建.以下是读取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中的数据帧.
如果有人仍想编写一个简单的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
观众一起提供.
wor*_*ins 11
Pandas 0.13提供了一个实验性功能:
PySide支持qtpandas DataFrameModel
和DataFrameWidget
请参阅https://github.com/pydata/pandas/blob/master/doc/source/faq.rst
您可以使用添加此功能
from pandas.sandbox.qtpandas import DataFrameModel, DataFrameWidget
Run Code Online (Sandbox Code Playgroud)
您可以使用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)
数据框的 to_clipboard() 方法可用于快速复制,然后将数据框粘贴到电子表格中:
df.to_clipboard()
Run Code Online (Sandbox Code Playgroud)
我发现最好的解决方案是使用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
.在这里看到它
除了所有有价值的答案之外,我想提一下Spyder IDE(https://github.com/spyder-ide)具有此功能,您可以在我的打印屏幕中看到:
这只是一个客观事实而不是任何IDE的广告:)我不想引发对这个问题的任何争论.
归档时间: |
|
查看次数: |
62224 次 |
最近记录: |