【Python/Pandas】書式設定を制御してExcelに出力【StyleFrame】

pandas

本記事では、PythonのライブラリであるpandasからExcelファイルへ出力する際に、セル内改行や行または列の幅などを指定して出力する方法について説明します。

1. StyleFrameの準備

StyleFrameというライブラリを利用することでpandasto_excelによって作成されるExcelファイルの書式を制御できます。

以下のようにコンソールからStyleFrameをインストールします。

pip3 install StyleFrame

続いて、Pythonのコンソールから以下のようにimportします。

from styleframe import StyleFrame, Styler, utils

これにより、引数の関数の実行前後に処理を追加することができます。

2. 列の幅を指定してExcelに出力する

列の幅を指定する場合を例に、StyleFrameを利用する方法を示します。

# with構文でStyleFrameからファイルを開きます
with StyleFrame.ExcelWriter(f"summary.xlsx") as writer:
  	# 出力したいpandasのdataframeをStyleFrameオブジェクトに変換します
	sf = StyleFrame(df)
    
    # 列番号とその列の幅を以下のように指定します(一番左の列の番号は1から始まることに注意します)
	sf.set_column_width(columns=[1], width=14)
	sf.set_column_width(columns=[2, 3], width=80)
    
    # Excelファイルとして書き出します。
	sf.to_excel(writer, sheet_name='test', index=False)

3. セル内で改行させる

pandasのdataframeの各セルに/nを含めてto_excelをし、得られたファイルをExcelから開いても/nの部分は改行されずに表示されてしまいます。

/nの部分で改行された状態で表示させるためには、以下のようにStyleFrameを利用します。

# with構文でStyleFrameからファイルを開きます
with StyleFrame.ExcelWriter(f"summary.xlsx") as writer:
  	# 出力したいpandasのdataframeをStyleFrameオブジェクトに変換します
	sf = StyleFrame(df_pred_105)
    
    # 改行させるStyle objectを作成しておきます。
    wrap_text_style = Styler(wrap_text=True)
    
    # 列名を指定し、その列に対して上記のStyleを指定することで、該当列の/nが有効になります。
	sf.apply_column_style(cols_to_style=['列1', '列2'], styler_obj=wrap_text_style)
    
    # Excelファイルとして書き出します。
	sf.to_excel(writer, sheet_name='test', index=False)

3. まとめ

本記事ではStaleFrameを利用したPythonのPandasからExcelの書式まで指定して出力する方法を示しました。

以上になります。

コメント