出力表示を拡張して、パンダ データフレームの列をさらに表示するにはどうすればよいですか?

StackOverflow https://stackoverflow.com//questions/11707586

質問

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

具体的には、私が使用しているのは、 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」オプションは、各列の切り詰められていない形式を確認するのに役立ちます。

TruncatedColumnDisplay

他のヒント

これを試してみてください:

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])
.

docs for v0.18.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

の設定

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top