Pythonスキルの習得

【Python・Excel】Pandas DataFrameでのExcel操作 – 読込みから書出しまでの完全ガイド

【Python・Excel】Pandas DataFrameでのExcel操作 - 読込みから書出しまでの完全ガイド
背景 by AIイラスト

こんにちは、Zero-Cheeseです。

「Excelでの作業を、効率化したいと思ったことはありませんか?」

この記事を読む事で

  • Pandasを使用した、Excelデータの読込み・書出し方法
  • よく発生する、不具合への対応方法

を習得する事ができます。

この記事は、下記の方々を対象としています。

  • Excelの手動作業に、多くの時間を消費している方
  • Pandasを少しでも、触った事のある方

以前に、PythonからExcelを操作する方法として、下記記事を公開しています。

今回は、データ分析の必須ライブラリ「Pandas」の使用を前提に、ご紹介します。

【 Python ✖️ Excel 】OpenPyXLとPandasによる、頻繁に使用する操作 まとめ
【 Python ✖️ Excel 】OpenPyXLとPandasによる、頻繁に使用する操作 使い方まとめPythonから、Excelファイルを操作するための方法を、ご紹介しました。頻繁に利用されている、「OpenPyXL」と「Pandas」ライブラリを使用した方法を、ご紹介しています。...

ExcelをPandasで操作する事の重要性

Microsoftより、ExcelにPythonの機能が実装されると、アナウンスされました。(2023年9月時点)

この新機能「Python in Excel」では、PandasのDataFrameが、使用できるとの情報があります。(Microsoftのパプリックプレビューで、紹介されています。)

Excelのマクロも強力なツールですが、Pandasを使用することで、さらに複雑なデータ分析や操作を、簡単かつ高速に実施できるようになります。

環境設定(使用ライブラリのインストール)

この章では、必要なライブラリのインストール方法を紹介します。

Pandasのインストール方法

pipを使用して、次のコマンドでインストールできます。

pip install pandas

Excel操作のためのエンジンのインストール

PandasからExcelを操作するために、必要なエンジンをご紹介します。

XLSX用(現在の主流な、Excel形式)

.xlsx形式のExcelファイルを、操作するためのエンジンです。

pip install openpyxl

旧式のxlsファイル用(読込み専用)

以前の.xls形式のExcelファイルを、読み込むためのエンジンです。

pip install xlrd

旧式のxlsファイル用(書込み・保存専用)

.xls形式のExcelファイルを、書き込む(保存する)ためのエンジンです。

pip install xlwt

Pandasによる、Excelの読込み方法

Pandasで、ExcelファイルをDataFrameとして読込む方法を、ご紹介します。

読込み方法(基本形)

import pandas as pd
df = pd.read_excel("sample.xlsx")

engineの指定

read_excel()メソッドでは、ファイルの形式に合わせて適切なengineを自動的に選択しますが、明示的に指定することも可能です。

df = pd.read_excel("sample.xlsx", engine="openpyxl")

Excelの何行目を、DataFrameのカラム名として、使用するかを指定

df = pd.read_excel("sample.xlsx", header=1)

header引数のインデックスは、0から始まります。

したがって、header=1を指定すると、Excelファイルの2行目をカラム名として、使用されます。

特定の列を読込む

df = pd.read_excel("sample.xlsx", usecols="A:C")

上記の場合、A列からC列まで、読込まれます。

特定の行の範囲を読込む

df = pd.read_excel("sample.xlsx", skiprows=2, nrows=5)

skiprowsは、指定した数だけ先頭の行をスキップして、その後の行からデータを読込みます。

したがって、skiprows=2とすると、最初の2行(1行目と2行目)をスキップして、3行目からデータを読み込むことになります。

nrowsは、読み込む行の数を指定します。

nrows=5と指定すると、読み込み開始位置から5行分のデータだけ、読込みます。

特定のシートを読込む

df = pd.read_excel("sample.xlsx", sheet_name="Sheet2")

Pandasによる、Excelへの書出し方法

Pandasを使用して、DataFrameをExcelファイルに書き出す方法を、ご紹介します。

この章では、with構文を使った方法を、ご紹介しています。

Excelにデータを書き出す際、with構文を使うと、ファイルのリソースを自動的に解放できます。

これにより、書き込み操作が完了した後、他プロセスやアプリケーションで、Excelファイルを開くことができるようになります。

書込み方法(基本形)

with pd.ExcelWriter("output.xlsx") as writer:
    df.to_excel(writer)

engineの指定

ファイルの形式に合わせて、適切なengineを自動的に選択しますが、明示的に指定することも可能です。

