Pandasでは、デフォルト設定により、DataFrameの行数や列数が多すぎる場合に途中が「…」で省略されて表示されます。
これは出力の見やすさやパフォーマンスを意識した仕様ですが、「すべてのデータを省略せずに表示したい」場合は、表示設定(オプション)を変更することで対応できます。
目次
基本的な対応方法:pd.set_option
で表示設定を変更する
Pandasの表示設定は、pandas.set_option()
を使って変更できます。
よく使うのは以下の3つです。
import pandas as pd
# 行数をすべて表示(Noneは無制限を意味する)
pd.set_option('display.max_rows', None)
# 列数をすべて表示
pd.set_option('display.max_columns', None)
# 各列の幅を最大に(必要に応じて)
pd.set_option('display.max_colwidth', None)
# 出力幅を大きく(特に横長DataFrameに有効)
pd.set_option('display.width', 0) # 自動調整
実行例
import pandas as pd
# サンプルデータ:100行×10列のDataFrame
df = pd.DataFrame([[f'R{r}C{c}' for c in range(10)] for r in range(100)])
# 表示設定を変更
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
print(df)
この設定をすれば、省略されずにすべて表示されます。
一時的に設定を変更したい場合:option_context
の活用
全体に影響を与えず、一部のコードブロック内だけで設定を一時的に適用したいなら、option_context
が便利です。
with pd.option_context('display.max_rows', None, 'display.max_columns', None):
print(df)
このブロックの外では元の設定に戻るため、Notebookや他のコードと干渉せず安全です。
注意点:データ量が非常に多い場合のパフォーマンス
- 数千行以上のDataFrameをすべて表示すると、ターミナルやJupyter Notebookが重くなることがあります。
- 大規模データでは
.to_csv()
や.to_string()
で外部出力した方が現実的な場合もあります。
その他の表示設定オプション
オプション名 | 意味 |
---|---|
'display.max_rows' | 表示する最大行数(None で全行表示) |
'display.max_columns' | 表示する最大列数(None で全列表示) |
'display.width' | 出力幅(デフォルトは80や100) |
'display.max_colwidth' | 列の文字列の最大幅(None で制限なし) |
'display.precision' | 小数点の表示桁数 |
一覧表示したい場合は以下のように確認できます。
pd.describe_option() # 全オプション
pd.describe_option('display') # display関連のみ
応用:Jupyter Notebook での表示が途切れるとき
Notebookでは、display(df)
を使っても省略される場合があります。
そのときは以下のように表示を工夫するとよいです。
from IPython.display import display
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
display(df)
または、以下のようにテキストとして表示
print(df.to_string())
まとめ:省略せず表示したい場合の手順
やること | 方法 |
---|---|
行数を省略したくない | pd.set_option('display.max_rows', None) |
列数を省略したくない | pd.set_option('display.max_columns', None) |
一時的に設定したい | with pd.option_context(...) |
表示が重すぎるときは | .head() , .tail() で部分表示 or .to_csv() |
以上、PandasのDataFrameの表示を省略したくない場合についてでした。
最後までお読みいただき、ありがとうございました。