2016-08-26 7 views
5

Ipythonでデータ分析を行う際に、その内容をシェルに印刷するだけでデータを調べなければならないことがよくあります。 Numpyには、巨大な対象物が余りにも長すぎる場合には、のマージンしか表示されません。私は本当にndarraysのこの機能が欲しいですが、内部のPythonオブジェクト(例えば、15kオブジェクトの辞書を含む)を印刷すると、画面にダンプされるか、時には非常にフレンドリーな方法で切り捨てられます。私は、アライメントおよびネストされたデータ構造が世話をすることができれば、このPythonオブジェクトのナンシーな印刷

{ '39416' : '1397', 
    '39414' : '1397', 
    '7629' : '7227', 
    ..., 
    '31058' : '9606', 
    '21097' : '4062', 
    '32040' : '9606' } 

のような出力に何かにそれは完璧になる見たいのですが、巨大な辞書のために例えばので 。 Pythonの基本クラス(list、dict)にそのような機能を提供できる特別なモジュールですか?または、私が何も知っていないいくつかのipython構成の欺瞞がありますか?

+2

'from pprint import pprint; pprint(my_dict) ' –

+1

おそらく、Pandasを使ってリストや辞書をデータフレームに変換して表示することができます。 – Alexander

答えて

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]} 
+0

pprintに印刷マージンの機能がありません。 – Pommy

+0

@pommy afaik 'indent'、' width'と 'depth'パラメータのみがあります。 – vsminkov

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] 
+0

私はそれを見るのは残酷だと思います。私は同じ目的のためにnumpy構造化配列を使用することができますが、私はそれが良い解決策だとは思わない。 – Pommy

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のように、それはリストや辞書の入れ子の深さにもっと関係しているように思えます。