850

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

具体的にはdescribe()、 Pandas で関数を使用していますDataFrameDataFrame幅が 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 つ目のプログラムを使用して基本的なデータ操作と調査を行うことを避けることです。

4

21 に答える 21

1223

更新: パンダ 0.23.4 以降

これは必要ありません。を設定すると、Pandas は端末ウィンドウのサイズを自動検出します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) - 指定されたオプションの値を設定します

利用可能なオプション:
display.[chop_threshold, colheader_justify, column_space, date_dayfirst,
         date_yearfirst、エンコーディング、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、精度、幅]
mode.[sim_interactive, use_inf_as_null]

パラメーター
----------
pat - 単一のオプションに一致する必要がある str/regexp。

注: 便宜上部分一致がサポートされていますが、
完全なオプション名 (例: *xyzoption_name*)、コードは将来壊れる可能性があります
類似した名前の新しいオプションが導入された場合のバージョン。

value - オプションの新しい値。

戻り値
-------
なし

レイズ
------
そのようなオプションが存在しない場合は KeyError

display.chop_threshold: [デフォルト: なし] [現在: なし]
: float または None
        float 値に設定されている場合、指定されたしきい値より小さいすべての float 値
        repr と友人によって正確に 0 として表示されます。
display.colheader_justify: [デフォルト: 右] [現在: 右]
: '左右'
        列ヘッダーの位置揃えを制御します。DataFrameFormatter によって使用されます。
display.column_space: [デフォルト: 12] [現在: 12] 説明はありません。

display.date_dayfirst: [デフォルト: False] [現在: False]
: ブール値
        True の場合、2005 年 1 月 20 日のように日付を最初に表示して解析します。
display.date_yearfirst: [デフォルト: False] [現在: False]
: ブール値
        True の場合、最初に年を付けて日付を出力および解析します (例: 2005/01/20)。
display.encoding: [デフォルト: UTF-8] [現在: UTF-8]
: 文字列/ユニコード
        デフォルトは、検出されたコンソールのエンコーディングです。
        to_string によって返される文字列に使用されるエンコーディングを指定します。
        これらは通常、コンソールに表示されることを意図した文字列です。
display.expand_frame_repr: [デフォルト: True] [現在: True]
: ブール値
        幅の広い DataFrame の完全な DataFrame 表現を出力するかどうか
        複数の行にわたって、`max_columns` は引き続き考慮されますが、出力は
        幅が「display.width」を超える場合、複数の「ページ」にまたがるラップアラウンド。
display.float_format: [デフォルト: なし] [現在: なし]
: 呼び出し可能
        callable は浮動小数点数を受け入れて返す必要があります
        数値の目的の形式の文字列。これが使われています
        SeriesFormatter のようないくつかの場所で。
        例については、core.format.EngFormatter を参照してください。
display.height: [デフォルト: 60] [現在: 1000]
: 整数
        非推奨。
        (非推奨です。代わりに「display.height」を使用してください。)

display.line_width: [デフォルト: 80] [現在: 1000]
: 整数
        非推奨。
        (非推奨です。代わりに「display.width」を使用してください。)

display.max_columns: [デフォルト: 20] [現在: 500]
: 整数
        max_rows と max_columns は __repr__() メソッドで使用され、
        to_string() または info() は、オブジェクトを文字列にレンダリングするために使用されます。万一に備えて
        python/IPython はターミナルで実行されています。これは 0 と Pandas に設定できます
        端末の幅を正しく自動検出し、より小さいものにスワップします
        すべての列が垂直方向に収まらない場合のフォーマット。IPython ノートブック、
        IPython qtconsole、または IDLE は端末で実行されないため、そうではありません
        正しい自動検出を行うことができます。
        「なし」の値は無制限を意味します。
display.max_colwidth: [デフォルト: 50] [現在: 50]
: 整数
        repr の列の文字の最大幅
        パンダのデータ構造。列がオーバーフローすると、「...」
        プレースホルダーが出力に埋め込まれます。
