memoranda2016-01-29Pythonで統計処理した結果を表示する場合の便利関数を書いた全てのキーの組み合わせが無い場合でも、defaultdictの初期値を用いて表を完成させるように修正。pandasのMultiIndexを使って表示する処理を追記。統計処理ではネストされた辞書(dict)が多用することで、比較的簡単に所望の複合キーに対応する値を取得しておくことができる。population[prefecture][gender][age]のようなものだ。ageという具合に、三次元のグラフが出来る表として出力するとき、第一次辞書のキー(この場合はprefecture)を横軸に取れば良いのだが、横軸方向に値を表示していくことを考えると、少し面倒な処理が必要になる。このような表は良く使うので、そのための関数を持つライブラリを書いて使ってみた。横軸にageを取りたければ、population[age][prefecture][gender]というネストされた辞書を作って集計しておけば良い。実質的にネストの次元はおそらく際限なく増やすことが可能だが、今回は5次元までとしている。機能を追加したら、PYPIしてみるのもいいかも。月や曜日でもうまくソートできるようにしたい。第一次辞書のキーだけではなく任意の辞書のキーを横軸に取れるようにする、など。表示形式としてはセパレータを指定できるので、TSVやCSVにも対応できる。defaultdictは、キーに対するデフォルトの値を指定することができる(実際には値ではなく、新しいオブジェクトを返すファクトリ関数を指定する)。キーの存在を確認する必要なく、そのキーに対するデフォルトの値を仮定して処理が書けるのでキーの存在確認を行う必要がなく、複雑な辞書を扱う際にシンプルに書ける。unstack()を使えば、同様の処理がより柔軟に行えるようだ。ネストされたdictionaryをそのままDataFrameに入れてMultiIndexとして使うことはできず、以下のようなリフォーム処理が必要になる。キーをタプルとしてdictionaryを作成する。0setdefaultcollectionsモジュールをインポートしなくても、setdefaultを使えば、キーの確認をせずにキーが存在するものとして値を扱える。仮想マシンのスタックとネットワークI/Oについて月別アーカイブ参加グループインターネットテクノロジープログラミングはてなブログをはじめよう!nishidyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。