【Pandas】Pandasの集計結果をEXCELファイルに書き込む方法 .no.36



こんにちは、まゆみです。

Pandasの記事をシリーズで書いています。

今回は第36回目になります。

前回の記事では、CSVファイルに書き込む方法を解説させていただきました。

今回の記事では、Pandasの集計結果をEXCELファイルに書き込む方法を解説していこうと思います。

ではさっそく始めていきますね。

EXCELファイルをPandasで扱う時に必要なライブラリー

EXCELファイルを扱うには『xlrd』と『openpyxl』というライブラリーが必要なので、こちらをインストールしていない人はこちらの記事にインストール方法を書いています。

今回使うデータ

前回の記事で使ったデータと同じセントラルパークのリスについてのデータを使います。

.read_csv()で読み込むと下記のようになります。

『Primary Fur Color』(主な毛の色)というコラムを分類分けした結果(グレー、ブラック、シナモン色に分類できる)をEXCELの別々のワークシートにそれぞれ取り出してみましょう

df["Primary Fur Color"] == "Gray"

で、Primary Fur Color の値がGray になっているものが、『True』そうでないものが『False』として返されるので(下記参考)

このbooleanのデータを使って、dataframeからGray がTrue のrow のみを抜き出します

df[df["Primary Fur Color"] == "Gray"]

これをgrayという変数に代入しました。

同様にして、black とcinnamon でもそれぞれの値を別々に取り出して変数に代入しました。

Excel ファイルに分けて書きたい物が揃ったところで、さっそくPandasの.to_excel()メソッドのドキュメントを見てみましょう

.to_excel()メソッドを使う時に必要なパラメーター


引用元:Pandasドキュメント

まず、最初に必要なのが、『ExcelWriter オブジェクト』になります。

Series やDataFrameを作るのと同じ要領で、ExecelWriter クラスからオブジェクトを作りましょう

ExcelWriter クラスからオブジェクトを作る

pd.Excelと打ち込んだ時点で『Tab』キーを押せば候補を出してくれます(下のスクショ参考)

その中の『ExcelWrite』クラスからオブジェクトを作り、好きな変数に代入します。

パラメーター『sheet_name』

excelファイルの一番下は

こんな風になっていますが、.to_excel()のパラメーターsheet_name を使うと、ワークシートに名前を付けることができます。

それぞれのワークシートを

Gray Squirrels

Black Squirrels

Cinnamon Squirrels

と名前を付けました。

パラメーターindex をTrue にするかFalse にするかは、数字のインデックスを一番前に入れたいかどうかです。

詳しくはこちらに書いてますので、参考にどうぞ

.save()

今の時点でコードを実行しても、カレントフォルダーには、エクセルファイルはできていません。

最後、『.save()』でファイルを保存します

.save()はExcelファイルにエクスポートしたいものの処理が全て終わってから最後にします。

.save()が終わればカレントフォルダー内に、ExcelWriterオブジェクトを作る時につけたファイル名がついたエクセルファイルができているはずです。

エラーが起こる場合もある

以上のプロセスで上手くいく場合もいますが、エラーが出る場合もあります。

原因により、色んな解決方法があると思いますが、私の調べた方法を書いておきますね。


引用元:stackoverflow

無事、ダウンロードしてExcelファイルに毛色で分けたデータを書き出すことができました。

『全てのコラムは要らない。AgeとPrimary Fur Colorのみエクセルファイルに書き出したい』っていう人は、

to_excel(columns= ["コラムA", "コラムB"])

と.to_excel()のパラメーターcolumnsにリスト型で引数を渡して下さい。

Gray Squirrels タブのデータのみ、毛色と年齢のコラムのみにしてみました。

まとめ

今回の記事はこれくらいで終わりにします。

前回扱った、CSVに書き出す方法より少し複雑になります。

でもエクセルファイルに書き出す方が断然見やすいデータになりますよね。

この記事があなたのお役に立てれば幸いです。