複数データソースをまとめて集計!Python × Pandas × SQL 実践術

はじめに

業務データはしばしば複数のシステムやフォーマットに散在しています。Excel、CSV、データベース、Web APIなど、データソースが異なると集計や分析は一気に複雑になります。
本記事では、Python と Pandas を使い、SQL データベースも活用しながら、異なるデータソースをまとめて効率的に集計する方法を解説します。


1. データソースの準備

今回は以下の3つのデータを例にします。

  1. CSVファイル:売上データ(sales.csv
  2. Excelファイル:商品情報(products.xlsx
  3. SQLデータベース:顧客情報(SQLiteを例に使用)

CSVデータ例 (sales.csv)

order_idproduct_idquantitydate
110122025-08-01
210212025-08-02

Excelデータ例 (products.xlsx)

product_idproduct_nameprice
101ペン100
102ノート200

SQLデータ例 (customers.db)

CREATE TABLE customers (
    customer_id INTEGER PRIMARY KEY,
    name TEXT,
    order_id INTEGER
);

2. Pythonでデータを読み込む

まずは Pandas と SQLite3 をインポートしてデータを読み込みます。

import pandas as pd
import sqlite3

# CSV読み込み
sales_df = pd.read_csv("sales.csv")

# Excel読み込み
products_df = pd.read_excel("products.xlsx")

# SQLiteデータベース接続
conn = sqlite3.connect("customers.db")
customers_df = pd.read_sql_query("SELECT * FROM customers", conn)

3. データの結合

Pandas の merge を使うことで異なるデータソースでも結合可能です。

# 売上データと商品情報を結合
sales_products_df = pd.merge(sales_df, products_df, on="product_id", how="left")

# 顧客情報を結合
full_df = pd.merge(sales_products_df, customers_df, on="order_id", how="left")

print(full_df)

結合後のイメージ

order_idproduct_idquantitydateproduct_namepricecustomer_idname
110122025-08-01ペン1001佐藤
210212025-08-02ノート2002鈴木

4. 集計処理

例えば、「顧客別の総購入金額」を求める場合は以下のように計算できます。

# 総購入金額カラムを追加
full_df["total_amount"] = full_df["quantity"] * full_df["price"]

# 顧客別集計
customer_summary = full_df.groupby("name")["total_amount"].sum().reset_index()

print(customer_summary)

出力例:

nametotal_amount
佐藤200
鈴木200

5. SQLを活用した集計

Pandas だけでなく、SQL クエリでも集計可能です。

query = """
SELECT c.name, SUM(s.quantity * p.price) as total_amount
FROM sales s
JOIN products p ON s.product_id = p.product_id
JOIN customers c ON s.order_id = c.order_id
GROUP BY c.name
"""
sql_summary = pd.read_sql_query(query, conn)
print(sql_summary)

6. 実務での応用ポイント

  • データ型の統一:日付や文字列型の不一致に注意
  • 結合方法の選択inner / left / right / outer を状況に応じて使い分け
  • パフォーマンス改善:大規模データはSQLで集計してからPandasで処理すると効率的

まとめ

Python × Pandas × SQL を活用すれば、複数データソースをまとめて集計することが容易になります。
業務データが散在していても、統合・集計・分析まで一気通貫で処理できるのが大きなメリットです。

次のステップとして、自動化スクリプト化BIツールとの連携 を組み合わせれば、さらに効率的な業務フローを構築できます。

タイトルとURLをコピーしました