CodeGym /コース /Python SELF JA /複数のシートおよびExcelファイルからデータを結合する

複数のシートおよびExcelファイルからデータを結合する

Python SELF JA
レベル 28 , レッスン 1
使用可能

1. なぜデータを結合する必要があるのか?

現代のデータの世界では、必要な情報すべてが1つのファイルに含まれることはまれだよね。 データは複数のテーブルやファイルに分散していることが多くて、完全な分析をするためには結合が必要になるんだ。 例えば、各月の売上データが別々のファイルにある場合、全体のトレンドを分析するには、それらを1つのテーブルにまとめる必要があるよ。

さらに、データを結合すると以下の利点があるよ:

  • レポートを手動で作成する時間を節約できる。
  • 手作業でのデータ転送に伴うエラーを減らせる。
  • データ分析の作業プロセスを自動化できる。

2. データを結合する方法

データの連結

データを垂直または水平に結合することを連結(concatenation)というよ。 簡単な例から始めよう: 2つのDataFrameを結合したいとするね。

Python

import pandas as pd

# 構造が似ている2つのDataFrameを作成
data1 = {
    'Product': ['りんご', 'バナナ'],
    'Sales': [100, 150]
}

data2 = {
    'Product': ['さくらんぼ', 'デーツ'],
    'Sales': [75, 200]
}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 垂直方向の連結(行を追加)
combined = pd.concat([df1, df2], ignore_index=True)
print(combined)

結果として、両方のソースからすべての行を含む結合済みのDataFrameが取得できるよ。 パラメーターignore_index=Trueに注目してね。これにより、最終的なDataFrameでインデックスがリセットされるよ。

mergeメソッドを使ったデータの結合

共通のカラム(例えばidProductなど)を基準にデータを結合する必要がある場合は、 mergeメソッドを使うよ。データの「デート」みたいなもので、共通点がないと結合できないんだ。

Python

# データ例を作成
sales_data = {
    'Product': ['りんご', 'バナナ', 'さくらんぼ'],
    'Sales': [100, 150, 75]
}

price_data = {
    'Product': ['りんご', 'バナナ', 'デーツ'],
    'Price': [1.2, 0.8, 3.0]
}

sales_df = pd.DataFrame(sales_data)
price_df = pd.DataFrame(price_data)

# カラム'Product'を基準にDataFrameを結合
merged_df = pd.merge(sales_df, price_df, on='Product', how='inner')
print(merged_df)

各製品に関する情報を持っていたとしても、mergeは共通カラムProductに一致する行のみを返すよ。

結合の種類を見ていこう:

  • inner(デフォルト): 両方のDataFrameに存在する行のみ返す。
  • outer: すべての行を返し、欠けている値をNaNで補填する。
  • left: 左側のDataFrameのすべての行と、右側の対応する行を返す。
  • right: 右側のDataFrameのすべての行と、左側の対応する行を返す。

複数シートからのデータ結合

pandasにおける結合の仕組みを復習した後は、実際のExcelファイルの複数シートからデータを結合する実践的な例を見てみよう。

Python

# 複数シートがあるExcelファイルを読み込む
excel_file = pd.ExcelFile('sales_data.xlsx')

# すべてのシート名のリスト
sheet_names = excel_file.sheet_names

# 各シートからデータを個別のDataFrameに読み込み、リストに追加
dataframes = [pd.read_excel(excel_file, sheet_name=sheet_name) for sheet_name in sheet_names]

# すべてのDataFrameを垂直方向に連結
all_sales_data = pd.concat(dataframes, ignore_index=True)

print(all_sales_data)

ここでは、Excelファイルのすべてのシートを個別のDataFrameとして読み込み、それらを1つに結合しているよ。 すごいよね、そう思わない?

複数ファイルからのデータ結合

実際の場面では、データが複数ファイルに分散していることがあるよ。 その結合プロセスを自動化する方法を見てみよう。

Python

import glob

# ファイルのパス
file_path = r'data/sales_*.xlsx'

# パターンに一致するすべてのファイルを取得
files = glob.glob(file_path)

# 各ファイルからデータを個別のDataFrameに読み込み、リストに追加
dataframes = [pd.read_excel(file) for file in files]

# すべてのDataFrameを垂直方向に連結
all_files_data = pd.concat(dataframes, ignore_index=True)

print(all_files_data)

指定したパターンに一致するファイルリストを取得するためにglobライブラリを使用して、 それぞれのファイルからのデータを1つのDataFrameに結合しているよ。

3. 実際の使用例

ビジネス分析のためのデータ結合

あなたが各月の売上データを別ファイルで扱うアナリストだと仮定しよう。 上記の手法を使えば簡単にデータを結合して、年間トレンドを把握し、適切な結論を導き出せるよ。

レポートの自動化

データ結合の自動化を活用すると、さまざまなソースから情報を収集し、 デイリー、ウィークリー、またはマンスリーレポートを自動生成するスクリプトを設定できるよ。

異なるソースからのデータ処理

データは異なるシステムから提供され、それぞれが部分的な情報を持っている場合がある。 pandasを使えば、顧客情報と購入情報を結合するなどして、全体像を把握できるよ。

4. 典型的な誤りとその修正

典型的なエラーは、結合するDataFrameのカラム名が一致しなかったりすることだよ。 データを結合する際は、カラムが本当に一致しているか確認し、必要に応じてmergeメソッドの left_onright_onを使用してね。

結合後に欠損値が含まれるデータになることもあるよ。 その場合は、fillnaメソッドで値を補完したり、dropnaで削除したりして対処しよう。

データに重複が含まれている場合、concatメソッドを使用すると、 思ったより長いDataFrameになることがあるよ。 そんな時はdrop_duplicatesメソッドを使って整理しよう。

pandasでのデータ結合の手法やコツを取り上げたので、これで現実世界の自動化やデータ分析の課題に取り組むツールが揃ったよ。 この知識を上手く活用してね!

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION