PandasによるExcelファイルの読み込みと書き込み(上書き・追記)

PythonのライブラリであるPandasであれば柔軟にExcelファイルの読み込みと書き込みができます。

こちらの記事では、Pandasを利用してExcelファイルの読み込み方法と書き込み方法を紹介します。



1. 読み込み

Excelファイルの読み込みはpd.read_excelを使用します。

細かい読み込み方法の指定はオプションで指定します。

1.1. 指定のシートのみ読み込み

引数のsheet_nameに、読み込みたいシート名を指定します。

この際に、0から始める数字かシート名を記述します。

# インデック番号で指定
df_sheet = pd.read_excel('sample.xlsx', sheet_name=0)

print(df_sheet)
# Output
   A  B   C
0  1  5   9
1  2  6  10
2  3  7  11
3  4  8  12
# シート名で指定
df_sheet = pd.read_excel('sample.xlsx', sheet_name='Sheet1')

print(df_sheet)
# Output
# Output
   A  B   C
0  1  5   9
1  2  6  10
2  3  7  11
3  4  8  12

1.2. 指定した複数のシートの読み込み

複数のシートを読み込むときは、リスト形式で読み込むシート名を指定します。

リストの中に指定する内容は、0から始まる番号またはシート名を記述します。

戻り値には、読み込み時に指定したリスト内容の名称がキーで、値がDataFrameのdictが返されます。

df_sheet = pd.read_excel('sample.xlsx', sheet_name=[0, 'Sheet2'])

print(df_sheet)
# Output
{0:    A  B   C
    0  1  5   9
    1  2  6  10
    2  3  7  11
    3  4  8  12,
 'Sheet2':    A   B   C
           0  11  15  19
           1  12  16  20
           2  13  17  21
           3  14  18  22}

1.3. すべてのシートの読み込み

すべてのシートを読み込む時は、sheet_nameにNoneを指定します。

戻り値には、シート名がキーで値がDataFrameのdictが返されます。

df_sheet = pd.read_excel('sample.xlsx', sheet_name=None)

print(df_sheet)
# Output
{'Sheet1':    A  B   C
           0  1  5   9
           1  2  6  10
           2  3  7  11
           3  4  8  12,
 'Sheet2':    A   B   C
           0  11  15  19
           1  12  16  20
           2  13  17  21
           3  14  18  22}




2. 書き込み

ExcelファイルへのDataFrameの書き込みはpd.DataFrame.to_excelで行います。

注意点として、pd.DataFrame.to_excelだと新規作成または上書き保存ということです。

もし既存のExcelファイルにシートを追記するのであれば、pd.ExcelWriterを使用します。

2.1. DataFrameの書き込み (新規作成 or 上書き)

DataFrameのExcelファイルの書き込みはpd.DataFrame.to_excelを使用します。

このときは、新規作成または上書き保存となります。

df = pd.DataFrame({
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12]
})

df.to_excel('./sample_write.xlsx', sheet_name='NewSheet')

2.2. 複数のDataFrameの書き込み (新規作成 or 上書き)

複数のDataFrameを一度に書き込む場合は、pd.ExcelWriterを使用します。

この設定は新規作成または上書き保存となります。

df_1 = pd.DataFrame({
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12]
})

df_2 = pd.DataFrame({
    'A': [11, 12, 13, 14],
    'B': [15, 16, 17, 18],
    'C': [19, 20, 21, 22]
})

with pd.ExcelWriter('./sample_write.xlsx') as writer:
    df_1.to_excel(writer, sheet_name='NewSheet1')
    df_2.to_excel(writer, sheet_name='NewSheet2')

2.3. 既存のExcelファイルに書き込み (追記)

既存のExcelファイルに追記する場合は、pd.ExcelWriterを使用します。

また、mode='a'を指定する必要があります。

# Excelファイルを作成しておく
df_1 = pd.DataFrame({
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12]
})

df_1.to_excel('./sample_write.xlsx', sheet_name='NewSheet1')

# DataFrameを既存のExcelファイルに追記する
df_2 = pd.DataFrame({
    'A': [11, 12, 13, 14],
    'B': [15, 16, 17, 18],
    'C': [19, 20, 21, 22]
})

with pd.ExcelWriter('./sample_write.xlsx', mode='a') as writer:
    df_2.to_excel(writer, sheet_name='NewSheet2')