cjoint

Publicité


Publicité

Format du document : text/plain

Prévisualisation

import pandas as pd
import dateparser
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as sp
import time
import datetime
table= [[r'1er février 1993',46.8186],
[r'1er janvier 1994',47.1464],
[r'1er août 1994',47.3812],
[r'1er décembre 1994',47.9025],
[r'1er mars 1995',48.4773],
[r'1er novembre 1995',49.1557],
[r'1er mars 1997',49.4011],
[r'1er octobre 1997',49.6481],
[r'1er avril 1998',50.046],
[r'1er novembre 1998',50.2929],
[r'1er avril 1999',50.5445],
[r'1er décembre 1999',50.9469],
[r'1er décembre 2000',51.2015],
[r'1er mai 2001',51.4576],
[r'1er novembre 2001',51.8174],
[r'1er mars 2002',52.1284],
[r'1er décembre 2002',52.4933],
[r'1er janvier 2004',52.7558],
[r'1er février 2005',53.0196],
[r'1er juillet 2005',53.2847],
[r'1er novembre 2005',53.711],
[r'1er juillet 2006',53.9795],
[r'1er février 2007',54.4113],
[r'1er mars 2008',54.6834],
[r'1er octobre 2008',54.8475],
[r'1er juillet 2009',55.1217],
[r'1er octobre 2009',55.2871],
[r'1er juillet 2010',55.5635],
[r'1er juillet 2016',55.8969],
[r'1er février 2017',56.2323]]

Date = []
Indice = []
for i in range(len(table)) :
Date.append(dateparser.parse(table[i][0]).date())
Indice.append(table[i][1])


df = pd.DataFrame()
df['Date'] = Date
df['Indice'] = Indice
print(df)

y = np.array(df['Indice'].dropna().values, dtype=float)
x = [time.mktime(d.timetuple()) for d in df['Date']]
slope, intercept, r_value, p_value, std_err = sp.linregress(x, y)
xf = np.linspace(min(x), max(x), 100)
xf =np.append(xf, time.mktime(datetime.datetime.today().timetuple()))
xf1 = xf.copy()
xf1 = pd.to_datetime(xf1, unit='s')
yf = (slope * xf) + intercept
print('r = ', r_value, '\n', 'p = ', p_value, '\n', 's = ', std_err)

y2 = np.array(df['Indice'].dropna().values[:-2], dtype=float)
x2 = [time.mktime(d.timetuple()) for d in df['Date'][:-2]]
slope2, intercept2, r_value2, p_value2, std_err2 = sp.linregress(x2, y2)
xf2 = np.linspace(min(x2), max(x2), 100)
xf2 =np.append(xf2, time.mktime(datetime.datetime.today().timetuple()))
xf12 = xf2.copy()
xf12 = pd.to_datetime(xf2, unit='s')
yf2 = (slope2 * xf2) + intercept2
print('r = ', r_value2, '\n', 'p = ', p_value2, '\n', 's = ', std_err2)



f, ax = plt.subplots(1, 1)
plt.plot(xf1, yf, label='Linear fit', lw=3)
plt.plot(xf12, yf2, label='Linear fit sans les deux derniers points', lw=3)
plt.plot(df['Date'], df['Indice'], label='Indice', marker='o', ls='')
plt.ylabel('Indice')
plt.xlabel('Date')
ax.legend()
plt.grid()
print(xf1[-1], yf[-1])
print(xf2[-1], yf2[-1])
plt.show()

Publicité


Signaler le contenu de ce document

Publicité