@@ -1684,6 +1684,60 @@ def test_tshift(self):
16841684 no_freq = panel .ix [:, [0 , 5 , 7 ], :]
16851685 self .assertRaises (ValueError , no_freq .tshift )
16861686
1687+ def test_pct_change (self ):
1688+ df1 = DataFrame ({'c1' : [1 , 2 , 5 ], 'c2' : [3 , 4 , 6 ]})
1689+ df2 = df1 + 1
1690+ df3 = DataFrame ({'c1' : [3 , 4 , 7 ], 'c2' : [5 , 6 , 8 ]})
1691+ wp = Panel ({'i1' : df1 , 'i2' : df2 , 'i3' : df3 })
1692+ # major, 1
1693+ result = wp .pct_change () # axis='major'
1694+ expected = Panel ({'i1' : df1 .pct_change (),
1695+ 'i2' : df2 .pct_change (),
1696+ 'i3' : df3 .pct_change ()})
1697+ assert_panel_equal (result , expected )
1698+ result = wp .pct_change (axis = 1 )
1699+ assert_panel_equal (result , expected )
1700+ # major, 2
1701+ result = wp .pct_change (periods = 2 )
1702+ expected = Panel ({'i1' : df1 .pct_change (2 ),
1703+ 'i2' : df2 .pct_change (2 ),
1704+ 'i3' : df3 .pct_change (2 )})
1705+ assert_panel_equal (result , expected )
1706+ # minor, 1
1707+ result = wp .pct_change (axis = 'minor' )
1708+ expected = Panel ({'i1' : df1 .pct_change (axis = 1 ),
1709+ 'i2' : df2 .pct_change (axis = 1 ),
1710+ 'i3' : df3 .pct_change (axis = 1 )})
1711+ assert_panel_equal (result , expected )
1712+ result = wp .pct_change (axis = 2 )
1713+ assert_panel_equal (result , expected )
1714+ # minor, 2
1715+ result = wp .pct_change (periods = 2 , axis = 'minor' )
1716+ expected = Panel ({'i1' : df1 .pct_change (periods = 2 , axis = 1 ),
1717+ 'i2' : df2 .pct_change (periods = 2 , axis = 1 ),
1718+ 'i3' : df3 .pct_change (periods = 2 , axis = 1 )})
1719+ assert_panel_equal (result , expected )
1720+ # items, 1
1721+ result = wp .pct_change (axis = 'items' )
1722+ expected = Panel ({'i1' : DataFrame ({'c1' : [np .nan , np .nan , np .nan ],
1723+ 'c2' : [np .nan , np .nan , np .nan ]}),
1724+ 'i2' : DataFrame ({'c1' : [1 , 0.5 , .2 ],
1725+ 'c2' : [1. / 3 , 0.25 , 1. / 6 ]}),
1726+ 'i3' : DataFrame ({'c1' : [.5 , 1. / 3 , 1. / 6 ],
1727+ 'c2' : [.25 , .2 , 1. / 7 ]})})
1728+ assert_panel_equal (result , expected )
1729+ result = wp .pct_change (axis = 0 )
1730+ assert_panel_equal (result , expected )
1731+ # items, 2
1732+ result = wp .pct_change (periods = 2 , axis = 'items' )
1733+ expected = Panel ({'i1' : DataFrame ({'c1' : [np .nan , np .nan , np .nan ],
1734+ 'c2' : [np .nan , np .nan , np .nan ]}),
1735+ 'i2' : DataFrame ({'c1' : [np .nan , np .nan , np .nan ],
1736+ 'c2' : [np .nan , np .nan , np .nan ]}),
1737+ 'i3' : DataFrame ({'c1' : [2 , 1 , .4 ],
1738+ 'c2' : [2. / 3 , .5 , 1. / 3 ]})})
1739+ assert_panel_equal (result , expected )
1740+
16871741 def test_multiindex_get (self ):
16881742 ind = MultiIndex .from_tuples ([('a' , 1 ), ('a' , 2 ), ('b' , 1 ), ('b' , 2 )],
16891743 names = ['first' , 'second' ])
0 commit comments