with pd.ExcelWriter("output.xlsx", engine='openpyxl') as writer:
     df.to_excel(writer) 

DataFrameのカラム名、書出し設定

DataFrameのカラム名を、Excelファイルに書出すかどうかを、指定できます。

with pd.ExcelWriter("output.xlsx", engine='openpyxl') as writer:
    df.to_excel(writer, header=False)

header引数をFalseにすると、書き出されません。(デフォルト値:True)

DataFrameのindex、書出し設定

DataFrameのインデックスを、Excelファイルに書出すかどうかを、指定できます。

with pd.ExcelWriter("output.xlsx", engine='openpyxl') as writer:
    df.to_excel(writer, index=False)

index引数をFalseにすると、書き出されません。(デフォルト値:True)

Excelの行、開始位置を指定

with pd.ExcelWriter("output.xlsx", engine='openpyxl') as writer:
    df.to_excel(writer, startrow=2)

startrow: デフォルトは0です。これは、Excelの最上部からデータが書き込まれることを意味します。

このコードでは、3行目からデータが書き込まれるようにしています。

Excelの列、開始位置を指定

with pd.ExcelWriter("output.xlsx", engine='openpyxl') as writer:
    df.to_excel(writer, startcol=1)

startcol: デフォルトも0です。これは、Excelの最左列からデータが書き込まれることを意味します。

このコードでは、2列目からデータが書き込まれるようにしています。

シート名を指定して、書出し

with pd.ExcelWriter("output.xlsx", engine='openpyxl') as writer:
    df.to_excel(writer, sheet_name="Data")

Excelの読込み特有の、不具合対応

Excelのファイルは、独自の書式や特有のデータ形式を持つことが多く、Pandasで読込む際に、不具合が発生する事があります。

本章では、これらの問題とその解決方法について詳しく解説します。

Excel特有のデータ形式の取扱い

日付データへの型変換

Excelの日付データは特に扱いが難しく、異なる型(文字列等)で、読み込まれることが多いです。

# 文字列を日付型に変換
df['date_column'] = pd.to_datetime(df['date_column'], errors='coerce')

errors='coerce'オプションを指定することにより、変換できないデータは、欠損値(NaN)になります。

これにより、変換中のエラーを防ぎつつ、不正なデータを欠損値として取り扱うことができます。

数値データへの型変換

Excelのセル書式設定により、数値が文字列として読み込まれることがあります。

# 文字列を数値型に変換
df['number_column'] = pd.to_numeric(df['number_column'], errors='coerce')

クレンジング 不要な行や列の削除

Excelファイルには余計なヘッダーやフッタ、注釈などが含まれることが多く、その場合、削除します。

# 最初の5行を削除
df = df.iloc[5:]

マージセルの取り扱い

マージセルは、Pandasで読み込むと、欠損値(NaN)となることが多いです。

これに対処する方法を示します。(下記は一例です。)

# 前の値で欠損値を埋める
df.fillna(method='ffill', inplace=True)

ffillは”forward fill”の略で、欠損値を前方の値で補完する方法を示します。

df.fillna(method='ffill')を使用すると、DataFrame内のNaN値は、直前の有効な値で埋められます。

文字化け(エンコード)の問題

近年のExcelでは、.xlsx形式が主流となっており、XMLベースという事もあり、エンコードの問題は、あまり発生しません。

発生した場合、

  • 日本のWindows環境で作成されたExcelファイルならShift_JISを、
  • アメリカのWindows環境で作成されたものならcp1252を

試してみるるのがオススメです。

(Macは基本、UTF-8、UTF-16です。 つまり指定は、不要です。)

更なる学習のためのリソース

本記事では、Pandasを用いてExcelの読込み・書込み処理に焦点を当てて、解説してきました。

しかし、Pandasを深く理解していないと、高度な統計分析やデータサイエンスへの応用が、難しくなります。

ここまでお読みいただいた読者の中で、Pandasを深くご存知ない方は、以下の講座をオススメします。

  • Udemyによる、オンライン学習
Udemyによる、オンライン学習

データサイエンスに必須となる、Pandasを始め、NumPyやmatplotlibなどのライブラリの使い方について、詳細に解説されています。

  • Coursera

データサイエンスや機械学習に関する多岐のコースが提供されており、専門家や大学教授が講義を行っています。

多くのコースは無料で、受講可能です!

さいごに

本記事では、Pandasを用いてExcelの読込み・書込み処理の方法を、紹介しました。

Pandasに変換するだけで、多彩かつ高度なデータ分析手法を、活用することができます。

この記事が、皆さまのお役に立てれば、幸いです

最後まで読んでいいただき、ありがとうございました。

それではまた、お会いしましょう!