web-dev-qa-db-ja.com

出力表示を拡大して他の列を表示するにはどうすればよいですか?

対話モードまたはスクリプト実行モードで出力の表示を広げる方法はありますか?

具体的には、私はパンダのdataframeに記述する()関数を使用しています。 dataframeは5列(ラベル)広い場合、私は私が欲しい記述統計を取得します。 dataframeは、任意のより多くの列を持っている場合は、統計が抑制され、このようなものが返されます。

>> Index: 8 entries, count to max  
>> Data columns:  
>> x1          8  non-null values  
>> x2          8  non-null values  
>> x3          8  non-null values  
>> x4          8  non-null values  
>> x5          8  non-null values  
>> x6          8  non-null values  
>> x7          8  non-null values  

「8」の値は、6列か7列かに関係なく与えられます。 「8」は何を表しますか。

私はすでにIDLEウィンドウを大きくドラッグすることを試み、そして "Configure IDLE"幅オプションを無駄に増やすことを試みました。

Pandasとdescribe()を使用する私の目的は、基本的なデータの操作と調査を行うために _ stata _ のような2番目のプログラムを使用しないようにすることです。

Python/IDLE 2.7.3
パンダ0.8.1
メモ帳++ 6.1.4(UNICODE)
Windows Vista SP2

391
beets

これを試して:

pd.set_option('display.expand_frame_repr', False)

ドキュメントから:

display.expand_frame_repr:ブール値

ワイドDataFrameのフルDataFrame reprを複数行に渡って印刷するかどうかにかかわらず、max_columnsは尊重されますが、幅がdisplay.widthを超える場合、出力は複数の「ページ」にまたがってラップアラウンドします。 [デフォルト:True] [現在:True]

参照してください: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.set_option.html

151
Robert Rose

1つの大きなDataFrameを表示するために一時的にオプションを設定したい場合は、 option_context を使用できます。

with pd.option_context('display.max_rows', -1, 'display.max_columns', 5):
    print df

withブロックを終了すると、オプション値は自動的に復元されます。

73
jezrael

以下を使用して列の最大幅を設定します。

pd.set_option('max_colwidth', 800)

この特定のステートメントは、1列あたりの最大幅を800ピクセルに設定します。

41
pX0r

これら3行を使うだけで私のために働きました:

pd.set_option('display.max_columns', None)  
pd.set_option('display.expand_frame_repr', False)
pd.set_option('max_colwidth', -1)

Anaconda/Python 3.6.5 /パンダ:0.23.0 /ビジュアルスタジオコード1.26

38
arispen

set_printoptionsでパンダの印刷オプションを調整できます。

In [3]: df.describe()
Out[3]: 
<class 'pandas.core.frame.DataFrame'>
Index: 8 entries, count to max
Data columns:
x1    8  non-null values
x2    8  non-null values
x3    8  non-null values
x4    8  non-null values
x5    8  non-null values
x6    8  non-null values
x7    8  non-null values
dtypes: float64(7)

In [4]: pd.set_printoptions(precision=2)

In [5]: df.describe()
Out[5]: 
            x1       x2       x3       x4       x5       x6       x7
count      8.0      8.0      8.0      8.0      8.0      8.0      8.0
mean   69024.5  69025.5  69026.5  69027.5  69028.5  69029.5  69030.5
std       17.1     17.1     17.1     17.1     17.1     17.1     17.1
min    69000.0  69001.0  69002.0  69003.0  69004.0  69005.0  69006.0
25%    69012.2  69013.2  69014.2  69015.2  69016.2  69017.2  69018.2
50%    69024.5  69025.5  69026.5  69027.5  69028.5  69029.5  69030.5
75%    69036.8  69037.8  69038.8  69039.8  69040.8  69041.8  69042.8
max    69049.0  69050.0  69051.0  69052.0  69053.0  69054.0  69055.0

しかしながら、パンダはあなたのコンソールの幅を検出するのでこれはすべてのケースでうまくいくわけではなく、出力がコンソールに収まる場合にのみto_stringを使います(set_printoptionsのdocstringを見てください)。この場合、 BrenBarn で答えられるように明示的にto_stringを呼び出すことができます。

