superi

ミレニアル世代のライフプランを提案するメディア

PostgreSQLからクエリでデータを呼び出してグラフにプロットする

前回PostgreSQLにInsertしたデータを、クエリで呼び出してグラフにプロットしてみたいと思います。

こちらです。

 

www.superi.jp

 

 コードを実行してみる

まず、IPythonからPostgreSQLへのコネクションを作成します。

import psycopg2 as pg

conn = pg.connect(dbname="forRDS",

host="forrds.xxxxxxxxxx.ap-northeast-1.rds.amazonaws.com",
port=5432,
user="root",
password="xxxxxxxx")

 

pandasのSQL用ライブラリを利用します。

import pandas.io.sql as psql

 

実行するSQLは以下。至ってシンプルなセレクト文です。

sql = 'select * from usdjpy'

pandasのread_sqlでは、sqlクエリ, コネクション, インデックス等を指定し、DataFrameとしてデータを取得してくれます。ちなみにインデックスを指定するかfalseにしておかないと自動で番号が発番されてしまい、グラフのx軸に期間を表示できなくなります。

usdjpy = psql.read_sql(sql, conn, index_col = 'datetime')

usdjpy

  open high low close
datetime        
2001-01-03 10:00:00 114.60 114.60 114.37 114.44
2001-01-03 11:00:00 114.45 114.64 114.38 114.64
2001-01-03 12:00:00 114.62 114.62 114.36 114.37
2001-01-03 13:00:00 114.36 114.49 114.33 114.42

 

IPython起動時(こちらを参照してください)にpylabをinlineで立ち上げているのでライブラリのimportの必要なくグラフをプロットできます。

Iusdjpy.plot()

 
 <matplotlib.axes.AxesSubplot at 0x7f54c17c2b10>

f:id:ukichang:20141228000416p:plain

余談

IPython起動時にpylabをinlineで立ち上げていましたが、matplotlibのほうがベターみたい・・・


iPython Notebookの--pylab inlineは使うのをやめようという話 - Wolfeyes Bioinformatics beta

 

参考URL

pandasでRDBの読み書きをする | mwSoft

pandas.read_sql — pandas 0.15.2 documentation