目的
- 高次元、多次元のデータを操作出来るようにすること
- numpyのarray、pandasのデータフレーム、Panelの操作に関して習熟すること
- pythonとpandasからpostgresにデータを流し込む(データの次数を下げる)こと
- pandasはappendを多用すると、リークが発生しやすいため、postgresを使用してバックグラウンドで計算できる部分は、バックエンドで行う
手段
python、numpy、pandasを使用する
- numpyのarrayを読み出して、pandasのデータフレームに変換する
- 読み出したデータを配列として時間軸に対して加算する
- グリッドを左上から右下に辞書式の配列としてノンブルをふる
- 2次元に次数を下げて、日付行に対して、カラム番号と対応した物理量を取得できるようなデータ構造にする
import pandas as pd
import numpy as np
data = np.load('../data/2013/01/[sst]{data1}.npy')
df = pd.DataFrame(data)
data2 = np.load('../data/2013/01/[sst]{data2}.npy')
data3 = np.load('../data/2013/01/[sst]{data3}.npy')
df2 = pd.DataFrame(data2)
df3 = pd.DataFrame(data3)
pf = pd.Panel({'df':df,'df2':df2,'df3':df3})
s = pf.to_frame()
sst = s.T
pythonとpostgresの間でデータのやり取りを行う
pysycopg2
import psycopg2
conn = psycopg2.connect('dbname=[database] host=[localhost] user=[user] password=[passwd]')
cur = conn.cursor()
cur.execute("CREATE TABLE tset (sst_array integer[]);")
cur.execute("INSERT INTO test (sst_array) VALUES(%s)", [sst])