【Python】Pandasを使ってエクセルの複数シートを読み込み・書き込みするテクニック

はじめに:エクセルの複数シートを扱う際のpandasの利点

エクセルは、ビジネスや統計処理など、多岐にわたる用途で使用されるデータ処理ツールです。一方、Pythonには、pandasというデータ処理ライブラリがあります。pandasを使用すると、複数のシートを持つエクセルファイルのデータ処理が簡単になります。pandasを活用することで、複数のシートのデータを一度に読み込んだり、各シートをデータフレームとして操作したり、一つのエクセルファイルに複数のデータフレームを書き込んだりできます。

エクセルの複数シートを一度に読み込む方法

複数のシートを持つエクセルファイルを一度に読み込むには、pandasのread_excel関数を使用します。read_excel関数にエクセルファイルのパスを指定することで、エクセルファイルの全シートをデータフレームとして読み込むことができます。以下は、example.xlsxというエクセルファイルを読み込む例です。

import pandas as pd
df_dict = pd.read_excel('example.xlsx', sheet_name=None)
print(df_dict.keys())  # シート名の一覧を表示

この例では、sheet_name=Noneと指定することで、全シートを読み込むことができます。読み込んだデータは、辞書型として格納されます。各シートのデータフレームにアクセスするには、辞書のキーとしてシート名を指定します。df_dict.keys()を使用することで、エクセルファイルに含まれる全シートのシート名を確認できます。

各シートをデータフレームとして操作し、結果を一つのエクセルファイルに書き込む方法

各シートをデータフレームとして操作するには、辞書型のdf_dictから、各シートのデータフレームにアクセスします。例えば、シート名が’sheet1’のデータフレームを取得するには、以下のようにします。

sheet1_df = df_dict['sheet1']

シート名を指定して、各シートのデータフレームを取得した後は、通常のpandasのデータ処理を行うことができます。各シートのデータフレームを操作し、一つのエクセルファイルに結果を書き込むには、pandasのExcelWriterクラスを使用します。以下は、各シートのデータフレームに対して処理を行い、結果を新しいエクセルファイルに書き込む例です。

with pd.ExcelWriter('result.xlsx') as writer:
    for sheet_name, df in df_dict.items():
        # 各シートのデータフレームに対して処理を行う
        processed_df = df * 2
        
        # 処理結果を新しいエクセルファイルに書き込む
        processed_df.to_excel(writer, sheet_name=sheet_name, index=False)

この例では、ExcelWriterクラスを使用して、新しいエクセルファイルを作成しています。各シートのデータフレームに対して処理を行った後、to_excelメソッドを使用して、処理結果を新しいエクセルファイルに書き込んでいます。to_excelメソッドのsheet_name引数には、各シートのシート名を指定することができます。

複数のデータフレームを一つのエクセルファイルの別々のシートに書き込む方法

複数のデータフレームを一つのエクセルファイルの別々のシートに書き込むには、ExcelWriterクラスを使用します。以下は、複数のデータフレームを一つのエクセルファイルの別々のシートに書き込む例です。

df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]})
with pd.ExcelWriter('result.xlsx') as writer:
    df1.to_excel(writer, sheet_name='Sheet1', index=False)
    df2.to_excel(writer, sheet_name='Sheet2', index=False)

この例では、ExcelWriterクラスを使用して、新しいエクセルファイルを作成しています。各データフレームをto_excelメソッドを使用して、新しいエクセルファイルに書き込んでいます。to_excelメソッドのsheet_name引数には、各データフレームを書き込むシート名を指定することができます。

書き込み時のシート名や書式の設定方法

to_excelメソッドを使用して、エクセルファイルに書き込む際に、シート名や書式を設定することができます。以下は、to_excelメソッドでシート名と書式を指定する例です。

import xlsxwriter

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
with pd.ExcelWriter('result.xlsx') as writer:
    df.to_excel(writer, sheet_name='Sheet1', index=False)
    
    # シート名を変更する
    workbook = writer.book
    worksheet = writer.sheets['Sheet1']
    worksheet.name = 'DataSheet'
    
    # 書式を設定する
    header_format = workbook.add_format({'bold': True, 'font_color': 'white', 'bg_color': 'green'})
    data_format = workbook.add_format({'num_format': '#,##0.00'})
    worksheet.set_column('A:B', 15, data_format)
    worksheet.set_row(0, None, header_format)

この例では、to_excelメソッドでシート名を’Sheet1’として指定しています。その後、ExcelWriterクラスから、WorkbookオブジェクトとWorksheetオブジェクトを取得し、worksheet.nameを使用して、シート名を’DataSheet’に変更しています。さらに、Workbookオブジェクトのadd_formatメソッドを使用して、ヘッダー行とデータ行の書式を設定しています。Worksheetオブジェクトのset_columnメソッドとset_rowメソッドを使用して、列幅と行の高さ、書式を設定しています。

まとめ:pandasを活用してエクセルの複数シートのデータ処理を効率化する

Pythonのデータ処理ライブラリであるpandasを使用することで、複数のシートを持つエクセルファイルのデータ処理が簡単になります。pandasを活用することで、複数のシートのデータを一度に読み込んだり、各シートをデータフレームとして操作したり、一つのエクセルファイルに複数のデータフレームを書き込んだりできます。また、to_excelメソッドを使用して、エクセルファイルに書き込む際に、シート名や書式を設定することができます。

エクセルの複数シートを扱う場合、pandasを使用することで、Excelファイルのシートを手動で処理する必要がなく、データの処理効率が向上します。また、Pythonを使用して自動化することで、エクセルファイルの処理がより効率的に行えるようになります。

以上で、Pythonを使用してエクセルの複数シートを読み込み・書き込みするテクニックについての説明を終わります。