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 をダウンロードしてテストできます。

例

import pandas as pd

# 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')。

例

import pandas as pd

# デフォルトの最初のシートを読み込む
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:エンジンに渡す追加のパラメータ辞書。

例

import pandas as pd

# 簡単な 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() ファイルを閉じて、リソースを解放する

例

import pandas as pd

# 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 オブジェクトの作成:

例

with ExcelWriter('output.xlsx') as writer:
    df.to_excel(writer, sheet_name='Sheet1')

ここでは、ExcelWriter はコンテキストマネージャーとして使用され、操作完了後にファイルが正しく閉じられることを保証します。

複数のワークシートへの書き込み:

同じ ExcelWriter オブジェクトを使用して、異なる DataFrame を同じ Excel ファイルの異なるワークシートに書き込むことができます。

例

df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
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")

日付形式または日時形式の設定:

例

from datetime import date, datetime  
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 ファイルへの内容の追記:

例

with pd.ExcelWriter("path_to_file.xlsx", mode="a", engine="openpyxl") as writer:
    df.to_excel(writer, sheet_name="Sheet3")

if_sheet_exists パラメータを使用して既存のワークシートを置き換える:

例

with ExcelWriter(
    "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 に設定する必要があることに注意してください:

例

with ExcelWriter("path_to_file.xlsx",
    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 ファイルをメモリ内に保存する:

例

import io
df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
buffer = io.BytesIO()
with pd.ExcelWriter(buffer) as writer:
    df.to_excel(writer)

Excel ファイルを zip 圧縮ファイルにパッケージ化する:

例

import zipfile  
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)

基盤となるエンジンに追加のパラメータを渡す:

例

with pd.ExcelWriter(
    "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 に渡されます:

例

with pd.ExcelWriter(
    "path_to_file.xlsx",
    engine="openpyxl",
    mode="a",
    engine_kwargs={"keep_vba": True}
) as writer:
    df.to_excel(writer, sheet_name="Sheet2")
その他の拡張