display.max_info_columns: [デフォルト: 100] [現在: 100]
: 整数
        max_info_columns は DataFrame.info メソッドで使用され、
        列ごとの情報が出力されます。
display.max_info_rows: [デフォルト: 1690785] [現在: 1690785]
: int または None
        max_info_rows は、フレームが表示される行の最大数です。
        コンソールに repr'ing するときに、その列に対して null チェックを実行します。
        デフォルトは 1,000,000 行です。したがって、DataFrame にさらに多くの
        1,000,000 行では、NULL チェックは実行されません。
        列が表示されるため、表現にかかる時間が大幅に短縮されます。
        対話型セッションで表示します。None の値は常に意味します
        repr'ing 時に null チェックを実行します。
display.max_rows: [デフォルト: 60] [現在: 500]
: 整数
        これは、印刷時にパンダが出力する最大行数を設定します
        さまざまな出力を出します。たとえば、この値は repr()
        データフレームの場合、完全にまたは要約表現のみが出力されます。
        「なし」の値は無制限を意味します。
display.max_seq_items: [デフォルト: なし] [現在: なし]
: int または None

        長いシーケンスをプリティプリントする場合、「max_seq_items」以下
        印刷されます。項目が省略されている場合は、追加で示されます。
        "..." を結果の文字列に変換します。

        None に設定すると、印刷するアイテムの数は無制限になります。
display.mpl_style: [デフォルト: なし] [現在: なし]
: ブール

        これを「デフォルト」に設定すると、matplotlib で使用される rcParams が変更されます
        デフォルトで、より快適な視覚的スタイルをプロットに与えます。
        これを None/False に設定すると、値が初期値に戻ります。
display.multi_sparse: [デフォルト: True] [現在: True]
: ブール値
        "sparsify" MultiIndex 表示 (繰り返し表示しない)
        グループ内の外側のレベルの要素)
display.notebook_repr_html: [デフォルト: True] [現在: True]
: ブール値
        True の場合、IPython ノートブックは HTML 表現を使用します
        Pandas オブジェクト (利用可能な場合)。
display.pprint_nest_depth: [デフォルト: 3] [現在: 3]
: 整数
        プリティプリント時に処理するネストされたレベルの数を制御します
display.precision: [デフォルト: 7] [現在: 7]
: 整数
        浮動小数点の出力精度 (有効桁数)。これは
        提案のみ
display.width: [デフォルト: 80] [現在: 1000]
: 整数
        文字単位の表示幅。python/IPython が実行されている場合
        端末を None に設定すると、Pandas は正しく自動検出します。
        幅。
        IPython ノートブック、IPython qtconsole、または IDLE は、
        そのため、幅を正しく検出することはできません。
mode.sim_interactive: [デフォルト: False] [現在: False]
: ブール値
        テストのために対話モードをシミュレートするかどうか
mode.use_inf_as_null: [デフォルト: False] [現在: False]
: ブール値
        True は、None、NaN、INF、-INF を null (古い方法) として扱うことを意味します。
        False は、None と NaN が null であることを意味しますが、INF、-INF は null ではありません
        (新しい方法)。
呼び出し定義: pd.set_option(self, *args, **kwds)

古いバージョンの情報。これの多くは廃止されました。

@bmuが述べたように、Pandas は (デフォルトで) 表示領域のサイズを自動検出します。オブジェクト repr が表示に収まらない場合は、概要ビューが使用されます。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」オプションは、各列の切り捨てられていない形式を確認するのに役立ちます。

TruncatedColumnDisplay

于 2012-07-29T18:02:02.687 に答える
251

これを試して:

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

ドキュメントから:

display.expand_frame_repr : ブール値

幅の広い DataFrame の完全な DataFrame 表現を複数行にわたって出力するかどうか、max_columns は引き続き考慮されますが、幅が display.width を超える場合、出力は複数の「ページ」にまたがって折り返されます。[デフォルト: True] [現在: True]

参照: pandas.set_option

于 2014-08-20T22:19:24.467 に答える
177

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

