Python PostgreSQLのテーブルをPandasのDataFrameへ読み込む
PostgreSQLのテーブルをPandasのDataFrameに読み込む方法の備忘録です。
今回も以下で提供されているサンプルデータを使っています。
PostgreSQL Sample Database
まずはPandasと、PostgreSQLのドライバとしてpsycopg2をインポートして、DBに接続しています。
import pandas as pd import psycopg2 # 接続情報 connection_config = { 'host': 'localhost', 'port': '5432', 'database': 'test', 'user': 'ohke', 'password': 'ohke' } # 接続 connection = psycopg2.connect(**connection_config)
次にDataFrameへロードします。 Pandasのread_sqlメソッドに先程接続したコネクションとSQL(文字列)を渡すことで、SELECT結果をDataFrameとして返してくれます。
引数index_colでインデックスを指定しています。 この引数が無い場合は、1から自動的に採番されます。
# DataFrameでロード rentals = pd.read_sql(sql="SELECT * FROM rental;", con=connection, index_col='rental_id' ) # 表示 rentals
Jupyterでは以下のように表形式で表示されます。 テーブルのカラム名がそのままDataFrameのカラム名として使われていること、インデックスとしてrental_idが使われていることが確認できます。
普通のDataFrameですので、例えばカラム名でSeriesを取り出すこともできます。
rentals['inventory_id']
rental_id 2 1525 3 1711 4 2452 5 2079 6 2792 7 3995 8 2346 9 2580
時刻はTimestamp型にマッピングされるようです。
rentals['rental_date'][1]
Timestamp('2005-05-24 22:53:30')
また、統計値も取得できます(あまり意味のある値ではありませんが)。
rentals.describe()