こんにちは、Zero-Cheeseです。
「Excelでの作業を、効率化したいと思ったことはありませんか?」
この記事を読む事で
- Pandasを使用した、Excelデータの読込み・書出し方法
- よく発生する、不具合への対応方法
を習得する事ができます。
この記事は、下記の方々を対象としています。
- Excelの手動作業に、多くの時間を消費している方
- Pandasを少しでも、触った事のある方
以前に、PythonからExcelを操作する方法として、下記記事を公開しています。
今回は、データ分析の必須ライブラリ「Pandas」の使用を前提に、ご紹介します。
ExcelをPandasで操作する事の重要性
Microsoftより、ExcelにPythonの機能が実装されると、アナウンスされました。(2023年9月時点)
この新機能「Python in Excel」では、PandasのDataFrameが、使用できるとの情報があります。(Microsoftのパプリックプレビューで、紹介されています。)
Excelのマクロも強力なツールですが、Pandasを使用することで、さらに複雑なデータ分析や操作を、簡単かつ高速に実施できるようになります。
環境設定(使用ライブラリのインストール)
この章では、必要なライブラリのインストール方法を紹介します。
Pandasのインストール方法
pipを使用して、次のコマンドでインストールできます。
pip install pandaspipに関する詳細は、以下の記事をご参照下さい。
Excel操作のためのエンジンのインストール
PandasからExcelを操作するために、必要なエンジンをご紹介します。
XLSX用(現在の主流な、Excel形式)
.xlsx形式のExcelファイルを、操作するためのエンジンです。
pip install openpyxl旧式のxlsファイル用(読込み専用)
以前の.xls形式のExcelファイルを、読み込むためのエンジンです。
pip install xlrd旧式のxlsファイル用(書込み・保存専用)
.xls形式のExcelファイルを、書き込む(保存する)ためのエンジンです。
pip install xlwtPandasによる、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を深くご存知ない方は、以下の講座をオススメします。
- Coursera

データサイエンスや機械学習に関する多岐のコースが提供されており、専門家や大学教授が講義を行っています。
多くのコースは無料で、受講可能です!
さいごに
本記事では、Pandasを用いてExcelの読込み・書込み処理の方法を、紹介しました。
Pandasに変換するだけで、多彩かつ高度なデータ分析手法を、活用することができます。
この記事が、皆さまのお役に立てれば、幸いです
最後まで読んでいいただき、ありがとうございました。
それではまた、お会いしましょう!












