Kei Minagawa's Blog

皆川圭(@keimina)のブログ、Pythonで試したことを書いていきます

Pandas の DataFrame をエクセルで開く自作関数

表データを可視化したい時、まずエクセルで生のデータを表示したい時があります。これは具体的には「Pandas の DataFrame を Excel で保存し、それを開く」という作業です。この作業を自動化したら、便利だったので、ここに紹介します。

1. 動作環境

OS MacOS Mojave
Python Anaconda 1.6.14 (Python 3.6)

※少なくとも pandas と xlwings が必要です。

2. 作成した関数

def show_excel(df, out_filename='tmp.xlsx'):
    '''
    Parameters
    ----------
        df:
            DataFrame to show

        out_filename:
            Filename of the DataFrame(optional) default 'tmp.xlsx'
    
    Returns:
        None
    '''
    df.to_excel(out_filename)
    app = xw.App(visible=None, add_book=True)
    wb = xw.books.open(out_filename)
    wb.activate(steal_focus=True)

3. 作成した関数の説明

以下を行う関数です。

1. 引数で指定した DataFrame をカレントディレクトリに tmp.xlsx として保存

2. tmp.xlsx を開いて、最前面に持ってくる

4. 実行方法

import pandas as pd
import numpy as np
import xlwings as xw

df = pd.DataFrame(np.arange(15).reshape(5, 3), columns=['x', 'y', 'z'])
show_excel(df)

# エクセルのプロセスを全て終了(kill) する
# [app.quit() for app in xw.apps]

5. 実行結果

実行すると、 エクセルが起動し df の内容が表示されます。

f:id:keimina:20190922105956p:plain
実行結果

6. 注意事項

  • デフォルトでカレントディレクトリの 'tmp.xlsx' が上書き保存されますので注意してください

  • エクセルの新しいプロセスが起動します
  • 起動したエクセルを終了する場合は、プロセスを終了(kill)してください(実行方法は使用方法の一番下のコメントに記載)


以上です。