欠損値を指定した値で埋める

今回は欠損値を指定した値で埋める方法を3つ紹介します。

  • 欠損値を特定の値で埋める
  • 欠損値を前後の行で埋める
  • 欠損値を別の列の値に置き換える

それでは、それぞれ見ていきましょう。

欠損値を特定の値で埋める

例えば、国を表す列(Country)に欠損値があるとします。

バーチャートで可視化してみると、欠損値の数が多いためNAが3番目にあることがわかります。

バーチャートのNAの部分をクリックして、「詳細」を開きます。

欠損値の詳細を見ると、これらは全て日本の大学であることが判明しました。

テーブルビューで確認してみても、日本の大学はCountryの列が欠損値になっていることがわかります。

列ヘッダメニューから「欠損値を操作」を選び、「欠損値(NA) を特定の値に置き換える」を選択します。

ダイアログが開き、すでに計算エディタに関数が入力されています。

欠損値を埋めるためには、val = "欠損値を埋めたい値"に値を入力します。そのため、今回は“Japan”で埋めたいためval = "Japan"となります。

欠損値を埋めたい値の入力が終わったら、実行します。

サマリビューに戻り、Country列を見ると欠損値が無くなっています。

すでに作成していたバーチャートに戻り、チャートピンを最新のステップに変えると、欠損値だったバーが“Japan”に置き換えられています。

欠損値を前後の行で埋める

例えば、毎週割引率を変更しているお店があります。 一度変更したら次の週になるまで割引率は変更しないため、変更した日にしか値が入っていないとします。

割引率のトレンドを可視化したいため、ラインチャートでX軸に“Date”、Y軸に“Discount Rate”を選択してみると、何も値が表示されていません。

マーカーの設定を「ライン+サークル」にしてみると、データはありました。

しかし、前後にデータがないため、線を描くことができずに、割引率のトレンドを見ることはできません。

本来であれば、割引率のトレンドは割引率が変更されるまで一定の割引率を保っているべきです。

そのため、欠損値を次の割引率が変更されるまで前の値で埋めたいです。

列ヘッダメニューより、「欠損値(NA) を扱う」を選び、「欠損値(NA) を前か後ろの行の値で埋める」を選択します。

今回は、割引率が変更されてから次の変更まで一定の割引率を保つため、前の値を選択します。

そうすることで、欠損値を前の値で埋めることができ、割引率が変更されるまで一定の割引率を保つことができました。

すでに作成していたラインチャートに戻り、チャートピンを最新のステップに変えると、欠損値を前の値で埋めることができたため、割引率のトレンドを可視化することができました。

チャートの中で直接欠損値を埋める方法

“実は、この割引率のトレンドを可視化したいだけであれば、データラングリングのステップを使ってデータを加工しなくても、チャートの中で直接欠損値を処理する方法があります。”

Y軸のメニューから「値がない場合の処理」を選択します。

値がない場合の処理に「前の値で埋める」を選択します。

これにより、先ほどと同様のチャートを作ることができました。

実は、データラングリングのステップを使って「欠損値を前後の値で埋める」という処理を行った際には、fillというコマンドが使われていたのですが、チャートの中で「欠損値を前後の値で埋める」という処理を行うと、内部的に同じ処理が行われているのです!

欠損値を別の列の値に置き換える

会員登録が必要なサービスで、ユーザーがどのページを見てサインアップしているのか知りたいとします。

しかし、ユーザーによっては見たサイトの数が少なく、TOPページを見てすぐにサインアップする場合もあれば、いくつかのサイトを見た後サインアップするユーザーもいます。

そのため現状では、サインアップの前に見ていたページを判別することができずに、バーチャートで可視化しても有意な情報を得ることはできません。

サインアップの直前に見ていたサイトのデータをとるためには、“Visit3”が欠損値だった場合は、“Visit2”の値で埋め、“Visit2”が欠損値であれば“Visit1”の値で埋めるといった方法が必要です。

そんな時に使えるのが、「欠損値を別の列の値で埋める」という方法です。

列ヘッダメニューから「欠損値(NA) を操作」を選び、「欠損値(NA) を別の列の値で埋める」を選択します。

ダイアログが開き、計算エディタにはcoalesceという関数が入っています。

このcoalesce関数は、引数に値を指定することで、欠損値 (NA) があった場合は、その指定された値で埋めてくれます。

coalesce("欠損値の処理をしたい列", "埋めたい値")

さらに、ここで値を直接指定する代わりに列名を指定すると、列の値で埋めてくれます。

coalesce("欠損値の処理をしたい列","埋めたい値を持っている列")

今回は、この列名を指定するという方法を使います。

coalesce関数の仕組みを理解するために、“Visit3”のみを引数に指定します。

新しく列を作成し、列名を“Last Visit”にして実行します。

新しく作成した“Last Visit”の列には、“Visit3”の値がそのまま入っていることがわかります。“Visit3”が欠損値だった場合は、“Last Visit”も欠損値となります。

“Visit3”が欠損値だった場合は、“Visit2”の値で補完したいので、先ほどのステップを開きコンマ(,)を入力した後にVisit2と入力して実行します。

“Visit3”が欠損値の場合は、“Visit2”の値で埋めることができました。

次に、先ほどと同様に“Visit2”が欠損値だった時に、“Visit1”の値で補完したいため、計算エディタにカンマ(,)とVisit1と入力して実行します。

テーブルビューを見ると、欠損値があった場合に別の列、つまり一つ前に訪問したサイトの値で埋めることができたため、サインアップする前に見ていたページのデータを作ることができました。

バーチャートのX軸に作成した“Last Visit”を選択して可視化してみると、サインアップする直前に見ていたサイトで多いのはTopページだとわかりました。