Jupyter notebookで配列を表示すると、途中の列が省略されることがあります。
省略された「・・・」を表示する方法です。
pandasの表示設定
pandasのDataFrameは、表示する最大の列数が初期設定されています。
設定の確認: describe_option()
pandasの表示設定は、describe_option()で確認できます。
import pandas as pd
pd.describe_option()
各種の設定が表示されますが、表示する最大カラム数は、display.max_columns
display.max_columns : int
(省略)
[default: 20] [currently: 20]
default(初期設定): 20列
currently(現在): 20列
初期設定では、20列まで表示され、現在の設定も、20列です。
20列での表示を確認します。
import numpy as np
pd.DataFrame([np.arange(40)])
0 1 2 3 4 5 6 7 8 9 ... 30 31 32 33 34 35 36 37 38 39
0 0 1 2 3 4 5 6 7 8 9 ... 30 31 32 33 34 35 36 37 38 39
1 rows × 40 columns
カラムが最小から10列、最大から10列、最大値の20列まで表示されます。
設定の変更: set_option(‘display.max_columns’, 列数)
表示する最大カラム数は、set_option(‘display.max_columns’, 列数)で変更することができます。
pd.set_option('display.max_columns', 40)
pd.DataFrame([np.arange(40)])
省略されていた「・・・」がすべて表示されていますね。
変更後の表示設定を、describe_option()で確認します。
pd.describe_option()
display.max_columns : int
(省略)
[default: 20] [currently: 40]
currently(現在)の設定が、40列になっています。
numpyの表示設定
numpyは、 表示する最大の要素数が初期設定されています。
設定の確認: get_printoptions()
numpyの表示設定は、get_printoptions()で確認できます。
import numpy as np
np.get_printoptions()
{'edgeitems': 3,
'threshold': 1000,
'floatmode': 'maxprec',
'precision': 8,
'suppress': False,
'linewidth': 75,
'nanstr': 'nan',
'infstr': 'inf',
'sign': '-',
'formatter': None,
'legacy': False}
この設定では、
‘threshold’(しきい値)が 1000なので、表示する要素が1000を超えたときに、
‘edgeitems'(省略時に表示する要素数)が3なので、最小値から3要素、最大値から3要素
が表示され、その間の要素が省略されます。
要素が900とすると、すべての要素が表示されますが、要素が1020のときは、 最小値から3要素、最大値から3要素だけが表示さます。
設定の変更: set_printoptions(threshold=要素数)
表示する最大の要素数は、set_printoptions(threshold=要素数)で変更することができます。
np.set_printoptions(threshold=10)
np.arange(12)
array([ 0, 1, 2, ..., 9, 10, 11])
パラメーターthresholdを1000から10に小さくしました。
要素数が10より大きい12なので、中間の要素が「・・・」で表示されています。
すべての要素を表示するときは、要素数を無限大( np.inf )に設定する。
np.set_printoptions(threshold=np.inf)
np.arange(12)
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
すべての要素が表示されています。
1行に表示: set_printoptions(linewidth=文字数)
要素が増えると、改行して表示されます。
np.set_printoptions(threshold=1000) #デフォルト
np.arange(40).reshape(2, 20)
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19],
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 39]])
linewidth(1行の文字数)のデフォルトは75文字です。
[0 ~ 19]は1行に収まらないので、改行して表示されています。
linwidthを変更して、1行に表示します。
np.set_printoptions(linewidth=200)
np.arange(40).reshape(2, 20)
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39]])
1行200文字で表示されます。
画面に収まらないときは、スクロールバーが設置されます。
まとめ
- 配列の表示設定を確認することができた
- 配列を省略させずに表示させることができた