PageRenderTime 47ms CodeModel.GetById 5ms RepoModel.GetById 0ms app.codeStats 0ms

/pandas/stats/tests/common.py

http://github.com/wesm/pandas
Python | 162 lines | 124 code | 35 blank | 3 comment | 7 complexity | 14da9c2dc7d663773b2db3d19a6e3370 MD5 | raw file
Possible License(s): BSD-3-Clause, Apache-2.0
  1. # pylint: disable-msg=W0611,W0402
  2. # flake8: noqa
  3. from datetime import datetime
  4. import string
  5. import nose
  6. import numpy as np
  7. from pandas import DataFrame, bdate_range
  8. from pandas.util.testing import assert_almost_equal # imported in other tests
  9. import pandas.util.testing as tm
  10. N = 100
  11. K = 4
  12. start = datetime(2007, 1, 1)
  13. DATE_RANGE = bdate_range(start, periods=N)
  14. COLS = ['Col' + c for c in string.ascii_uppercase[:K]]
  15. def makeDataFrame():
  16. data = DataFrame(np.random.randn(N, K),
  17. columns=COLS,
  18. index=DATE_RANGE)
  19. return data
  20. def getBasicDatasets():
  21. A = makeDataFrame()
  22. B = makeDataFrame()
  23. C = makeDataFrame()
  24. return A, B, C
  25. def check_for_scipy():
  26. try:
  27. import scipy
  28. except ImportError:
  29. raise nose.SkipTest('no scipy')
  30. def check_for_statsmodels():
  31. _have_statsmodels = True
  32. try:
  33. import statsmodels.api as sm
  34. except ImportError:
  35. try:
  36. import scikits.statsmodels.api as sm
  37. except ImportError:
  38. raise nose.SkipTest('no statsmodels')
  39. class BaseTest(tm.TestCase):
  40. def setUp(self):
  41. check_for_scipy()
  42. check_for_statsmodels()
  43. self.A, self.B, self.C = getBasicDatasets()
  44. self.createData1()
  45. self.createData2()
  46. self.createData3()
  47. def createData1(self):
  48. date = datetime(2007, 1, 1)
  49. date2 = datetime(2007, 1, 15)
  50. date3 = datetime(2007, 1, 22)
  51. A = self.A.copy()
  52. B = self.B.copy()
  53. C = self.C.copy()
  54. A['ColA'][date] = np.NaN
  55. B['ColA'][date] = np.NaN
  56. C['ColA'][date] = np.NaN
  57. C['ColA'][date2] = np.NaN
  58. # truncate data to save time
  59. A = A[:30]
  60. B = B[:30]
  61. C = C[:30]
  62. self.panel_y = A
  63. self.panel_x = {'B': B, 'C': C}
  64. self.series_panel_y = A.filter(['ColA'])
  65. self.series_panel_x = {'B': B.filter(['ColA']),
  66. 'C': C.filter(['ColA'])}
  67. self.series_y = A['ColA']
  68. self.series_x = {'B': B['ColA'],
  69. 'C': C['ColA']}
  70. def createData2(self):
  71. y_data = [[1, np.NaN],
  72. [2, 3],
  73. [4, 5]]
  74. y_index = [datetime(2000, 1, 1),
  75. datetime(2000, 1, 2),
  76. datetime(2000, 1, 3)]
  77. y_cols = ['A', 'B']
  78. self.panel_y2 = DataFrame(np.array(y_data), index=y_index,
  79. columns=y_cols)
  80. x1_data = [[6, np.NaN],
  81. [7, 8],
  82. [9, 30],
  83. [11, 12]]
  84. x1_index = [datetime(2000, 1, 1),
  85. datetime(2000, 1, 2),
  86. datetime(2000, 1, 3),
  87. datetime(2000, 1, 4)]
  88. x1_cols = ['A', 'B']
  89. x1 = DataFrame(np.array(x1_data), index=x1_index,
  90. columns=x1_cols)
  91. x2_data = [[13, 14, np.NaN],
  92. [15, np.NaN, np.NaN],
  93. [16, 17, 48],
  94. [19, 20, 21],
  95. [22, 23, 24]]
  96. x2_index = [datetime(2000, 1, 1),
  97. datetime(2000, 1, 2),
  98. datetime(2000, 1, 3),
  99. datetime(2000, 1, 4),
  100. datetime(2000, 1, 5)]
  101. x2_cols = ['C', 'A', 'B']
  102. x2 = DataFrame(np.array(x2_data), index=x2_index,
  103. columns=x2_cols)
  104. self.panel_x2 = {'x1': x1, 'x2': x2}
  105. def createData3(self):
  106. y_data = [[1, 2],
  107. [3, 4]]
  108. y_index = [datetime(2000, 1, 1),
  109. datetime(2000, 1, 2)]
  110. y_cols = ['A', 'B']
  111. self.panel_y3 = DataFrame(np.array(y_data), index=y_index,
  112. columns=y_cols)
  113. x1_data = [['A', 'B'],
  114. ['C', 'A']]
  115. x1_index = [datetime(2000, 1, 1),
  116. datetime(2000, 1, 2)]
  117. x1_cols = ['A', 'B']
  118. x1 = DataFrame(np.array(x1_data), index=x1_index,
  119. columns=x1_cols)
  120. x2_data = [['foo', 'bar'],
  121. ['baz', 'foo']]
  122. x2_index = [datetime(2000, 1, 1),
  123. datetime(2000, 1, 2)]
  124. x2_cols = ['A', 'B']
  125. x2 = DataFrame(np.array(x2_data), index=x2_index,
  126. columns=x2_cols)
  127. self.panel_x3 = {'x1': x1, 'x2': x2}