Excel作業の効率化とは
複数のExcelファイルにあるデータを集計する業務があったとします。
手動で行うには、Excelを起動して1ファイルずつ開いて集計する必要がありますが、Excelファイルを開くこと自体に時間がかかるし、手間がかかります。
そこで、1つ1つのExcelファイルを手動で開かずに、pythonプログラムで自動で集計してしまおうということを試みます。
PythonでExcelを扱うには
Pythonのライブラリである「OpenPyXL」と「Pandas」を使って、Excel操作や表集計の作業を自動化します。
OpenPyXL | Excelの読み書きをPythonで行うためのライブラリで、Excelのシートやセルの操作を行う |
Pandas | Pythonでのデータ分析ライブラリで、表形式の2次元データの変換や加工を行う |
サンプルプログラム
あるディレクトリにあるExcelファイルを全部開いて、csv形式で保存し、すべてのExcelファイルの表を結合した表を作成して集計するPythonプログラム。
import glob
import pandas as pd
import openpyxl
openpyxl.reader.excel.warnings.simplefilter('ignore')
file_list = glob.glob("sagyo/all/*.xlsx")
df_result = pd.DataFrame([])
#print(file_list)
for input_file in file_list:
print(input_file)
df = pd.read_excel(input_file, sheet_name=1, engine="openpyxl")
df_result = pd.concat([df_result, df], axis=0)
output_file = "sagyo/all/"+input_file.split("/")[-1].split(".")[0] + ".csv"
# print(output_file)
df.to_csv(output_file)
df_result = df_result.dropna(subset=['担当者名'])
output_file = "sagyo/all/result.csv"
print(output_file)
df_result.to_csv(output_file)
df_pivot = df_result.pivot_table(values=['作業時間\n(h)'], index=['作業工程'], aggfunc='sum', margins=True)
print(df_pivot)
今回は複数のExcelファイルを開いて結合してCSV形式で保存するというシンプルな処理をしてみました。次回以降はもう少し複雑な処理やデータ分析をしてみたいと思います。
コメント