データの準備
必要なデータは以下のURLからダウンロードします。(t22205.zip)
本の中ではAnacondaを使用していますが、VSCでやってみます。
anacondaは
https://www.anaconda.com/ からdownloadボタンで入手できます。
ケース2:結合編 複数のファイルを結合して数値データを集計し、グラフをExcelファイルに張り付けてレポート化
0.各支店の予定管理表が「rawdata」フォルダに保存されている。
1.各支店の売上目標と売上実績の合計値を算出する。
2.データから各支店の達成率を算出する。
3.達成率を降順に並び替える。
4.データからグラフを作成し、outputフォルダに保存する。
1.各支店の売上目標と売上実績の合計値を算出する。
ライブラリとモジュールのimportは以下の通りです。
Excelを操作するため、openpyxlをimportします。
グラフ画像ファイルをExcelに張り付けるため、openpyxl.drawing.imageモジュールからImageメソッドをimportします。こうすることでモジュール名を記入しなくて使用できます。
globはpythonの標準ライブラリでファイル名を取得する場合に使用します。
文字化けしないように、japanize_mathplotlibをimportします。
次にパスの設定と、rawdata内のファイル名をbranch_name変数に取得します。
globモジュールのglobメソッドで取得します。
変数の内容を確認します。5つの支店のファイルが確認できます。
実行結果
['lesson/Case02/rawdata\\大阪支店.xlsx', 'lesson/Case02/rawdata\\札幌支店.xlsx', 'lesson/Case02/rawdata\\東京支店.xlsx', 'lesson/Case02/rawdata\\横浜支店.xlsx', 'lesson/Case02/rawdata\\福岡支店.xlsx']
DataFrameを作成し、concatですべてのファイルデータを結合し一つのデータ(df_all)にします。rawdataフォルダ内のExcelファイルを開いたまま実行するとPermissionErrorになるかもしれませんのでExcelファイルは閉じておきます。
「index_col=0で0列目をインデックスに使用します。」という意味になります。
index_colを省略すると一番左の列にインデックス(0,1,2,…)が割り振られます。(default)
groupbyメソッドを使用して支店ごとに売上目標と売上実績を集計します。
sumメソッドで支店ごとの売上目標と売上実績の合計値を集計します。
実行結果
売上目標 売上実績
支店
大阪 455000 433791
札幌 264000 262444
東京 415000 419145
横浜 387000 384040
福岡 198000 191967
2.データから各支店の達成率を算出する。
支店ごとの達成率を計算します。
3.達成率を降順に並び替える。
sortを利用して降順に並び替えます。ascending=Trueで昇順、Falseで降順にsortします。
実行結果
売上目標 売上実績 達成率
支店
東京 415000 419145 1.009988
札幌 264000 262444 0.994106
横浜 387000 384040 0.992351
福岡 198000 191967 0.969530
大阪 455000 433791 0.953387
4.データからグラフを作成し、outputフォルダに保存する。
outputフォルダを作成し、作成したグラフを保存します。
達成率を金色の〇でプロットします。線は無しです。linestyle='solid'と指定すると〇が戦で結ばれて表示されます。secondary_yでグラフの右側に表示するメモリの単位を指定します。
plotメソッドでグラフを作成します。
kind='bar'で棒グラフを示しています。
color='bm'で blueとmagentaを使用することを表しています。
axはサブプロットとして合わせるグラフを指定します。1つのプロットに複数のグラフを表示させることができます。
get_figureメソッドでオブジェクトに変換し、df_graph変数に格納しています。
savefigメソッドで画像を保存します。
実行結果(graph.png)
4.データからグラフを作成し、outputフォルダに保存する。
達成率.xlsxファイルをoutputフォルダ下に作成します。
グラフをエクセルに張り付けます。
達成率.xlsxファイルをload_workbookメソッドで読み込み、workbook変数に格納します。次に使用するワークシートを指定します。0は一番最初のシートを意味します。
Imageメソッドで画像のオブジェクトを生成しています。
add_imageで画像を追加します。追加する位置はエクセルの「F1」からとしています。
saveメソッドでworkbookをエクセルとして保存しています。
実行結果