見出し画像

販売額リストから担当者別の金額に計算するPythonプログラム

こんにちは

今日はPythonを使用しての計算プログラムを作成してみました。
エクセルを扱う実験ということでお付き合いください。

例えばこんなデータがあったとします。

画像1

今回はこのデータからPythonを使用して、
担当者別での受注金額を集計したいと思います。

1. 準備

最初にtkinter、openpyxl、pandas、csvのライブラリをインストールします。
私はanacondaなので、コマンドプロンプトから

conda install ライブラリ名

で追加していきます。

2. コードの流れ

流れとしては以下です。
・販売額リストのエクセルファイル読み込み
・シート名:SellData を読み込む
・"担当者名"、"受注金額"の列をそれぞれ合計する
・結果を"out.csv"として出力

3. 実際に計算させてみた

テストデータを作成して計算させた結果がこちら

画像2

テストデータをCOUNTIF、SUMIF関数を使って計算した結果がこちら

画像3

プログラムの計算と合ってました。

4. コードの紹介

以下がコードになります。

import tkinter as tk
import tkinter.filedialog
import openpyxl
import pandas as pd
import csv

#エクセルの読み込み、書き込み、保存
def openFile(event):
   fileType = [("excel", "*.xlsx")]
   iDir = "/Users/Desktop/"
   filePath = tkinter.filedialog.askopenfilename(filetypes = fileType, initialdir = iDir)
   wb = openpyxl.load_workbook(filePath)

   # エクセルファイルの取り込み
   df = pd.read_excel(wb, sheet_name="SellData", engine="openpyxl")

   # 担当者名でグループ化
   grouped = df.groupby("担当者名").agg({"担当者名": "count", "受注金額": "sum"})
   data_columns = ["件数", "合計受注"] #件数、合計受注を表示
   grouped.columns = data_columns

   # 結果を辞書に変換(列ではなく行ごとに変換)
   data_dict = grouped.to_dict(orient='index')
   df = pd.DataFrame.from_dict(data_dict, orient='index').T
   
   df.to_csv('out.csv',encoding='utf_8_sig', sep=',')

   print(df)

   text.insert(tk.END,df)

 #GUIの作成 root = tk.Tk()
root.title("Order_amounts")
root.geometry("300x180")

#テキストボックス
text = tk.Text(height=10, width=34)
text.grid(column=1, row=0, rowspan=1, sticky = 'nsew')
text.place(x=30, y=30)

#イベントを起こすためのボタンの作成
button1 = tk.Button(text = "Open", width = 34)
button1.bind("<Button-1>", openFile)
button1.pack()

#実行
root.mainloop()

諸先輩方に比べるとまだまだPythonで書きはじめて日が浅いですが、役立ちそうなことは上げていきますのでご活用いただければと思います。

アドバイスもお待ちしております。

それでは


この記事が気に入ったらサポートをしてみませんか?