| section | date | sales | cost |
|---|---|---|---|
| A | 20151220 | 100 | 80 |
| A | 20151221 | 90 | 90 |
| A | 20151222 | 150 | 110 |
| B | 20151220 | 180 | 140 |
| B | 20151221 | 130 | 200 |
| B | 20151222 | 90 | 100 |
| C | 20151220 | 1250 | 800 |
| C | 20151221 | 905 | 850 |
| C | 20151222 | 1000 | 700 |
A〜Cの3つの部門の、それぞれ2015/12/20〜2015/12/22の売上とコストが書いてあるようなイメージ。
これを読み込んで、日付をカラムにしたいと考えた。具体的にはこういうイメージ。
| section | sales | cost | ||||
|---|---|---|---|---|---|---|
| 20151220 | 20151221 | 20151222 | 20151220 | 20151221 | 20151222 | |
| A | 100 | 90 | 150 | 80 | 90 | 110 |
| B | 180 | 130 | 90 | 140 | 200 | 100 |
| C | 1250 | 905 | 1000 | 800 | 850 | 700 |
pivot_tableの3つ目の引数(columns)に値を渡せばできるらしい。下記はsectionをindexとし、dateがカラムになるように指定している。
import pandas as pd
df = pd.read_csv('tmp.tsv', sep='\t')
df.pivot_table(['sales', 'cost'], index='section', columns='date')
#=> sales cost
#=> date 20151220 20151221 20151222 20151220 20151221 20151222
#=> section
#=> A 100 90 150 80 90 110
#=> B 180 130 90 140 200 100
#=> C 1250 905 1000 800 850 700
これで日付ごとの情報が扱いやすくなった。
# 20151220のsalesを見る df.sales[20151220] #=> section #=> A 100 #=> B 180 #=> C 1250
20151221の前日比を確認してみる。(これがやりたかったから調べた)
df.sales[20151220] / df.sales[20151221] #=> section #=> A 1.111111 #=> B 1.384615 #=> C 1.381215