Pandas

[Python] Pandas – Excelでシートを指定して読み込む方法

Pandasを使用してExcelファイルを読み込む際、read_excel関数を使って特定のシートを指定できます。

sheet_name引数にシート名やシート番号を指定することで、特定のシートを読み込むことが可能です。

例えば、sheet_name='Sheet1'とすると Sheet1 を読み込みます。

シート番号を指定する場合は0が最初のシートです。

複数のシートを読み込む場合は、リストやNoneを指定して全シートを読み込むこともできます。

Excelシートを指定して読み込む方法

PythonのPandasライブラリを使用すると、Excelファイルから特定のシートを簡単に読み込むことができます。

ここでは、シートを指定して読み込む方法について詳しく解説します。

sheet_name引数の使い方

pandas.read_excel()関数を使用する際に、sheet_name引数を指定することで、読み込むシートを選択できます。

この引数には、シート名やシート番号を指定することができます。

import pandas as pd
# Excelファイルから特定のシートを読み込む
df = pd.read_excel('sample.xlsx', sheet_name='Sheet1')
print(df)
# 出力結果の例
   A   B   C
0  1   4   7
1  2   5   8
2  3   6   9

シート名で指定する方法

シート名を指定して読み込む場合、sheet_name引数にシートの名前を文字列として渡します。

シート名はExcelファイル内での正確な名前を使用する必要があります。

import pandas as pd
# シート名を指定して読み込む
df = pd.read_excel('sample.xlsx', sheet_name='SalesData')
print(df)
# 出力結果の例
   商品名  売上
0  商品A  100
1  商品B  200
2  商品C  300

シート番号で指定する方法

シート番号を指定する場合、sheet_name引数に整数を渡します。

シート番号は0から始まるインデックスで、最初のシートは0、次は1というように指定します。

import pandas as pd
# シート番号を指定して読み込む
df = pd.read_excel('sample.xlsx', sheet_name=0)  # 最初のシートを読み込む
print(df)
# 出力結果の例
   A   B   C
0  1   4   7
1  2   5   8
2  3   6   9

複数のシートを同時に読み込む方法

複数のシートを同時に読み込む場合、sheet_name引数にリストを渡します。

これにより、指定したシートがすべて読み込まれ、辞書形式で返されます。

import pandas as pd
# 複数のシートを同時に読み込む
sheets = pd.read_excel('sample.xlsx', sheet_name=['Sheet1', 'Sheet2'])
print(sheets)
# 出力結果の例
{
    'Sheet1':    A   B   C
                0  1   4   7
                1  2   5   8
                2  3   6   9,
    'Sheet2':    商品名  売上
                0  商品A  100
                1  商品B  200
                2  商品C  300
}

全てのシートを読み込む方法

全てのシートを読み込む場合、sheet_name引数にNoneを指定します。

これにより、Excelファイル内のすべてのシートが読み込まれ、辞書形式で返されます。

import pandas as pd
# 全てのシートを読み込む
all_sheets = pd.read_excel('sample.xlsx', sheet_name=None)
print(all_sheets)
# 出力結果の例
{
    'Sheet1':    A   B   C
                0  1   4   7
                1  2   5   8
                2  3   6   9,
    'Sheet2':    商品名  売上
                0  商品A  100
                1  商品B  200
                2  商品C  300
}

これらの方法を使うことで、必要なシートを簡単に読み込むことができ、データ分析や処理を効率的に行うことができます。

複数シートのデータを操作する

Pandasを使用して複数のシートを読み込むと、それぞれのシートのデータを効率的に操作することができます。

ここでは、複数シートのデータを辞書形式で読み込む方法や、DataFrameとして扱う方法、データの結合、シートごとの異なる処理について解説します。

複数シートを辞書形式で読み込む

複数のシートを辞書形式で読み込むには、sheet_name引数にシート名のリストを渡します。

これにより、各シートのデータがキーとしてシート名、値としてDataFrameとなる辞書が返されます。

import pandas as pd
# 複数のシートを辞書形式で読み込む
sheets = pd.read_excel('sample.xlsx', sheet_name=['Sheet1', 'Sheet2'])
print(sheets)
# 出力結果の例
{
    'Sheet1':    A   B   C
                0  1   4   7
                1  2   5   8
                2  3   6   9,
    'Sheet2':    商品名  売上
                0  商品A  100
                1  商品B  200
                2  商品C  300
}

読み込んだシートをDataFrameとして扱う

辞書形式で読み込んだ各シートは、DataFrameとして扱うことができます。

シート名をキーとして指定することで、特定のシートのデータにアクセスできます。

import pandas as pd
# 複数のシートを辞書形式で読み込む
sheets = pd.read_excel('sample.xlsx', sheet_name=['Sheet1', 'Sheet2'])
# 'Sheet1'のデータをDataFrameとして扱う
df_sheet1 = sheets['Sheet1']
print(df_sheet1)
# 出力結果の例
   A   B   C
0  1   4   7
1  2   5   8
2  3   6   9

複数シートのデータを結合する方法

複数のシートから読み込んだデータを結合するには、pd.concat()関数を使用します。

