読み込み中...

PythonとxlrdでExcel操作!初心者が必ず理解できる12のステップ

Pythonとxlrdを使ったExcel操作のチュートリアル Python
この記事は約12分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

Pythonとxlrdを使ったExcel操作を学ぶことで、膨大なデータを効率よく整理したり、分析したりすることが可能になります。

この記事ではPythonとxlrdを用いたExcel操作の全手順を初心者目線で徹底的に解説します。

サンプルコードと詳細な解説付きで、PythonでExcelを扱う方法を学びましょう。

●Pythonとは

Pythonは、読みやすく書きやすいことを重視したプログラミング言語です。

科学計算やウェブ開発、データ解析といった幅広い領域で活用されています。

また、Pythonはライブラリが豊富で、Excelファイルの操作もこれらライブラリを使って簡単に行うことができます。

●xlrdとは

xlrdは、PythonでExcelファイルを読み込むためのライブラリです。

シートの選択、セルのデータの読み取りなど、Excelの基本的な操作が可能です。

さらに、Pythonの他のライブラリと組み合わせることで、Excelデータの集計や可視化などの応用的な操作も可能になります。

●Pythonとxlrdのインストール方法

まずPythonのインストールから始めます。

Pythonの公式ウェブサイトからダウンロードし、インストーラに従ってインストールを行います。

次に、Pythonのパッケージ管理システムであるpipを使ってxlrdをインストールします。

コマンドプロンプトやターミナルを開き、次のコマンドを実行します。

pip install xlrd

このコマンドはpipを使ってxlrdをインストールするコマンドです。

実行するとxlrdがPython環境にインストールされます。

●Excelファイルを開く

Pythonとxlrdを用いてExcelファイルを開くには、まずxlrdモジュールをインポートし、xlrd.open_workbook関数にExcelファイルのパスを引数として渡します。

○サンプルコード1:Excelファイルを開く

import xlrd

book = xlrd.open_workbook('sample.xlsx')

このコードでは、xlrdをインポートし、xlrd.open_workbook関数を使って’sample.xlsx’という名前のExcelファイルを開いています

この例では、同じディレクトリ内の’sample.xlsx’を開いています。

●シートを選択する

開いたExcelファイルから特定のシートを選択するには、book.sheetsメソッドを使うか、book.sheet_by_indexメソッドを使うか、book.sheet_by_nameメソッドを使います。

book.sheetsメソッドはすべてのシートをリストとして返します。

一方、book.sheet_by_indexメソッドは指定したインデックスのシートを、book.sheet_by_nameメソッドは指定した名前のシートを返します。

○サンプルコード2:シートを選択する

sheet = book.sheet_by_index(0)

このコードでは、book.sheet_by_indexメソッドを使ってインデックス0、つまり最初のシートを選択しています。

この例では、’sample.xlsx’の最初のシートを選択しています。

●セルからデータを読み込む

シートから特定のセルのデータを読み込むには、sheet.cell_valueメソッドを使います。

このメソッドは行と列のインデックスを引数に取り、対応するセルの値を返します。

○サンプルコード3:セルからデータを読み込む

value = sheet.cell_value(0, 0)
print(value)

このコードでは、sheet.cell_valueメソッドを使って最初の行と列、つまりA1のセルの値を取得しています。

そして、その値を出力しています。

この例では、’sample.xlsx’の最初のシートのA1セルの値を取得し、その値を出力しています。

●全セルからデータを読み込む

Excelのデータを効率的に操作するためには、全セルからデータを一度に読み込むことができれば、その後の処理が楽になります。

Pythonとxlrdライブラリを使えば、これが可能です。

それでは実際に全セルのデータを読み込む手順を見ていきましょう。

まず、開いたExcelファイルから全セルのデータを読み込むには、Sheetオブジェクトのメソッドである「get_rows()」を使用します。

このメソッドを使うと、Excelシートの全行データをPythonのジェネレータオブジェクトとして取得することができます。

ジェネレータとは、一度にすべてのデータをメモリに格納するのではなく、データが必要になるたびに一行ずつデータを生成し、メモリ効率を高めるPythonの特性です。

