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