これにより、行方向または列方向にデータを結合することができます。

import pandas as pd
# 複数のシートを辞書形式で読み込む
sheets = pd.read_excel('sample.xlsx', sheet_name=['Sheet1', 'Sheet2'])
# 'Sheet1'と'Sheet2'のデータを結合する
df_combined = pd.concat([sheets['Sheet1'], sheets['Sheet2']], axis=0)
print(df_combined)
# 出力結果の例
   A    B    C  商品名   売上
0  1  4  7  NaN  NaN
1  2  5  8  NaN  NaN
2  3  6  9  NaN  NaN
0 NaN NaN NaN  商品A  100
1 NaN NaN NaN  商品B  200
2 NaN NaN NaN  商品C  300

シートごとに異なる処理を行う方法

複数のシートに対して異なる処理を行う場合、辞書形式で読み込んだデータをループ処理することができます。

各シートに対して必要な処理を実行することが可能です。

import pandas as pd
# 複数のシートを辞書形式で読み込む
sheets = pd.read_excel('sample.xlsx', sheet_name=['Sheet1', 'Sheet2'])
# 各シートに対して異なる処理を行う
for sheet_name, df in sheets.items():
    print(f"シート名: {sheet_name}")
    if sheet_name == 'Sheet1':
        # 'Sheet1'の合計を計算
        total = df.sum()
        print(f"合計: {total}")
    elif sheet_name == 'Sheet2':
        # 'Sheet2'の売上の平均を計算
        average_sales = df['売上'].mean()
        print(f"平均売上: {average_sales}")
# 出力結果の例
シート名: Sheet1
合計: A    6
B    15
C    24
dtype: int64
シート名: Sheet2
平均売上: 200.0

これらの方法を活用することで、複数のシートからのデータを効率的に操作し、分析や処理を行うことができます。

Excelファイルの特定の範囲を読み込む

Pandasを使用すると、Excelファイルから特定の範囲のデータを効率的に読み込むことができます。

ここでは、列や行を指定してデータを読み込む方法について解説します。

usecols引数で列を指定して読み込む

usecols引数を使用することで、特定の列だけを選択して読み込むことができます。

列は列名や列番号で指定できます。

import pandas as pd
# 特定の列を指定して読み込む
df = pd.read_excel('sample.xlsx', usecols=['A', 'C'])  # A列とC列を読み込む
print(df)
# 出力結果の例
   A   C
0  1   7
1  2   8
2  3   9

skiprows引数で行をスキップして読み込む

skiprows引数を使用すると、指定した行数をスキップしてデータを読み込むことができます。

これにより、ヘッダー行や不要な行を除外することができます。

import pandas as pd
# 最初の2行をスキップして読み込む
df = pd.read_excel('sample.xlsx', skiprows=2)
print(df)
# 出力結果の例
   A   B   C
0  3   6   9

nrows引数で読み込む行数を制限する

nrows引数を使用することで、読み込む行数を制限することができます。

これにより、大きなデータセットから必要な部分だけを取得できます。

import pandas as pd
# 最初の3行だけを読み込む
df = pd.read_excel('sample.xlsx', nrows=3)
print(df)
# 出力結果の例
   A   B   C
0  1   4   7
1  2   5   8
2  3   6   9

特定のセル範囲を指定して読み込む方法

特定のセル範囲を指定して読み込むには、usecolsskiprowsを組み合わせて使用します。

これにより、必要なデータだけを効率的に取得できます。

import pandas as pd
# 特定のセル範囲を指定して読み込む
df = pd.read_excel('sample.xlsx', usecols='A:C', skiprows=1, nrows=2)
print(df)
# 出力結果の例
   A   B   C
0  2   5   8
1  3   6   9

これらの方法を活用することで、Excelファイルから必要なデータを効率的に読み込むことができ、データ分析や処理をスムーズに行うことができます。

Excelファイルの書き込みとシートの操作

Pandasを使用すると、Excelファイルにデータを書き込むことができます。

ここでは、to_excel関数の基本的な使い方や、複数のシートへの書き込み、既存のExcelファイルへのシート追加、シート名を指定して書き込む方法について解説します。

to_excel関数の基本的な使い方

to_excel関数を使用することで、DataFrameのデータをExcelファイルに書き込むことができます。

基本的な使い方は、書き込み先のファイル名を指定するだけです。

import pandas as pd
# サンプルデータを作成
data = {
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
}
df = pd.DataFrame(data)
# Excelファイルに書き込む
df.to_excel('output.xlsx', index=False)

このコードを実行すると、output.xlsxという名前のExcelファイルが作成され、DataFrameの内容が書き込まれます。

複数のシートに書き込む方法

複数のシートにデータを書き込むには、ExcelWriterを使用します。

これにより、1つのExcelファイル内に複数のシートを作成できます。

import pandas as pd
# サンプルデータを作成
data1 = {
    'A': [1, 2, 3],
    'B': [4, 5, 6]
}
data2 = {
    'X': [10, 20, 30],
    'Y': [40, 50, 60]
}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
# ExcelWriterを使用して複数のシートに書き込む
with pd.ExcelWriter('multiple_sheets.xlsx') as writer:
    df1.to_excel(writer, sheet_name='Sheet1', index=False)
    df2.to_excel(writer, sheet_name='Sheet2', index=False)

