PythonでExcelのデータ処理をどのように行うのか、簡単に解説します。
Contents
PythonでExcelのデータ処理をするために…
PythonでExcelのデータを処理するために必要なものは、2つだけです。
- Pythonの実行環境
- OpenPyXl
Pythonの実行環境は、本当にさまざまな方法があります。皆様、お好みの環境構築をされていると思いますが、まだされていない方は、Anacondaをインストールして、Jupyter notebookを使うことをお勧めいたします。Anacondaとは、「Python x データサイエンス」のための統合開発環境です。
OpenPyXlとは、Pythonでエクセル操作をするための、モジュールです。ターミナルで次のコマンドを打ち込むことで導入できます。
pip install openpyxl
Excelのデータ処理の全体像
今回は、3つのことを行ってみたいと思います。
- 既存のエクセルファイルの読み込み
- 値を取得、変更
- エクセルファイルの保存
今回は画像のExcelファイルを、操作したいと思います。重要度が「8」以上の格言を、別のシートに貼り付けてみます。
今回紹介するコードはこちらです。
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操作を具体的に解説
下準備
冒頭でご紹介したように、
- Python開発環境
- 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という変数に格納されます。
for rows in info: #A2~C7のセルを、一行づつ取り出してrowとして扱う
num = int(rows[2].value) #リストのように扱うことができる
if num >= 8: #もし重要度が8以上だったら
important.append(rows[1].value) #あらかじめ用意したリストに格納
セルオブジェクトがどのように格納されているかは、下図のようなイメージです。
シートに値を追加
ws2.append(important) #シートにリストを追加
今、inportntというリストには、重要度が8以上の格言が入っています。これを、シートに追加する方法はさまざまですが、一番簡単な方法は、appendメソッドを使うことでしょう。
Excelファイルを保存
wb.save('important_wise_saying.xlsx') #保存
ワークブックに対して、saveメソッドを使うことでExcelファイルとして保存します。引数に、ファイル名を渡すことができます。
この操作をしないと、Excelファイルが生成されないので要注意!
さらに習得されたい方へ
最後に、さらに情報を収集するために、大変有益なサイトをご紹介します。
- 公式サイト(英語ですが…)
- いつも隣にITお仕事(初心者の方でもわかりやすいです)
- pythonのOpenPyXLでExcelのデータをとことん読み取る(Qiitaの記事)