1. test 1
  2. test 2
コース一覧
データ分析入門 Python(pandas)
なぜ結合が要るか

データ分析入門 Python(pandas)

pandasによるデータの読み込み・抽出・前処理、groupbyによる集計、表の結合、matplotlibによる可視化、そして前月比や移動平均を使った分析の実践まで、データ分析の基礎を、毎レッスン実際にコードを書き、多店舗ショップの売上データを分析レポートに仕上げながら学べるコースです。Python入門を修了した方を対象としています。約 14.5 時間 (1 日 30 分 × 29 日) で 57 レッスンを修了でき、修了後は手元のCSVを自力で分析し、グラフと示唆のあるレポートを作れるようになります。

1
データ分析のはじめかた
01. データ分析とは15分
02. pandasとは15分
03. ノートブックの使い方15分
04. CSVを読み込む15分
05. つくる:データと対面する20分
06. 第1章クイズ10分
2
DataFrameのきほん
01. SeriesとDataFrame15分
02. 概観コマンド15分
03. 列を選ぶ15分
04. 行を選ぶ15分
05. 条件で抽出する15分
06. 複数条件15分
07. 並べ替える15分
08. つくる:抽出レポート20分
09. 第2章クイズ10分
3
データの前処理
01. 欠損を見つける15分
02. 欠損を埋める・落とす15分
03. 型を直す15分
04. 重複を消す15分
05. 表記ゆれを整える15分
06. 日付型にする15分
07. つくる:データクレンジング20分
08. 第3章クイズ10分
4
集計とグループ化
01. 集計のきほん15分
02. groupby15分
03. 複数キーで束ねる15分
04. aggで一気に15分
05. ピボットテーブル15分
06. 出現回数15分
07. つくる:月次集計表20分
08. 第4章クイズ10分
5
結合と整形
01. なぜ結合が要るか15分
02. mergeで結合する15分
03. 結合の種類15分
04. 縦に積む15分
05. つくる:統合データセット20分
06. 第5章クイズ10分
6
可視化
01. グラフのきほん15分
02. 棒グラフ15分
03. 折れ線グラフ15分
04. ヒストグラム15分
05. 複数系列15分
06. ラベルと整え15分
07. つくる:ダッシュボード4枚20分
08. 第6章クイズ10分
7
分析の実践
01. 問いの立て方15分
02. 前月比15分
03. 移動平均15分
04. 構成比15分
05. 外れ値を見つける15分
06. つくる:示唆を1枚に20分
07. 第7章クイズ10分
8
総合制作
01. 分析レポート完成20分
02. 提案を書く20分
03. 自由分析20分
04. 見せる形に整える20分
05. 完成と次のステップ20分

なぜ結合が要るか

このレッスンでできるようになること。売上明細に商品の情報が足りない理由を説明でき、足りない情報がどこにあるかをコードで確かめられるようになります。

マイショップ・チェーンの売上CSVには、売上日・店舗・商品名・カテゴリ・数量・金額しか入っていません。仕入原価も定価も入っていないので、このままでは利益を計算できません。分析する側からすると不便に見えますが、これは設計としては正しい形です。もし明細の1行ごとに定価を書いていたら、値上げのたびに過去の全明細を書き換えることになります。書き換え漏れがあれば、同じ商品が2つの定価を持つことになります。

だから商品の情報は商品マスタという別の表に1回だけ持ち、明細からは商品名で参照します。1つの事実を1か所にだけ置くこの考え方が正規化です。SQL入門やDB設計で扱った内容と同じで、pandas でも事情は変わりません。

Python

print(sales.columns.tolist()) print(products.columns.tolist())

分析の最初にやるべきことは、手元の表にどの列があり、どの列が両方に共通しているかを確かめることです。共通している列が、2つの表をつなぐ鍵になります。今回の題材では商品名がそれにあたります。

もう1つ確かめておきたいのが、明細に出てくる商品名がマスタにすべて載っているかどうかです。載っていない商品名があると、あとで結合したときにその行が消えるか、定価が空になります。廃番になった商品や、表記ゆれが残っていると起こります。3章で表記ゆれを整えたのは、まさにこの場面のためでした。結合の前にこの照合をしておくと、あとで数字が合わない原因を探し回らずに済みます。

今回は結合そのものはまだ行いません。足りない情報が何で、どの鍵でつながるのかを、コードで確かめるところまでを扱います。次のレッスンで実際につなぎます。

要件

  1. 共通する列は両方の columns から求める
  2. 明細にあってマスタに無い商品名を探す
  3. リストはどちらも昇順に並べ、同じ商品名は1つにまとめる
  4. 行数は int で返す

入出力例

inspect_tables("売上日,店舗,商品名,カテゴリ,数量,金額 2026-01-05,渋谷店,白磁のマグカップ,食器,2,3600 2026-01-06,横浜店,鉄のフライパン,調理器具,1,7800 2026-01-07,大宮店,藍染めのふきん,雑貨,3,1800 ", "商品名,カテゴリ,定価 白磁のマグカップ,食器,1800 鉄のフライパン,調理器具,7800 ") → {"key_columns":["カテゴリ","商品名"],"missing_products":["藍染めのふきん"],"sales_rows":3} inspect_tables("売上日,店舗,商品名,カテゴリ,数量,金額 2026-02-03,渋谷店,鋳物ホーロー鍋,調理器具,1,16800 2026-02-04,大宮店,白磁のマグカップ,食器,5,9000 ", "商品名,カテゴリ,定価 白磁のマグカップ,食器,1800 鋳物ホーロー鍋,調理器具,16800 積み重ね収納ボックス,収納,1500 ") → {"key_columns":["カテゴリ","商品名"],"missing_products":[],"sales_rows":2}

ヒント

set(a.columns) & set(b.columns) で共通の列名が求まります

isin を使うとマスタに含まれるかどうかを判定できます

sorted(set(...)) で重複を消して昇順にできます

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/08/10

関連レッスン

  • mergeで結合する

    キーで表をつなげられる

  • 結合の種類

    inner/leftを使い分けられる

  • 縦に積む

    期間別ファイルを連結できる

  • つくる:統合データセット

    結合・連結で分析基盤を作れる

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • 設計何をどう作るかを決める前工程
  • 正規化データの重複を減らし整合性を保つ設計手法
  • SQLデータベースを操作するための共通言語
  • リスト順序付きで複数の値を扱うデータ構造
main.py
学習モード
エディタを読み込んでいます

メモ

なぜ結合が要るか

⌘S で保存