pandasとSQL
Pandasは、R言語のdata.frameと呼ばれるデータ構造をPythonに移植したもので、 データ解析によく使われるライブラリ。 データ解析にはデータベースが切っても切れない関係であるため、 PandasはSQLと密に連携できるようになっている。 SQLには色々な方言があるのだが、Pythonでそれらの方言を統一的に扱おうとしているのがSQLAlchemyというライブラリ。
そこで、PandasからSQLAlchemyを使ってデータベースから読んだデータをDataFrameに変換するには:
import sqlalchemy import pandas as pd # この例ではsqliteを使うが、 engine = sqlalchemy.create_engine('sqlite:///example.db') # 例えば、PostgreSQLをかわりに使いたければ(ただしpsycopg2というライブラリに内部で依存): # engine = sqlalchemy.create_engine("postgresql://username:password@host/dbname") query = 'select * from hoge' df = pd.io.sql.read_sql(query, engine)
これだけ。簡単!
ちなみに、参考リンクではwith pg.connect(...) as conn:
となっているが、上の例のようにPandas最新版では、SQLAlchemyのengine
を直接pandas.io.sql.read_sql()
に渡すことが可能。こっちのほうが短いしわかりやすいので最新版の機能を使おう。