今年の春、Azure Data Scientist(DP-100)に合格しました。学んだ内容を忘れないように、書き留めたいと思います。
これから受験してみようと考えている方の参考になればと思います。
データセットを結合するためのアプローチには、どんなものがあり、どのように利用するのか?
Azure Machine Learning Designerでは、複数のデータセットを結合するためにさまざまな方法が利用できます。
https://azure.microsoft.com/ja-jp/products/machine-learning/designer/
Azure Machine Learning デザイナーは、Azure Machine Learning ワークスペースで機械学習パイプラインを構築するためのドラッグ アンド ドロップ UI インターフェイスです
-
Merge モジュール
Merge
モジュールを使用して、共通の列を指定してデータを結合できます。このアプローチは、共通の列が存在し、それをキーとして使用できる場合に有効です。 -
Append モジュール
Append
モジュールを使用して、2つのデータセットを単純に結合することができます。このアプローチは、データセットが同じ構造を持ち、列の順序が一致している場合に有効です。
問いを考えてみる
次の入力データセットDataset1 Dataset2を使用して、Azure Machine Learning デザイナーで、次の出力データセットを作成してください。これを行う際、どんなコンポーネントを使いますか?
「Join Data」コンポーネントですか?それとも、「Add Rows」コンポーネントですか?
Dataset1
column1, column2, column3
1, 2, 3
4, 5, 6
Dataset2
column4, column5, column6
7, 8, 9
10, 11, 12
出力データセット
column1, column2, column3, column4, column5, column6
1, 2, 3, 7, 8, 9
4, 5, 6, 10, 11, 12
答え
この問題は、Azure Machine Learning デザイナーの 「Add Rows」 コンポーネントを使用して解決できます。
- Azure Machine Learning デザイナーで実験を開きます。
- キャンバスに
Add Rows
コンポーネントをドラッグアンドドロップします。 - 「Inputs」ポートに
Dataset1
とDataset2
を接続します。 - 実験を実行します。
実行すると、指定された出力データセットが作成されます。
解答の解説
「Add Rows」 コンポーネントは、同じスキーマを持つ複数のデータセットの行を単純に連結するコンポーネントです。この問題では、入力データセット Dataset1
と Dataset2
は同じスキーマを持つため、「Add Rows」コンポーネントを使用して、両方のデータセットのすべての行を単純に連結することができます。
他の解答として、「Join Data」コンポーネントを使用する方法も挙げられます。ただし、「Join Data」コンポーネントを使用する場合は、join type を「Inner Join」に設定する必要があります。これにより、両方のデータセットに共通する行のみが結合されます。
各モジュールの使用方法について説明します。
-
Merge モジュール
Merge
モジュールを使用すると、特定の共通の列を指定してデータを結合できます。以下は、共通の列(キー列)を指定してデータを結合する例です。import pandas as pd # データの読み込み df1 = pd.read_csv("Dataset1.csv") df2 = pd.read_csv("Dataset2.csv") # 共通の列を指定して結合 merged_df = pd.merge(df1, df2, on="common_column")
-
Append モジュール:
Append
モジュールは、2つのデータセットを単純に縦に結合します。列の順序や構造が一致している必要があります。import pandas as pd # データの読み込み df1 = pd.read_csv("Dataset1.csv") df2 = pd.read_csv("Dataset2.csv") # データの縦結合 appended_df = pd.concat([df1, df2], ignore_index=True)
Append
モジュールを使用した例(この例では、2つのデータセットを垂直に結合しています。)
+---------------+ +---------------+
| Dataset1 | | Dataset2 |
+---------------+ +---------------+
| A | B | C | D | | A | B | C | D |
+---------------+ +---------------+
| 1 | 2 | 3 | 4 | | 5 | 6 | 7 | 8 |
| 9 |10 |11 |12 | |13 |14 |15 |16 |
+---------------+ +---------------+
| |
v v
+---------------+
| Appended |
+---------------+
| A | B | C | D |
+---------------+
| 1 | 2 | 3 | 4 |
| 9 |10 |11 |12 |
| 5 | 6 | 7 | 8 |
|13 |14 |15 |16 |
+---------------+
Append
モジュールを使用して Dataset1
と Dataset2
を結合しています。
同じ列構造を持つデータセットが垂直に結合され、新しいデータセットが作成されます。