PythonでExcel作業効率化

Excel作業の効率化とは

複数のExcelファイルにあるデータを集計する業務があったとします。
手動で行うには、Excelを起動して1ファイルずつ開いて集計する必要がありますが、Excelファイルを開くこと自体に時間がかかるし、手間がかかります。

そこで、1つ1つのExcelファイルを手動で開かずに、pythonプログラムで自動で集計してしまおうということを試みます。

PythonでExcelを扱うには

Pythonのライブラリである「OpenPyXL」と「Pandas」を使って、Excel操作や表集計の作業を自動化します。

OpenPyXLExcelの読み書きをPythonで行うためのライブラリで、Excelのシートやセルの操作を行う
PandasPythonでのデータ分析ライブラリで、表形式の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形式で保存するというシンプルな処理をしてみました。次回以降はもう少し複雑な処理やデータ分析をしてみたいと思います。

コメント

タイトルとURLをコピーしました