1. ホーム
  2. パイソン

[解決済み】Pandas DataFrameのより多くの列を見るために出力表示を拡大する方法は?

2022-03-23 02:41:21

質問

インタラクティブモード、スクリプト実行モードのどちらかで、出力の表示幅を広げる方法はないでしょうか?

具体的には describe() 関数で、Pandasの 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 ウィンドウを大きくしたり、quot;Configure IDLE"の幅オプションを増やしたりしましたが、効果がありません。

私がPandasを使用する目的は describe() は、基本的なデータ操作や調査を行うために、Stataのような2つ目のプログラムを使うのを避けるためです。

どのように解決するの?

アップデート:Pandas 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) - 指定されたオプションの値を設定する

利用可能なオプション
表示[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、precision、width]。
モード:[sim_interactive, use_inf_as_null].

パラメータ
----------
pat - 1つのオプションにマッチする str/regexp.

注意: 便宜上,部分マッチもサポートされていますが,その場合は
完全なオプション名 (例: *x.y.z.option_name*) を使用すると、将来的にコードが壊れる可能性があります。
のバージョンで、似たような名前の新しいオプションが導入された場合。

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

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

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

display.chop_threshold。[デフォルト:なし] [現在:なし]
float または None
        フロート値に設定された場合、与えられたしきい値より小さいすべてのフロート値
        は、repr や friends では正確に 0 として表示されます。
display.colheader_justify。[デフォルト:右] [現在:右]。
: '左'/'右'
        DataFrameFormatter で使用される、列ヘッダーの両端揃えを制御します。
display.column_space。[デフォルト: 12] [現在: 12]記述がありません。

display.date_dayfirst。[デフォルト: False] [現在: False] 説明はありません。
: boolean(ブーリアン
        True の場合、日付を日付けから順に表示、解析します(例:2005/01/20)。
display.date_yearfirst。[デフォルト: False] [現在: False] です。
: boolean(ブーリアン
        True の場合、2005/01/20 のように年を優先して日付を表示・解析します。
display.encoding。[デフォルト:UTF-8] [現在:UTF-8]。
: str/unicode
        デフォルトは、コンソールで検出されたエンコーディングです。
        to_stringが返す文字列に使用するエンコーディングを指定する。
        これらは一般にコンソールに表示されることを意図した文字列である。
display.expand_frame_repr: [デフォルト: True] [現在: True] です。
: boolean
        幅の広いDataFrameに対して、DataFrame reprの全容を出力するかどうか。
        を複数行にまたがる場合、`max_columns`は引き続き尊重されますが、出力は
        幅が `display.width` を超える場合、複数のページにわたって折り返されます。
display.float_format。[デフォルト: なし] [現在: なし] 。
: callable
        callableは浮動小数点数を受け取り、その値を返す必要があります。
        を文字列で返します。これは
        のように、SeriesFormatter のような場所で使用されます。
        例として core.format.EngFormatter を参照してください。
display.height。[デフォルト: 60] [現在: 1000] です。
: int
        非推奨。
        (非推奨。代わりに `display.height` を使用する。)

display.line_width: [デフォルト: 80] [現在: 1000].
: int
        非推奨。
        (非推奨。代わりに `display.width` を使用する。)

display.max_columns: [デフォルト: 20] [現在: 500] です。
: int
        max_rows と max_columns は、__repr__() メソッドで使用され、以下のように決定されます。
        to_string() または info() を使用してオブジェクトを文字列に変換します。 この場合
        python/IPythonがターミナルで実行されている場合、これを0に設定するとPandasは
        は、ターミナルの幅を正しく自動検出し、より小さな
        の形式は、すべての列が縦に収まらない場合に使用します。IPythonのノートブックです。
        IPython qtconsoleやIDLEはターミナルで実行されないため、以下のような問題があります。
        は正しく自動検出することができません。
        None'値は無制限を意味します。
display.max_colwidth: [デフォルト: 50] [現在: 50].
: int
        のReprにおける列の最大幅を文字数で指定する。
        Pandasのデータ構造です。カラムがオーバーフローした場合、"..."
        のプレースホルダが出力に埋め込まれます。
display.max_info_columns: [デフォルト: 100] [現在: 100]
: int
        max_info_columnsはDataFrame.infoメソッドで使用され、以下のように決定されます。
        を表示します。
display.max_info_rows。[デフォルト: 1690785] [現在: 1690785] です。
: int または None
        max_info_rowsは、フレームが
        コンソールに報告する際に、そのカラムのヌルチェックを行います。
        デフォルトは1,000,000行です。従って、DataFrameが1,000,000行以上ある場合
        1,000,000行のNULLチェックは行われません。
        列が表示され、その結果、表現にかかる時間が大幅に短縮されます。
        をインタラクティブセッションで表示します。Noneの値は、常に
        は、NULLチェックを行います。
display.max_rows。[デフォルト:60] [現在:500]。
: int
        Pandas が印刷する際の最大行数を設定します。
        を出力する。例えば、この値 

古いバージョン情報です。その多くは非推奨となっています。

として @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」オプションは、各カラムの切り捨てられないフォームを見るのに役立ちます。