0% found this document useful (0 votes)
13 views12 pages

Projet Swift

Uploaded by

Aya Afourid
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views12 pages

Projet Swift

Uploaded by

Aya Afourid
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

les données :

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import os

os.chdir("C:\\Users\\LENOVO\\Downloads")

os.getcwd()

'C:\\Users\\LENOVO\\Downloads'

#importation de base de données :


GDP = pd.read_csv("GDP.csv")
FDI = pd.read_csv("fdi.csv")
SWIFT = pd.read_csv("swift.csv")
TRADE = pd.read_csv("trade.csv")

GDP.head()

Country Name 1990 2000 2014 2015


\
0 Maroc NaN NaN 1.718850e+00 1.914632e+00

1 Maroc NaN NaN NaN NaN

2 Maroc NaN 2.537313e+01 2.216749e+01 2.463054e+01

3 Maroc 6.838989e+01 5.351763e+01 4.672416e+01 4.438644e+01

4 Maroc 1.871232e+09 3.810087e+09 1.580389e+10 1.410237e+10

2016 2017 2018 2019


2020 \
0 2.768180e+00 3.623868e+00 2.432643e+00 2.789662e+00
2.024362e+00
1 NaN NaN NaN NaN
NaN
2 2.364532e+01 2.315271e+01 2.330097e+01 2.415459e+01
2.608696e+01
3 4.478331e+01 4.516740e+01 4.320488e+01 4.371401e+01
2.896925e+01
4 1.464236e+10 1.659200e+10 1.799253e+10 1.872768e+10
1.328026e+10

2021 2022 2023


0 3.305535e+00 NaN NaN
1 NaN NaN NaN
2 2.753623e+01 2.801932e+01 NaN
3 2.586386e+01 4.207651e+01 NaN
4 1.484745e+10 2.158707e+10 NaN

