Excel データを Mathematica に取り込む際、もしかしたら Import
関数を使いリスト形式で読み、そこから必要なデータを取り出していませんか。あるいは Dataset 形式で読むのは知っていても、カラムの追加、複数の Dataset 同士の結合等が直接行えず、諦めた経験はないでしょうか。本ブログはそうした誤解を解くために書かれました。
カレントディレクトリに以下のような Excel ファイルがあるとします。
従来は Import
関数を使ってリスト形式として読んでいましたが
Mathematica ver10.0 以降は Dataset 形式で読めるようになりました。Dataset 形式は Python でいうところの DataFrame に似てます。なお、最後の [[1]]
は複数想定される Excel シートの1枚目を指します。
fruits = Import["fruits.xlsx", {"Dataset", 1},"HeaderLines" -> 1]
みかんの値段を調べてみます。
果物の値段の平均を計算します。
全果物の売上総数を計算します。
最大売上個数を求めます。
データを単価の小さい順に並び替えます。
データを単価の大きい順に並び替えます。
単価が200円を超えるデータのみを取り出します。
Dataset は高速にデータを処理できる一方、加工に弱いという誤解が広まっていて、加工したいときは、いったん Association に変換し、その上で加工し、再度 Dataset に戻すという習慣が広まっているようです。たとえば、以下のような要請「Dataset fruits に合計 (= 単価 * 個数) 欄を追加する」にも、新規カラムの追加で簡単に対応できます。
このとき、全売上総計は次のようになります。
一方、Mathematica のヘルプには、たとえば、guide/DatabaseLikeOperationsOnDatasets のようなページはあっても Dataset に対する具体的な操作例は紹介されていません。対策は簡単で、Association に対する操作から連想します。次は JoinAcross
の例で、月 moon をキーに2つの Dataset を結合します。
いったん Association
上で結合し、Dataset に変換しています。
Dataset に対し、直接、結合しています。
Dataset を 連想形式 Association に変換します。
Dataset をリスト形式に変換します。
Dataset を {key, value} 形式のリストに変換します( は :>
で入力)。