我经常在终端上使用Series和DataFrames。Series的默认__repr__返回一个减少的样本,其中有一些头部和尾部值,但其余的都没有。
是否有一种内置的方式来漂亮地打印整个系列/数据帧?理想情况下,它应该支持适当的对齐,可能是列之间的边界,甚至可能是不同列的颜色编码。
我经常在终端上使用Series和DataFrames。Series的默认__repr__返回一个减少的样本,其中有一些头部和尾部值,但其余的都没有。
是否有一种内置的方式来漂亮地打印整个系列/数据帧?理想情况下,它应该支持适当的对齐,可能是列之间的边界,甚至可能是不同列的颜色编码。
当前回答
使用pd.options.display
这个答案是lucidyan先前答案的一个变体。它通过避免使用set_option使代码更具可读性。
导入pandas后,作为使用上下文管理器的另一种选择,设置以下选项来显示大数据框架:
def set_pandas_display_options() -> None:
"""Set pandas display options."""
# Ref: https://stackoverflow.com/a/52432757/
display = pd.options.display
display.max_columns = 1000
display.max_rows = 1000
display.max_colwidth = 199
display.width = 1000
# display.precision = 2 # set as needed
set_pandas_display_options()
在此之后,如果使用笔记本电脑,您可以使用display(df)或仅使用df,否则使用print(df)。
使用to_string
Pandas 0.25.3有DataFrame。to_string和Series。接受格式化选项的To_string方法。
使用to_markdown
如果你需要的是降价输出,Pandas 1.0.0有DataFrame。to_markdown和Series。to_markdown方法。
使用to_html
如果你需要的是HTML输出,Pandas 0.25.3确实有一个DataFrame。to_html方法,而不是Series.to_html方法。注意Series可以转换为DataFrame。
其他回答
使用表格包:
pip install tabulate
考虑下面的示例用法:
import pandas as pd
from io import StringIO
from tabulate import tabulate
c = """Chromosome Start End
chr1 3 6
chr1 5 7
chr1 8 9"""
df = pd.read_table(StringIO(c), sep="\s+", header=0)
print(tabulate(df, headers='keys', tablefmt='psql'))
+----+--------------+---------+-------+
| | Chromosome | Start | End |
|----+--------------+---------+-------|
| 0 | chr1 | 3 | 6 |
| 1 | chr1 | 5 | 7 |
| 2 | chr1 | 8 | 9 |
+----+--------------+---------+-------+
如果您正在使用Ipython Notebook (Jupyter)。你可以使用HTML
from IPython.core.display import HTML
display(HTML(df.to_html()))
试试这个
pd.set_option('display.height',1000)
pd.set_option('display.max_rows',500)
pd.set_option('display.max_columns',500)
pd.set_option('display.width',1000)
您可以使用下面的方法来实现这一点。只需要传递总no。在DataFrame中显示为arg to的列
“display.max_columns”
例如:
df= DataFrame(..)
with pd.option_context('display.max_rows', None, 'display.max_columns', df.shape[1]):
print(df)
尝试使用display()函数。这将自动使用水平和垂直滚动条,这样你就可以轻松地显示不同的数据集,而不是使用print()。
display(dataframe)
Display()也支持正确的对齐。
然而,如果你想让数据集更漂亮,你可以检查pd.option_context()。它有很多选项来清楚地显示数据框架。
注:我正在使用Jupyter笔记本电脑。