GDP.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1496 entries, 0 to 1495
Data columns (total 13 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Country Name 1496 non-null object
1 1990 758 non-null float64
2 2000 981 non-null float64
3 2014 1069 non-null float64
4 2015 1026 non-null float64
5 2016 1042 non-null float64
6 2017 1076 non-null float64
7 2018 1042 non-null float64
8 2019 1047 non-null float64
9 2020 954 non-null float64
10 2021 934 non-null float64
11 2022 809 non-null float64
12 2023 456 non-null float64
dtypes: float64(12), object(1)
memory usage: 152.1+ KB

#vérifier s'il y a des valeurs manquantes :


GDP.isna().sum()

Country Name 0
1990 738
2000 515
2014 427
2015 470
2016 454
2017 420
2018 454
2019 449
2020 542
2021 562
2022 687
2023 1040
dtype: int64

gdp = GDP.dropna()

gdp.isna().sum()

Country Name 0
1990 0
2000 0
2014 0
2015 0
2016 0
2017 0
2018 0
2019 0
2020 0
2021 0
2022 0
2023 0
dtype: int64

gdp.head()

Country Name 1990 2000 2014 2015 2016


2017 \
34 Maroc 3.032930 4.294987 5.680524 5.867960 6.085840
6.330771
36 Maroc 2.298740 2.233429 3.326674 3.470996 3.604858
3.726142
37 Maroc 3.102060 3.195345 5.026547 5.059405 5.085820
5.107023
38 Maroc 4.001363 5.611058 6.255653 6.317510 6.377986
6.437896
39 Maroc 6.630834 7.177435 7.915138 7.935489 7.943997
7.935239

2018 2019 2020 2021 2022 2023


34 6.594797 6.874119 7.151274 7.424923 7.720484 49.688285
36 3.837702 3.942175 4.016624 4.065165 4.101044 52.236198
37 5.134669 5.176228 5.224337 5.276895 5.335892 1.158167
38 6.503733 6.577486 6.652841 6.729801 6.802326 8.028465
39 7.897798 7.842130 7.796511 7.757351 7.705364 8.535462

FDI.head()

Series Name 1990


2000 \
0 Gross fixed capital formation (current US$) 86565315650
3.94621E+11
1 Gross fixed capital formation (current
US$) .. ..
2 Gross fixed capital formation (current US$) 615888125
1110462752
3 Gross fixed capital formation (current US$) 16734565160
11329143721
4 Gross fixed capital formation (current
US$) .. ..
2014 2015 2016 2017 2018 \
0 4.5942E+12 4.65629E+12 4.66771E+12 5.15332E+12 5.953E+12
1 .. .. .. .. ..
2 3195744975 2779928278 2890329017 3199793450 3616720925
3 92229966022 80264226650 78427453061 78814888848 79784119209
4 .. .. .. .. ..

2019 2020 2021 2022 2023


0 6.11505E+12 6.24025E+12 7.47591E+12 7.49329E+12 ..
1 .. 2286077063 1852748005 2417288136 ..
2 3436655425 3434284399 4366740726 4518553598 5596106545
3 77136720130 64448724057 65306631503 67979454907 79602997824
4 .. .. .. .. ..

FDI.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 252 entries, 0 to 251
Data columns (total 13 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Series Name 252 non-null object
1 1990 251 non-null object
2 2000 251 non-null object
3 2014 251 non-null object
4 2015 251 non-null object
5 2016 251 non-null object
6 2017 251 non-null object
7 2018 251 non-null object
8 2019 251 non-null object
9 2020 251 non-null object
10 2021 251 non-null object
11 2022 251 non-null object
12 2023 251 non-null object
dtypes: object(13)
memory usage: 25.7+ KB

#vérifier s'il y a des valeurs manquantes :


FDI.isna().sum()

Series Name 0
1990 1
2000 1
2014 1
2015 1
2016 1
2017 1
2018 1
2019 1
2020 1
2021 1
2022 1
2023 1
dtype: int64

fdi = FDI.dropna()

fdi.isna().sum()

Series Name 0
1990 0
2000 0
2014 0
2015 0
2016 0
2017 0
2018 0
2019 0
2020 0
2021 0
2022 0
2023 0
dtype: int64

fdi.head()

Series Name 1990


2000 \
0 Gross fixed capital formation (current US$) 86565315650
3.94621E+11
1 Gross fixed capital formation (current
US$) .. ..
2 Gross fixed capital formation (current US$) 615888125
1110462752
3 Gross fixed capital formation (current US$) 16734565160
11329143721
4 Gross fixed capital formation (current
US$) .. ..

2014 2015 2016 2017 2018 \


0 4.5942E+12 4.65629E+12 4.66771E+12 5.15332E+12 5.953E+12
1 .. .. .. .. ..
2 3195744975 2779928278 2890329017 3199793450 3616720925
3 92229966022 80264226650 78427453061 78814888848 79784119209
4 .. .. .. .. ..

2019 2020 2021 2022 2023


0 6.11505E+12 6.24025E+12 7.47591E+12 7.49329E+12 ..
1 .. 2286077063 1852748005 2417288136 ..
2 3436655425 3434284399 4366740726 4518553598 5596106545
3 77136720130 64448724057 65306631503 67979454907 79602997824
4 .. .. .. .. ..

SWIFT.head()

Series Name 2000 2014 2015


2016 \
0 Personal remittances .. .. 253367821.6
348624717.3
1 Personal remittances .. 597800000 1421007454
1290863508
2 Personal remittances 352000000 790000000 2452442617
1997393458
3 Personal
remittances .. .. .. ..
4 Personal remittances .. .. 0
0

2017 2018 2019 2020 2021 \


0 627710802.4 822731630.2 803546453.8 828571904.1 788917115.2
1 1306009167 1311822432 1458210056 1472812242 1465987212
2 1989023597 1791887073 1984998399 1785838683 1699608935
3 .. .. .. .. ..
4 0 0 0 21100000 47416323.74

2022 2023 2024


0 320000000 320000000 320000000
1 1718355918 1745245136 2036169283
2 1791896709 1704725678 1867591303
3 .. .. ..
4 53001417.77 44577777.05 44577777.05

TRADE.head()

Series Name 1990


2000 \
0 Gross fixed capital formation (current US$) 86565315650
3.95E+11
1 Gross fixed capital formation (current
US$) .. ..
2 Gross fixed capital formation (current US$) 615888125
1110462752
3 Gross fixed capital formation (current US$) 16734565160
11329143721
4 Gross fixed capital formation (current
US$) .. ..

2014 2015 2016 2017 2018 \


0 4.59E+12 4.66E+12 4.67E+12 5.15E+12 5.95E+12
1 .. .. .. .. ..
2 3195744975 2779928278 2890329017 3199793450 3616720925
3 92229966022 80264226650 78427453061 78814888848 79784119209
4 .. .. .. .. ..

2019 2020 2021 2022 2023


0 6.12E+12 6.24E+12 7.48E+12 7.49E+12 ..
1 .. 2286077063 1852748005 2417288136 ..
2 3436655425 3434284399 4366740726 4518553598 5596106545
3 77136720130 64448724057 65306631503 67979454907 79602997824
4 .. .. .. .. ..

TRADE.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 255 entries, 0 to 254
Data columns (total 13 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Series Name 255 non-null object
1 1990 253 non-null object
2 2000 253 non-null object
3 2014 253 non-null object
4 2015 253 non-null object
5 2016 253 non-null object
6 2017 253 non-null object
7 2018 253 non-null object
8 2019 253 non-null object
9 2020 253 non-null object
10 2021 253 non-null object
11 2022 253 non-null object
12 2023 253 non-null object
dtypes: object(13)
memory usage: 26.0+ KB

#vérifier s'il y a des valeurs manquantes :


TRADE.isna().sum()

Series Name 0
1990 2
2000 2
2014 2
2015 2
2016 2
2017 2
2018 2
2019 2
2020 2
2021 2
2022 2
2023 2
dtype: int64

trade = TRADE.dropna()

#vérifier s'il y a des valeurs manquantes :


trade.isna().sum()

Series Name 0
1990 0
2000 0
2014 0
2015 0
2016 0
2017 0
2018 0
2019 0
2020 0
2021 0
2022 0
2023 0
dtype: int64

SWIFT.head()

Series Name 2000 2014 2015


2016 \
0 Personal remittances .. .. 253367821.6
348624717.3
1 Personal remittances .. 597800000 1421007454
1290863508
2 Personal remittances 352000000 790000000 2452442617
1997393458
3 Personal
remittances .. .. .. ..
4 Personal remittances .. .. 0
0

2017 2018 2019 2020 2021 \


0 627710802.4 822731630.2 803546453.8 828571904.1 788917115.2
1 1306009167 1311822432 1458210056 1472812242 1465987212
2 1989023597 1791887073 1984998399 1785838683 1699608935
3 .. .. .. .. ..
4 0 0 0 21100000 47416323.74

2022 2023 2024


0 320000000 320000000 320000000
1 1718355918 1745245136 2036169283
2 1791896709 1704725678 1867591303
3 .. .. ..
4 53001417.77 44577777.05 44577777.05
SWIFT.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 271 entries, 0 to 270
Data columns (total 13 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Series Name 268 non-null object
1 2000 253 non-null object
2 2014 253 non-null object
3 2015 253 non-null object
4 2016 253 non-null object
5 2017 253 non-null object
6 2018 253 non-null object
7 2019 253 non-null object
8 2020 253 non-null object
9 2021 253 non-null object
10 2022 253 non-null object
11 2023 253 non-null object
12 2024 253 non-null object
dtypes: object(13)
memory usage: 27.7+ KB

#vérifier s'il y a des valeurs manquantes :


SWIFT.isna().sum()

Series Name 3
2000 18
2014 18
2015 18
2016 18
2017 18
2018 18
2019 18
2020 18
2021 18
2022 18
2023 18
2024 18
dtype: int64

swift = SWIFT.dropna()

swift.isna().sum()

Series Name 0
2000 0
2014 0
2015 0
2016 0
2017 0
2018 0
2019 0
2020 0
2021 0
2022 0
2023 0
2024 0
dtype: int64

Dickey-Fuller test :
from statsmodels.tsa.stattools import adfuller

# Dictionnaire contenant les données des colonnes à tester


colonnes_a_tester = {
'GDP': gdp['2023'], # Colonne "2023" des données GDP
'FDI': fdi['2023'], # Colonne "2023" des données FDI
'SWIFT': swift['2023'], # Colonne "2023" des données SWIFT
'TRADE': trade['2023'] # Colonne "2023" des données TRADE
}

# Initialisation d'un dictionnaire pour stocker les résultats


resultats_adf = {}

# Fonction pour nettoyer les données et convertir en numérique


def nettoyer_serie(serie):
# Remplacer les valeurs non numériques comme '..' par NaN, puis
convertir
serie = pd.to_numeric(serie, errors='coerce') # Remplace les
erreurs par NaN
serie = serie.dropna() # Supprime les valeurs NaN pour éviter les
erreurs pendant le test
return serie

# Boucle sur les colonnes pour effectuer le test ADF


for nom_serie, serie in colonnes_a_tester.items():
serie_nettoyee = nettoyer_serie(serie)

# Appliquer le test ADF si la série n'est pas vide


if len(serie_nettoyee) > 0:
result = adfuller(serie_nettoyee)
# Stocker les résultats dans le dictionnaire
resultats_adf[nom_serie] = {
'ADF Statistic': result[0],
'p-value': result[1],
'Critical Values': result[4],
'Stationnaire': result[1] < 0.05 # True si la série est
stationnaire
}
else:
resultats_adf[nom_serie] = {'Erreur': 'Série vide ou ne
contient pas de données valides.'}

# Afficher les résultats pour chaque série


for nom_serie, resultat in resultats_adf.items():
print(f"\nRésultats pour '{nom_serie}':")
if 'Erreur' in resultat:
print(f"Erreur: {resultat['Erreur']}")
else:
print(f"ADF Statistic: {resultat['ADF Statistic']}")
print(f"p-value: {resultat['p-value']}")
print(f"Critical Values: {resultat['Critical Values']}")
if resultat['Stationnaire']:
print("=> La série est stationnaire (p-value < 0.05).")
else:
print("=> La série n'est pas stationnaire (p-value >=
0.05).")

Résultats pour 'GDP':


ADF Statistic: -6.394763663941046
p-value: 2.0638522464786665e-08
Critical Values: {'1%': np.float64(-3.461878735881654), '5%':
np.float64(-2.875403665910809), '10%': np.float64(-2.574159410430839)}
=> La série est stationnaire (p-value < 0.05).

Résultats pour 'FDI':


ADF Statistic: -3.701317619956996
p-value: 0.0040946587611892776
Critical Values: {'1%': np.float64(-3.476597917537401), '5%':
np.float64(-2.8818291230495543), '10%': np.float64(-
2.5775887982253085)}
=> La série est stationnaire (p-value < 0.05).

Résultats pour 'SWIFT':


ADF Statistic: -0.33794412170208427
p-value: 0.9199557375316177
Critical Values: {'1%': np.float64(-3.4597521044060353), '5%':
np.float64(-2.874472927517147), '10%': np.float64(-
2.5736628197530864)}
=> La série n'est pas stationnaire (p-value >= 0.05).

Résultats pour 'TRADE':


ADF Statistic: -3.702167429576979
p-value: 0.004082770386509332
Critical Values: {'1%': np.float64(-3.476597917537401), '5%':
np.float64(-2.8818291230495543), '10%': np.float64(-
2.5775887982253085)}
=> La série est stationnaire (p-value < 0.05).
convertir des données non stationnaires en données
stationnaires :
# Rendre les données stationnaires SWIFT :

import warnings
warnings.filterwarnings("ignore")

# Votre code ici


from statsmodels.tsa.stattools import adfuller
import pandas as pd

# Convertir la colonne '2023' en type numérique


swift['2023'] = pd.to_numeric(swift['2023'], errors='coerce') #
Remplacer les valeurs non numériques par NaN

# Appliquer la différenciation (différence d'ordre 2)


diff = swift['2023'] - swift['2023'].shift(2)

# Supprimer les NaN créés par la différenciation (les 2 premières


valeurs seront NaN)
diff.dropna(inplace=True)

# Effectuer le test ADF sur la série différenciée


adfuller_result = adfuller(diff)

# Afficher les résultats du test ADF


print("P-value du test ADF :", adfuller_result[1])

P-value du test ADF : 0.7936433787451679

You might also like