

pandas.DataFrame は表形式のデータを扱うのに便利である。
CSVやEXCELのデータを取り込んで、プログラムで集計加工ができる。
しかしときには処理を作りながら処理途中のデータを見たいことがある。
print(df)
そんなときはこのように print を使うのだが、データの量や項目数が多い場合、表示しきれずに省略されてしまう。
確認したい内容が含まれていればよいが、省略された方に確認したい内容が含まれていると処理内容が正しいのか間違っているのか確認できずにとても困る。
列や行を省略せずに表示するにはどうしたら良いのか。
そこで今回はpandas.DataFrameのprintで列や行を省略せずに表示する方法について紹介する。
この記事を書いている人

記事を読むメリット
pandas.DataFrameのprintで列や行を省略せずに表示する方法がわかり、pandasを使ったプログラムのデバッグに困らなくなる
データ準備

DataFrameにするデータをまず用意する。
今回は意図的に省略を起こすので、20列80行くらいのCSVデータを用意し、以下の内容のCSVを pandas_print_all.csv として保存する。
CSV
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
そしてpandas.DataFrameとして read_csv() で読み込み、 print してみる。
DATA
import pandas as pd
df1 = pd.read_csv("pandas_print_all.csv")
print(df1)
# col1 col2 col3 col4 col5 ... col16 col17 col18 col19 col20
# 0 1 2 3 4 5 ... 16 17 18 19 20
# 1 1 2 3 4 5 ... 16 17 18 19 20
# 2 1 2 3 4 5 ... 16 17 18 19 20
# 3 1 2 3 4 5 ... 16 17 18 19 20
# 4 1 2 3 4 5 ... 16 17 18 19 20
# .. ... ... ... ... ... ... ... ... ... ... ...
# 74 1 2 3 4 5 ... 16 17 18 19 20
# 75 1 2 3 4 5 ... 16 17 18 19 20
# 76 1 2 3 4 5 ... 16 17 18 19 20
# 77 1 2 3 4 5 ... 16 17 18 19 20
# 78 1 2 3 4 5 ... 16 17 18 19 20
# [79 rows x 20 columns]
行も列も5つ表示して省略された。
このデータを使って解説する。
pandas.DataFrameのprintで列や行を省略せずに表示する方法

まずpandas.DataFrameのprintできる行数や列数を確認するには pandas.options.display.max_rows や pandas.options.display.max_columns を確認する。
SAMPLE
print("pd.options.display.max_rows")
print(pd.options.display.max_rows)
print("pd.options.display.max_columns")
print(pd.options.display.max_columns)
# pd.options.display.max_rows
# 60
# pd.options.display.max_columns
# 0
pandas.options.display.max_rows が 60 行。
pandas.options.display.max_columns は 0 となっているが、これは設定された画面幅に収まる範囲で表示という意味である。
そしてpandas.DataFrameのprintで列や行を省略せずに表示するには、pandas.set_option を用いる。
SAMPLE
pd.set_option('display.max_rows', 500)
print(df1)
# col1 col2 col3 col4 col5 ... col16 col17 col18 col19 col20
# 0 1 2 3 4 5 ... 16 17 18 19 20
# 実際は表示されているがブログが長くなるので中略
# 64 1 2 3 4 5 ... 16 17 18 19 20
# 65 1 2 3 4 5 ... 16 17 18 19 20
# 66 1 2 3 4 5 ... 16 17 18 19 20
# 67 1 2 3 4 5 ... 16 17 18 19 20
# 68 1 2 3 4 5 ... 16 17 18 19 20
# 69 1 2 3 4 5 ... 16 17 18 19 20
# 70 1 2 3 4 5 ... 16 17 18 19 20
# 71 1 2 3 4 5 ... 16 17 18 19 20
# 72 1 2 3 4 5 ... 16 17 18 19 20
# 73 1 2 3 4 5 ... 16 17 18 19 20
# 74 1 2 3 4 5 ... 16 17 18 19 20
# 75 1 2 3 4 5 ... 16 17 18 19 20
# 76 1 2 3 4 5 ... 16 17 18 19 20
# 77 1 2 3 4 5 ... 16 17 18 19 20
# 78 1 2 3 4 5 ... 16 17 18 19 20
SAMPLE
pd.set_option('display.max_rows', 500)
print(df1)
# col1 col2 col3 col4 col5 ... col16 col17 col18 col19 col20
# 0 1 2 3 4 5 ... 16 17 18 19 20
# 実際は表示されているがブログが長くなるので中略
# 64 1 2 3 4 5 ... 16 17 18 19 20
# 65 1 2 3 4 5 ... 16 17 18 19 20
# 66 1 2 3 4 5 ... 16 17 18 19 20
# 67 1 2 3 4 5 ... 16 17 18 19 20
# 68 1 2 3 4 5 ... 16 17 18 19 20
# 69 1 2 3 4 5 ... 16 17 18 19 20
# 70 1 2 3 4 5 ... 16 17 18 19 20
# 71 1 2 3 4 5 ... 16 17 18 19 20
# 72 1 2 3 4 5 ... 16 17 18 19 20
# 73 1 2 3 4 5 ... 16 17 18 19 20
# 74 1 2 3 4 5 ... 16 17 18 19 20
# 75 1 2 3 4 5 ... 16 17 18 19 20
# 76 1 2 3 4 5 ... 16 17 18 19 20
# 77 1 2 3 4 5 ... 16 17 18 19 20
# 78 1 2 3 4 5 ... 16 17 18 19 20
このように pandas.set_option を使うことで表示する行数や列数を変更できた。
まとめ

今回はpandas.DataFrameのprintで列や行を省略せずに表示する方法について紹介した。
ポイントは以下の通り
ココがポイント
- 表示できる行や列の数を確認するには
pd.options.display.max_columnsやpd.options.display.max_rowsをprintすると確認できる - 列や行を省略せずに表示するには
pd.set_optionでdisplay.max_rowsやdisplay.max_columnsを変更する
他にもpandas関連の記事もあるので、もし気になるものがあれば見てみて欲しい。



