7/30 fukuoka.ex#27:Elixir/Phoenixもくもく会に参加しました。
私は@piacerex さんの関数型でデータサイエンスを#1から実装していきました。
順調に進んでいたのですが、関数型でデータサイエンス#2の正規化でエラーが出てしまいました。もくもく会の中では解決できなかったので、改めて調べてみました。
エラー内容

min = result |> Enum.map( &( &1[ "ApplicantIncome" ] ) ) |> Enum.min |> String.to_integer
Webページにアクセスしようとすると、画像のようなエラーになります。
ハイライトされている部分がエラーだと分かりますが、エラーの原因が分かりません。
エラーの調査
まずはパイプラインを1つづつ試しながらエラー箇所を絞り込みました。
:erlang.binary_to_integer/1
>Called with 1 arguments
1. nil
エラー箇所を特定して見ると|> String.to_integerに nil が渡っているのが原因のようです。
min = result |> Enum.map( &( &1[ "ApplicantIncome" ] ) ) |> Enum.min
を表示してみると確かに何も表示されていませんでした。
Enum.min以前に、Enum.mapの値も取得できていませんでした。
解決
こうなると取得元のCSVファイルが怪しそうです。
CSVの列がどう格納されているのかを表示してみました。

各列に「 ApplicantIncome」のような空白が含まれています。
CSVファイルは次のようになっています。どうやらカンマの後ろの空白も列名に含まれるようです。
ID, Gender, Profession, ApplicantIncome, CoapplicantIncome, LoanAmount, LoanStartDatetime
無事に表示されました。