このジェネレータオブジェクトは、for文と組み合わせて使用することで、各行のデータを順に処理することができます。

また、各行のデータはさらにPythonのリストとして取得され、リストの各要素は各列のセルデータに対応します。

○サンプルコード4:全セルからデータを読み込む

Excelファイルの全セルからデータを読み込むサンプルコードを紹介します。

このコードでは、先ほどと同じく’example.xlsx’のファイルを使用し、最初のシートの全セルのデータを読み込みます。

import xlrd

# Excelファイルを開く
book = xlrd.open_workbook('example.xlsx')

# 最初のシートを選択する
sheet = book.sheet_by_index(0)

# シートの全行データを読み込む
rows = sheet.get_rows()

# 全行データを順に処理する
for row in rows:
    # 各行の全セルデータを順に処理する
    for cell in row:
        print(cell.value)

このコードでは、先ほど説明したように、「get_rows()」メソッドを用いて全行データを読み込んでいます。

そして、2つのfor文を使って、各行のデータを順に処理し、さらにその中の各セルのデータを順に処理しています。

最後に「print(cell.value)」とすることで、各セルの値を出力しています。

このコードを実行すると、Excelファイルの全セルの値が順番に出力されます。

ただし、データの順序は、Excelファイルの上から下、左から右の順番(つまり、行優先の順序)になります。

●行と列を指定してデータを読み込む

Excel操作において、特定の行や列からデータを読み込むことはよくあります。

Pythonとxlrdライブラリを使用すれば、特定の行や列を指定してデータを読み込むことが可能です。

行や列を指定してデータを読み込むためには、「cell_value(rowx, colx)」メソッドを使用します。

ここで、「rowx」は行のインデックスを、「colx」は列のインデックスを指定します。

このメソッドを使用すると、指定した行と列のセルのデータを取得することができます。

○サンプルコード5:行と列を指定してデータを読み込む

下記のコードは、指定した行と列からデータを読み込む方法を表しています。

具体的には、「cell_value(rowx, colx)」メソッドを使用して、Excelの2行目(インデックスは1)の3列目(インデックスは2)のセルデータを読み込んでいます。

import xlrd

# Excelファイルを開く
book = xlrd.open_workbook('example.xlsx')

# 最初のシートを選択する
sheet = book.sheet_by_index(0)

# 指定した行と列のセルデータを読み込む
cell_value = sheet.cell_value(1, 2)

# セルデータを出力する
print(cell_value)

このコードを実行すると、指定した行と列のセルのデータが出力されます。

このコードでは、「cell_value(1, 2)」として2行目の3列目のセルデータを読み込んでいますので、Excelファイルの該当するセルのデータが出力されます。

●エラーとその対処法

Pythonとxlrdを使用してExcel操作を行う際には、いくつかのエラーに遭遇する可能性があります。

その中でもよく遭遇するエラーとその対処法について、具体的に解説します。

①ファイルが見つからないエラー

このエラーは、指定したパスにExcelファイルが存在しないときに発生します。

ファイルパスが正しいか確認し、必要に応じてパスを修正します。

②シートが存在しないエラー

「sheet_by_index()」や「sheet_by_name()」を使用してシートを選択する際に、指定したシートが存在しない場合、このエラーが発生します。

シートのインデックスまたは名前が正しいか確認し、必要に応じて修正します。

③セルデータが存在しないエラー

「cell_value(rowx, colx)」を使用してセルデータを読み込む際に、指定した行や列が存在しない場合、このエラーが発生します。

行と列のインデックスが正しいか確認し、必要に応じて修正します。

これらのエラーの対処法を理解しておくことで、問題が発生した際に迅速に対応し、Pythonとxlrdを用いたExcel操作をスムーズに行うことができます。

●応用例:Excelデータの集計

Pythonとxlrdを用いてExcelデータを扱うことで、データ集計のような高度な操作も可能です。

それでは、全セルのデータを読み込み、その合計を求める例を紹介します。

この例では、Excelシートの全セルのデータが数値であることを前提とします。

