Excelで行っていた作業を、Exploratoryでどのように簡単に解決していけるのかを紹介するExcelシリーズです。
今回はその中でも、「他のデータフレームにある列を結合する方法」について紹介をしていきます。ExcelではVLOOKUP関数として知られているものになりますが、Exploratoryではどのように解決できるのかをご紹介します。
例えば、注文データと顧客属性データがあった時に、顧客IDをキーとして注文データに対して顧客属性データの列を結合したいとします。
Excelでは「VLOOKUP関数」を使って実施することになりますが、別のシートにあるデータの範囲を指定し、さらには列番号を覚えておきながら指定する必要があります。
Exploratoryでは、結合のダイアログの中で、結合したいデータフレームを指定し、結合する際に紐づけに使う「キー列」を指定するだけになります。
それにより、元のデータに対して結合先の列を簡単に追加していくことが可能です。
例えば、ECサイトの注文データがあったとします。このデータには注文情報に関するデータはありますが、顧客の属性情報のデータはありません。
そして、別のデータとして顧客の属性データがあり、顧客のセグメントや居住国などの属性情報が列として存在しています。
どちらのデータフレームにも「顧客ID」という、顧客を一意に識別することができる列が存在しています。
今回は注文データに顧客の属性データを結合したいため、注文データを開き、「顧客ID」の列ヘッダメニューから「結合(列を追加する)」を選択します。
結合のダイアログが表示されました。
結合先データフレームには「顧客属性データ」を、キー列には顧客を識別できる「顧客ID」の列を指定します。
プレビューすることで、注文データに対して顧客属性データの列を結合できていることが確認できます。
実行することで、簡単に他のデータフレームにある列を結合していくことができました。
結合のキーで大文字と小文字が混在していると、キーが一致せずにうまく結合ないことがあります。
しかし、結合のキーで大文字と小文字が異なっていても、文字列さえ一致していれば結合したいです。
そんな時には、「大文字と小文字を区別しないで結合」にチェックすると、文字列が一致していれば結合することができます。
デフォルトでは、結合時には結合先にあるすべての列が追加されるようになっています。
一方で、結合先の列をすべて結合するのではなく、一部の列のみを結合したいことがあります。
そう言った時には、「結合する列を選択」の緑のテキストをクリックします。
列を選択のダイアログが表示されるため、結合時に「残したい列」または「取り除きたい列」を指定することが可能です。
例えば、同じ顧客名のデータがあった時、顧客名のみをキーにしてしまうと同じ顧客名に対して結合先のデータがすべて結合されるために、結合時に行数が増えてしまうことがあります。
しかし下記の例では、顧客名と国のように複数の結合のキーを指定することにより、一意な組み合わせを作ることができます。
Exploratoryでも複数の結合キーを指定することができ、キー列にある「プラスボタン」を押すことで複数の結合キーが設定可能です。
デフォルトでは「左外部結合」といった、いわゆるExcelのVLOOKUPのような結合タイプとなりますが、それ以外にも様々なタイプの結合がサポートされています。
例えば、よく注文を返品する顧客のブラックリストがあった際に、ブラックリストに載っていない顧客だけのデータにしたいとします。
つまりは、元のデータと結合先のデータで結合のキーが一致しているデータを、フィルタのように取り除きたいです。
そう言った時には、結合先に存在しない行のみを残すことができる「アンチ結合」を使います。
今回の例のように、結合のさまざまなタイプのサポートを駆使することで、より柔軟にデータを加工していくことが可能です。
結合のタイプ別の違いについては、こちらのノートで紹介しています。