In [1]:
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
In [3]:
# このセルの内容は、理解できなくても大丈夫です。
# ただサンプルになるデータを作りたいだけですので、出来たデータをどのような加工するかに注目してください。

import pandas.util.testing as tm
tm.N = 3

# ちょっとした関数を作ります。
def unpivot(frame):
    N, K = frame.shape
    data = {'value' : frame.values.ravel('F'),
            'variable' : np.asarray(frame.columns).repeat(N),
            'date' : np.tile(np.asarray(frame.index), K)}
    return DataFrame(data, columns=['date', 'variable', 'value'])

# DataFrameを作ります。
dframe = unpivot(tm.makeTimeDataFrame())
In [4]:
# 入れ子に重なったデータができます。
dframe
Out[4]:
date variable value
0 2000-01-03 A -0.504390
1 2000-01-04 A -0.074959
2 2000-01-05 A 0.504834
3 2000-01-03 B 0.666841
4 2000-01-04 B 1.328496
5 2000-01-05 B 0.334969
6 2000-01-03 C -0.532988
7 2000-01-04 C -0.981004
8 2000-01-05 C 0.909992
9 2000-01-03 D 0.925552
10 2000-01-04 D -0.129951
11 2000-01-05 D 1.060076
In [7]:
# 行にdate, 列にvariable、これをvalueで埋めます。
dframe_piv = dframe.pivot('date','variable','value')
dframe_piv
Out[7]:
variable A B C D
date
2000-01-03 -0.504390 0.666841 -0.532988 0.925552
2000-01-04 -0.074959 1.328496 -0.981004 -0.129951
2000-01-05 0.504834 0.334969 0.909992 1.060076
In [8]:
# どのようなピボットテーブルを作るかは、どのよなデータが欲しいかによります。