|
6 | 6 | from numpy.random import randn
|
7 | 7 | import numpy as np
|
8 | 8 |
|
9 |
| -from pandas import Series, DataFrame, bdate_range, isnull, notnull |
| 9 | +from pandas import Series, DataFrame, Panel, bdate_range, isnull, notnull |
10 | 10 | from pandas.util.testing import (
|
11 |
| - assert_almost_equal, assert_series_equal, assert_frame_equal |
| 11 | + assert_almost_equal, assert_series_equal, assert_frame_equal, assert_panel_equal |
12 | 12 | )
|
13 | 13 | import pandas.core.datetools as datetools
|
14 | 14 | import pandas.stats.moments as mom
|
@@ -841,6 +841,46 @@ def test_rolling_corr_diff_length(self):
|
841 | 841 | result = mom.rolling_corr(s1, s2a, window=3, min_periods=2)
|
842 | 842 | assert_series_equal(result, expected)
|
843 | 843 |
|
| 844 | + def test_rolling_functions_window_non_shrinkage(self): |
| 845 | + # GH 7764 |
| 846 | + s = Series(range(4)) |
| 847 | + s_expected = Series(np.nan, index=s.index) |
| 848 | + df = DataFrame([[1,5], [3, 2], [3,9], [-1,0]], columns=['A','B']) |
| 849 | + df_expected = DataFrame(np.nan, index=df.index, columns=df.columns) |
| 850 | + df_expected_panel = Panel(items=df.index, major_axis=df.columns, minor_axis=df.columns) |
| 851 | + |
| 852 | + functions = [lambda x: mom.rolling_cov(x, x, pairwise=False, window=10, min_periods=5), |
| 853 | + lambda x: mom.rolling_corr(x, x, pairwise=False, window=10, min_periods=5), |
| 854 | + lambda x: mom.rolling_max(x, window=10, min_periods=5), |
| 855 | + lambda x: mom.rolling_min(x, window=10, min_periods=5), |
| 856 | + lambda x: mom.rolling_sum(x, window=10, min_periods=5), |
| 857 | + lambda x: mom.rolling_mean(x, window=10, min_periods=5), |
| 858 | + lambda x: mom.rolling_std(x, window=10, min_periods=5), |
| 859 | + lambda x: mom.rolling_var(x, window=10, min_periods=5), |
| 860 | + lambda x: mom.rolling_skew(x, window=10, min_periods=5), |
| 861 | + lambda x: mom.rolling_kurt(x, window=10, min_periods=5), |
| 862 | + lambda x: mom.rolling_quantile(x, quantile=0.5, window=10, min_periods=5), |
| 863 | + lambda x: mom.rolling_median(x, window=10, min_periods=5), |
| 864 | + lambda x: mom.rolling_apply(x, func=sum, window=10, min_periods=5), |
| 865 | + lambda x: mom.rolling_window(x, win_type='boxcar', window=10, min_periods=5), |
| 866 | + ] |
| 867 | + for f in functions: |
| 868 | + s_result = f(s) |
| 869 | + assert_series_equal(s_result, s_expected) |
| 870 | + |
| 871 | + df_result = f(df) |
| 872 | + assert_frame_equal(df_result, df_expected) |
| 873 | + |
| 874 | + functions = [lambda x: mom.rolling_cov(x, x, pairwise=True, window=10, min_periods=5), |
| 875 | + lambda x: mom.rolling_corr(x, x, pairwise=True, window=10, min_periods=5), |
| 876 | + # rolling_corr_pairwise is depracated, so the following line should be deleted |
| 877 | + # when rolling_corr_pairwise is removed. |
| 878 | + lambda x: mom.rolling_corr_pairwise(x, x, window=10, min_periods=5), |
| 879 | + ] |
| 880 | + for f in functions: |
| 881 | + df_result_panel = f(df) |
| 882 | + assert_panel_equal(df_result_panel, df_expected_panel) |
| 883 | + |
844 | 884 | def test_expanding_cov_pairwise_diff_length(self):
|
845 | 885 | # GH 7512
|
846 | 886 | df1 = DataFrame([[1,5], [3, 2], [3,9]], columns=['A','B'])
|
|
0 commit comments