このノートは、Exploratoryを効率的に使い始めることができるように作られた「Exploratoryの使い方」の第3弾、「データラングリング(データの加工)」編です。
Exploratoryを使ってデータをきれいにしたり、加工、整形などしたりするにあたって知っておくと便利な機能を、実際にサンプルデータを使って手を動かしながら学んでいただくようにデザインされています。
所要時間は20分ほどとなっています。
今回はサンプルデータとして以下の2つのデータを使います。
1つ目の「ユニコーン企業のデータ」は、1行が1ユニコーン企業になっており、それぞれの企業の国や時価総額などの情報が列として入っています。
2つ目の「国別のGDPと人口データ」は、2020年における国ごとのGDPと人口の情報が列として入っています。
データをダウンロードできたら、ダウンロードしたフォルダを開き、「ユニコーン企業のデータ」と「GDPと人口データ」を2つ選択した状態で、Exploratoryの画面にドラッグ&ドロップします。
CSVファイルの選択ダイアログが表示され、2つのデータが選択されていることが確認できます。
これらは別々のデータフレームとしてインポートしたいため、通常の「インポート」ボタンをクリックします。
インポートダイアログが表示されますが、今回はインポート時の設定は必要ないため、「全てをOK」のボタンをクリックして、一気にインポートを行います。
今回使用する「ユニコーン企業のデータ」と「国別のGDPと人口のデータ」という2つのデータフレームがインポートされていることが確認できます。
ユニコーン企業のデータを開き、産業ごとの企業数を可視化してみましょう。
サマリビューの産業の列から「チャートの作成」ボタンをクリックします。
チャートビューに移り、産業ごとの行の数(企業数)を可視化することができました。
バーチャートの向きを縦にしたい場合は、向きに「縦」を選択します。
産業には「Artificical Intelligence」と「Ai」という同じ「AI」を表す値があるようです。これらは同じカテゴリーとしてカウントしたいため、どちらも「AI」に置換して表記を統一したいです。
産業の列ヘッダメニューから「値を置き換える」の「新しい値を指定」を選択します。
「元の値を新しい値で置換」のダイアログが表示されました。
元の値が「Artificical Intelligence」と「Ai」の新しい値に「AI」を指定して実行します。
これにより、産業の「Artificical Intelligence」と「Ai」を「AI」に置換することができました。
先ほどのバーチャートで結果を確認したいため、「チャートビュー」を開きます。
しかし、産業の「Artificical Intelligence」と「Ai」はまだ別々の値として表示がされているようです。
なぜなら、このチャートは、ピンが1番目のステップに「ピン付け」されたままです。ということは、この時点ではまだ産業の「Artificical Intelligence」と「Ai」を「AI」に置換する処理はされていません。
そこで、産業の値を「新しい値に置換」した2番目のステップにチャートのピン動かす必要があります。ドラッグ&ドロップでチャート・ピンを2番目のステップに動かしましょう。
これにより、「Artificical Intelligence」と「Ai」を「AI」にまとめて一つのバーとして可視化していることが確認できます。
集計とは、「グループ」ごとに行をまとめて、グループ単位での計算を行うことを指します。
例えば、今回のユニコーン企業のようなデータであれば、下記のように「国」ごとに企業数(行の数)や時価総額の平均値を計算することです。
Exploratoryでは、チャートの中で集計が行われるため、基本的には可視化のために集計を行う必要はありません。しかし、集計結果をもとに、さらに計算を行いたい場合などは、事前にデータを集計する必要があったりします。
現在は1行が1ユニコーン企業のデータとなっていますが、集計をして1行1カ国にし、国ごとの企業数をデータとして作成してみましょう。
国の列ヘッダメニューから「集計」を選択します。
「集計」のダイアログが表示されました。国の列から集計を選択したため、グループには「国」が選択された状態になっています。また、値にはデフォルトで「行の数」が選択されているため、国ごとのユニコーン企業数(行の数)が集計されていることが確認できます。
行の数の列名が「Number_of_Rows」になっているため、列名を「企業数」に変更してみましょう。
値の「行の数」の横にある「編集」ボタンをクリックします。
新しい列名に「企業数」を指定して「OK」ボタンをクリックします。
「プレビュー」ボタンをクリックすることで、列名が「企業数」になっていることが確認できました。集計の設定が完了したため、「実行」ボタンをクリックします。
1行が1企業のデータから、1行1カ国のデータにして、国ごとのユニコーン企業数(行の数)を集計することができました。
例えば、国ごとのユニコーン企業数とGDPとはどういった関係にあるのか調べたいとします。
ただ、ユニコーン企業のデータには、GDPの情報は列としてありません。
そこで、先程インポートしたもう一つのデータである「国別のGDPと人口データ」にある、「GDP」や「人口(Population)」のデータを、国名をキーとして、企業数のデータと結合してみます。
国の列ヘッダメニューから「結合(列を追加する / Join)」を選択します。
「結合」のダイアログが表示されました。
結合先のデータフレームには「国別のGDPと人口データ_2020年」を選択します。
次に、結合するときのキー列(紐づける列)には国を使用するため、結合先のキー列に「Country」を選択します。
プレビューボタンを押すことで、国をキーとして、GDPなどのデータを列結合できていることが確認できます。しかし、国コードや経度/緯度などの列も追加されていますが、今回はGDPと人口以外の列は追加したくないとします。
「結合する列を選択(全て)」を選択します。
列を選択のダイアログが表示され、「GDP」と「Population(人口)」のみを列として選択して「OK」ボタンをクリックします。
プレビューを押すことで、「GDP」と「Population(人口)」のみが結合されていることが確認できます。
実行をすることで、ユニコーン企業のデータに国をキーとして「GDP」と「Population(人口)」を結合することができました。
今回は、国ごとのユニコーン企業数とGDPをバーチャートを使って可視化したいです。
チャートを作成していくため、チャートビューを開きます。
新しくチャートを作成したいため、「新規チャートを追加」の「プラス」ボタンをクリックします。
新しくチャートを作成することができました。また、チャートを新しく作成したときは、「チャートピン」が現在選択されている4番目のステップに紐づいていることがわかります。
チャートのタイプに「バー」を選択します。
X軸に「国」を選び、Y軸には「企業数」の集計関数には「合計値(SUM)」を選択します。
並び替え(ソート)にチェックをつけることで、企業数が多い順(降順)に国を並び替えることができます。
Y軸の2つ目の列に「GDP」を選び、集計関数には「合計値(SUM)」を選択します。
しかし、これでは「企業数」と「GDP」が同じY1軸を使用しているため、GDPを「Y2軸」に設定したいです。
Y軸の2つ目に設定した「GDP」のメニューから「Y1/Y2軸の指定」を選択します。
列の設定のダイアログが表示されるため、GDPの「Y2軸」にチェックをつけて適用します。
GDPの列の値を「Y2軸」に設定できました。
「企業数」と「GDP」のバーを横並びで表示したいため、バー・チャート・タイプに「横並び」を指定します。
GDPが高い「アメリカ(United States)」や「中国(China)」はユニコーン企業数も多いことがわかります。
一方で、「日本(Japan)」はGDPは他の国に比べて高いですが、ユニコーン企業数は3件と少ないことがわかります。※ 2020年時点のデータを使用しています。
データを集計したことによって、1行1企業のデータから1行1カ国のデータになってしまいましたが、1行1企業のデータを使って別のデータラングリングを行いたいことがあります。
そういった時に使えるのが「ブランチ」機能で、ブランチによってメインのデータフレームから派生させたデータフレームを作成することができます。
さらに、ブランチは複数作成することができ、どのステップからでも作ることができます。
ブランチが作られた以前のステップを変更すると、それより下流に位置するステップのみが更新されるようになっています。
1行1企業のデータからブランチを作成したいため、集計をする前のステップである2番目のステップを選択します。
2番目のステップから「ブランチを作る」ボタンをクリックします。
ブランチ名に任意の名前を指定して「作成」ボタンをクリックします。
メインのデータフレームから派生した「ブランチ」データフレームを作成できました。
2番目のステップからブランチを作成したため、このデータフレームは2番目のステップまでの処理を反映して作られていることがわかります。
企業に複数の投資家が投資をしている場合、「投資家」の列には複数の投資家の名前がコンマ区切りで表示されます。
現在のように、1行1企業の状態で、企業単位での集計や可視化をしたい場合はこのままで問題ありません。
しかし、「投資家」に注目をして集計・可視化をしようとすると上手くいきません。なぜなら、1行が1投資家になっていないため、特定の投資家の件数を数えるといったことができないからです。
そのため、1行を1投資家になるように、投資家の値を複数の行に分割してみましょう。
投資家の列ヘッダメニューから「分割」の「...で行に分割」を選び、区切り文字には「コンマ(,)」を選択します。
「行に分割」のダイアログが表示されるため、そのまま実行ボタンをクリックします。
これにより、投資家ごとに行に分割することができました。
投資家ごとに行ができたことによって、複数の企業から投資を受けている企業はその分だけ行数が増えることとなります。例えば、Tiktokで有名な中国の「Bytedance」という企業は、4つの投資家から投資を受けているため、4行になっていることがわかります。
投資家ごとに行に分割したことにより、行数も「1,271行」と増えていることが確認できます。
さらに、テーブルビューから投資家の列の「i」ボタンを押すことで「サマリ情報」を見ることができますが、どの投資家がより多くの企業に投資をしているのかも簡単に確認していくことが可能です。
今回は投資家のなかでも、日本企業である「Softbank」に注目をしていきたいです。
ただ、「Softbank Group」や「Softbank Corp.」といった形で同じ「Softbank」でも複数の名称に分かれてしまっています。
こういった問題をよく「表記揺れ」と呼びますが、表記揺れが起こるとデータを集計したり、可視化をする時に別々の値として認識されるために、正しい数で計上できないことに繋がります。
そのため、同じ意味を表す値は、同じ文字として整える必要があります。これを行うのが「テキストデータの加工」です。
Exploratoryでは「テキストデータの加工」の機能を使って、簡単に文字列を整えていくことができます。
投資家の列ヘッダメニューから「テキストデータの加工」の「取り除く」を選び、「文字列(複数の候補)」を選択します。
「テキストデータの加工」のダイアログが表示されました。
右側にあるプレビュー画面で「Softbank」を含む値を確認したいため、検索ボックスに「softbank」と入力します。ちなみに、検索ボックスでは大文字、小文字は関係なしに文字列さえマッチしていれば表示されるようになっています。
これにより、「softbank」が文字列に含まれる値が確認することができましたが、「Softbank」の後にある下記の文字を削除したいです。
そのため、文字に「Group, Corp., Capital」を指定します。複数の文字列を指定する時には、文字列の間にコンマ(,)で区切ることになります。
また、データの中には「Group」と「group」のように大文字と小文字の違いがありますが、オプションにある「大文字・小文字を無視する」にチェックがついている場合、文字列さえ一致していれば取り除くことができるようになっています。
プレビューボタンをクリックすると、新しい値がすべて「Softbank」に整えられていることが確認できます。
実行をすることで、「Softbank」の文字列を綺麗に整えて、表記揺れの問題を解決していることがわかります。
サマリビューを開き、投資家の列を確認すると「Softbank」は31件あることが確認できます。
テーブルビューから投資家の列の「i」ボタンを押して「サマリ情報」を見ると「Softbank」は31件あることが確認できます。
Exploratoryの使い方のデータラングリング(加工)編は以上となります!
Exploratoryの使い方シリーズの他のパートには下記のリンクからご確認いただけます。ぜひ次の「ダッシュボード」のパートも実施してみてください。