我经常在终端上使用Series和DataFrames。Series的默认__repr__返回一个减少的样本,其中有一些头部和尾部值,但其余的都没有。
是否有一种内置的方式来漂亮地打印整个系列/数据帧?理想情况下,它应该支持适当的对齐,可能是列之间的边界,甚至可能是不同列的颜色编码。
我经常在终端上使用Series和DataFrames。Series的默认__repr__返回一个减少的样本,其中有一些头部和尾部值,但其余的都没有。
是否有一种内置的方式来漂亮地打印整个系列/数据帧?理想情况下,它应该支持适当的对齐,可能是列之间的边界,甚至可能是不同列的颜色编码。
当前回答
尝试使用display()函数。这将自动使用水平和垂直滚动条,这样你就可以轻松地显示不同的数据集,而不是使用print()。
display(dataframe)
Display()也支持正确的对齐。
然而,如果你想让数据集更漂亮,你可以检查pd.option_context()。它有很多选项来清楚地显示数据框架。
注:我正在使用Jupyter笔记本电脑。
其他回答
不需要侵入设置。有一个简单的方法:
print(df.to_string())
当然,如果这个经常出现,就做一个这样的函数。您甚至可以将其配置为在每次启动IPython时加载:https://ipython.org/ipython-doc/1/config/overview.html
def print_full(x):
pd.set_option('display.max_rows', len(x))
print(x)
pd.reset_option('display.max_rows')
至于颜色,过于复杂的颜色对我来说听起来适得其反,但我同意像bootstrap的.table条纹之类的东西会很好。您总是可以创建一个问题来建议这个功能。
使用表格包:
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 |
+----+--------------+---------+-------+
脚本
没有人提出过这种简单的纯文本解决方案:
from pprint import pprint
pprint(s.to_dict())
产生如下结果:
{'% Diabetes': 0.06365372374283895,
'% Obesity': 0.06365372374283895,
'% Bachelors': 0.0,
'% Poverty': 0.09548058561425843,
'% Driving Deaths': 1.1775938892425206,
'% Excessive Drinking': 0.06365372374283895}
Jupyter記本嗎
此外,当使用Jupyter笔记本时,这是一个很好的解决方案。
注意:pd.Series()没有.to_html(),所以必须转换为pd.DataFrame()
from IPython.display import display, HTML
display(HTML(s.to_frame().to_html()))
产生如下结果:
如果您正在使用Ipython Notebook (Jupyter)。你可以使用HTML
from IPython.core.display import HTML
display(HTML(df.to_html()))