def test_diff(self): """ Makes sure the IntColumn Diff() works appropriately. """ data = [2, 'not an int', 6, 4] df = pd.Series(data).apply(str) profiler1 = IntColumn("Int") profiler1.update(df) data = [1, 15] df = pd.Series(data).apply(str) profiler2 = IntColumn("Int") profiler2.update(df) # Assert the difference report is correct expected_diff = { 'max': -9.0, 'mean': -4.0, 'min': 1.0, 'stddev': -7.899494936611665, 'sum': -4.0, 'variance': -94.0, 'median': -4, 'mode': [[2, 6, 4], [], [1, 15]], 'median_absolute_deviation': -5, 't-test': { 't-statistic': -0.5638091828819275, 'conservative': { 'df': 1, 'p-value': 0.6731699660830497 }, 'welch': { 'df': 1.0547717074524683, 'p-value': 0.6691886269547123 } } } profile_diff = profiler1.diff(profiler2) self.assertAlmostEqual(expected_diff.pop('median'), profile_diff.pop('median'), places=2) expected_diff_mode = expected_diff.pop('mode') diff_mode = profile_diff.pop('mode') for i in range(len(expected_diff_mode)): np.testing.assert_almost_equal(sorted(expected_diff_mode[i]), sorted(diff_mode[i]), 2) self.assertAlmostEqual(expected_diff.pop('median_absolute_deviation'), profile_diff.pop('median_absolute_deviation'), places=2) self.assertDictEqual(expected_diff, profile_diff) # Assert type error is properly called with self.assertRaises(TypeError) as exc: profiler1.diff("Inproper input") self.assertEqual( str(exc.exception), "Unsupported operand type(s) for diff: 'IntColumn' and" " 'str'")
def test_diff(self): """ Makes sure the IntColumn Diff() works appropriately. """ data = [2, "not an int", 6, 4] df = pd.Series(data).apply(str) profiler1 = IntColumn("Int") profiler1.update(df) data = [1, 15] df = pd.Series(data).apply(str) profiler2 = IntColumn("Int") profiler2.update(df) # Assert the difference report is correct expected_diff = { "max": -9.0, "mean": -4.0, "min": 1.0, "stddev": -7.899494936611665, "sum": -4.0, "variance": -94.0, "median": -4, "mode": [[2, 6, 4], [], [1, 15]], "median_absolute_deviation": -5, "t-test": { "t-statistic": -0.5638091828819275, "conservative": { "df": 1, "p-value": 0.6731699660830497 }, "welch": { "df": 1.0547717074524683, "p-value": 0.6691886269547123 }, }, } profile_diff = profiler1.diff(profiler2) try: json.dumps(profile_diff) except TypeError as e: self.fail("JSON Serializing issue with the profile diff. " "Exception raised: {}".format(str(e))) self.assertAlmostEqual(expected_diff.pop("median"), profile_diff.pop("median"), places=2) expected_diff_mode = expected_diff.pop("mode") diff_mode = profile_diff.pop("mode") for i in range(len(expected_diff_mode)): np.testing.assert_almost_equal(sorted(expected_diff_mode[i]), sorted(diff_mode[i]), 2) self.assertAlmostEqual( expected_diff.pop("median_absolute_deviation"), profile_diff.pop("median_absolute_deviation"), places=2, ) self.assertDictEqual(expected_diff, profile_diff) # Assert type error is properly called with self.assertRaises(TypeError) as exc: profiler1.diff("Inproper input") self.assertEqual( str(exc.exception), "Unsupported operand type(s) for diff: 'IntColumn' and" " 'str'", )