更新

バージョン0.10では、幅の広いデータフレームの印刷方法 変更

In [3]: df.describe()
Out[3]: 
                 x1            x2            x3            x4            x5  \
count      8.000000      8.000000      8.000000      8.000000      8.000000   
mean   59832.361578  27356.711336  49317.281222  51214.837838  51254.839690   
std    22600.723536  26867.192716  28071.737509  21012.422793  33831.515761   
min    31906.695474   1648.359160     56.378115  16278.322271     43.745574   
25%    45264.625201  12799.540572  41429.628749  40374.273582  29789.643875   
50%    56340.214856  18666.456293  51995.661512  54894.562656  47667.684422   
75%    75587.003417  31375.610322  61069.190523  67811.893435  76014.884048   
max    98136.474782  84544.484627  91743.983895  75154.587156  99012.695717   

                 x6            x7  
count      8.000000      8.000000  
mean   41863.000717  33950.235126  
std    38709.468281  29075.745673  
min     3590.990740   1833.464154  
25%    15145.759625   6879.523949  
50%    22139.243042  33706.029946  
75%    72038.983496  51449.893980  
max    98601.190488  83309.051963  

さらに、パンダオプションを設定するためのAPIが変更されました。

In [4]: pd.set_option('display.precision', 2)

In [5]: df.describe()
Out[5]: 
            x1       x2       x3       x4       x5       x6       x7
count      8.0      8.0      8.0      8.0      8.0      8.0      8.0
mean   59832.4  27356.7  49317.3  51214.8  51254.8  41863.0  33950.2
std    22600.7  26867.2  28071.7  21012.4  33831.5  38709.5  29075.7
min    31906.7   1648.4     56.4  16278.3     43.7   3591.0   1833.5
25%    45264.6  12799.5  41429.6  40374.3  29789.6  15145.8   6879.5
50%    56340.2  18666.5  51995.7  54894.6  47667.7  22139.2  33706.0
75%    75587.0  31375.6  61069.2  67811.9  76014.9  72039.0  51449.9
max    98136.5  84544.5  91744.0  75154.6  99012.7  98601.2  83309.1
24
bmu

現在の端末の幅に合わせて出力表示を設定できます。

pd.set_option('display.width', pd.util.terminal.get_terminal_size()[0])
22
Wilfred Hughes

テーブル全体を表示するように強制するためにprint df.describe().to_string()を使うことができます。 (どのようなDataFrameにも、このようにto_string()を使用できます。describeの結果は、単なるDataFrameです。)

8は、 "description"を保持するDataFrame内の行数です(describeは、8つの統計、最小値、最大値、平均値などを計算するため)。

19
BrenBarn

docs for v0.18.0 によれば、もしあなたが端末(すなわちiPythonノートブック、qtconsoleまたはIDLEではない)で走っているなら、Pandasにあなたのスクリーン幅を自動検出させて適応させることは2ライナーです表示されている列の数と一緒にその場で:

pd.set_option('display.large_repr', 'truncate')
pd.set_option('display.max_columns', 0)
13
hamx0r

上記のすべての答えが問題を解決するようです。もう一つポイント:pd.set_option('option_name')の代わりに、(オートコンプリート可能)を使用することができます

pd.options.display.width = None

Pandasのドキュメントを参照してください。Options and Settings:

オプションは、完全な「ドットスタイル」の大文字と小文字を区別しない名前を持ちます(例:display.max_rows)。最上位のoptions属性の属性としてオプションを直接取得/設定できます。

In [1]: import pandas as pd

In [2]: pd.options.display.max_rows
Out[2]: 15

In [3]: pd.options.display.max_rows = 999

In [4]: pd.options.display.max_rows
Out[4]: 999

[...]

max_...パラメータの場合:

