対話モードまたはスクリプト実行モードで出力の表示を広げる方法はありますか?
具体的には、私はパンダの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
これを試して:
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
1つの大きなDataFrameを表示するために一時的にオプションを設定したい場合は、 option_context を使用できます。
with pd.option_context('display.max_rows', -1, 'display.max_columns', 5):
print df
with
ブロックを終了すると、オプション値は自動的に復元されます。
以下を使用して列の最大幅を設定します。
pd.set_option('max_colwidth', 800)
この特定のステートメントは、1列あたりの最大幅を800ピクセルに設定します。
これら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
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
現在の端末の幅に合わせて出力表示を設定できます。
pd.set_option('display.width', pd.util.terminal.get_terminal_size()[0])
テーブル全体を表示するように強制するためにprint df.describe().to_string()
を使うことができます。 (どのようなDataFrameにも、このようにto_string()
を使用できます。describe
の結果は、単なるDataFrameです。)
8は、 "description"を保持するDataFrame内の行数です(describe
は、8つの統計、最小値、最大値、平均値などを計算するため)。
docs for v0.18.0 によれば、もしあなたが端末(すなわちiPythonノートブック、qtconsoleまたはIDLEではない)で走っているなら、Pandasにあなたのスクリーン幅を自動検出させて適応させることは2ライナーです表示されている列の数と一緒にその場で:
pd.set_option('display.large_repr', 'truncate')
pd.set_option('display.max_columns', 0)
上記のすべての答えが問題を解決するようです。もう一つポイント: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_rows
とmax_columns
は、オブジェクトを文字列にレンダリングするために__repr__()
とto_string()
のどちらを使用するかを決定するためにinfo()
メソッドで使用されます。端末でpython/IPythonが実行されている場合、これは0に設定され、パンダは端末の幅を正しく自動検出し、すべての列が垂直に収まらない場合は小さいフォーマットに交換します。 IPythonノートブック、IPython qtconsole、またはIDLEは端末で実行されないため、正しい自動検出を行うことはできません。None
の値は無制限を意味します。 [オリジナルではない強調]
width
パラメータの場合:
ディスプレイの幅(文字数)端末でpython/IPythonが実行されている場合、これは
None
に設定され、パンダは正しく幅を自動検出します。 IPythonノートブック、IPython qtconsole、またはIDLEは端末では実行されないため、幅を正しく検出することはできません。
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
データの規模が大きい場合は、これらの設定を使用しました。
# 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)
ドキュメントを参照することができます ここ
表示オプションを台無しにしたくなく、表示するすべてのデータフレームを展開せずにこの1つの特定の列のリストを表示するだけの場合は、次の方法を試してください。
df.columns.values
ループで試すこともできます。
for col in df.columns:
print(col)