[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
特定のセル範囲を指定して読み込む方法
特定のセル範囲を指定して読み込むには、usecols
とskiprows
を組み合わせて使用します。
これにより、必要なデータだけを効率的に取得できます。
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
というファイルが作成され、Sheet1
とSheet2
にそれぞれのデータが書き込まれます。
既存の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.xlsx
にSheet3
が追加され、新しいデータが書き込まれます。
シート名を指定して書き込む方法
シート名を指定してデータを書き込むには、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ファイルの特定の範囲を読み込む方法に焦点を当てました。
これらの知識を活用することで、データ分析や処理をより効率的に行うことができるでしょう。
ぜひ、実際のプロジェクトやデータ処理の場面で、これらのテクニックを試してみてください。