max_rowsmax_columnsは、オブジェクトを文字列にレンダリングするために__repr__()to_string()のどちらを使用するかを決定するためにinfo()メソッドで使用されます。端末でpython/IPythonが実行されている場合、これは0に設定され、パンダは端末の幅を正しく自動検出し、すべての列が垂直に収まらない場合は小さいフォーマットに交換します。 IPythonノートブック、IPython qtconsole、またはIDLEは端末で実行されないため、正しい自動検出を行うことはできません。Noneの値は無制限を意味します。 [オリジナルではない強調]

widthパラメータの場合:

ディスプレイの幅(文字数)端末でpython/IPythonが実行されている場合、これはNoneに設定され、パンダは正しく幅を自動検出します。 IPythonノートブック、IPython qtconsole、またはIDLEは端末では実行されないため、幅を正しく検出することはできません。

4
serv-inc
import pandas as pd
pd.set_option('display.max_columns', 100)
pd.set_option('display.width', 1000)

SentenceA = "William likes Piano and Piano likes William"
SentenceB = "Sara likes Guitar"
SentenceC = "Mamoosh likes Piano"
SentenceD = "William is a CS Student"
SentenceE = "Sara is kind"
SentenceF = "Mamoosh is kind"


bowA = SentenceA.split(" ")
bowB = SentenceB.split(" ")
bowC = SentenceC.split(" ")
bowD = SentenceD.split(" ")
bowE = SentenceE.split(" ")
bowF = SentenceF.split(" ")

# Creating a set consisted of all words

wordSet = set(bowA).union(set(bowB)).union(set(bowC)).union(set(bowD)).union(set(bowE)).union(set(bowF))
print("Set of all words is: ", wordSet)

# Initiating dictionary with 0 value for all BOWs

wordDictA = dict.fromkeys(wordSet, 0)
wordDictB = dict.fromkeys(wordSet, 0)
wordDictC = dict.fromkeys(wordSet, 0)
wordDictD = dict.fromkeys(wordSet, 0)
wordDictE = dict.fromkeys(wordSet, 0)
wordDictF = dict.fromkeys(wordSet, 0)

for Word in bowA:
    wordDictA[Word] += 1
for Word in bowB:
    wordDictB[Word] += 1
for Word in bowC:
    wordDictC[Word] += 1
for Word in bowD:
    wordDictD[Word] += 1
for Word in bowE:
    wordDictE[Word] += 1
for Word in bowF:
    wordDictF[Word] += 1

# Printing Term frequency

print("SentenceA TF: ", wordDictA)
print("SentenceB TF: ", wordDictB)
print("SentenceC TF: ", wordDictC)
print("SentenceD TF: ", wordDictD)
print("SentenceE TF: ", wordDictE)
print("SentenceF TF: ", wordDictF)

print(pd.DataFrame([wordDictA, wordDictB, wordDictB, wordDictC, wordDictD, wordDictE, wordDictF]))

出力:

   CS  Guitar  Mamoosh  Piano  Sara  Student  William  a  and  is  kind  likes
0   0       0        0      2     0        0        2  0    1   0     0      2
1   0       1        0      0     1        0        0  0    0   0     0      1
2   0       1        0      0     1        0        0  0    0   0     0      1
3   0       0        1      1     0        0        0  0    0   0     0      1
4   1       0        0      0     0        1        1  1    0   1     0      0
5   0       0        0      0     1        0        0  0    0   1     1      0
6   0       0        1      0     0        0        0  0    0   1     1      0
2

データの規模が大きい場合は、これらの設定を使用しました。

# environment settings: 
pd.set_option('display.max_column',None)
pd.set_option('display.max_rows',None)
pd.set_option('display.max_seq_items',None)
pd.set_option('display.max_colwidth', 500)
pd.set_option('expand_frame_repr', True)

ドキュメントを参照することができます ここ

2
debaonline4u

表示オプションを台無しにしたくなく、表示するすべてのデータフレームを展開せずにこの1つの特定の列のリストを表示するだけの場合は、次の方法を試してください。

df.columns.values

0
user11052564

ループで試すこともできます。

for col in df.columns: 
    print(col) 
0
LifeisBeautiful