出力表示を拡張して、パンダ データフレームの列をさらに表示するにはどうすればよいですか?
-
13-12-2019 - |
質問
対話型モードまたはスクリプト実行モードで出力の表示を拡大する方法はありますか?
具体的には、私が使用しているのは、 describe()
パンダの関数 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
列数が 6 つであっても 7 つであっても、「8」という値が与えられます。「8」は何を指すのでしょうか?
IDLE ウィンドウをドラッグして大きくしたり、「IDLE の設定」幅オプションを増やしたりしましたが、無駄でした。
パンダを使用する目的と describe()
基本的なデータ操作や調査を行うために Stata のような 2 番目のプログラムを使用しないようにすることです。
解決
アップデート:パンダ 0.23.4 以降
これは必須ではありません。設定した場合、パンダはターミナル ウィンドウのサイズを自動検出します。 pd.options.display.width = 0
. 。(古いバージョンについては下部を参照してください。)
pandas.set_printoptions(...)
は廃止されました。代わりに、使用してください pandas.set_option(optname, val)
, 、または同等の pd.options.<opt.hierarchical.name> = val
. 。のように:
import pandas as pd
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)
ここにあります を助ける set_option
:
set_option(pat,value) - Sets the value of the specified option Available options: display.[chop_threshold, colheader_justify, column_space, date_dayfirst, date_yearfirst, encoding, expand_frame_repr, float_format, height, line_width, max_columns, max_colwidth, max_info_columns, max_info_rows, max_rows, max_seq_items, mpl_style, multi_sparse, notebook_repr_html, pprint_nest_depth, precision, width] mode.[sim_interactive, use_inf_as_null] Parameters ---------- pat - str/regexp which should match a single option. Note: partial matches are supported for convenience, but unless you use the full option name (e.g. x.y.z.option_name), your code may break in future versions if new options with similar names are introduced. value - new value of option. Returns ------- None Raises ------ KeyError if no such option exists display.chop_threshold: [default: None] [currently: None] : float or None if set to a float value, all float values smaller then the given threshold will be displayed as exactly 0 by repr and friends. display.colheader_justify: [default: right] [currently: right] : 'left'/'right' Controls the justification of column headers. used by DataFrameFormatter. display.column_space: [default: 12] [currently: 12]No description available. display.date_dayfirst: [default: False] [currently: False] : boolean When True, prints and parses dates with the day first, eg 20/01/2005 display.date_yearfirst: [default: False] [currently: False] : boolean When True, prints and parses dates with the year first, eg 2005/01/20 display.encoding: [default: UTF-8] [currently: UTF-8] : str/unicode Defaults to the detected encoding of the console. Specifies the encoding to be used for strings returned by to_string, these are generally strings meant to be displayed on the console. display.expand_frame_repr: [default: True] [currently: True] : boolean Whether to print out the full DataFrame repr for wide DataFrames across multiple lines, `max_columns` is still respected, but the output will wrap-around across multiple "pages" if it's width exceeds `display.width`. display.float_format: [default: None] [currently: None] : callable The callable should accept a floating point number and return a string with the desired format of the number. This is used in some places like SeriesFormatter. See core.format.EngFormatter for an example. display.height: [default: 60] [currently: 1000] : int Deprecated. (Deprecated, use `display.height` instead.) display.line_width: [default: 80] [currently: 1000] : int Deprecated. (Deprecated, use `display.width` instead.) display.max_columns: [default: 20] [currently: 500] : int max_rows and max_columns are used in __repr__() methods to decide if to_string() or info() is used to render an object to a string. In case python/IPython is running in a terminal this can be set to 0 and pandas will correctly auto-detect the width the terminal and swap to a smaller format in case all columns would not fit vertically. The IPython notebook, IPython qtconsole, or IDLE do not run in a terminal and hence it is not possible to do correct auto-detection. 'None' value means unlimited. display.max_colwidth: [default: 50] [currently: 50] : int The maximum width in characters of a column in the repr of a pandas data structure. When the column overflows, a "..." placeholder is embedded in the output. display.max_info_columns: [default: 100] [currently: 100] : int max_info_columns is used in DataFrame.info method to decide if per column information will be printed. display.max_info_rows: [default: 1690785] [currently: 1690785] : int or None max_info_rows is the maximum number of rows for which a frame will perform a null check on its columns when repr'ing To a console. The default is 1,000,000 rows. So, if a DataFrame has more 1,000,000 rows there will be no null check performed on the columns and thus the representation will take much less time to display in an interactive session. A value of None means always perform a null check when repr'ing. display.max_rows: [default: 60] [currently: 500] : int This sets the maximum number of rows pandas should output when printing out various output. For example, this value determines whether the repr() for a dataframe prints out fully or just a summary repr. 'None' value means unlimited. display.max_seq_items: [default: None] [currently: None] : int or None when pretty-printing a long sequence, no more then `max_seq_items` will be printed. If items are ommitted, they will be denoted by the addition of "..." to the resulting string. If set to None, the number of items to be printed is unlimited. display.mpl_style: [default: None] [currently: None] : bool Setting this to 'default' will modify the rcParams used by matplotlib to give plots a more pleasing visual style by default. Setting this to None/False restores the values to their initial value. display.multi_sparse: [default: True] [currently: True] : boolean "sparsify" MultiIndex display (don't display repeated elements in outer levels within groups) display.notebook_repr_html: [default: True] [currently: True] : boolean When True, IPython notebook will use html representation for pandas objects (if it is available). display.pprint_nest_depth: [default: 3] [currently: 3] : int Controls the number of nested levels to process when pretty-printing display.precision: [default: 7] [currently: 7] : int Floating point output precision (number of significant digits). This is only a suggestion display.width: [default: 80] [currently: 1000] : int Width of the display in characters. In case python/IPython is running in a terminal this can be set to None and pandas will correctly auto-detect the width. Note that the IPython notebook, IPython qtconsole, or IDLE do not run in a terminal and hence it is not possible to correctly detect the width. mode.sim_interactive: [default: False] [currently: False] : boolean Whether to simulate interactive mode for purposes of testing mode.use_inf_as_null: [default: False] [currently: False] : boolean True means treat None, NaN, INF, -INF as null (old way), False means None and NaN are null, but INF, -INF are not null (new way). Call def: pd.set_option(self, *args, **kwds)
編集:古いバージョンの情報ですが、その多くは廃止されました。
@bmuとして 言及された, pandas は表示領域のサイズを (デフォルトで) 自動的に検出します。オブジェクト表現がディスプレイに収まらない場合は概要ビューが使用されます。IDLE ウィンドウのサイズを変更しても効果がないと述べました。もし、するなら print df.describe().to_string()
IDLEウィンドウに適合しますか?
端子のサイズは次のように決まります。 pandas.util.terminal.get_terminal_size()
(非推奨で削除されました)、これは、 (width, height)
ディスプレイの。出力は IDLE ウィンドウのサイズと一致しますか?問題がある可能性があります (以前、emacs でターミナルを実行するときに問題がありました)。
自動検出をバイパスすることも可能であることに注意してください。 pandas.set_printoptions(max_rows=200, max_columns=10)
行数と列数が指定された制限を超えない場合、概要ビューに切り替わることはありません。
「max_colwidth」オプションは、各列の切り詰められていない形式を確認するのに役立ちます。
他のヒント
これを試してみてください:
pd.set_option('display.expand_frame_repr', False)
.
ドキュメントから:
display.expand_frame_repr:boolean
複数行にわたる全データフレームのフルデータフレームを印刷するかどうか、MAX_COLUMNSはまだ尊重されていますが、幅がdisplay.widthを超えると出力は複数の「ページ」にわたって折り返します。[デフォルト:TRUE] [現在:TRUE]
> http://pandas.pydata.org/Pandas-Docs / Stable / Generated / pandas.set_option.html
一時的に1つの大きなデータフレームを表示するには、 option_context :
with pd.option_context('display.max_rows', -1, 'display.max_columns', 5):
print df
.
with
ブロックを終了すると、オプションの値が自動的に復元されます。
これら3行を使用したのみ私のために働いた:
pd.set_option('display.max_columns', None)
pd.set_option('display.expand_frame_repr', False)
pd.set_option('max_colwidth', -1)
.
アナコンダ/ Python 3.6.5 / Pandas:0.23.0 / Visual Studio Code 1.26
列の最大幅を使用して:
pd.set_option('max_colwidth', 800)
.
この特定のステートメントは、列ごとに最大幅を800pxに設定します。
set_printoptions
でPandas印刷オプションを調整できます。
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
.
しかし、Pandasがコンソールの幅を検出し、出力がコンソールに収まる場合にのみto_string
のみを使用するため、すべての場合は機能しません(set_printoptions
のDocStringを参照)。
この場合、 brenbarn 。
更新
バージョン0.10のWAY WIDEデータフレームが印刷されています変更された:
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
.
Pandasオプションを設定するための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
. 使用できます print df.describe().to_string()
テーブル全体を強制的に表示します。(使用できます to_string()
任意の DataFrame に対してこのようにします。結果として describe
は単なる DataFrame そのものです。)
8 は、「説明」を保持する DataFrame 内の行数です (理由は describe
8 つの統計情報 (最小値、最大値、平均値など) を計算します。
現在の端子幅に合わせて出力表示を設定できます。
pd.set_option('display.width', pd.util.terminal.get_terminal_size()[0])
. ターミナル(つまり、iPythonノートブック、QtConsoleまたはIDLEではなく)で実行している場合は、Pandasがスクリーン幅を自動検出し、表示される列数でFlyに適応させるための2ライナーです。
pd.set_option('display.large_repr', 'truncate')
pd.set_option('display.max_columns', 0)
. 上記のすべての回答で問題が解決されたようです。もう 1 つのポイント:の代わりに pd.set_option('option_name')
, 、(オートコンプリート可能) を使用できます。
pd.options.display.width = None
オプションには、完全な「ドット形式」の大文字と小文字が区別されない名前が付けられます (例:
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)
. 下の行は、データフレームからすべての列を表示するのに十分です。
pd.set_option('display.max_columns', None)
あなたは単に次の手順を実行することができます、
-
Pandas Max_Columns機能のオプションを次のように変更できます。
.import pandas as pd pd.options.display.max_columns = 10
(これは10列が表示されることを可能にします、あなたが必要とするようにこれを変更することができます)
-
行数を変更する必要があるように行数を変更することができます(最大行を変更する必要がある場合)
.pd.options.display.max_rows = 999
(一度に999行印刷することができます)
doc を参照してください。/ Pandas
の設定