Pandas Excel ファイル操作
Pandas は豊富な Excel ファイル操作機能を提供し、読み書きを簡単に行えるようにします。.xlsと.xlsxファイル、複数シート、インデックス、列選択などの複雑な操作をサポートし、データ分析に必須のツールです。
| 操作 | メソッド | 説明 |
|---|---|---|
| Excel ファイルを読み込む | pd.read_excel() |
Excel ファイルを読み込み、DataFrame を返す |
| DataFrame を Excel に書き込む | DataFrame.to_excel() |
DataFrame を Excel ファイルに書き込む |
| Excel ファイルをロードする | pd.ExcelFile() |
Excel ファイルをロードし、複数のシートにアクセスする |
| ExcelWriter を使用して複数のシートを書き込む | pd.ExcelWriter() |
複数の DataFrame を同じ Excel ファイルの異なるシートに書き込む |
pd.read_excel() - 读取 Excel 文件
pd.read_excel()メソッドは、Excel ファイルからデータを読み取り、DataFrame としてロードするために使用されます。読み取りをサポートします。.xlsと.xlsx形式のファイル。
構文は次のとおりです。
pandas.read_excel(io, sheet_name=0, *, header=0, names=None, index_col=None, usecols=None, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, parse_dates=False, date_parser=<no_default>, date_format=None, thousands=None, decimal='.', comment=None, skipfooter=0, storage_options=None, dtype_backend=<no_default>, engine_kwargs=None)
パラメータの説明:
-
io:これは必須のパラメータで、読み取る Excel ファイルのパスまたはファイルオブジェクトを指定します。 -
sheet_name=0:読み取るワークシート名またはインデックスを指定します。デフォルトは0、つまり最初のワークシートです。 -
header=0:列名として使用する行を指定します。デフォルトは0、つまり最初の行です。 -
names=None:列名を指定するリスト。指定すると、ファイル内の列名を上書きします。 -
index_col=None:行インデックスとして使用する列を指定します。列名または数値を指定できます。 -
usecols=None:読み取る列を指定します。列名のリストまたは列インデックスのリストを指定できます。 -
dtype=None:列のデータ型を指定します。辞書形式で、キーは列名、値はデータ型です。 -
engine=None:解析エンジンを指定します。デフォルトはNone、pandas が自動的に選択します。 -
converters=None:データを変換するための関数の辞書。 -
true_values=None:ブール値とみなすTrue値を指定します。 -
false_values=None:ブール値とみなすFalse値を指定します。 -
skiprows=None:スキップする行数またはスキップする行のリストを指定します。 -
nrows=None:読み取る行数を指定します。 -
na_values=None:欠損値とみなされる値を指定します。 -
keep_default_na=True:デフォルトの欠損値(例:NaN)を解析してNA。 -
na_filter=True:データを変換するかどうかを指定しますNA。 -
verbose=False:詳細な進行状況情報を出力するかどうかを指定します。 -
parse_dates=False:日付を解析するかどうかを指定します。 -
date_parser=<no_default>:日付を解析するための関数。 -
date_format=None:日付の形式を指定します。 -
thousands=None:桁区切り文字を指定します。 -
decimal='.':小数点文字を指定します。 -
comment=None:コメント文字を指定します。 -
skipfooter=0:ファイル末尾でスキップする行数を指定します。 -
storage_options=None:クラウドストレージ用のパラメータ辞書。 -
dtype_backend=<no_default>:データ型のバックエンドを指定します。 -
engine_kwargs=None:エンジンに渡す追加のパラメータ辞書。
この記事ではサンプル_pandas_data.xlsxを例として、あなたはサンプル_pandas_data.xlsx をダウンロードしてテストできます。
例
# data.xlsx ファイルを読み込む
df = pd.read_excel('サンプル_pandas_data.xlsx')
# 読み込んだ DataFrame を出力する
print(df)
出力結果は次のとおりです。
表格 1 Unnamed: 1 Unnamed: 2 0 Name Age City 1 Alice 25 New York 2 Bob 30 Los Angeles 3 Charlie 35 Chicago
read_excel はデフォルトで最初のシート(sheet_name=0)を読み取ります。data.xlsx ファイルにシートが1つしかない場合、読み取ったデータは1つの DataFrame に格納されます。
data.xlsx ファイルに複数のシートがある場合は、sheet_name を指定して特定のシートのデータを読み取ることができます。例:pd.read_excel('data.xlsx', sheet_name='Sheet1')。
例
# デフォルトの最初のシートを読み込む
df = pd.read_excel('data.xlsx')
print(df)
# 指定したシートの内容を読み込む(シート名)
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
print(df)
# 複数のシートを読み込み、辞書を返す
dfs = pd.read_excel('data.xlsx', sheet_name=['Sheet1', 'Sheet2'])
print(dfs)
# 列名をカスタマイズして最初の2行をスキップする
df = pd.read_excel('data.xlsx', header=None, names=['A', 'B', 'C'], skiprows=2)
print(df)
DataFrame.to_excel() - DataFrame を Excel ファイルに書き込む
to_excel()メソッドは DataFrame を Excel ファイルに書き込むために使用され、対応しているファイル形式は.xlsと.xlsx形式です。
構文は次のとおりです。
DataFrame.to_excel(excel_writer, *, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, inf_rep='inf', freeze_panes=None, storage_options=None, engine_kwargs=None)
パラメータの説明:
-
excel_writer:これは必須のパラメータで、書き込む Excel ファイルのパスまたはファイルオブジェクトを指定します。 -
sheet_name='Sheet1':書き込むワークシート名を指定します。デフォルトは'Sheet1'。 -
na_rep='':Excel ファイルで欠損値(NaN)を表す文字列を指定します。デフォルトは空文字列です。 -
float_format=None:浮動小数点数の形式を指定します。もしNoneの場合、Excel のデフォルト形式を使用します。 -
columns=None:書き込む列を指定します。もしNoneの場合、すべての列を書き込みます。 -
header=True:列名を最初の行として書き込むかどうかを指定します。もしFalseの場合、列名を書き込みません。 -
index=True:インデックスを最初の列として書き込むかどうかを指定します。もしFalseの場合、インデックスを書き込みません。 -
index_label=None:インデックス列のラベルを指定します。もしNoneの場合、インデックスラベルを書き込みません。 -
startrow=0:書き込みを開始する行番号を指定します。デフォルトは0行目から始まります。 -
startcol=0:書き込みを開始する列番号を指定します。デフォルトは0列目から始まります。 -
engine=None:Excel ファイルへの書き込み時に使用するエンジンを指定します。デフォルトはNone、pandas が自動的に選択します。 -
merge_cells=True:セルを結合するかどうかを指定します。もしTrueの場合、同じ値を持つセルを結合します。 -
inf_rep='inf':Excel ファイルで無限大の値を表す文字列を指定します。デフォルトは'inf'。 -
freeze_panes=None:ウィンドウ枠の固定位置を指定します。もしNoneの場合、ウィンドウ枠を固定しません。 -
storage_options=None:クラウドストレージ用のパラメータ辞書。 -
engine_kwargs=None:エンジンに渡す追加のパラメータ辞書。
例
# 簡単な DataFrame を作成する
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
})
# DataFrame を Excel ファイルに書き込み、'Sheet1' シートに書き込む
df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)
# ExcelWriter を使用して複数のシートを書き込む
with pd.ExcelWriter('output.xlsx') as writer:
df.to_excel(writer, sheet_name='Sheet1', index=False)
df.to_excel(writer, sheet_name='Sheet2', index=False)
ExcelFile - Excel ファイルを読み込む
ExcelFileは、Excel ファイルを読み取るためのクラスで、複数のシートを処理し、ファイルを開き直すことなくデータにアクセスできます。
構文は次のとおりです。
excel_file = pd.ExcelFile('data.xlsx')
よく使われるメソッド:
| メソッド | 機能説明 |
|---|---|
sheet_names |
ファイル内のすべてのシート名のリストを返す |
parse(sheet_name) |
指定したシートを解析し、DataFrame を返す |
close() |
ファイルを閉じて、リソースを解放する |
例
# ExcelFile を使用して Excel ファイルを読み込む
excel_file = pd.ExcelFile('data.xlsx')
# すべてのシート名を確認する
print(excel_file.sheet_names)
# 指定したシートを読み込む
df = excel_file.parse('Sheet1')
print(df)
# ファイルを閉じる
excel_file.close()
ExcelWriter - Excel ファイルに書き込む
ExcelWriter は pandas が提供するクラスで、DataFrame または Series オブジェクトを Excel ファイルに書き込むために使用されます。ExcelWriter を使用すると、1つの Excel ファイルに複数のワークシートを書き込むことができ、書き込みプロセスをより柔軟に制御できます。
構文は次のとおりです。
pandas.ExcelWriter(path, engine=None, date_format=None, datetime_format=None, mode='w', storage_options=None, if_sheet_exists=None, engine_kwargs=None)
パラメータの説明:
-
path:これは必須のパラメータで、書き込む Excel ファイルのパス、URL、またはファイルオブジェクトを指定します。ローカルファイルパス、リモートストレージパス(S3 など)、URL リンク、または開いているファイルオブジェクトを指定できます。。 -
engine:これはオプションのパラメータで、Excel ファイルに書き込むためのエンジンを指定します。もしNoneの場合、pandas は利用可能なエンジンを自動的に選択します(デフォルトでは優先的にopenpyxlが選択され、利用できない場合は他の利用可能なエンジンが選択されます)。一般的なエンジンには、'openpyxl'(.xlsxファイル用)、'xlsxwriter'(高度な書式設定とグラフ機能を提供)、'odf'(OpenDocument 形式(.odsなど))。 -
date_format:これはオプションのパラメータで、Excel ファイルに書き込む日付の書式文字列を指定します。例:"YYYY-MM-DD"。 -
datetime_format:これはオプションのパラメータで、Excelファイルに書き込む日時オブジェクトのフォーマット文字列を指定します。例えば"YYYY-MM-DD HH:MM:SS"。 -
mode:これはオプションのパラメータで、デフォルトは'w'、書き込みモードを表します。もし設定した場合'a'、追記モードを表し、既存のファイルにデータを追加します(一部のエンジンのみサポート、例えばopenpyxl)。 -
storage_options:これはオプションのパラメータで、ストレージバックエンドとの接続に関する追加オプションを指定します。例えば認証情報、アクセス権限などです。リモートストレージ(S3、GCSなど)への書き込みに適用されます。。 -
if_sheet_exists:これはオプションのパラメータで、デフォルトは'error'、ワークシートがすでに存在する場合の動作を指定します。オプションには以下があります。'error'(エラーをスロー)、'new'(新しいワークシートを作成)、'replace'(既存のワークシートの内容を置き換える)、'overlay'(既存のワークシートに上書き書き込み)。 -
engine_kwargs:これはオプションのパラメータで、エンジンに渡すためのその他のキーワード引数を指定します。これらの引数は対応するエンジンの関数に渡されます。例えばxlsxwriter.Workbook(file, **engine_kwargs)或openpyxl.Workbook(**engine_kwargs)等。
ExcelWriter オブジェクトの作成:
例
df.to_excel(writer, sheet_name='Sheet1')
ここでは、ExcelWriter はコンテキストマネージャーとして使用され、操作完了後にファイルが正しく閉じられることを保証します。
複数のワークシートへの書き込み:
同じ ExcelWriter オブジェクトを使用して、異なる DataFrame を同じ Excel ファイルの異なるワークシートに書き込むことができます。
例
df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
with pd.ExcelWriter("path_to_file.xlsx") as writer:
df1.to_excel(writer, sheet_name="Sheet1")
df2.to_excel(writer, sheet_name="Sheet2")
日付形式または日時形式の設定:
例
df = pd.DataFrame(
[
[date(2014, 1, 31), date(1999, 9, 24)],
[datetime(1998, 5, 26, 23, 33, 4), datetime(2014, 2, 28, 13, 5, 13)],
],
index=["Date", "Datetime"],
columns=["X", "Y"],
)
with pd.ExcelWriter(
"path_to_file.xlsx",
date_format="YYYY-MM-DD",
datetime_format="YYYY-MM-DD HH:MM:SS"
) as writer:
df.to_excel(writer)
既存の Excel ファイルへの内容の追記:
例
df.to_excel(writer, sheet_name="Sheet3")
if_sheet_exists パラメータを使用して既存のワークシートを置き換える:
例
"path_to_file.xlsx",
mode="a",
engine="openpyxl",
if_sheet_exists="replace",
) as writer:
df.to_excel(writer, sheet_name="Sheet1")
同じワークシートに複数の DataFrame を書き込む場合、if_sheet_exists パラメータを overlay に設定する必要があることに注意してください:
例
mode="a",
engine="openpyxl",
if_sheet_exists="overlay",
) as writer:
df1.to_excel(writer, sheet_name="Sheet1")
df2.to_excel(writer, sheet_name="Sheet1", startcol=3)
Excel ファイルをメモリ内に保存する:
例
df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
buffer = io.BytesIO()
with pd.ExcelWriter(buffer) as writer:
df.to_excel(writer)
Excel ファイルを zip 圧縮ファイルにパッケージ化する:
例
df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
with zipfile.ZipFile("path_to_file.zip", "w") as zf:
with zf.open("filename.xlsx", "w") as buffer:
with pd.ExcelWriter(buffer) as writer:
df.to_excel(writer)
基盤となるエンジンに追加のパラメータを渡す:
例
"path_to_file.xlsx",
engine="xlsxwriter",
engine_kwargs={"options": {"nan_inf_to_errors": True}}
) as writer:
df.to_excel(writer)
追記モードでは、engine_kwargs は openpyxl の load_workbook に渡されます:
例
"path_to_file.xlsx",
engine="openpyxl",
mode="a",
engine_kwargs={"keep_vba": True}
) as writer:
df.to_excel(writer, sheet_name="Sheet2")