在Ipython中进行数据分析时,我经常需要通过将其内容打印到shell来查看数据。 Numpy可以自行显示巨大物体的边距。我真的很喜欢ndarrays的这个功能,但是当我打印内部python对象(例如,带有15k对象的字典)时,它们会被转储到屏幕上,或者有时会以不太友好的方式被截断。 因此,例如对于一个巨大的字典,我希望在输出中看到像这样的
{ '39416' : '1397',
'39414' : '1397',
'7629' : '7227',
...,
'31058' : '9606',
'21097' : '4062',
'32040' : '9606' }
如果可以处理对齐和嵌套数据结构,那将是完美的。它们是一个特殊的模块,可以为python基类(list,dict)提供这样的功能吗?或者有一些我一无所知的ipython配置技巧?
答案 0 :(得分:1)
有一个很好的内置库pprint
。看看吧。
>>> from pprint import pprint
>>> pprint({x: list(range(x)) for x in range(10)})
{0: [],
1: [0],
2: [0, 1],
3: [0, 1, 2],
4: [0, 1, 2, 3],
5: [0, 1, 2, 3, 4],
6: [0, 1, 2, 3, 4, 5],
7: [0, 1, 2, 3, 4, 5, 6],
8: [0, 1, 2, 3, 4, 5, 6, 7],
9: [0, 1, 2, 3, 4, 5, 6, 7, 8]}
答案 1 :(得分:1)
如果您的词典结构合理,您可以将其转换为Pandas数据帧以供查看。
import numpy as np
import pandas as pd
>>> pd.DataFrame({'random normal': np.random.randn(1000),
'random int': np.random.randint(0, 10, 1000)})
random int random normal
0 6 0.850827
1 7 0.486551
2 4 -0.111008
3 9 -1.319320
4 6 -0.393774
5 1 -0.878507
.. ... ...
995 2 -1.882813
996 3 -0.121003
997 3 0.155835
998 5 0.920318
999 2 0.216229
[1000 rows x 2 columns]
答案 2 :(得分:0)
numpy
格式化程序具有省略号功能;作为默认设置,它可以使用1000多个项目。
pprint
可以使显示更好,但我认为它没有省略号功能。但是你可以研究它的文档。
使用列表我可以使用切片
list(range(100))[:10]
查看有限数量的值。
这对词典来说更难。经过一些试验和错误,这可以接受:
{k:dd[k] for k in list(dd.keys())[:10]}
(我在Py3上,所以需要额外的list
)。
如果在pprint
中找不到某些内容,编写自己的实用程序函数并不难。 pypi
上的某些包也可以这样做。例如,快速搜索出现了
https://pypi.python.org/pypi/pprintpp
pprintpp
声称其实很漂亮。但就像股票pprint
一样,它似乎更关心列表和词典的嵌套深度,而不是它们的长度。