【Python】Excelのデータを処理してみる

openpyxl

PythonでExcelのデータ処理をどのように行うのか、簡単に解説します。

PythonでExcelのデータ処理をするために…

PythonでExcelのデータを処理するために必要なものは、2つだけです。

  • Pythonの実行環境
  • OpenPyXl

Pythonの実行環境は、本当にさまざまな方法があります。皆様、お好みの環境構築をされていると思いますが、まだされていない方は、Anacondaをインストールして、Jupyter notebookを使うことをお勧めいたします。Anacondaとは、「Python x データサイエンス」のための統合開発環境です。

OpenPyXlとは、Pythonでエクセル操作をするための、モジュールです。ターミナルで次のコマンドを打ち込むことで導入できます。

pip install openpyxl

Excelのデータ処理の全体像

今回は、3つのことを行ってみたいと思います。

  • 既存のエクセルファイルの読み込み
  • 値を取得、変更
  • エクセルファイルの保存

今回は画像のExcelファイルを、操作したいと思います。重要度が「8」以上の格言を、別のシートに貼り付けてみます。

python_excel_処理
本記事で処理するエクセルファイル

今回紹介するコードはこちらです。

import openpyxl                    #モジュールのインポート
wb = openpyxl.load_workbook('openpyxl.xlsx')  #Excelファイルの読み込み
ws = wb['Sheet1']                  #Sheet1を取得
ws2 = wb.create_sheet(title='重要な格言')    #重要な格言と言う二つ目のシートを作成

important = []                   #リストを作成
info = ws['A2':'C7']                #Sheet1のセルA2~C7を取得
for rows in info:                 #A2~C7のセルを、一行づつ取り出してrowとして扱う
    num = int(rows[2].value)           #リストのように扱うことができる
    if num >= 8:                  #もし重要度が8以上だったら
        important.append(rows[1].value)    #あらかじめ用意したリストに格納
        
ws2.append(important)               #シートにリストを追加
wb.save('important_wise_saying.xlsx')     #保存

こちらを実行すると、次の画像のような新しいシートが作成されます。

PythonによるExcel操作を具体的に解説

下準備

冒頭でご紹介したように、

  1. Python開発環境
  2. OpenPyXlモジュールのインポート

を必ず行います。

さらに、データ処理したいExcelファイルと、記述するPythonファイルを同じフォルダの中に格納します。(読み込みが簡単だから)

そして、下記のように、Pythonファイルの中に、OpenPyXlモジュールを読み込みます。

import openpyxl

Excelファイルの読み込み

wb = openpyxl.load_workbook('openpyxl.xlsx')  #Excelファイルの読み込み

load_wokbookメソッドで、読み取りたいエクセルファイルを読み取ります。通常wbと言う変数に格納します。
OpenPyXlでは、ひとつのExcelファイル全体のことを「Workbook」と言います。

openpyxl.Workbook()とすれば、空のエクセルファイルを作成できます。

シートの読み込みと作成

ws = wb['Sheet1']                  #Sheet1を取得
ws2 = wb.create_sheet(title='重要な格言')    #重要な格言と言う二つ目のシートを作成

シートを読み込む時は、通常wsと言う変数を使います。辞書のように扱うことができますので、wb[‘Sheet1’]とすればSheet1という名前のついたシートを取得できます。

シートを作るときは、create_sheetメソッドを使用します。引数として、「title=’hoge’」を渡すと、hogeと言う名前のシートが作成されます。

セルの値を取得

こちらの公式サイトを見ると、よくわかるのですが、セルの取得方法はいくつかあります。今回は、最も簡単な取得方法を紹介します。

info = ws['A2':'C7']

とすると、ws(Sheet1が格納)のA2からC7のセル値がinfoという変数に格納されます。

python_excel_セル取得
赤枠の部分が取得されます
for rows in info:                 #A2~C7のセルを、一行づつ取り出してrowとして扱う
    num = int(rows[2].value)           #リストのように扱うことができる
    if num >= 8:                  #もし重要度が8以上だったら
        important.append(rows[1].value)    #あらかじめ用意したリストに格納

セルオブジェクトがどのように格納されているかは、下図のようなイメージです。

openpyxlのセルオブジェクト
セルオブジェクトの格納方式

シートに値を追加

ws2.append(important)               #シートにリストを追加

今、inportntというリストには、重要度が8以上の格言が入っています。これを、シートに追加する方法はさまざまですが、一番簡単な方法は、appendメソッドを使うことでしょう。

Excelファイルを保存

wb.save('important_wise_saying.xlsx')     #保存

ワークブックに対して、saveメソッドを使うことでExcelファイルとして保存します。引数に、ファイル名を渡すことができます。
この操作をしないと、Excelファイルが生成されないので要注意!

さらに習得されたい方へ

最後に、さらに情報を収集するために、大変有益なサイトをご紹介します。

Excel×Python最速仕事術 Kindle版
著者:金宏 和實
価格:2158円(Kindle)