pandasをwhlで入れる
仕様によって向き不向きがあるので検討する
手っ取り早くやるときはまあなんでもいいと思うけど、データを保存するのだから、それをのちのち使うのだろう、と考えるのが自然だと思う。
この時は何を考慮する必要があるのか。
- データの正規性
データが正規化されていると型処理が非常に楽。というかそのままsqlでぶち込めるし読める。何も考える必要が無い。
データが非正規的だと面倒さが加速する。
- データの構造
木は極めて面倒。データだか実装だか全然わからん。いやわからんことはないが、実装がデータに依存してくるから、データを拡張すると実装が爆発的に加速。
カオスなコードになる。
- データの拡張性
逆にxml等の半構造データベースは拡張が容易。例えばこのレコードだけ特殊なkeyを設けるとかできる。まあテーブルを分割しろよ、正規化していけ、と思わなくもないが、その結果隣接テーブルを作るはめになって死、が容易に想像できる。
- データの一意性とか完全性とか
関係データベースは正規性を保っておけば一意性・完全性に関してかなり優位だし、どの本よんでもそう書いてある。
半構造データベースはその辺がほぼ無理。
- データの検索性
csvとかjsonとか検索性あるのってレベル。必然的にpandasとか補助的なライブラリを使うこととなる。
- 可読性・可視化性
excleとかで見れると非常に楽。csv,jsonもテキストエディタで見れるしかなり楽。一方RDBは専用のツールが必要。pickleとか言うまでもない。
- エンジンの入手性
簡単に操作環境を構築し直せる方が良い。標準ライブラリに入ってるものは簡単に環境を構築できる。
pickleは保存できるクラスがモジュールトップレベルじゃないとダメ~という縛りがあるから思ったよりその辺が面倒になる。
- 書きやすさ
コードの生産性があるので、単に使い慣れてるもの使えばよいのでは、というのが基本。しかしそうであればオレオレ実装が一番楽となるが、オレが明日も同じ気持かというとそうではないのだ……
sqlクエリを書くのは、文字列操作じみた方法になってくるのでこれはこれでキモいところがある。
まとめるとこう。
実装 | 正規性 | 構造 | 拡張性 | 完全性 | 検索性 | 可読性 | 入手性 | 書きやすさ |
---|---|---|---|---|---|---|---|---|
sqlite3 | ◎ | ◎ | × | ◎ | ◎ | × | ◎ | △ |
pickle | × | △ | ○ | × | × | × | ○ | ◎ |
ElementTree | △ | ○ | ◎ | × | ○ | ○ | ◎ | ○ |
json | △ | ○ | ○ | × | × | ○ | ◎ | ○ |
excel | △ | △ | △ | × | × | ◎ | △ | × |
csv | ○ | ○ | △ | × | △ | ○ | ◎ | ○ |
人力 | △ | ○ | ◎ | × | × | × | × | ◎ |
多分こんな感じ。気持ちをまとめるとこころにやさしい。
pandasを入れてなかった
のでwhlで入れます。
いつもどおりhttp://www.lfd.uci.edu/~gohlke/pythonlibs/からpy2.7-win64.whlを取ってきてpip install pandas~.whlでインストールする。