chakokuのブログ(rev4)

テック・コミック・DTM・・・ごくまれにチャリ

Python In Excelを使ってみる

背景:確定申告の時期となった。2024年度どれだけ部品代やら書籍代を支払ったかを振り返る(集約する)
課題:Excelマクロに詳しい人はピボットテーブルとかを駆使して、支払先別の円グラフとか簡単に書けるのだろうけど、マクロ全く分からない
取り組み:Python In Excelで支払先別の集計をやってみた。
詳細:

Python in Excelのプログラミングモデルが全く分からない。まずはセルをどうやって読み込むのか?から分からなかった。どうもPython In ExcelはPandasを基本としているようで、まずはセルをPandasのDataFrameとして読み込んでPandasの行列計算を駆使して欲しい値を得るようであった。Pandasも普段は使っていないのでよく分からず。
とりあえず、へなちょこなプログラムで、支払先集計をやってみた。金額は赤裸々なので控えさせていただくとして。。

df = xl("D2:E62")                    # read cell data as dataframe
targets = df.iloc[:, 1].values   # get target columns
uq_targets = np.unique(targets)  # make unique list
#print(uq_targets)
tgt_lst={}                                # target-payment dictionary
for tgt in uq_targets:
    tgt_lst[tgt] = 0                  # set default value 0
for row in df.iterrows():
    pay = row[1][0]
    target = row[1][1]
    # print(target, pay)
    tgt_lst[target] += pay     # add payment  according to target
print(tgt_lst)
0                                 # dummy return value

Excelシートに円グラフが出たらクールですが、今の時点では実行結果エリアにprint文で表示されるのみ

{'AK': xx180, 'AL': xx443, 'AM': xx139, 'AP': xx580, 'CA': xx430, 'DG': xx090, 'GG': xx986, 'IPSJ': xx800, 'JK': xx740, 'MS': xx829, 'SF': xx661, 'SW': xx603, 'TK': xx767}

Python in Excel
Copy&Pasteでセルに貼り付けて円グラフにしてみた。結果、Amazon(書籍代とかパーツ類とか)が一番支払額が大きかった。本代は積もり積もってじわじわと効いてくるのであった。。本代と同等の知恵を得たとは思えない。。