MENU

【Python×自動化】もう疲れない!PythonでExcelの面倒な作業を自動化する基本

  • URLをコピーしました!

Excelの画面は見やすいですが、
マウス操作が多くて、少し疲れませんか?

たとえば、毎日同じデータを集計したり、
コピー&ペーストで資料を整理したりする作業は、
手作業だと意外と大きな時間がかかります。

そこで、Pythonの出番です。
Pythonを使えば、Excelの操作もプログラムで簡単に行えます。
1度作ってしまえば、毎日の作業は数秒で完了するようになるでしょう。

この記事では、PythonでExcelを扱う基本を解説し、
簡単な自動化例も紹介していきます。

日々の面倒な作業はプログラムにお任せして、
定時帰宅を目指す効率化の第一歩を踏み出しましょう!

目次

PythonでExcelを扱うための準備

まずは、PythonからExcelファイルを操作するための準備を整えましょう。
手順はとても簡単です。

必要なライブラリ

Excel操作で初心者におすすめなのは、以下の2つです。

  • pandas
    データの読み込み・集計・加工が簡単にできる、Pythonで最も便利なライブラリです。
  • openpyxl
    Excelファイル(.xlsx形式)の読み書きに対応しています。

ライブラリのインストール

Pythonにライブラリを追加するには、pip コマンドを使います。
ターミナルやコマンドプロンプトで以下を実行してください。

pip install pandas openpyxl

インストールの確認

インストールができたか確認してみましょう。
下記のcheck_install.pyのコードファイルを作成して実行していきます。

import pandas as pd
import openpyxl

print("pandas version:", pd.__version__)
print("openpyxl version:", openpyxl.__version__)

ファイルを作ったら、pipの時と同じようにコマンドで実行します。
それぞれのバージョン番号が表示されたら、インストールは成功です。

Excelデータの読み込みと確認

準備が整ったら、さっそくExcelファイルをPythonで読み込んでみましょう。
まずはデータを確認することが、後の自動化作業をスムーズに進めるポイントです。

import pandas as pd

# Excelファイルを読み込む.
df = pd.read_excel('sample.xlsx')

# データの確認.
print(df.head())
sample.xlsx
  • pd.read_excel() でExcelファイルを読み込めます
  • df はデータフレームと呼ばれる表形式のデータ構造です
  • head() で最初の5行を表示し、列名やデータの中身を確認できます

複数のシートがある場合はsheet_name='シート名' で、どのシートを処理するかを指定できます。

df = pd.read_excel('sample.xlsx', sheet_name='売上データ')
うー

まずはExcelのデータが読み込めたらOK!
これからいじるデータの中身を確認することは大事ですよ~

Excelデータの編集・整形

Excelファイルを読み込めたら、次はデータの中身を整理・加工してみましょう。
Pythonでは、手作業で行っていた並べ替え・抽出・計算などを一瞬で処理 できます。

列の抽出

たとえば、Excel上で「商品名と単価だけを残したい」場合、次のように書けます。

import pandas as pd

# Excelファイルを読み込む.
df = pd.read_excel('sample.xlsx')

# 商品名と単価の列だけ抽出.
df_selected = df[['商品名', '単価']]
print(df_selected.head())

実行結果:

Excelで必要な列だけコピーする作業も、Pythonなら数行で完結です。

並べ替え(ソート)

値の高い順 or 低い順に並べ替えたい場合には、sort_values() を使います。
「単価」が高い順にデータを並べ替えていきます。

import pandas as pd

# Excelファイルを読み込む
df = pd.read_excel('sample.xlsx')

# 単価の高い順に並び替え.
df_sorted = df.sort_values('単価', ascending=False)
print(df_sorted.head())

実行結果:

うー

売上を小さい順にしたいときは、
ascending=Falseをascending=Trueに変えてみよう!

データの加工(計算・列の追加)

「単価 × 販売個数」で売上を計算したい場合も、エクセル上に数式を書かずに簡単に実装できます。
新しく”売上”の列を追加して、計算結果を入れていきましょう。

import pandas as pd

# Excelファイルを読み込む
df = pd.read_excel('sample.xlsx')

# 売上の計算.
df['売上'] = df['単価'] * df['販売個数']
print(df.head())

実行結果:

一番右側の列に売上として、計算結果が追加されてますね。

行の抽出

必要な行だけを抽出するのも、たった1つのコマンドでできます。
販売個数が0より大きい項目だけ残してみましょう。

import pandas as pd

# Excelファイルを読み込む
df = pd.read_excel('sample.xlsx')

# 販売個数が0より大きい行を抽出.
df_selected = df[df['販売個数'] > 0]
print(df_selected)

実行結果:

うー

データが多いときに目で見て探してると時間かかるよね~。
そういったものこそ、プログラムに任せよう!

Excelファイルの保存

ExcelをPythonで扱うとき、
最後に必要なのが 「編集したデータをファイルとして保存する」 ステップです。

保存コマンドはdf.to_excel("出力ファイル名.xlsx", index=False)です。

index=Falseは行番号も出力するかの設定です。
ほとんどの場合、不要なのでFalseにしましょう。

import pandas as pd

# Excelファイルを読み込む.
df = pd.read_excel('sample.xlsx')

# Excelファイルに保存.
df.to_excel("output.xlsx", index=False)
出力結果:output.xlsx
うー

セルの色や書式は引き継がれないけど、
見た目まで自動化したいなら openxylが便利!

サンプル:30分かかる作業を10秒で自動化

ここまでの内容を組み合わせると、
「Excelを開いて → 整形して → 保存する」 一連の作業を、
たった数行のPythonコードで自動化できます。

たとえば、毎日次のような手順で販売履歴のデータから売上を整理していたとします。

  1. 売上の計算
  2. 売上が0の行を削除
  3. 売上が大きい順に並べ替える
  4. 商品名と売上のみを抽出
  5. 新しいファイルとして保存

作業自体は少ないですが、データを目で探したり、
手作業で整理したりするのって、地味に時間かかりますよね。

Pythonを使うと以下のコードを実行して、待つだけです。
データがどんなに多くなっても、同じです!

import pandas as pd
from datetime import datetime

# Excelファイルを読み込む.
#df = pd.read_excel('販売履歴.xlsx')
df = pd.read_excel('sample.xlsx') # テスト用.

# 売上の計算.
df['売上'] = df['単価'] * df['販売個数']

# 売上が0の行を削除(0より大きい行を抽出).
df = df[df['売上']>0]

# 売上が大きい順に並べ替え.
df_sorted = df.sort_values('売上', ascending=False)

# 商品名と売上のみを抽出.
df_selected = df_sorted[['商品名', '売上']]

# 日付をつけたファイル名で保存.
today = datetime.now().strftime("%Y%m%d")
output_file = f"売上整理_{today}.xlsx"
df_selected.to_excel(output_file, index=False)
sample.xlsxでのテスト結果
うー

一度作ったら、何度も使えて何度も楽できるのは良いですよね。
プログラムを学んだ人の特権ですよ!

まとめ

今回は、Pythonを使った簡単なExcel操作について紹介しました。
たった数行のコードで手作業がなくなる点は、とても魅力的でしたね。

皆さんの周りにも、毎日繰り返している面倒な作業はありませんか?
たとえ1日10分の作業でも、1年を通せば 40時間以上の短縮 になります。
小さな作業でも、自動化しておくと大きな効果が得られるでしょう。

次は、WindowsのタスクスケジューラJenkinsなどの「CI(継続的インテグレーション)」ツールを
導入することで、今回作成したプログラムの実行すら自動にするのも良いでしょう。
そこまで行くと、朝出勤したら作業が終わってる状況も作れますね。

面倒ごとは、機械にお任せ!仕事の全自動化を目指していきましょう!

うー

出勤して数分で作業完了…あとは仕事するフリでいいとか…最高ですな!

おわり

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次