Excel ファイルを Python 3.2 で読む
地方の役所が出している人口統計を python で拾って簡単な分析をしてみよう!*1と思った。
…が一番の山場はすぐに来る。
Excel ファイルばっかじゃねーか!!*2
こりゃ Excel ファイルを Python で読めるようにしとかんとアカンと感じたのでそれのお勉強。*3
Python-Excel を使う
モジュールとしては
の2つが有名らしいです。
前者は開発が止まってる(?)のか最近更新されていなく、Python 3 でちゃんと動くのか謎だったので後者を選択。
インストール
xlrd は pip で瞬殺。
$ pip install xlrd
xlwt は 2.x しか保証しないらしい。現在は xlwt-future なるものに移行してるがこれは 2.6/2.7/3.3+ らしい。マジか…。
ただ、wlrt3 なるものがあるらしくこれは 3.1+ らしい。よかった。*4
$ pip install xlwt3
最後の xlutils は pip でインストールを試みたが上手くいかない。
GitHub の xlutils/docs/installation.txt には "This package is support on Python 2.5, 2.6 and 2.7 on Linux, Mac OS X and Windows." とあるな。まあいいや。
やること
Excel データファイルを落としてくる
今回は高山市の各年の月別人口統計データを使ってみる。
http://www.city.takayama.lg.jp/shimin/shimin_jinkousetai.html からリンクはあるのだが全部取ってくるのはだるいので python で取ってくる。
xlrd を使って落としてきた xls ファイルを csv 形式に変換
形式を確認するとすべて下の画像のようになっている。各年で変わってないのでいいですね。特徴をまとめておく。
- A4-A15 に月が入っている
- B4-B15 に男性人口が、C4-C15 に女性人口が入っている
- E4-E15 に世帯数が入っている
ということで year(年度にしない), month, male_pop, femail_pop, households という形式の csv ファイルを作ればいいかな。
というわけスクリプト作成。
このスクリプトを
$ python tkym_stat.py ./hoge > output.csv
とすることで ./hoge フォルダに xls ファイルを入れてカレントに csv ファイルを出力できた。あとは matplotlib とかで描画するだけ…なんだけど ブログネタを確保するため ちと長いから一旦ここで切ります。
参考にしたサイト
本家サイト。ここにあるテュートリアルの pdf、詳しいですね。
Excel操作 (python-excel) - Python入門から応用までの学習サイト
http://www.python-izm.com/contents/external/excel.shtml
xlrd と xlwt について日本語で書いてあるサイト。大体はここに載ってるので非常に楽。
*1:気象庁のページ 気象庁|過去の気象データ・ダウンロード からデータを拾って簡単な分析とかもいつかやりたいな。こっちは「きれいな」データなので非常に扱い易いけど。
*2:もちろん .xls であるのが一概にアカンと言っているわけではありません。こういった問題に興味がある方は「ネ申 Excel」(読み方:ねもうすえくせる)でググるといいと思います。あー、自分にも当てはまることがあって辛いですね…。
*3:実際は形式が多様+「ネ申」要素があったりするで人力で整形し直す必要がありそうですね…。
*4:注意 xlwt3 の pypi サイト では "Please use: https://pypi.python.org/pypi/xlwt-future/0.8.0 xlwt3 will be REMOVED from PyPI." と公言されている。なのでできることなら xlwt-future を使って下さい。ただやはり xlwt-future は 3.2 環境でのインストールはエラー吐いたので仕方なく xlwt3 を入れました。