将Pandas数据框显示为表格

时间:2013-06-06 09:30:43

标签: python pandas

因为我每次输入数据帧的名称时都安装了更新版本的pandas,例如

df[0:5]

要查看前几行,它会为我提供列的摘要,其中的值的数量以及数据类型。

如何查看表格视图呢? (我正在使用iPython btw)。

提前致谢!

4 个答案:

答案 0 :(得分:21)

注意:要显示前几行,您还可以使用head

但是,如果列数多于display.max_columns,或者它们的长度超过display.width(类似于行),pandas将显示摘要视图,因此您需要增加这些列以显示表格视图。您可以使用set选项更改这些,例如:

pd.options.display.max_columns = 50

请参阅此pandas问题:"Unintuitive default behavior with wide DataFrames in the IPython notebook"

或者,显示您可以使用的前几列的前几行:

df.head(5)[df.columns[0:4]]
# alternatively
df.iloc[:5, :4]

答案 1 :(得分:8)

简短回答: 如果您的版本晚于0.11.0,请尝试使用以下设置显示宽度:

pd.set_option('display.width', 200)

答案很长:  当然,这个帖子已经有4个月了,但昨晚我遇到了同样的问题。在我的工作中工作正常的ipython笔记本不会在家里出现html表。

首先,检查您的版本:

import pandas as pd
pd.__version__ 

我的回复:'0.11.0'

接下来,使用以下方法检查您的设置:

pd.describe_option('display')

这将为您提供所有可能的显示选项和当前默认值的长列表。 您可能需要更改默认值。使用较大的值来使其工作,然后根据需要缩小。

Display.width是重要的一个。我用进口把它们放在最顶层。

pd.set_option('display.height', 500)
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 200)

答案 2 :(得分:1)

第一步: 我正在使用它来获取eclipse的pydev中的GUI。确保你的pydev有GUI设置。使用本教程:http://popdevelop.com/2010/04/setting-up-ide-and-creating-a-cross-platform-qt-python-gui-application/来做到这一点。

第二步: 从这里举例[{3}} 并做一些修改, 运行以下代码一次:

def forum_new(request):
    if request.method == 'POST':
        form = your_form_here(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return redirect('/bar.html/')
    else:
        form = your_form_here()
    return render(request, 'url.html', {'form': form})

一旦完成。您只需输入以下命令即可获得GUI

import pandas as pd
from PyQt5 import QtCore, QtGui ,QtWidgets
class PandasModel2(QtCore.QAbstractTableModel):
    """
    Class to populate a table view with a pandas dataframe
    """
    def __init__(self, data, parent=None):
        QtCore.QAbstractTableModel.__init__(self, parent)
        self._data = data

    def rowCount(self, parent=None):
        return self._data.shape[0]

    def columnCount(self, parent=None):
        return self._data.shape[1]

    def data(self, index, role=QtCore.Qt.DisplayRole):
        if index.isValid():
            if role == QtCore.Qt.DisplayRole:
                return str(self._data.iloc[index.row(), index.column()])
        return None

    def headerData(self, col, orientation, role):
        if orientation == QtCore.Qt.Horizontal and role == QtCore.Qt.DisplayRole:
            return self._data.columns[col]
        return None

view = QtWidgets.QTableView()

答案 3 :(得分:0)

非常有帮助,谢谢。我在ulmo + pandas example托管的Notebook中经历了这个Wakari,并对为什么有些表只是提供摘要而不是呈现为HTML感到困惑。似乎Wakari中的display.width选项默认只有80,因此在决定打印摘要之前,表格不必非常宽。这是一个令人困惑的隐藏模式。以下修正了它:

pandas.set_option('display.width',500)

display.max_rows和display.max_columns默认为60和20,所以我将它们保留为原样。这是与Pandas 0.11.0。