Beispiel #1
0
 def test_normalise_nan_values(self):
     ts = numpy.array([1] * 10, dtype=numpy.float64)
     ts[5] = numpy.nan
     ts[-1] = 2
     with self.assertRaises(ValueError):
         ts_normalise_negative_values(ts, n=6)
     res = ts_normalise_negative_values(ts, n=7)
     self.assertEqual(10, res.sum())
     self.assertEqual(res[0], 0.9090909090909091)
     self.assertEqual(res.min(), 0.9090909090909091)
     self.assertEqual(res[-1], 1.8181818181818181)
Beispiel #2
0
 def test_ts_normalise_negative_values(self):
     ts = numpy.array([1] * 10)
     ts[5] = -1
     ts[-1] = 2
     with self.assertRaises(ValueError):
         ts_normalise_negative_values(ts, n=6)
     res = ts_normalise_negative_values(ts, n=7)
     self.assertEqual(ts.sum(), res.sum())
     self.assertEqual(res[0], 0.84)
     self.assertEqual(res.min(), 0.6)
     self.assertEqual(res[-1], 1.68)
Beispiel #3
0
 def test_normalize_spain(self):
     data = numpy.array([
         nnan, 7.125, 8.5625, 13.5625, 21.6875, 33.625, 49.1875,
         67.625, 84.375, 103.5, 129.375, 157.0, 202.0625, 260.8125,
         327.3125, 416.6875, 506.9375, 591.0625, 679.125,
         734.375, 781.75, 812.9375, 827.375, 851.6875, 859.875,
         869.6875, 860.25, 825.75, 786.0625, 746.1875,
         718.1875, 702.375, 684.5, 657.75, 626.6875, 578.875,
         550.1875, 530.75, 526.8125, 527.5625, 505.25, 469.6875,
         409.3125, 389.75, 387.1875, 395.625, 416.875, 404.3125,
         383.0625, 359.6875, 344.25, 336.75, 315.375, 314.125,
         290.125, 260.875, 263.875, 231.3125, 219.875, 219.0,
         206.1875, 206.625, 198.375, 182.75, 167.8125, 163.8125,
         166.375, 167.75, 157.3125, 137.8125, 113.0625, 93.1875,
         88.0625, 121.25, 157.5625, 191.25, 98.5625, -53.3125,
         -207.125, -363.1875, -276.125, -181.1875, -83.0, 19.5625,
         2.0, 1.6875, 1.4375, 1.375, 1.5, 1.8125, 1.625, 1.3125,
         0.875, 0.375, 0.1875, 0.0625, 0.0, 0.0, 0.0, 0.0, 0.0,
         73.6875, 147.8125, 222.0, 296.25, 223.1875, 149.375,
         75.625, 2.25, 2.625, 3.3125, 3.875, 4.0625, 4.5, 5.0625,
         6.5, 7.3125, 7.1875, 6.875, 4.875, 3.6875, 3.375, 3.0625,
         3.3125, 3.0625, 2.375, 1.8125, 1.75, 2.125, 2.6875, 3.0,
         2.8125, 2.375, 1.75, 1.4375, 1.5625, 1.8125, 2.0625, 2.0625,
         nnan, nnan, nnan, nnan, nnan, nnan, nnan, nnan,
         nnan, nnan, nnan, nnan, nnan])
     norm = ts_normalise_negative_values(data, extreme=2)
     self.assertFalse(any(norm < 0))
Beispiel #4
0
 def test_normalise_negative_pandas_values_series(self):
     df = pandas.DataFrame(
         numpy.ones((10, 2), dtype=numpy.float64), columns=["c1", "c2"])
     df['c2'] *= 2
     for c in df.columns:
         res = ts_normalise_negative_values(df[c])
         self.assertIsInstance(res, df[c].__class__)
Beispiel #5
0
 def test_normalise_negative_pandas_values(self):
     df = pandas.DataFrame(
         numpy.ones((10, 2), dtype=numpy.float64), columns=["c1", "c2"])
     df['c2'] *= 2
     res = ts_normalise_negative_values(df, n=7)
     assert_almost_equal(df.values, res.values)
     self.assertEqual(list(df.columns), list(res.columns))
Beispiel #6
0
 def test_normalise_defect(self):
     data = numpy.array([
         nnan, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
         0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 2, 3, 2, 8, 0, 14, 15,
         0, 31, 12, 0, 57, 0, 0, 95, 207, 112, 112, 186, 240,
         231, 365, 299, 319, 292, 418, 499, 880, 984, 1120,
         1053, 518, 833, 1417, 541, 1341, 987, 635, 561, 574,
         745, 1436, 753, 760, 642, 391, 546, 525, 544, 516, 389,
         369, 242, 437, 367, 427, 289, 218, 166, 135, 304, 330,
         274, 177, 243, 79, 70, 263, 347, 81, 349, 104, -2, 579,
         131, -217, 108, 83, 74, 43, 33, 90, 73, 66, 65, 52, 57,
         31, 28, 107, 81, 43, 46, 31, 13, 53, 84, 23, 27, 28, 24,
         7, 29, 109, 28, 28, 14, 14, 6, 21, 57, 9, 19, 25, -1, 0,
         32, 27, 17, 14, 18, 0, 1, 23, 11, -1, 43, 23, -3, 0, 22,
         -2, 89, 17, 14, -3, 0, 23, -13, 7, 9, 9, 0, 0])
     norm = ts_normalise_negative_values(data, extreme=2)
     self.assertFalse(any(norm < 0))
     self.assertFalse(any(numpy.isnan(norm)))
     data = pandas.DataFrame(data.reshape((-1, 1)), columns=['r'])
     norm = ts_normalise_negative_values(data['r'], extreme=2)
     self.assertFalse(any(norm < 0))
     self.assertFalse(any(numpy.isnan(norm)))
Beispiel #7
0

neg = tf.diff()
neg[neg['Spain'] < 0]

#############################################
# Et pour la France.

neg[neg['France'] < 0]

#############################################
# On continue néanmoins mais en corrigeant ces séries
# qu'il n'y ait plus aucune valeur négative.


tfdiff = ts_normalise_negative_values(tf.diff()).rolling(
    7, center=False, win_type='triang').mean()

########################################

fig, ax = plt.subplots(1, 3, figsize=(14, 6))
tfdiff.plot(
    logy=False, lw=3, ax=ax[0],
    title="Nombre de décès COVID par jour lissé par semaine")
ax[0].set_ylim(0)
tfdiff.plot(
    logy=True, lw=3, ax=ax[1],
    title="Nombre de décès COVID par jour lissé par semaine")
tfdiff.tail(60).plot(
    logy=True, lw=3, ax=ax[2],
    title="Nombre de décès COVID par jour lissé par semaine")