(広辞苑より)2013年5月26日日曜日Pythonを使って簡単にデータを視覚化するTweet世の中のことをもっと知るにはどうしたら良いだろうと思うときがある。世の中の多くの事柄はログやデータに落とされる。Googleなどの検索サイトは良い例だろう。多くの場合、視覚化が有効な手段となる。身の回りの日常的なデータやログを何とかしたい。日常のデータを視覚化するのに数十行以上のコードは書きたくない。息をするかのごとく自然に視覚化を行いたいのだ。そのためには1~2行、長くて数行で済ませることが必要だ。そこでPythonとmatplotlibを使う。加えて、IPythonがあればなお良い。IPythonの導入については以前のブログ記事であるIPythonの埋め込みプロットが素晴らしいを参考にして欲しい。事前にnumpyとmatplotlibをインポートしておく。できればscipyも。*短いコードで視覚化を行うためには、Pythonの内包表記は必須だ。8をデータとするグラフを書きたいのならIPythonを使って以下の1行で実現できる。8])数値が行ごとにinput.txtというファイルに書かれていた場合は以下の通り。file("input.txt")])map関数を使えばもっとスマートに書ける。ファイル内の数値を文字列として配列で読み込み、それらの文字列をmap関数によりintで整数に変換する。file("input.txt")))さて、ログが2次元で書かれていた場合はどうするのか。以下のデータがinput.txtに書かれていたとする。1.9この場合、以下のようにすればプロットできる。ファイルから行ごとの文字列を読み出して、それを","を区切りとしてリスト化する。文字列で格納されている数値をmap関数を使ってfloatで実数に変換している。zip(*data))を使って転置している。ここでdataはリストによる行列とする。リストによる行列の転置はイディオムとして覚えておくと便利だ。y)ログファイルなどの場合、単に数値が並んでいることは少なく一緒にテキストが書き込まれていることが多い。次のログ(input.log)について視覚化を行なってみる。55.2Unitの値をそのままプロットするなら以下のようにすれば良い。reモジュールをインポートしておき、re.matchで先頭の文字列と一致したものだけ選び出している。l)])Unitを横軸、Factorを縦軸にしてドットでプロットしたい場合は以下のようにする。"o")最後に少し複雑な例を挙げておく。あるデータに対してスペクトラルクラスタリングを行いたいとする。numpyとmatplotlibの他に、scipy関連の固有値問題・k近傍法・kd木のモジュールをインポートしておく。KDTreeそして、クラスタリングしたいデータをcircles.datとすると、以下のコードで視覚化できる。zip(ps,idx)]ここではforループを行うために内包表記を使っており、また、内包表記のリストが必要ない場合は、_(アンダースコア)に入れておく。これはシェル上で余計なデータを表示させないためである。内包表記上では配列への代入ができないので__setitem__を利用している。zip(*data))の代わりにarray(data).Tとすれば良いので分かりやすい。Pythonを使えばたったこれだけだ。これだけのことで、これまで見えなかったものが見えてくるのは楽しい。Engineメッセージボード*当ブログに関する意見や要望などにお使いください。Googleアカウントでログインすることで書き込みができます。Twitterへの送信を同時に行うこともできます。ストリートビューで散歩*Googleマップのストリートビューを利用して散歩をするWebアプリです。ストリートビューとマップを分割してマーカーを視界タイプに変更することで使いやすくしてあります。APIを利用したグラフ・チャート作成ウェブアプリです。クリック一つで簡単にグラフを作成できます。ブログ記事への貼り付けなどにどうぞ。OpenIDテスト*OpenIDによるログインのテストを行います。mixiであればクリック一つで、他のOpenIDアカウントであればそのURLを入力することでテストできます。一言コメント表示機能付きです。HTML文字変換*テキストで使われているHTML特殊文字をウェブで表示できるようにするための文字変換ウェブアプリです。プログラムのソースコードなどをブログ記事に貼り付けるときなどに便利です。短縮URLチェッカー*フィッシングサイト判別機能付き短縮URLチェッカーです。テキストボックスに変換したいURLを入力すればbit.lyの短縮URLが表示され、bit.lyの短縮URLを入力すればもとのURLが表示されます。展開されたURLがリンク付きで表示されますが、もしフィッシングサイトの疑いがある場合は警告が表示されます。Trendsの急上昇ワードをランキング順に表示します。Googleでのキーワード・画像検索やWikipediaによる用語の説明もあります。※GoogleがAPIの提供を終了したため、現在停止中です。自己紹介noxゲームを楽しむだけの余裕と感性は失いたくないnoxです。