with pd.option_context('display.max_rows', None, 'display.max_columns', None):
    print (df)

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

于 2015-10-27T18:04:34.610 に答える
66

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

pd.set_option('max_colwidth', 800)

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

于 2015-11-19T08:43:35.197 に答える
28

print df.describe().to_string()テーブル全体を表示するように強制するために使用できます。(to_string()このように任意のDataFrameに使用できます。結果はdescribeDataFrame自体になります。)

8は、「説明」を保持するDataFrameの行数です(describe8つの統計、最小、最大、平均などを計算するため)。

于 2012-07-29T08:03:35.063 に答える
28

で Pandas の印刷オプションを調整できます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ただし、Pandas がコンソールの幅を検出し、出力がコンソールに収まる場合にのみ使用されるため、これはすべての場合に機能するとは限りません(の docstring を参照set_printoptions)。この場合、BrenBarnto_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

さらに、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
于 2012-07-29T10:56:01.317 に答える
23

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

pd.set_option('display.width', pd.util.terminal.get_terminal_size()[0])
于 2015-03-16T10:04:56.283 に答える
14

v0.18.0 のドキュメントによると、端末で実行している場合 (つまり、IPythonノートブック、 qtconsole またはIDLEではない場合)、Pandas に画面幅を自動検出させ、列数に合わせてオンザフライで適応させるのは 2 ライナーです。それが示している:

pd.set_option('display.large_repr', 'truncate')
pd.set_option('display.max_columns', 0)
于 2016-04-02T13:26:39.270 に答える
8

以前のすべての回答で問題が解決したようです。もう 1 つのポイント: の代わりにpd.set_option('option_name')、(auto-complete-able) を使用できます。

pd.options.display.width = None

Pandas のドキュメントを参照してください:オプションと設定:

オプションには、大文字と小文字を区別しない完全な「ドット スタイル」の名前があります (例: 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使用されます。Python/ IPythonが端末で実行されている場合、これを 0 に設定できます。pandas は端末の幅を正しく自動検出し、すべての列が垂直方向に収まらない場合に小さい形式に切り替えます。IPython ノートブック、IPython qtconsole、または IDLE はターミナルで実行されないため、正しい自動検出を行うことができません。'<code>None' 値は無制限を意味します。[強調は原文にはありません]__repr__()to_string()info()

パラメータの場合width:

文字単位の表示幅。Python/IPython がターミナルで実行されている場合、これを設定するNoneと、パンダは幅を正しく自動検出します。IPython ノートブック、IPython qtconsole、またはIDLEは端末で実行されないため、幅を正しく検出できないことに注意してください。

于 2018-03-23T16:52:02.203 に答える
2

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

for col in df.columns: 
    print(col) 
于 2019-05-21T16:23:00.493 に答える
0

厳密に言えば答えではありませんが、、 、またはdf.describe().transpose()ができることを覚えておきましょう。df.head(n).transpose()df.tail(n).transpose()

また、ヘッダーが構造化されていると、ヘッダーを列として読みやすくなります。

header1_xxx,

header2_xxx,

header3_xxx,

転置後に縦スクロールが必要な場合は、端末とアプリケーションが縦スクロールをより自然に処理できると思います。

ヘッダーは通常、その値よりも大きく、すべてを 1 つの列 (インデックス) に含めることで、テーブルの合計幅への影響を最小限に抑えます。

最後に、他の df 記述も同様にマージできます。考えられるアイデアは次のとおりです。

def df_overview(df: pd.DataFrame, max_colwidth=25, head=3, tail=3):
    return(
        df.describe([0.5]).transpose()
        .merge(df.dtypes.rename('dtypes'), left_index=True, right_index=True)
        .merge(df.head(head).transpose(), left_index=True, right_index=True)
        .merge(df.tail(tail).transpose(), left_index=True, right_index=True)
        .to_string(max_colwidth=max_colwidth, float_format=lambda x: "{:.4G}".format(x))
    )
于 2022-01-28T19:00:41.710 に答える