このコードを実行すると、multiple_sheets.xlsxというファイルが作成され、Sheet1Sheet2にそれぞれのデータが書き込まれます。

既存のExcelファイルにシートを追加する方法

既存のExcelファイルに新しいシートを追加するには、ExcelWriterを使用し、mode='a'を指定します。

これにより、既存のデータを保持したまま新しいシートを追加できます。

import pandas as pd
# 新しいデータを作成
new_data = {
    'D': [100, 200, 300],
    'E': [400, 500, 600]
}
new_df = pd.DataFrame(new_data)
# 既存のExcelファイルにシートを追加
with pd.ExcelWriter('multiple_sheets.xlsx', mode='a', engine='openpyxl') as writer:
    new_df.to_excel(writer, sheet_name='Sheet3', index=False)

このコードを実行すると、multiple_sheets.xlsxSheet3が追加され、新しいデータが書き込まれます。

シート名を指定して書き込む方法

シート名を指定してデータを書き込むには、to_excel関数sheet_name引数を使用します。

これにより、任意のシート名でデータを保存できます。

import pandas as pd
# サンプルデータを作成
data = {
    'F': [7, 8, 9],
    'G': [10, 11, 12]
}
df = pd.DataFrame(data)
# シート名を指定して書き込む
df.to_excel('output_with_sheet_name.xlsx', sheet_name='MyData', index=False)

このコードを実行すると、output_with_sheet_name.xlsxというファイルが作成され、MyDataというシート名でデータが書き込まれます。

これらの方法を活用することで、Excelファイルへのデータの書き込みやシートの操作を効率的に行うことができます。

応用例:Excelファイルのデータを効率的に操作する

Pandasを使用すると、Excelファイルのデータを効率的に操作するためのさまざまな応用例があります。

ここでは、複数のExcelファイルを一括で読み込む方法や、特定のシートを条件付きで読み込む方法、シートを動的に選択する方法、シートを自動的に結合する方法について解説します。

複数のExcelファイルを一括で読み込む

複数のExcelファイルを一括で読み込むには、globモジュールを使用してファイルパスを取得し、pd.read_excel()をループで実行します。

これにより、複数のファイルからデータを効率的に取得できます。

import pandas as pd
import glob
# Excelファイルのパスを取得
file_paths = glob.glob('data/*.xlsx')  # 'data'フォルダ内の全てのExcelファイルを取得
# 各ファイルを読み込んでDataFrameのリストを作成
dataframes = [pd.read_excel(file) for file in file_paths]
# DataFrameを結合
combined_df = pd.concat(dataframes, ignore_index=True)
print(combined_df)

Excelファイルの特定のシートを条件付きで読み込む

特定のシートを条件付きで読み込むには、シート名をリストで指定し、条件に合致するシートのみを選択して読み込むことができます。

import pandas as pd
# 読み込むシート名のリスト
sheet_names = ['Sheet1', 'Sheet2', 'Sheet3']
# 条件に合致するシートを読み込む
sheets_to_read = [sheet for sheet in sheet_names if '1' in sheet]  # '1'を含むシート名を選択
# 読み込んだシートを辞書形式で取得
sheets = {sheet: pd.read_excel('sample.xlsx', sheet_name=sheet) for sheet in sheets_to_read}
print(sheets)

Excelファイルのシートを動的に選択する方法

シートを動的に選択するには、Excelファイル内のシート名を取得し、ユーザーの入力や条件に基づいて選択することができます。

import pandas as pd
# Excelファイルからシート名を取得
xls = pd.ExcelFile('sample.xlsx')
print("利用可能なシート名:", xls.sheet_names)
# ユーザーにシート名を入力させる
selected_sheet = input("読み込みたいシート名を入力してください: ")
# 指定したシートを読み込む
df = pd.read_excel(xls, sheet_name=selected_sheet)
print(df)

Excelファイルのシートを自動的に結合する方法

複数のシートを自動的に結合するには、Excelファイル内の全てのシートを読み込み、それらを結合することができます。

import pandas as pd
# Excelファイルから全てのシートを読み込む
sheets = pd.read_excel('sample.xlsx', sheet_name=None)  # Noneを指定すると全てのシートを読み込む
# 全てのシートを結合
combined_df = pd.concat(sheets.values(), ignore_index=True)
print(combined_df)

これらの応用例を活用することで、Excelファイルのデータを効率的に操作し、分析や処理を行うことができます。

Pandasの機能を駆使して、データ処理の効率を高めましょう。

まとめ

この記事では、Pandasを使用してExcelファイルを操作するさまざまな方法について解説しました。

特に、シートを指定して読み込む方法や、複数のシートを効率的に扱うテクニック、データの書き込み方法、さらにはExcelファイルの特定の範囲を読み込む方法に焦点を当てました。

これらの知識を活用することで、データ分析や処理をより効率的に行うことができるでしょう。

ぜひ、実際のプロジェクトやデータ処理の場面で、これらのテクニックを試してみてください。

関連記事

Back to top button