非数値データ(例えば、文字列や日付データ)が含まれている場合、Pythonの「TypeError」が発生しますので注意が必要です。

数値データと非数値データが混在する場合、データタイプをチェックするコードを追加することで対応します。

○サンプルコード6:Excelデータの集計

ここではPythonとxlrdを用いてExcelデータの集計を行う方法を紹介します。

具体的には、シート内の全セルのデータを読み込み、その合計を求めるプログラムを作成します。

import xlrd

# Excelファイルを開く
book = xlrd.open_workbook('example.xlsx')

# 最初のシートを選択する
sheet = book.sheet_by_index(0)

# 全セルのデータ合計を格納する変数
total = 0

# 全セルのデータを読み込む
for row in range(sheet.nrows):
    for col in range(sheet.ncols):
        # セルの値を取得
        cell_value = sheet.cell_value(row, col)

        # セルのデータが数値の場合、totalに加算
        if isinstance(cell_value, (int, float)):
            total += cell_value

# 全セルのデータ合計を出力
print(total)

このコードを実行すると、Excelシート内の全セルの数値データの合計が出力されます。

ただし、このコードはセルデータが数値の場合にのみ適用可能で、セル内に文字列や日付データなどの非数値データが含まれているときは、そのデータは無視されます。

データ型をチェックするための「isinstance(cell_value, (int, float))」という条件を使用しています。

これにより、数値以外のデータはスキップされ、エラーが発生するのを防ぎます。

●応用例:Excelデータの可視化

Pythonを用いてExcelデータを扱う際には、可視化も重要な作業の一つです。

Pythonには、データの可視化を支援するライブラリが多数存在しますが、ここでは「matplotlib」を使用してExcelデータをグラフに表示する例を紹介します。

この応用例では、特定の行のデータを折れ線グラフに描画します。

データ可視化は、データの傾向を理解しやすくするために非常に重要であり、Pythonとxlrdを用いてExcelデータの可視化を容易に行えます。

○サンプルコード7:Excelデータの可視化

このコードは、特定の行のデータを読み込み、matplotlibを使って折れ線グラフを描画します。

特定の行に時間経過に伴うデータが格納されている場合に適用可能です。

一行目をタイトルやヘッダーとして扱い、二行目以降のデータをプロットします。

import xlrd
import matplotlib.pyplot as plt

# Excelファイルを開く
book = xlrd.open_workbook('example.xlsx')

# 最初のシートを選択する
sheet = book.sheet_by_index(0)

# データを格納するリスト
data = []

# 第2行以降のデータを読み込む
for row in range(1, sheet.nrows):
    # セルの値を取得
    cell_value = sheet.cell_value(row, 0)

    # セルのデータが数値の場合、dataに追加
    if isinstance(cell_value, (int, float)):
        data.append(cell_value)

# データをプロットする
plt.plot(data)

# グラフを表示する
plt.show()

このコードを実行すると、指定したExcelシートの第2行以降のデータがmatplotlibを用いて折れ線グラフとして描画されます。

数値以外のデータはスキップされます。

matplotlibのplot関数を用いてデータを描画し、show関数でグラフを表示します。

このコードの中で最も重要なのは、データの取得と可視化の部分です。

Excelからのデータ読み込みはxlrdを用いて行い、その後、matplotlibを用いてデータを可視化します。

まとめ

以上がPythonとxlrdを用いたExcel操作の基本的な手順です。

これらの操作をマスターすれば、Excelデータを自在に操作できるようになります。

Pythonはその豊富なライブラリと汎用性により、様々なデータ操作を容易に行うことができます。

今回紹介したコードは基本的なものですが、これを基にして更に複雑な操作を行うことも可能です。

例えば、複数のシートからデータを読み込んで一つのシートに統合したり、特定の条件を満たすデータを抽出したりといったこともPythonとxlrdを用いれば容易に実現できます。

PythonとxlrdでExcel操作を行うことは、初心者にとっては少し難しく感じるかもしれませんが、一つ一つの操作を理解し、逐次実行してみることで理解を深めることができます。

今回学んだ内容を基に、Pythonを用いたExcel操作に挑戦してみてください。