4章: データの結合と整理
この章では、Power Queryを使ってデータを結合や整理する方法について学びます。具体的には、クエリのマージ、アペンド、グループ化と集計、ピボットとアンピボット、階層化されたデータの操作といったトピックを取り上げます。
4.1 クエリのマージ
Power Queryでは、2つのテーブルを1つに結合するマージ機能があります。結合方法には、内部結合、左外部結合、右外部結合、完全外部結合などがあります。以下の例を見てみましょう。
テーブル1:
ID | 氏名 |
---|---|
1 | 山田太郎 |
2 | 鈴木次郎 |
テーブル2:
ID | 年齢 |
---|---|
1 | 28 |
2 | 35 |
これらのテーブルをIDをキーにして内部結合すると以下のようになります。
ID | 氏名 | 年齢 |
---|---|---|
1 | 山田太郎 | 28 |
2 | 鈴木次郎 | 35 |
4.2 クエリのアペンド
クエリのアペンドは、複数のクエリを縦に連結する機能です。例えば、以下の2つのテーブルをアペンドすると、次のようになります。
テーブル1:
ID | 氏名 |
---|---|
1 | 山田太郎 |
2 | 鈴木次郎 |
テーブル2:
ID | 氏名 |
---|---|
3 | 佐藤花子 |
4 | 高橋洋子 |
アペンド後のテーブル:
ID | 氏名 |
---|---|
1 | 山田太郎 |
2 | 鈴木次郎 |
3 | 佐藤花子 |
4 | 高橋洋子 |
4.3 グループ化と集計
Power Queryでは、データをグループ化して集計することができます。例えば、以下のテーブルから都道府県別の人数を集計することができます。
元のテーブル:
氏名 | 都道府県 |
---|---|
山田太郎 | 東京都 |
鈴木次郎 | 神奈川県 |
佐藤花子 | 東京都 |
高橋洋子 | 千葉県 |
グループ化と集計後のテーブル:
都道府県 | 人数 |
---|---|
東京都 | 2 |
神奈川県 | 1 |
千葉県 | 1 |
4.4 ピボットとアンピボット
ピボットは、データを転置させる操作で、行を列に、列を行に変換します。逆に、アンピボットは列を行に変換します。
元のテーブル:
氏名 | 科目 | 得点 |
---|---|---|
山田太郎 | 数学 | 80 |
山田太郎 | 英語 | 75 |
鈴木次郎 | 数学 | 90 |
鈴木次郎 | 英語 | 85 |
ピボット後のテーブル:
氏名 | 数学 | 英語 |
---|---|---|
山田太郎 | 80 | 75 |
鈴木次郎 | 90 | 85 |
アンピボット後のテーブル:
氏名 | 科目 | 得点 |
---|---|---|
山田太郎 | 数学 | 80 |
山田太郎 | 英語 | 75 |
鈴木次郎 | 数学 | 90 |
鈴木次郎 | 英語 | 85 |
4.5 階層化されたデータの操作
Power Queryでは、階層化されたデータ(例えば、JSON形式やXML形式のデータ)を扱うことができます。これらのデータを取り扱う際には、展開、集約、フィルタリングなどの操作が可能です。
例えば、以下のようなJSON形式のデータがあるとします。
[ { "name": "山田太郎", "scores": [ {"subject": "数学", "score": 80}, {"subject": "英語", "score": 75} ] }, { "name": "鈴木次郎", "scores": [ {"subject": "数学", "score": 90}, {"subject": "英語", "score": 85} ] } ]
このJSONデータをPower Queryで展開して、以下のようなテーブル形式に変換することができます。
氏名 | 科目 | 得点 |
---|---|---|
山田太郎 | 数学 | 80 |
山田太郎 | 英語 | 75 |
鈴木次郎 | 数学 | 90 |
鈴木次郎 | 英語 | 85 |
さらに、このテーブルを操作して、各生徒の平均得点を算出することもできます。
氏名 | 平均得点 |
---|---|
山田太郎 | 77.5 |
鈴木次郎 | 87.5 |
このように、Power Queryを使えば、階層化されたデータを効率的に操作し、様々な集計や分析が可能になります。
この章では、データの結合と整理に関する基本的な操作方法を学びました。具体的には、クエリのマージ、アペンド、グループ化と集計、ピボットとアンピボット、階層化されたデータの操作について解説しました。これらの機能を駆使することで、データを効率的に整理し、より深い分析が可能になります。
演習問題
以下の演習問題に取り組んで、データの結合と整理に関する知識を確認しましょう。
- 次の2つのテーブルがあります。
テーブルA:
ID 氏名 1 山田太郎 2 鈴木次郎 テーブルB:
ID 科目 得点 1 数学 80 1 英語 75 2 数学 90 2 英語 85 テーブルAとテーブルBを結合して、氏名、科目、得点の列を持つ新しいテーブルを作成してください。どの結合方法を使用するのが最適でしょうか?
- 次のテーブルがあります。
氏名 科目 得点 山田太郎 数学 80 山田太郎 英語 75 鈴木次郎 数学 90 鈴木次郎 英語 85 上記のテーブルを使って、各生徒の平均得点を求める新しいテーブルを作成してください。
- 次のテーブルがあります。
氏名
氏名 数学 英語 山田太郎 80 75 鈴木次郎 90 85 上記のテーブルを使って、ピボット操作を行い、以下の形式のテーブルに変換してください。
科目 山田太郎 鈴木次郎 数学 80 90 英語 75 85 - 次のテーブルがあります。
ID 名前 性別 年齢 1 山田太郎 男性 25 2 鈴木次郎 男性 30 3 佐藤花子 女性 28 上記のテーブルを使って、性別ごとの年齢の平均値を求める新しいテーブルを作成してください。
- 次のテーブルがあります。
商品名 カテゴリー 価格 りんご フルーツ 200 バナナ フルーツ 100 オレンジ フルーツ 150 じゃがいも 野菜 80 にんじん 野菜 120 キャベツ 野菜 90 上記のテーブルを使って、カテゴリーごとの商品数と総価格を求める新しいテーブルを作成してください。
各問題を解決する際に、本章で学んだ知識を活用しましょう。演習問題を通じて、データの結合と整理に関するスキルを確実に身につけてください。