2025-12-04 16:11:38 +01:00
|
|
|
|
{
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
2026-01-29 18:40:49 +01:00
|
|
|
|
"execution_count": 206,
|
|
|
|
|
|
"id": "0ed82607-1bc0-48f2-829e-97df9052f8d9",
|
2025-12-04 16:11:38 +01:00
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
|
"text": [
|
2026-01-29 18:40:49 +01:00
|
|
|
|
"Fichiers Flows : ['projet-bdc-data/carmignac/Flows ENSAE V1 -20251027.csv', 'projet-bdc-data/carmignac/Flows ENSAE V2 -20251105.csv']\n",
|
2025-12-04 16:11:38 +01:00
|
|
|
|
"Fichiers AUM : ['projet-bdc-data/carmignac/AUM ENSAE V1 -20251027.csv', 'projet-bdc-data/carmignac/AUM ENSAE V2 -20251105.csv']\n"
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
2026-01-29 18:40:49 +01:00
|
|
|
|
"# Données\n",
|
|
|
|
|
|
"\n",
|
2025-12-04 16:11:38 +01:00
|
|
|
|
"import os\n",
|
|
|
|
|
|
"import s3fs\n",
|
|
|
|
|
|
"import pandas as pd\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"s3_ENDPOINT_URL = \"https://\" + os.environ[\"AWS_S3_ENDPOINT\"]\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"fs = s3fs.S3FileSystem(client_kwargs={'endpoint_url': s3_ENDPOINT_URL})\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"BUCKET = \"projet-bdc-data\"\n",
|
|
|
|
|
|
"carmignac_path = \"projet-bdc-data/carmignac\"\n",
|
|
|
|
|
|
"\n",
|
2026-01-29 18:40:49 +01:00
|
|
|
|
"# Liste des fichiers FLOWS\n",
|
|
|
|
|
|
"all_files = fs.ls(carmignac_path)\n",
|
|
|
|
|
|
"flows_files = [f for f in all_files if \"Flows\" in f and f.endswith(\".csv\")]\n",
|
|
|
|
|
|
"print(\"Fichiers Flows :\", flows_files)\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"# Lire tous les fichiers dans un dictionnaire\n",
|
|
|
|
|
|
"flows_data = {}\n",
|
|
|
|
|
|
"for file_path in flows_files:\n",
|
|
|
|
|
|
" with fs.open(file_path, 'r') as f:\n",
|
|
|
|
|
|
" df = pd.read_csv(f, sep=';',low_memory=False)\n",
|
|
|
|
|
|
" flows_data[os.path.basename(file_path)] = df\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"\n",
|
2025-12-04 16:11:38 +01:00
|
|
|
|
"# Liste des fichiers AUM\n",
|
|
|
|
|
|
"all_files = fs.ls(carmignac_path)\n",
|
|
|
|
|
|
"aum_files = [f for f in all_files if \"AUM\" in f and f.endswith(\".csv\")]\n",
|
|
|
|
|
|
"print(\"Fichiers AUM :\", aum_files)\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"# Lire tous les fichiers dans un dictionnaire\n",
|
|
|
|
|
|
"aum_data = {}\n",
|
|
|
|
|
|
"for file_path in aum_files:\n",
|
|
|
|
|
|
" with fs.open(file_path, 'r') as f:\n",
|
|
|
|
|
|
" df = pd.read_csv(f, sep=';',low_memory=False)\n",
|
|
|
|
|
|
" aum_data[os.path.basename(file_path)] = df\n",
|
|
|
|
|
|
"\n",
|
2026-01-29 18:40:49 +01:00
|
|
|
|
"df = aum_data['AUM ENSAE V2 -20251105.csv']\n",
|
|
|
|
|
|
"dg = flows_data['Flows ENSAE V2 -20251105.csv']"
|
2025-12-04 16:11:38 +01:00
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
2026-01-29 18:40:49 +01:00
|
|
|
|
"execution_count": 5,
|
2025-12-04 16:11:38 +01:00
|
|
|
|
"id": "076209a7-f6b3-4b78-9179-e24ff38338e0",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"from detection_rupture import detect_ruptures"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
2026-01-29 18:40:49 +01:00
|
|
|
|
"execution_count": 197,
|
2025-12-04 16:11:38 +01:00
|
|
|
|
"id": "14c59f0f-676b-4d76-878a-1176cadfc9b1",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"data": {
|
2026-01-29 18:40:49 +01:00
|
|
|
|
"image/png": "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
|
2025-12-04 16:11:38 +01:00
|
|
|
|
"text/plain": [
|
|
|
|
|
|
"<Figure size 1000x500 with 1 Axes>"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"output_type": "display_data"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"import matplotlib.pyplot as plt\n",
|
|
|
|
|
|
"import pandas as pd\n",
|
|
|
|
|
|
"\n",
|
2026-01-29 18:40:49 +01:00
|
|
|
|
"ruptures_df = detect_ruptures(df, 0.05)\n",
|
2025-12-04 16:11:38 +01:00
|
|
|
|
"\n",
|
|
|
|
|
|
"# Copier pour éviter les effets de bord\n",
|
|
|
|
|
|
"df_plot = ruptures_df.copy()\n",
|
|
|
|
|
|
"df_plot['date'] = pd.to_datetime(df_plot['date'])\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"# Compter les ruptures par date\n",
|
|
|
|
|
|
"counts = df_plot.groupby('date').size().reset_index(name='rupture_count')\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"plt.figure(figsize=(10, 5))\n",
|
|
|
|
|
|
"plt.plot(counts['date'], counts['rupture_count'], marker='.')\n",
|
|
|
|
|
|
"plt.xlabel(\"Date\")\n",
|
2026-01-29 18:40:49 +01:00
|
|
|
|
"plt.ylabel(\"Nombre de connexions\")\n",
|
|
|
|
|
|
"plt.title(\"Nombre de connexions détectées par date\")\n",
|
2025-12-04 16:11:38 +01:00
|
|
|
|
"plt.grid(True)\n",
|
|
|
|
|
|
"plt.tight_layout()\n",
|
|
|
|
|
|
"plt.show()"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
2026-01-29 18:40:49 +01:00
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 207,
|
|
|
|
|
|
"id": "611b4e6f-38dd-42db-93c6-970214ee89b2",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
|
"text": [
|
|
|
|
|
|
"Nombre de ruptures détectées : 548\n"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"text/html": [
|
|
|
|
|
|
"<div>\n",
|
|
|
|
|
|
"<style scoped>\n",
|
|
|
|
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
|
|
|
|
" vertical-align: middle;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" .dataframe tbody tr th {\n",
|
|
|
|
|
|
" vertical-align: top;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" .dataframe thead th {\n",
|
|
|
|
|
|
" text-align: right;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"</style>\n",
|
|
|
|
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
|
|
|
|
" <thead>\n",
|
|
|
|
|
|
" <tr style=\"text-align: right;\">\n",
|
|
|
|
|
|
" <th></th>\n",
|
|
|
|
|
|
" <th>date</th>\n",
|
|
|
|
|
|
" <th>old_account</th>\n",
|
|
|
|
|
|
" <th>new_account</th>\n",
|
|
|
|
|
|
" <th>value</th>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" </thead>\n",
|
|
|
|
|
|
" <tbody>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>0</th>\n",
|
|
|
|
|
|
" <td>2019-12-31</td>\n",
|
|
|
|
|
|
" <td>406533</td>\n",
|
|
|
|
|
|
" <td>200127202</td>\n",
|
|
|
|
|
|
" <td>718444.2870</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>3</th>\n",
|
|
|
|
|
|
" <td>2016-06-30</td>\n",
|
|
|
|
|
|
" <td>402699</td>\n",
|
|
|
|
|
|
" <td>200038850</td>\n",
|
|
|
|
|
|
" <td>223734.2979</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>4</th>\n",
|
|
|
|
|
|
" <td>2015-07-31</td>\n",
|
|
|
|
|
|
" <td>402703</td>\n",
|
|
|
|
|
|
" <td>200013353</td>\n",
|
|
|
|
|
|
" <td>88886.7529</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>5</th>\n",
|
|
|
|
|
|
" <td>2019-12-31</td>\n",
|
|
|
|
|
|
" <td>404813</td>\n",
|
|
|
|
|
|
" <td>200127636</td>\n",
|
|
|
|
|
|
" <td>160820.3092</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>7</th>\n",
|
|
|
|
|
|
" <td>2015-03-31</td>\n",
|
|
|
|
|
|
" <td>406311</td>\n",
|
|
|
|
|
|
" <td>200001401</td>\n",
|
|
|
|
|
|
" <td>63268.8208</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" </tbody>\n",
|
|
|
|
|
|
"</table>\n",
|
|
|
|
|
|
"</div>"
|
|
|
|
|
|
],
|
|
|
|
|
|
"text/plain": [
|
|
|
|
|
|
" date old_account new_account value\n",
|
|
|
|
|
|
"0 2019-12-31 406533 200127202 718444.2870\n",
|
|
|
|
|
|
"3 2016-06-30 402699 200038850 223734.2979\n",
|
|
|
|
|
|
"4 2015-07-31 402703 200013353 88886.7529\n",
|
|
|
|
|
|
"5 2019-12-31 404813 200127636 160820.3092\n",
|
|
|
|
|
|
"7 2015-03-31 406311 200001401 63268.8208"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
"execution_count": 207,
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"output_type": "execute_result"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"ruptures_df = detect_ruptures(df, 0.05)\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"print(f\"Nombre de ruptures détectées : {len(ruptures_df)}\")\n",
|
|
|
|
|
|
"ruptures_df.head()\n"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 8,
|
|
|
|
|
|
"id": "b837e39e-5d54-45eb-ac1e-fbb59fad0134",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"from function import evolution_2_comptes\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"def comparaison(i):\n",
|
|
|
|
|
|
" evolution_2_comptes(df, ruptures_df.iloc[i,1],ruptures_df.iloc[i,2])\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"def rupture(compte_id, ruptures_df):\n",
|
|
|
|
|
|
" \"\"\"\n",
|
|
|
|
|
|
" Vérifie si un compte est impliqué dans une rupture.\n",
|
|
|
|
|
|
" \n",
|
|
|
|
|
|
" Args:\n",
|
|
|
|
|
|
" compte_id (int ou str) : l'ID du compte à tester\n",
|
|
|
|
|
|
" ruptures_df (DataFrame) : dataframe des ruptures avec colonnes 'old_account' et 'new_account'\n",
|
|
|
|
|
|
" \n",
|
|
|
|
|
|
" Returns:\n",
|
|
|
|
|
|
" tuple : (dans_old, dans_new)\n",
|
|
|
|
|
|
" - dans_old : True si le compte est dans old_account\n",
|
|
|
|
|
|
" - dans_new : True si le compte est dans new_account\n",
|
|
|
|
|
|
" \"\"\"\n",
|
|
|
|
|
|
" dans_old = compte_id in ruptures_df['old_account'].values\n",
|
|
|
|
|
|
" dans_new = compte_id in ruptures_df['new_account'].values\n",
|
|
|
|
|
|
" return (dans_old, dans_new)"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 190,
|
|
|
|
|
|
"id": "4d81bcc5-4b4b-41c7-82e1-a227745de250",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAA6hNJREFUeJzs3Xl4U2Xax/Ffmu7Qha20yL7LvmNFRRApUHFDRURBRBwVVMBRZFQ2FRxXUEBcWNzwBcZlRFBARJgZQBDEDUVAkLUgAi3Q0iU57x9pTpuuaZu0Jfl+rqtXkpMnz3kSTgvcve/7sRiGYQgAAAAAAAAoRwEVvQAAAAAAAAD4H4JSAAAAAAAAKHcEpQAAAAAAAFDuCEoBAAAAAACg3BGUAgAAAAAAQLkjKAUAAAAAAIByR1AKAAAAAAAA5Y6gFAAAAAAAAModQSkAAMrBd999p6efflpnzpyp6KUAAAAAlQJBKQAAvOzYsWO69tprFRsbq4iIiIpeDgAAAFApWAzDMCp6EQAA+LKVK1cqOTlZQ4YMqeilAAAAAJUGmVIAAHjZgAEDyjUgZbFYNGXKFI/OuWjRIlksFu3fv9+j85aFN94nKpcrr7xSV155ZUUvAwAAeAlBKQAAvMAZxCnsa/PmzRW9xAJNnz5dn3zySUUvo9L75ZdfZLFYFBoaqtOnTxc4pmHDhrrmmmsKfO7bb7+VxWLRokWLzGNTpkyRxWJRQECADh48mO81KSkpCgsLk8Vi0ZgxYzzxNuCndu7cqSlTplSqIDMAwD8RlAIAwIumTZumd999N99X06ZNK3ppBSosKHXHHXcoLS1NDRo0KP9FVULvvfeeYmNjJUn/+te/PDp3SEiIPvjgg3zHP/roI4+eB/5r586dmjp1KkEpAECFC6zoBQAA4Mv69++vLl26VPQyysxqtcpqtVb0MioFwzC0ePFi3Xbbbdq3b5/ef/993X333R6bf8CAAfrggw/06KOPuhxfvHixEhMT9eGHH3rsXOXFMAydP39eYWFhFb0UAABQiZApBQBABcnMzFT16tU1YsSIfM+lpKQoNDRUf//7381jx48f18iRI1W7dm2Fhoaqffv2evvtt4s9z5133qmGDRvmO+4sF3OyWCw6d+6c3n77bbPM8M4775RUeE+puXPnqnXr1goJCVGdOnU0evTofOVsV155pdq0aaOdO3eqV69eCg8P10UXXaTnnnuu2LVLUnp6usaNG6datWopIiJC1157rQ4dOlTg2MOHD+uuu+5S7dq1FRISotatW2vBggX5xr366qtq3bq1wsPDVa1aNXXp0kWLFy92az3/+9//tH//ft1666269dZbtWHDhkLXUxq33XabduzYoV9//dU8lpSUpK+++kq33Xab2/M4y/zef/99tWjRQqGhoercubM2bNiQb+x3332n/v37KzIyUlWrVtVVV12Vr8Q07/XiVNC14SxdXLVqlbp06aKwsDC9/vrrRa73jTfeUJMmTRQWFqZu3brpP//5T4Hj0tPTNXnyZDVt2lQhISGqV6+eHn30UaWnp5tj9u/fn688Mvfn4uxFlpaWppYtW6ply5ZKS0szx5w8eVJxcXG69NJLZbPZilz36dOnNW7cODVs2FAhISGqW7euhg0bphMnTphj3Pneda75hRde0Jw5c9S4cWOFh4erb9++OnjwoAzD0FNPPaW6desqLCxM1113nU6ePOkyh/NzX716tTp06KDQ0FC1atXKJctu0aJFuvnmmyVJvXr1Mr/Xv/76a3PM559/rssvv1xVqlRRRESEEhMT9fPPP7ucKykpSSNGjFDdunUVEhKiuLg4XXfddWRfAQBKhKAUAABelJycrBMnTrh8/fXXX5KkoKAg3XDDDfrkk0+UkZHh8rpPPvlE6enpuvXWWyU5/vN85ZVX6t1339XQoUP1/PPPKyoqSnfeeadmzZrlkbW+++67CgkJ0eWXX26WGf7tb38rdPyUKVM0evRo1alTRy+++KIGDRqk119/XX379lVmZqbL2FOnTqlfv35q3769XnzxRbVs2VITJkzQ559/Xuy67r77bs2cOVN9+/bVs88+q6CgICUmJuYbd+zYMV1yySX68ssvNWbMGM2aNUtNmzbVyJEjNXPmTHPcm2++qQcffFCtWrXSzJkzNXXqVHXo0EHffPONW5/T+++/ryZNmqhr164aOHCgwsPDCyy3K60rrrhCdevWdQmSLVmyRFWrVi3wfRdl/fr1Gjt2rG6//XZNmzZNf/31l/r166effvrJHPPzzz/r8ssv1/fff69HH31UTz75pPbt26crr7zS7c+kILt27dKQIUN09dVXa9asWerQoUOhY+fPn6+//e1vio2N1XPPPacePXro2muvzddby26369prr9ULL7yggQMH6tVXX9X111+vl19+WYMHDy7xGsPCwvT2229rz549evzxx83jo0ePVnJyshYtWlRkhuDZs2d1+eWX69VXX1Xfvn01a9Ys3Xvvvfr111/NQGVJv3fff/99zZ07Vw888IAefvhhrV+/XrfccoueeOIJffHFF5owYYLuueceLV++3CVo7bR7924NHjxY/fv314wZMxQYGKibb75Za9askeS4vh588EFJ0j/+8Q/ze/3iiy+W5Pg5kJiYqKpVq+qf//ynnnzySe3cuVOXXXaZS8Bp0KBB+vjjjzVixAjNnTtXDz74oM6cOaMDBw6U+M8BAODHDAAA4HELFy40JBX4FRISYo5btWqVIclYvny5y+sHDBhgNG7c2Hw8c+ZMQ5Lx3nvvmccyMjKM+Ph4o2rVqkZKSop5XJIxefJk8/Hw4cONBg0a5Fvj5MmTjbz/FKhSpYoxfPjwQt/Pvn37DMMwjOPHjxvBwcFG3759DZvNZo6bPXu2IclYsGCBeaxnz56GJOOdd94xj6WnpxuxsbHGoEGD8p0rtx07dhiSjPvvv9/l+G233ZbvfY4cOdKIi4szTpw44TL21ltvNaKioozU1FTDMAzjuuuuM1q3bl3keQuTkZFh1KhRw3j88cdd1tK+fft8Yxs0aGAkJiYWOM/WrVsNScbChQvNY84/jz///NP4+9//bjRt2tR8rmvXrsaIESMMw3D8+Y4ePbrYtTqvt2+//dY89scffxihoaHGDTfcYB67/vrrjeDgYGPv3r3msSNHjhgRERHGFVdckW99eeW9NpzvXZLxxRdfFLvOjIwMIyYmxujQoYORnp5uHn/jjTcMSUbPnj3NY++++64REBBg/Oc//3GZY968eYYk43//+59hGIaxb9++fJ9v7s8l93VjGIYxceJEIyAgwNiwYYOxbNkyQ5Ixc+bMYtc+adIkQ5Lx0Ucf5XvObrcbhuH+965zzbVq1TJOnz7tsjZJRvv27Y3MzEzz+JAhQ4zg4GDj/Pnz5jHn5/7hhx+ax5KTk424uDijY8eO5jHne1y3bp3Lms+cOWNER0cbo0aNcjmelJRkREVFmcdPnTplSDKef/75Yj8jAACKQqYUAABeNGfOHK1Zs8blK3d2UO/evVWzZk0tWbLEPHbq1CmtWbPGJfNj5cqVio2N1ZAhQ8xjQUFBevDBB3X27FmtX7++fN5Qti+//FIZGRkaO3asAgJy/jkxatQoRUZGasWKFS7jq1atqttvv918HBwcrG7duun3338v8jwrV66UJDOzw2ns2LEujw3D0IcffqiBAwfKMAyXzLSEhAQlJydr+/btkqTo6GgdOnRIW7duLfH7/vzzz/XXX3+5/DkMGTJE33//fb7yprK47bbbtGfPHm3dutW8LUnpnlN8fLw6d+5sPq5fv76uu+46rVq1SjabTTabTatXr9b111+vxo0bm+Pi4uJ022236b///a9SUlJK9R4aNWqkhISEYsd9++23On78uO69914FBwebx++8805FRUW5jF22bJkuvvhitWzZ0uXPuHfv3pKkdevWlWqtU6ZMUevWrTV8+HDdf//96tmzZ75rriAffvih2rdvrxtuuCHfc85Sx5J+7958880u77t79+6SpNtvv12BgYEuxzMyMnT48GGX19epU8dlPZGRkRo2bJi+++47JSUlFfl
|
|
|
|
|
|
"text/plain": [
|
|
|
|
|
|
"<Figure size 1200x600 with 1 Axes>"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"output_type": "display_data"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"comparaison(188)"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 187,
|
|
|
|
|
|
"id": "9a11712a-2a33-4a24-99e6-2de42374dcec",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"text/plain": [
|
|
|
|
|
|
"(True, False)"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
"execution_count": 187,
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"output_type": "execute_result"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"rupture(\"200090312\", ruptures_df)"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 184,
|
|
|
|
|
|
"id": "e03329bd-7369-4bc4-b904-f7d9524bb345",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"text/html": [
|
|
|
|
|
|
"<div>\n",
|
|
|
|
|
|
"<style scoped>\n",
|
|
|
|
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
|
|
|
|
" vertical-align: middle;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" .dataframe tbody tr th {\n",
|
|
|
|
|
|
" vertical-align: top;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" .dataframe thead th {\n",
|
|
|
|
|
|
" text-align: right;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"</style>\n",
|
|
|
|
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
|
|
|
|
" <thead>\n",
|
|
|
|
|
|
" <tr style=\"text-align: right;\">\n",
|
|
|
|
|
|
" <th></th>\n",
|
|
|
|
|
|
" <th>date</th>\n",
|
|
|
|
|
|
" <th>old_account</th>\n",
|
|
|
|
|
|
" <th>new_account</th>\n",
|
|
|
|
|
|
" <th>value</th>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" </thead>\n",
|
|
|
|
|
|
" <tbody>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>713</th>\n",
|
|
|
|
|
|
" <td>2019-12-31</td>\n",
|
|
|
|
|
|
" <td>200090347</td>\n",
|
|
|
|
|
|
" <td>200127306</td>\n",
|
|
|
|
|
|
" <td>3.812176e+07</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" </tbody>\n",
|
|
|
|
|
|
"</table>\n",
|
|
|
|
|
|
"</div>"
|
|
|
|
|
|
],
|
|
|
|
|
|
"text/plain": [
|
|
|
|
|
|
" date old_account new_account value\n",
|
|
|
|
|
|
"713 2019-12-31 200090347 200127306 3.812176e+07"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"output_type": "display_data"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"import pandas as pd\n",
|
|
|
|
|
|
"from IPython.display import display\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"# Afficher toutes les lignes et colonnes\n",
|
|
|
|
|
|
"pd.set_option('display.max_rows', None)\n",
|
|
|
|
|
|
"pd.set_option('display.max_columns', None)\n",
|
|
|
|
|
|
"pd.set_option('display.width', 1000) # Largeur totale pour éviter les retours à la ligne\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"# Affichage tabulaire joli\n",
|
|
|
|
|
|
"display(ruptures_df[ruptures_df['old_account'] == '200090347'])\n",
|
|
|
|
|
|
"#ruptures_df[ruptures_df[old_account] == '200097229']\n",
|
|
|
|
|
|
"# (Optionnel) remettre les options par défaut après affichage\n",
|
|
|
|
|
|
"pd.reset_option('display.max_rows')\n",
|
|
|
|
|
|
"pd.reset_option('display.max_columns')\n",
|
|
|
|
|
|
"pd.reset_option('display.width')"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 273,
|
|
|
|
|
|
"id": "54abac17-601b-459d-8f73-0f21f7eb8869",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABKMAAAJOCAYAAABr8MR3AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAkt9JREFUeJzs3Xl4U3XaxvE7Tdeke1laoOwooggIghVHXBAEVEBmBFxAdNxAURmXFxcQUcEdFXFlUQFHcGEUUUFkmRFURHFDUREXhILQ0kLXtD3vHyVHYltom7TnJP1+rour7clJ8iS/ZpB7nt9zHIZhGAIAAAAAAADqQZjVBQAAAAAAAKDhIIwCAAAAAABAvSGMAgAAAAAAQL0hjAIAAAAAAEC9IYwCAAAAAABAvSGMAgAAAAAAQL0hjAIAAAAAAEC9IYwCAAAAAABAvSGMAgDgMD7//HPdc8892r9/v9WlAAAAACGBMAoAgCrs2rVL5513nlJTUxUXF2d1OQAAAEBIcBiGYVhdBAAAdrRs2TLl5ORo5MiRVpcCAAAAhAw6owAAqMLAgQPrNYhyOBy66667AvqY8+bNk8Ph0M8//xzQx/VHXbxO2Mtpp52m0047zeoyAACATRFGAQBwCG94U9Wfjz76yOoSK3XfffdpyZIlVpdhe99++60cDoeio6O1b9++Ss9p3bq1zjnnnEpv+/TTT+VwODRv3jzz2F133SWHw6GwsDD99ttvFe6Tm5urmJgYORwOXXvttYF4GWigNm/erLvuustW4TIAALVBGAUAQCXuvvtuvfTSSxX+tG/f3urSKlVVGHXJJZeooKBArVq1qv+ibGj+/PlKTU2VJL366qsBfeyoqCi9/PLLFY6//vrrAX0eNFybN2/WlClTCKMAAEEv3OoCAACwowEDBqhHjx5Wl+E3p9Mpp9NpdRm2YBiGFi5cqAsvvFDbtm3TggUL9M9//jNgjz9w4EC9/PLLuuWWW3yOL1y4UIMGDdJrr70WsOeqL4ZhqLCwUDExMVaXAgAAQgidUQAA1JDH41FycrLGjBlT4bbc3FxFR0frpptuMo/t3r1bl19+uZo2baro6Gh16dJFL7zwwhGf59JLL1Xr1q0rHPduC/NyOBzKy8vTCy+8YG4nvPTSSyVVPTNq1qxZOvbYYxUVFaVmzZpp3LhxFbatnXbaaTruuOO0efNmnX766XK5XGrevLkeeOCBI9YuSUVFRbrxxhvVuHFjxcXF6bzzztP27dsrPff333/XZZddpqZNmyoqKkrHHnus5syZU+G8J554Qscee6xcLpeSkpLUo0cPLVy4sFr1fPjhh/r55581YsQIjRgxQmvXrq2yntq48MILtWnTJn333XfmsczMTH3wwQe68MILq/043u18CxYs0NFHH63o6Gh1795da9eurXDu559/rgEDBig+Pl6xsbE688wzK2wl/evvi1dlvxveLYrvvfeeevTooZiYGD3zzDOHrffZZ59Vu3btFBMTo549e+q///1vpecVFRVp8uTJat++vaKiopSenq5bbrlFRUVF5jk///xzhW2Qh74v3lljBQUF6tixozp27KiCggLznKysLKWlpenkk09WaWnpYevet2+fbrzxRrVu3VpRUVFq0aKFRo0apT179pjnVOez6635oYce0pNPPqm2bdvK5XKpX79++u2332QYhqZOnaoWLVooJiZGgwcPVlZWls9jeN/35cuXq2vXroqOjlanTp18uurmzZunf/zjH5Kk008/3fysr1692jznnXfe0d/+9je53W7FxcVp0KBB+uabb3yeKzMzU2PGjFGLFi0UFRWltLQ0DR48mG4rAEC9IowCAKASOTk52rNnj8+fvXv3SpIiIiI0dOhQLVmyRMXFxT73W7JkiYqKijRixAhJ5f9oPu200/TSSy/poosu0oMPPqiEhARdeumleuyxxwJS60svvaSoqCj97W9/M7cTXnXVVVWef9ddd2ncuHFq1qyZHn74YQ0bNkzPPPOM+vXrJ4/H43Nudna2zj77bHXp0kUPP/ywOnbsqFtvvVXvvPPOEev65z//qRkzZqhfv36aPn26IiIiNGjQoArn7dq1SyeddJLef/99XXvttXrsscfUvn17XX755ZoxY4Z53nPPPafx48erU6dOmjFjhqZMmaKuXbvq448/rtb7tGDBArVr104nnniizj33XLlcrkq31dXWqaeeqhYtWviEY6+88opiY2Mrfd2Hs2bNGt1www26+OKLdffdd2vv3r06++yz9fXXX5vnfPPNN/rb3/6mL774QrfccovuvPNObdu2Taeddlq135PKbNmyRSNHjtRZZ52lxx57TF27dq3y3NmzZ+uqq65SamqqHnjgAfXu3VvnnXdehdlZZWVlOu+88/TQQw/p3HPP1RNPPKEhQ4bo0Ucf1fDhw2tcY0xMjF544QX9+OOPuv32283j48aNU05OjubNm3fYjsADBw7ob3/7m5544gn169dPjz32mK6++mp99913ZkBZ08/uggULNGvWLF133XX617/+pTVr1uiCCy7QHXfcoXfffVe33nqrrrzySr311ls+YbXXDz/8oOHDh2vAgAGaNm2awsPD9Y9//EMrVqyQVP77NX78eEnSbbfdZn7WjznmGEnl/zswaNAgxcbG6v7779edd96pzZs365RTTvEJmoYNG6Y33nhDY8aM0axZszR+/Hjt379fv/76a43XAQCAWjMAAIBp7ty5hqRK/0RFRZnnvffee4Yk46233vK5/8CBA422bduaP8+YMcOQZMyfP988VlxcbGRkZBixsbFGbm6ueVySMXnyZPPn0aNHG61atapQ4+TJk42//hXudruN0aNHV/l6tm3bZhiGYezevduIjIw0+vXrZ5SWlprnzZw505BkzJkzxzzWp08fQ5Lx4osvmseKioqM1NRUY9iwYRWe61CbNm0yJBljx471OX7hhRdWeJ2XX365kZaWZuzZs8fn3BEjRhgJCQlGfn6+YRiGMXjwYOPYY4897PNWpbi42EhJSTFuv/12n1q6dOlS4dxWrVoZgwYNqvRxNmzYYEgy5s6dax7zrscff/xh3HTTTUb79u3N20488URjzJgxhmGUr++4ceOOWKv39+3TTz81j/3yyy9GdHS0MXToUPPYkCFDjMjISGPr1q3msR07dhhxcXHGqaeeWqG+v/rr74b3tUsy3n333SPWWVxcbDRp0sTo2rWrUVRUZB5/9tlnDUlGnz59zGMvvfSSERYWZvz3v//1eYynn37akGR8+OGHhmEYxrZt2yq8v4e+L4f+3hiGYUycONEICwsz1q5dayxevNiQZMyYMeOItU+aNMmQZLz++usVbisrKzMMo/qfXW/NjRs3Nvbt2+dTmySjS5cuhsfjMY+PHDnSiIyMNAoLC81j3vf9tddeM4/l5OQYaWlpRrdu3cxj3te4atUqn5r3799vJCYmGldccYXP8czMTCMhIcE8np2dbUgyHnzwwSO+RwAA1CU6owAAqMSTTz6pFStW+Pw5tBvojDPOUKNGjfTKK6+Yx7Kzs7VixQqfTo9ly5YpNTVVI0eONI9FRERo/PjxOnDggNasWVM/L+ig999/X8XFxbrhhhsUFvbnfwZcccUVio+P19tvv+1zfmxsrC6++GLz58jISPXs2VM//fTTYZ9n2bJlkmR2cnjdcMMNPj8bhqHXXntN5557rgzD8OlE69+/v3JycvTZZ59JkhITE7V9+3Zt2LChxq/7nXfe0d69e33WYeTIkfriiy8qbGPyx4UXXqgff/xRGzZsML/WZIueV0ZGhrp3727+3LJlSw0ePFjvvfeeSktLVVpaquXLl2vIkCFq27ateV5aWpouvPBC/e9//1Nubm6tXkObNm3Uv3//I5736aefavfu3br66qsVGRlpHr/00kuVkJDgc+7ixYt1zDHHqGPHjj5rfMYZZ0iSVq1aVata77rrLh177LEaPXq0xo4dqz59+lT4navMa6+9pi5dumjo0KEVbvNuaazpZ/cf//iHz+vu1auXJOniiy9WeHi4z/Hi4mL9/vvvPvdv1qyZTz3x8fEaNWq
|
|
|
|
|
|
"text/plain": [
|
|
|
|
|
|
"<Figure size 1200x600 with 1 Axes>"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"output_type": "display_data"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"evolution_2_comptes(df,'200126356', '200126649')"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 406,
|
|
|
|
|
|
"id": "ed3cb5e9-7788-4a34-8b02-d6ca8196eac1",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAA0sFJREFUeJzs3XlclOX6x/HPzLCDgLiBG+KK5r6T5Z4YaLl03CrX7FRqqb9KbdFs01PHUtPS0tQWTc2yXMtcT0W571sa7uCSCik78/z+QCZHQEGBQfi+X695ydzPPc9cMzwjcnnd120yDMNAREREREREREQkH5kdHYCIiIiIiIiIiBQ9SkqJiIiIiIiIiEi+U1JKRERERERERETynZJSIiIiIiIiIiKS75SUEhERERERERGRfKeklIiIiIiIiIiI5DslpUREREREREREJN8pKSUiIiIiIiIiIvlOSSkREREH2rFjB2+++SZ///23o0MREREREclXSkqJiIg4yNmzZ3nooYfw9/enWLFijg5HRERERCRfmQzDMBwdhIiISFG0cuVKYmJi6N27t6NDERERERHJd6qUEhERcZCwsLB8TUiZTCZee+21XD3n3LlzMZlMHDt2LFfPeyfy4nVK4fPaa69hMpkcHYaIiEiRpqSUiIhIPkpP4mR1++233xwdYqbefvttli5d6ugwCrwDBw5gMplwc3Pj8uXLmc6pVKkSnTp1yvTY1q1bMZlMzJ071zaWnjwxm82cPHkyw2NiY2Nxd3fHZDIxdOjQ3HgZBcb8+fOZPHmyo8MotPS5FhERR1NSSkRExAFef/11Pv/88wy3qlWrOjq0TGX1y+vjjz9OfHw8gYGB+R9UAfTFF1/g7+8PwNdff52r53Z1dWXBggUZxr/55ptcfZ6CJC+TUq+88grx8fF5cu67hZJSIiLiaE6ODkBERKQoevDBB2ncuLGjw7hjFosFi8Xi6DAKBMMwmD9/Pn369CEyMpIvv/ySJ554ItfOHxYWxoIFC3jxxRftxufPn094eDhLlizJtefKL4ZhkJCQgLu7+x2fKyEhARcXF8zm7P2fq5OTE05O+qewiIiII6lSSkREpIBJTk7Gz8+PAQMGZDgWGxuLm5sbzz//vG3s3LlzDBo0iDJlyuDm5ka9evWYN2/eLZ+nf//+VKpUKcP4jb12TCYTV69eZd68ebZlhv379wey7in14Ycfcs899+Dq6krZsmUZMmRIhuVsrVu3pnbt2uzfv582bdrg4eFBuXLleOedd24ZO0BiYiIjRoygVKlSFCtWjIceeohTp05lOvf06dMMHDiQMmXK4Orqyj333MOnn36aYd4HH3zAPffcg4eHB8WLF6dx48bMnz8/W/H88ssvHDt2jF69etGrVy82bdqUZTy3o0+fPuzcuZODBw/axqKjo1m3bh19+vTJ9nnSl/l9+eWX1KhRAzc3Nxo1asSmTZsyzN2xYwcPPvgg3t7eeHl50a5duwxLTLPqzZTZtZG+dPGHH36gcePGuLu7M3PmzEzjbN26NStWrOD48eO26y79et2wYQMmk4mvvvqKV155hXLlyuHh4UFsbCwAixcvplGjRri7u1OyZEkee+wxTp8+fcu416xZw3333Yevry9eXl7UqFGDl1566ZbvKaRVyTVt2tR27bRs2ZIff/zRbk5OPhe7d++mVatWeHh4ULVqVVvl3caNG2nWrBnu7u7UqFGDn376KdPXdfDgQXr06IG3tzclSpTgueeeIyEhwTbvZp9ryJ/PjIiIiJJSIiIiDhATE8OFCxfsbn/99RcAzs7OdO3alaVLl5KUlGT3uKVLl5KYmEivXr0AiI+Pp3Xr1nz++ec8+uijvPvuu/j4+NC/f3+mTJmSK7F+/vnnuLq6cv/999uWGf773//Ocv5rr73GkCFDKFu2LJMmTaJ79+7MnDmTDh06kJycbDf30qVLdOzYkXr16jFp0iSCg4MZNWoUq1atumVcTzzxBJMnT6ZDhw5MnDgRZ2dnwsPDM8w7e/YszZs356effmLo0KFMmTKFqlWrMmjQILulYZ988gnPPvsstWrVYvLkyYwfP5769evz+++/Z+t9+vLLL6lSpQpNmjShc+fOeHh4ZLrc7na1bNmS8uXL2/3Cv3DhQry8vDJ93TezceNGhg8fzmOPPcbrr7/OX3/9RceOHdm7d69tzr59+7j//vvZtWsXL774Iq+++iqRkZG0bt062+9JZg4dOkTv3r154IEHmDJlCvXr18903ssvv0z9+vUpWbKk7bq7cSnfG2+8wYoVK3j++ed5++23cXFxYe7cufTo0QOLxcKECRMYPHgw33zzDffdd1+Wfb7SX2+nTp1ITEzk9ddfZ9KkSTz00EP88ssvt3xN48eP5/HHH8fZ2ZnXX3+d8ePHU6FCBdatW2ebk9PPRadOnWjWrBnvvPMOrq6u9OrVi4ULF9KrVy/CwsKYOHEiV69e5ZFHHuHvv//OEFOPHj1ISEhgwoQJhIWFMXXqVJ588knb8Zt9rvPrMyMiIoIhIiIi+WbOnDkGkOnN1dXVNu+HH34wAGPZsmV2jw8LCzMqV65suz958mQDML744gvbWFJSkhESEmJ4eXkZsbGxtnHAGDdunO1+v379jMDAwAwxjhs3zrjxnwienp5Gv379snw9kZGRhmEYxrlz5wwXFxejQ4cORmpqqm3etGnTDMD49NNPbWOtWrUyAOOzzz6zjSUmJhr+/v5G9+7dMzzX9Xbu3GkAxjPPPGM33qdPnwyvc9CgQUZAQIBx4cIFu7m9evUyfHx8jLi4OMMwDOPhhx827rnnnps+b1aSkpKMEiVKGC+//LJdLPXq1cswNzAw0AgPD8/0PFu2bDEAY86cObax9O/H+fPnjeeff96oWrWq7ViTJk2MAQMGGIaR9v0dMmTILWNNv962bt1qGzt+/Ljh5uZmdO3a1TbWpUsXw8XFxTh69Kht7MyZM0axYsWMli1bZojvRjdeG+mvHTBWr159yzgNwzDCw8MzvUbXr19vAEblypVt3z/DSPs+lC5d2qhdu7YRHx9vG1++fLkBGGPHjs0y7vfff9/2PufEH3/8YZjNZqNr165217xhGIbVajUM4/Y+F/Pnz7eNHTx40AAMs9ls/Pbbb7bx9L8nMrteHnroIbtYnnnmGQMwdu3aZRvL6nOdH58ZERERwzAMVUqJiIg4wPTp01mzZo3d7frqoLZt21KyZEkWLlxoG7t06RJr1qyhZ8+etrGVK1fi7+9P7969bWPOzs48++yzXLlyhY0bN+bPC7rmp59+IikpieHDh9v19hk8eDDe3t6sWLHCbr6XlxePPfaY7b6LiwtNmzblzz//vOnzrFy5EoBnn33Wbnz48OF29w3DYMmSJXTu3BnDMOwq00JDQ4mJiWH79u0A+Pr6curUKbZs2ZLj171q1Sr++usvu+9D79692bVrF/v27cvx+bLSp08fjhw5wpYtW2x/5mTpXrqQkBAaNWpku1+xYkUefvhhfvjhB1JTU0lNTeXHH3+kS5cuVK5c2TYvICCAPn368PPPP9uWyuVUUFAQoaGht/XYG/Xr18+uH9XWrVs5d+4czzzzDG5ubrbx8PBwgoODM1x/1/P19QXgu+++w2q1ZjuGpUuXYrVaGTt2bIZ+VunLA2/nc5FeDQlQo0YNfH19qVmzJs2aNbONp3+d2edlyJAhdveHDRsG/PPZyUp+fWZERERAy/dEREQcomnTprRv397u1qZNG9txJycnunfvznfffUdiYiKQtstacnKyXVLq+PHjVKtWLcMvwzVr1rQdz0/pz1ejRg27cRcXFypXrpwhnvLly2fo61O8eHEuXbp0y+cxm81UqVLFbvzG5z1//jyXL1/m448/plSpUna39J5d586dA2DUqFF4eXnRtGlTqlWrxpAhQ7K1dAvS+gkFBQXh6urKkSNHOHLkCFWqVMHDw4Mvv/wyW+e4XmY9mgAaNGhAcHAw8+fP58svv8Tf35+2bdvm+PzVqlXLMFa9enXi4uI4f/4858+fJy4uLsP7CWnXltVq5eTJkzl+XkhLSuWWG8+V1fUHEBwcfNP
|
|
|
|
|
|
"text/plain": [
|
|
|
|
|
|
"<Figure size 1200x600 with 1 Axes>"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"output_type": "display_data"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"from function import evolution_3_comptes\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"evolution_3_comptes(df,'406169','200090347','200127306')\n",
|
|
|
|
|
|
"\n"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 243,
|
|
|
|
|
|
"id": "279c19a6-900f-485d-9526-be54b5381e4b",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"import matplotlib.pyplot as plt\n",
|
|
|
|
|
|
"import pandas as pd\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"def evolution_3_comptesa(df, id1, id2, id3, show_isin=False, max_isin=3):\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" def prepare_df(id):\n",
|
|
|
|
|
|
" df_id = df[df['Registrar Account - ID'] == id].copy()\n",
|
|
|
|
|
|
" df_id['Centralisation Date'] = pd.to_datetime(df_id['Centralisation Date'])\n",
|
|
|
|
|
|
" return df_id\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" plt.figure(figsize=(12, 6))\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" for acc_id in [id1, id2]:\n",
|
|
|
|
|
|
" df_id = prepare_df(acc_id)\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" # ===== AUM TOTAL (comportement initial) =====\n",
|
|
|
|
|
|
" df_total = (\n",
|
|
|
|
|
|
" df_id\n",
|
|
|
|
|
|
" .groupby('Centralisation Date')['Quantity - AUM']\n",
|
|
|
|
|
|
" .sum()\n",
|
|
|
|
|
|
" .reset_index()\n",
|
|
|
|
|
|
" .sort_values('Centralisation Date')\n",
|
|
|
|
|
|
" )\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" plt.plot(\n",
|
|
|
|
|
|
" df_total['Centralisation Date'],\n",
|
|
|
|
|
|
" df_total['Quantity - AUM'],\n",
|
|
|
|
|
|
" marker='.',\n",
|
|
|
|
|
|
" linestyle='--',\n",
|
|
|
|
|
|
" linewidth=2,\n",
|
|
|
|
|
|
" label=f'Account {acc_id}'\n",
|
|
|
|
|
|
" )\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" # ===== ISIN-LEVEL (optionnel) =====\n",
|
|
|
|
|
|
" if show_isin:\n",
|
|
|
|
|
|
" top_isins = (\n",
|
|
|
|
|
|
" df_id\n",
|
|
|
|
|
|
" .groupby('Product - Isin')['Quantity - AUM']\n",
|
|
|
|
|
|
" .sum()\n",
|
|
|
|
|
|
" .sort_values(ascending=False)\n",
|
|
|
|
|
|
" .head(max_isin)\n",
|
|
|
|
|
|
" .index\n",
|
|
|
|
|
|
" )\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" for isin in top_isins:\n",
|
|
|
|
|
|
" df_isin = (\n",
|
|
|
|
|
|
" df_id[df_id['Product - Isin'] == isin]\n",
|
|
|
|
|
|
" .groupby('Centralisation Date')['Quantity - AUM']\n",
|
|
|
|
|
|
" .sum()\n",
|
|
|
|
|
|
" .reset_index()\n",
|
|
|
|
|
|
" .sort_values('Centralisation Date')\n",
|
|
|
|
|
|
" )\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" plt.plot(\n",
|
|
|
|
|
|
" df_isin['Centralisation Date'],\n",
|
|
|
|
|
|
" df_isin['Quantity - AUM'],\n",
|
|
|
|
|
|
" linestyle='-',\n",
|
|
|
|
|
|
" alpha=1,\n",
|
|
|
|
|
|
" label=f'ISIN {isin}' # <-- Ajout du label pour la légende\n",
|
|
|
|
|
|
" )\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" plt.title(\"Évolution des AUM pour trois comptes\")\n",
|
|
|
|
|
|
" plt.xlabel(\"Date\")\n",
|
|
|
|
|
|
" plt.ylabel(\"Quantity - AUM\")\n",
|
|
|
|
|
|
" plt.grid(True)\n",
|
|
|
|
|
|
" plt.legend()\n",
|
|
|
|
|
|
" plt.tight_layout()\n",
|
|
|
|
|
|
" plt.show()\n"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 343,
|
|
|
|
|
|
"id": "3660f9f6-79a0-469a-a4a2-d936165d98ff",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"image/png": "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
|
|
|
|
|
|
"text/plain": [
|
|
|
|
|
|
"<Figure size 1200x600 with 1 Axes>"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"output_type": "display_data"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"evolution_3_comptesa(df,'200090005','200127315','200127428',show_isin=True,max_isin=3)"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 248,
|
|
|
|
|
|
"id": "c2b78b7d-df39-4e14-ad0a-fa58eaa5738d",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"import pandas as pd\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"def check_isin_continuity(df, rupture, tol=0.05):\n",
|
|
|
|
|
|
" \"\"\"\n",
|
|
|
|
|
|
" Vérifie que les ISIN évoluent continuellement entre old_account et new_account,\n",
|
|
|
|
|
|
" en prenant pour l'ancien compte la valeur à la date précédente et pour le nouveau compte la valeur à la date de rupture.\n",
|
|
|
|
|
|
" \n",
|
|
|
|
|
|
" Args:\n",
|
|
|
|
|
|
" df (pd.DataFrame): Table principale avec colonnes ['Registrar Account - ID', 'Product - Isin', 'Centralisation Date', 'Quantity - AUM']\n",
|
|
|
|
|
|
" rupture (pd.DataFrame): Table avec colonnes ['date', 'old_account', 'new_account']\n",
|
|
|
|
|
|
" tol (float): Tolérance relative maximale (ex: 0.05 = 5%)\n",
|
|
|
|
|
|
" \n",
|
|
|
|
|
|
" Returns:\n",
|
|
|
|
|
|
" pd.DataFrame: Table avec colonnes supplémentaires :\n",
|
|
|
|
|
|
" 'isin', 'old_value', 'new_value', 'relative_change', 'check'\n",
|
|
|
|
|
|
" \"\"\"\n",
|
|
|
|
|
|
" df['Centralisation Date'] = pd.to_datetime(df['Centralisation Date'])\n",
|
|
|
|
|
|
" rupture['date'] = pd.to_datetime(rupture['date'])\n",
|
|
|
|
|
|
" \n",
|
|
|
|
|
|
" # Dictionnaire des dates disponibles par compte pour trouver la date précédente\n",
|
|
|
|
|
|
" dates_by_account = df.groupby('Registrar Account - ID')['Centralisation Date'].unique().to_dict()\n",
|
|
|
|
|
|
" \n",
|
|
|
|
|
|
" records = []\n",
|
|
|
|
|
|
" \n",
|
|
|
|
|
|
" for _, row in rupture.iterrows():\n",
|
|
|
|
|
|
" date = row['date']\n",
|
|
|
|
|
|
" old_account = row['old_account']\n",
|
|
|
|
|
|
" new_account = row['new_account']\n",
|
|
|
|
|
|
" \n",
|
|
|
|
|
|
" # Date précédente pour l'ancien compte\n",
|
|
|
|
|
|
" past_dates = [d for d in dates_by_account.get(old_account, []) if d < date]\n",
|
|
|
|
|
|
" if not past_dates:\n",
|
|
|
|
|
|
" continue\n",
|
|
|
|
|
|
" prev_date = max(past_dates)\n",
|
|
|
|
|
|
" \n",
|
|
|
|
|
|
" # Filtrer df pour old_account à date précédente et new_account à date de rupture\n",
|
|
|
|
|
|
" df_old = df[(df['Registrar Account - ID'] == old_account) & \n",
|
|
|
|
|
|
" (df['Centralisation Date'] == prev_date)]\n",
|
|
|
|
|
|
" df_new = df[(df['Registrar Account - ID'] == new_account) & \n",
|
|
|
|
|
|
" (df['Centralisation Date'] == date)]\n",
|
|
|
|
|
|
" \n",
|
|
|
|
|
|
" # Tous les ISIN concernés\n",
|
|
|
|
|
|
" isins = set(df_old['Product - Isin']).union(df_new['Product - Isin'])\n",
|
|
|
|
|
|
" \n",
|
|
|
|
|
|
" for isin in isins:\n",
|
|
|
|
|
|
" old_val = df_old[df_old['Product - Isin'] == isin]['Quantity - AUM'].sum()\n",
|
|
|
|
|
|
" new_val = df_new[df_new['Product - Isin'] == isin]['Quantity - AUM'].sum()\n",
|
|
|
|
|
|
" old = df_old['Quantity - AUM'].sum()\n",
|
|
|
|
|
|
" \n",
|
|
|
|
|
|
" if old_val == 0:\n",
|
|
|
|
|
|
" rel_change = None\n",
|
|
|
|
|
|
" check = True\n",
|
|
|
|
|
|
" else:\n",
|
|
|
|
|
|
" rel_change = (new_val - old_val) / old\n",
|
|
|
|
|
|
" check = abs(rel_change) <= tol\n",
|
|
|
|
|
|
" \n",
|
|
|
|
|
|
" records.append({\n",
|
|
|
|
|
|
" 'date': date,\n",
|
|
|
|
|
|
" 'old_account': old_account,\n",
|
|
|
|
|
|
" 'new_account': new_account,\n",
|
|
|
|
|
|
" 'isin': isin,\n",
|
|
|
|
|
|
" 'old_value': old_val,\n",
|
|
|
|
|
|
" 'new_value': new_val,\n",
|
|
|
|
|
|
" 'relative_change': rel_change,\n",
|
|
|
|
|
|
" 'check': check\n",
|
|
|
|
|
|
" })\n",
|
|
|
|
|
|
" \n",
|
|
|
|
|
|
" return pd.DataFrame(records)\n",
|
|
|
|
|
|
"\n"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 250,
|
|
|
|
|
|
"id": "35a9cc07-ae6e-4178-8a43-2ec9506db50c",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"result_ISIN = check_isin_continuity(df, ruptures_df, tol=0.05)"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 232,
|
|
|
|
|
|
"id": "a146e317-7e3f-4c9c-a5e6-1d085ea02d34",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"text/html": [
|
|
|
|
|
|
"<div>\n",
|
|
|
|
|
|
"<style scoped>\n",
|
|
|
|
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
|
|
|
|
" vertical-align: middle;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" .dataframe tbody tr th {\n",
|
|
|
|
|
|
" vertical-align: top;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" .dataframe thead th {\n",
|
|
|
|
|
|
" text-align: right;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"</style>\n",
|
|
|
|
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
|
|
|
|
" <thead>\n",
|
|
|
|
|
|
" <tr style=\"text-align: right;\">\n",
|
|
|
|
|
|
" <th></th>\n",
|
|
|
|
|
|
" <th>date</th>\n",
|
|
|
|
|
|
" <th>old_account</th>\n",
|
|
|
|
|
|
" <th>new_account</th>\n",
|
|
|
|
|
|
" <th>value</th>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" </thead>\n",
|
|
|
|
|
|
" <tbody>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>63</th>\n",
|
|
|
|
|
|
" <td>2019-12-31</td>\n",
|
|
|
|
|
|
" <td>200089971</td>\n",
|
|
|
|
|
|
" <td>200127374</td>\n",
|
|
|
|
|
|
" <td>1.004622e+06</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>64</th>\n",
|
|
|
|
|
|
" <td>2018-07-31</td>\n",
|
|
|
|
|
|
" <td>418587</td>\n",
|
|
|
|
|
|
" <td>200089971</td>\n",
|
|
|
|
|
|
" <td>1.045713e+06</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>65</th>\n",
|
|
|
|
|
|
" <td>2019-12-31</td>\n",
|
|
|
|
|
|
" <td>200014222</td>\n",
|
|
|
|
|
|
" <td>200127323</td>\n",
|
|
|
|
|
|
" <td>1.498049e+07</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>68</th>\n",
|
|
|
|
|
|
" <td>2019-12-31</td>\n",
|
|
|
|
|
|
" <td>200000668</td>\n",
|
|
|
|
|
|
" <td>200127167</td>\n",
|
|
|
|
|
|
" <td>4.686255e+06</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>80</th>\n",
|
|
|
|
|
|
" <td>2025-01-31</td>\n",
|
|
|
|
|
|
" <td>200127359</td>\n",
|
|
|
|
|
|
" <td>200139568</td>\n",
|
|
|
|
|
|
" <td>2.241300e+07</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" </tbody>\n",
|
|
|
|
|
|
"</table>\n",
|
|
|
|
|
|
"</div>"
|
|
|
|
|
|
],
|
|
|
|
|
|
"text/plain": [
|
|
|
|
|
|
" date old_account new_account value\n",
|
|
|
|
|
|
"63 2019-12-31 200089971 200127374 1.004622e+06\n",
|
|
|
|
|
|
"64 2018-07-31 418587 200089971 1.045713e+06\n",
|
|
|
|
|
|
"65 2019-12-31 200014222 200127323 1.498049e+07\n",
|
|
|
|
|
|
"68 2019-12-31 200000668 200127167 4.686255e+06\n",
|
|
|
|
|
|
"80 2025-01-31 200127359 200139568 2.241300e+07"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
"execution_count": 232,
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"output_type": "execute_result"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"a = ruptures_df.iloc[30:35,]\n",
|
|
|
|
|
|
"a"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 300,
|
|
|
|
|
|
"id": "f88fccc4-ae08-43ca-831c-874a8804a58b",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"text/html": [
|
|
|
|
|
|
"<div>\n",
|
|
|
|
|
|
"<style scoped>\n",
|
|
|
|
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
|
|
|
|
" vertical-align: middle;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" .dataframe tbody tr th {\n",
|
|
|
|
|
|
" vertical-align: top;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" .dataframe thead th {\n",
|
|
|
|
|
|
" text-align: right;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"</style>\n",
|
|
|
|
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
|
|
|
|
" <thead>\n",
|
|
|
|
|
|
" <tr style=\"text-align: right;\">\n",
|
|
|
|
|
|
" <th></th>\n",
|
|
|
|
|
|
" <th>date</th>\n",
|
|
|
|
|
|
" <th>old_account</th>\n",
|
|
|
|
|
|
" <th>new_account</th>\n",
|
|
|
|
|
|
" <th>isin</th>\n",
|
|
|
|
|
|
" <th>old_value</th>\n",
|
|
|
|
|
|
" <th>new_value</th>\n",
|
|
|
|
|
|
" <th>relative_change</th>\n",
|
|
|
|
|
|
" <th>check</th>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" </thead>\n",
|
|
|
|
|
|
" <tbody>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>188</th>\n",
|
|
|
|
|
|
" <td>2018-02-28</td>\n",
|
|
|
|
|
|
" <td>200000491</td>\n",
|
|
|
|
|
|
" <td>200089970</td>\n",
|
|
|
|
|
|
" <td>FR0010135103</td>\n",
|
|
|
|
|
|
" <td>12678.000</td>\n",
|
|
|
|
|
|
" <td>13481.000</td>\n",
|
|
|
|
|
|
" <td>0.063338</td>\n",
|
|
|
|
|
|
" <td>False</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>273</th>\n",
|
|
|
|
|
|
" <td>2024-11-30</td>\n",
|
|
|
|
|
|
" <td>200127497</td>\n",
|
|
|
|
|
|
" <td>200139377</td>\n",
|
|
|
|
|
|
" <td>LU0592698954</td>\n",
|
|
|
|
|
|
" <td>390.694</td>\n",
|
|
|
|
|
|
" <td>516.545</td>\n",
|
|
|
|
|
|
" <td>0.070361</td>\n",
|
|
|
|
|
|
" <td>False</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>278</th>\n",
|
|
|
|
|
|
" <td>2020-03-31</td>\n",
|
|
|
|
|
|
" <td>200050278</td>\n",
|
|
|
|
|
|
" <td>422653</td>\n",
|
|
|
|
|
|
" <td>LU0992625839</td>\n",
|
|
|
|
|
|
" <td>848.114</td>\n",
|
|
|
|
|
|
" <td>0.000</td>\n",
|
|
|
|
|
|
" <td>-0.261335</td>\n",
|
|
|
|
|
|
" <td>False</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>285</th>\n",
|
|
|
|
|
|
" <td>2020-03-31</td>\n",
|
|
|
|
|
|
" <td>200050278</td>\n",
|
|
|
|
|
|
" <td>422653</td>\n",
|
|
|
|
|
|
" <td>LU0992630599</td>\n",
|
|
|
|
|
|
" <td>841.974</td>\n",
|
|
|
|
|
|
" <td>0.000</td>\n",
|
|
|
|
|
|
" <td>-0.259443</td>\n",
|
|
|
|
|
|
" <td>False</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>287</th>\n",
|
|
|
|
|
|
" <td>2020-03-31</td>\n",
|
|
|
|
|
|
" <td>200050278</td>\n",
|
|
|
|
|
|
" <td>422653</td>\n",
|
|
|
|
|
|
" <td>LU0992628858</td>\n",
|
|
|
|
|
|
" <td>273.202</td>\n",
|
|
|
|
|
|
" <td>0.000</td>\n",
|
|
|
|
|
|
" <td>-0.084184</td>\n",
|
|
|
|
|
|
" <td>False</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>...</th>\n",
|
|
|
|
|
|
" <td>...</td>\n",
|
|
|
|
|
|
" <td>...</td>\n",
|
|
|
|
|
|
" <td>...</td>\n",
|
|
|
|
|
|
" <td>...</td>\n",
|
|
|
|
|
|
" <td>...</td>\n",
|
|
|
|
|
|
" <td>...</td>\n",
|
|
|
|
|
|
" <td>...</td>\n",
|
|
|
|
|
|
" <td>...</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>4382</th>\n",
|
|
|
|
|
|
" <td>2019-08-31</td>\n",
|
|
|
|
|
|
" <td>200126356</td>\n",
|
|
|
|
|
|
" <td>200126649</td>\n",
|
|
|
|
|
|
" <td>LU0992625243</td>\n",
|
|
|
|
|
|
" <td>419.119</td>\n",
|
|
|
|
|
|
" <td>0.000</td>\n",
|
|
|
|
|
|
" <td>-1.000000</td>\n",
|
|
|
|
|
|
" <td>False</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>4384</th>\n",
|
|
|
|
|
|
" <td>2019-08-31</td>\n",
|
|
|
|
|
|
" <td>200126356</td>\n",
|
|
|
|
|
|
" <td>200126671</td>\n",
|
|
|
|
|
|
" <td>LU0992625243</td>\n",
|
|
|
|
|
|
" <td>419.119</td>\n",
|
|
|
|
|
|
" <td>0.000</td>\n",
|
|
|
|
|
|
" <td>-1.000000</td>\n",
|
|
|
|
|
|
" <td>False</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>4389</th>\n",
|
|
|
|
|
|
" <td>2020-02-29</td>\n",
|
|
|
|
|
|
" <td>200126473</td>\n",
|
|
|
|
|
|
" <td>200127826</td>\n",
|
|
|
|
|
|
" <td>LU0992630912</td>\n",
|
|
|
|
|
|
" <td>495.630</td>\n",
|
|
|
|
|
|
" <td>0.000</td>\n",
|
|
|
|
|
|
" <td>-1.000000</td>\n",
|
|
|
|
|
|
" <td>False</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>4391</th>\n",
|
|
|
|
|
|
" <td>2020-03-31</td>\n",
|
|
|
|
|
|
" <td>200126869</td>\n",
|
|
|
|
|
|
" <td>200101638</td>\n",
|
|
|
|
|
|
" <td>LU0992630243</td>\n",
|
|
|
|
|
|
" <td>268.362</td>\n",
|
|
|
|
|
|
" <td>293.685</td>\n",
|
|
|
|
|
|
" <td>0.094361</td>\n",
|
|
|
|
|
|
" <td>False</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>4395</th>\n",
|
|
|
|
|
|
" <td>2025-02-28</td>\n",
|
|
|
|
|
|
" <td>200139432</td>\n",
|
|
|
|
|
|
" <td>200142171</td>\n",
|
|
|
|
|
|
" <td>LU1623763064</td>\n",
|
|
|
|
|
|
" <td>415.742</td>\n",
|
|
|
|
|
|
" <td>390.810</td>\n",
|
|
|
|
|
|
" <td>-0.059970</td>\n",
|
|
|
|
|
|
" <td>False</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" </tbody>\n",
|
|
|
|
|
|
"</table>\n",
|
|
|
|
|
|
"<p>192 rows × 8 columns</p>\n",
|
|
|
|
|
|
"</div>"
|
|
|
|
|
|
],
|
|
|
|
|
|
"text/plain": [
|
|
|
|
|
|
" date old_account new_account isin old_value new_value \\\n",
|
|
|
|
|
|
"188 2018-02-28 200000491 200089970 FR0010135103 12678.000 13481.000 \n",
|
|
|
|
|
|
"273 2024-11-30 200127497 200139377 LU0592698954 390.694 516.545 \n",
|
|
|
|
|
|
"278 2020-03-31 200050278 422653 LU0992625839 848.114 0.000 \n",
|
|
|
|
|
|
"285 2020-03-31 200050278 422653 LU0992630599 841.974 0.000 \n",
|
|
|
|
|
|
"287 2020-03-31 200050278 422653 LU0992628858 273.202 0.000 \n",
|
|
|
|
|
|
"... ... ... ... ... ... ... \n",
|
|
|
|
|
|
"4382 2019-08-31 200126356 200126649 LU0992625243 419.119 0.000 \n",
|
|
|
|
|
|
"4384 2019-08-31 200126356 200126671 LU0992625243 419.119 0.000 \n",
|
|
|
|
|
|
"4389 2020-02-29 200126473 200127826 LU0992630912 495.630 0.000 \n",
|
|
|
|
|
|
"4391 2020-03-31 200126869 200101638 LU0992630243 268.362 293.685 \n",
|
|
|
|
|
|
"4395 2025-02-28 200139432 200142171 LU1623763064 415.742 390.810 \n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" relative_change check \n",
|
|
|
|
|
|
"188 0.063338 False \n",
|
|
|
|
|
|
"273 0.070361 False \n",
|
|
|
|
|
|
"278 -0.261335 False \n",
|
|
|
|
|
|
"285 -0.259443 False \n",
|
|
|
|
|
|
"287 -0.084184 False \n",
|
|
|
|
|
|
"... ... ... \n",
|
|
|
|
|
|
"4382 -1.000000 False \n",
|
|
|
|
|
|
"4384 -1.000000 False \n",
|
|
|
|
|
|
"4389 -1.000000 False \n",
|
|
|
|
|
|
"4391 0.094361 False \n",
|
|
|
|
|
|
"4395 -0.059970 False \n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"[192 rows x 8 columns]"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
"execution_count": 300,
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"output_type": "execute_result"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"result_ISIN_false = result_ISIN[result_ISIN['check'] == False]\n",
|
|
|
|
|
|
"result_ISIN_false"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 301,
|
|
|
|
|
|
"id": "ad298caa-0fa1-47dd-b686-e7800046e0b9",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"text/html": [
|
|
|
|
|
|
"<div>\n",
|
|
|
|
|
|
"<style scoped>\n",
|
|
|
|
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
|
|
|
|
" vertical-align: middle;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" .dataframe tbody tr th {\n",
|
|
|
|
|
|
" vertical-align: top;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" .dataframe thead th {\n",
|
|
|
|
|
|
" text-align: right;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"</style>\n",
|
|
|
|
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
|
|
|
|
" <thead>\n",
|
|
|
|
|
|
" <tr style=\"text-align: right;\">\n",
|
|
|
|
|
|
" <th></th>\n",
|
|
|
|
|
|
" <th>date</th>\n",
|
|
|
|
|
|
" <th>old_account</th>\n",
|
|
|
|
|
|
" <th>new_account</th>\n",
|
|
|
|
|
|
" <th>isin</th>\n",
|
|
|
|
|
|
" <th>old_value</th>\n",
|
|
|
|
|
|
" <th>new_value</th>\n",
|
|
|
|
|
|
" <th>relative_change</th>\n",
|
|
|
|
|
|
" <th>check</th>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" </thead>\n",
|
|
|
|
|
|
" <tbody>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>131</th>\n",
|
|
|
|
|
|
" <td>2019-12-31</td>\n",
|
|
|
|
|
|
" <td>418209</td>\n",
|
|
|
|
|
|
" <td>200127581</td>\n",
|
|
|
|
|
|
" <td>LU0164455502</td>\n",
|
|
|
|
|
|
" <td>3575.0</td>\n",
|
|
|
|
|
|
" <td>3450.0</td>\n",
|
|
|
|
|
|
" <td>-0.034965</td>\n",
|
|
|
|
|
|
" <td>True</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>132</th>\n",
|
|
|
|
|
|
" <td>2019-12-31</td>\n",
|
|
|
|
|
|
" <td>418209</td>\n",
|
|
|
|
|
|
" <td>200127581</td>\n",
|
|
|
|
|
|
" <td>FR0010135103</td>\n",
|
|
|
|
|
|
" <td>0.0</td>\n",
|
|
|
|
|
|
" <td>0.0</td>\n",
|
|
|
|
|
|
" <td>NaN</td>\n",
|
|
|
|
|
|
" <td>True</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>133</th>\n",
|
|
|
|
|
|
" <td>2019-12-31</td>\n",
|
|
|
|
|
|
" <td>418209</td>\n",
|
|
|
|
|
|
" <td>200127581</td>\n",
|
|
|
|
|
|
" <td>FR0010148981</td>\n",
|
|
|
|
|
|
" <td>0.0</td>\n",
|
|
|
|
|
|
" <td>0.0</td>\n",
|
|
|
|
|
|
" <td>NaN</td>\n",
|
|
|
|
|
|
" <td>True</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>134</th>\n",
|
|
|
|
|
|
" <td>2019-12-31</td>\n",
|
|
|
|
|
|
" <td>418209</td>\n",
|
|
|
|
|
|
" <td>200127581</td>\n",
|
|
|
|
|
|
" <td>FR0010149302</td>\n",
|
|
|
|
|
|
" <td>0.0</td>\n",
|
|
|
|
|
|
" <td>0.0</td>\n",
|
|
|
|
|
|
" <td>NaN</td>\n",
|
|
|
|
|
|
" <td>True</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" </tbody>\n",
|
|
|
|
|
|
"</table>\n",
|
|
|
|
|
|
"</div>"
|
|
|
|
|
|
],
|
|
|
|
|
|
"text/plain": [
|
|
|
|
|
|
" date old_account new_account isin old_value new_value \\\n",
|
|
|
|
|
|
"131 2019-12-31 418209 200127581 LU0164455502 3575.0 3450.0 \n",
|
|
|
|
|
|
"132 2019-12-31 418209 200127581 FR0010135103 0.0 0.0 \n",
|
|
|
|
|
|
"133 2019-12-31 418209 200127581 FR0010148981 0.0 0.0 \n",
|
|
|
|
|
|
"134 2019-12-31 418209 200127581 FR0010149302 0.0 0.0 \n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" relative_change check \n",
|
|
|
|
|
|
"131 -0.034965 True \n",
|
|
|
|
|
|
"132 NaN True \n",
|
|
|
|
|
|
"133 NaN True \n",
|
|
|
|
|
|
"134 NaN True "
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
"execution_count": 301,
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"output_type": "execute_result"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"result_ISIN[result_ISIN['new_account'] == '200127581']"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 302,
|
|
|
|
|
|
"id": "cd99ad4e-9bb3-4542-8cd9-14a799169988",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"text/html": [
|
|
|
|
|
|
"<div>\n",
|
|
|
|
|
|
"<style scoped>\n",
|
|
|
|
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
|
|
|
|
" vertical-align: middle;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" .dataframe tbody tr th {\n",
|
|
|
|
|
|
" vertical-align: top;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" .dataframe thead th {\n",
|
|
|
|
|
|
" text-align: right;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"</style>\n",
|
|
|
|
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
|
|
|
|
" <thead>\n",
|
|
|
|
|
|
" <tr style=\"text-align: right;\">\n",
|
|
|
|
|
|
" <th></th>\n",
|
|
|
|
|
|
" <th>date</th>\n",
|
|
|
|
|
|
" <th>old_account</th>\n",
|
|
|
|
|
|
" <th>new_account</th>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" </thead>\n",
|
|
|
|
|
|
" <tbody>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>188</th>\n",
|
|
|
|
|
|
" <td>2018-02-28</td>\n",
|
|
|
|
|
|
" <td>200000491</td>\n",
|
|
|
|
|
|
" <td>200089970</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>273</th>\n",
|
|
|
|
|
|
" <td>2024-11-30</td>\n",
|
|
|
|
|
|
" <td>200127497</td>\n",
|
|
|
|
|
|
" <td>200139377</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>278</th>\n",
|
|
|
|
|
|
" <td>2020-03-31</td>\n",
|
|
|
|
|
|
" <td>200050278</td>\n",
|
|
|
|
|
|
" <td>422653</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>303</th>\n",
|
|
|
|
|
|
" <td>2020-03-31</td>\n",
|
|
|
|
|
|
" <td>200071859</td>\n",
|
|
|
|
|
|
" <td>415661</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>330</th>\n",
|
|
|
|
|
|
" <td>2020-10-31</td>\n",
|
|
|
|
|
|
" <td>200084492</td>\n",
|
|
|
|
|
|
" <td>414547</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>...</th>\n",
|
|
|
|
|
|
" <td>...</td>\n",
|
|
|
|
|
|
" <td>...</td>\n",
|
|
|
|
|
|
" <td>...</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>4382</th>\n",
|
|
|
|
|
|
" <td>2019-08-31</td>\n",
|
|
|
|
|
|
" <td>200126356</td>\n",
|
|
|
|
|
|
" <td>200126649</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>4384</th>\n",
|
|
|
|
|
|
" <td>2019-08-31</td>\n",
|
|
|
|
|
|
" <td>200126356</td>\n",
|
|
|
|
|
|
" <td>200126671</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>4389</th>\n",
|
|
|
|
|
|
" <td>2020-02-29</td>\n",
|
|
|
|
|
|
" <td>200126473</td>\n",
|
|
|
|
|
|
" <td>200127826</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>4391</th>\n",
|
|
|
|
|
|
" <td>2020-03-31</td>\n",
|
|
|
|
|
|
" <td>200126869</td>\n",
|
|
|
|
|
|
" <td>200101638</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" <tr>\n",
|
|
|
|
|
|
" <th>4395</th>\n",
|
|
|
|
|
|
" <td>2025-02-28</td>\n",
|
|
|
|
|
|
" <td>200139432</td>\n",
|
|
|
|
|
|
" <td>200142171</td>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" </tbody>\n",
|
|
|
|
|
|
"</table>\n",
|
|
|
|
|
|
"<p>117 rows × 3 columns</p>\n",
|
|
|
|
|
|
"</div>"
|
|
|
|
|
|
],
|
|
|
|
|
|
"text/plain": [
|
|
|
|
|
|
" date old_account new_account\n",
|
|
|
|
|
|
"188 2018-02-28 200000491 200089970\n",
|
|
|
|
|
|
"273 2024-11-30 200127497 200139377\n",
|
|
|
|
|
|
"278 2020-03-31 200050278 422653\n",
|
|
|
|
|
|
"303 2020-03-31 200071859 415661\n",
|
|
|
|
|
|
"330 2020-10-31 200084492 414547\n",
|
|
|
|
|
|
"... ... ... ...\n",
|
|
|
|
|
|
"4382 2019-08-31 200126356 200126649\n",
|
|
|
|
|
|
"4384 2019-08-31 200126356 200126671\n",
|
|
|
|
|
|
"4389 2020-02-29 200126473 200127826\n",
|
|
|
|
|
|
"4391 2020-03-31 200126869 200101638\n",
|
|
|
|
|
|
"4395 2025-02-28 200139432 200142171\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"[117 rows x 3 columns]"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
"execution_count": 302,
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"output_type": "execute_result"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"results_ISIN_unique = result_ISIN_false.iloc[:, :3].drop_duplicates()\n",
|
|
|
|
|
|
"results_ISIN_unique"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 344,
|
|
|
|
|
|
"id": "e544f593-fecf-4c84-8784-1c70f40e408a",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"def comparaison2(i):\n",
|
|
|
|
|
|
" evolution_3_comptesa(df,results_ISIN_unique.iloc[i,1],results_ISIN_unique.iloc[i,2],'200127428',show_isin=True,max_isin=3)"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 405,
|
|
|
|
|
|
"id": "344f2c72-1245-4f97-b0f8-2a5b864ae09b",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAA7ZBJREFUeJzs3Xd4FFXbx/Hv7qZ3WkhoAQLSe40ivQYVBJWmFBEs8PiIj4goRUAEeW1YsCKggGJFBQQCUpQOGqmCIEVKQk1Cetl5/1iysiSBJCRZCL/Pde1F5syZM/fszCbkzikmwzAMREREREREREREipDZ2QGIiIiIiIiIiMitR0kpEREREREREREpckpKiYiIiIiIiIhIkVNSSkREREREREREipySUiIiIiIiIiIiUuSUlBIRERERERERkSKnpJSIiIiIiIiIiBQ5JaVERERERERERKTIKSklIiJSQH7//XdeeuklLl686OxQRERERERueEpKiYiIFIDo6GjuuecegoKC8PX1dXY4IiIiIiI3PJNhGIazgxAREbnZLVu2jNjYWPr16+fsUEREREREbgrqKSUiIlIAwsPDizQhZTKZePHFFwu0zblz52IymThy5EiBtns9CuM6pfh58cUXMZlMzg5DRERE8khJKRERkXzKTOLk9Nq8ebOzQ8zWyy+/zOLFi50dxg1v3759mEwmPDw8iImJybZO5cqVueuuu7Ldt337dkwmE3PnzrWXZSZPzGYz//zzT5Zj4uLi8PT0xGQyMXLkyIK4jBvGwoULefPNN50dRrGlz7WIiNyMlJQSERG5TpMnT+azzz7L8qpWrZqzQ8tWTr+8PvTQQyQlJRESElL0Qd2A5s+fT1BQEABff/11gbbt7u7O559/nqX822+/LdDz3EgKMyk1btw4kpKSCqXtm4WSUiIicjNycXYAIiIiN7tu3brRtGlTZ4dx3SwWCxaLxdlh3BAMw2DhwoX079+fw4cPs2DBAh555JECaz88PJzPP/+cZ5991qF84cKFdO/enW+++abAzlVUDMMgOTkZT0/P624rOTkZNzc3zObc/f3UxcUFFxf9t1ZERORmo55SIiIihSgtLY2SJUsyZMiQLPvi4uLw8PDgmWeesZedPn2aoUOHUrZsWTw8PGjQoAHz5s275nkGDx5M5cqVs5RfOdeOyWQiISGBefPm2YcZDh48GMh5TqlZs2ZRp04d3N3dKVeuHCNGjMgynK1t27bUrVuXvXv30q5dO7y8vChfvjwzZsy4ZuwAKSkpjBo1ijJlyuDr68s999zD8ePHs6174sQJHn74YcqWLYu7uzt16tThk08+yVLv7bffpk6dOnh5eVGiRAmaNm3KwoULcxXPhg0bOHLkCH379qVv376sX78+x3jyo3///kRGRvLnn3/ay6Kiovj555/p379/rtvJHOa3YMECatSogYeHB02aNGH9+vVZ6v7+++9069YNPz8/fHx86NChQ5YhpjnNzZTds5E5dHHFihU0bdoUT09PPvjgg2zjbNu2LUuXLuXo0aP25y7zeV27di0mk4kvvviCcePGUb58eby8vIiLiwPgq6++okmTJnh6elK6dGkefPBBTpw4cc24IyIiaNWqFQEBAfj4+FCjRg2ef/75a76nYOsl17x5c/uz07p1a1auXOlQJy+fi507d9KmTRu8vLyoVq2avefdunXraNGiBZ6entSoUYNVq1Zle11//vknDzzwAH5+fpQqVYr//ve/JCcn2+td7XMNRfOZERERyQ8lpURERK5TbGwsZ8+edXidO3cOAFdXV+69914WL15Mamqqw3GLFy8mJSWFvn37ApCUlETbtm357LPPGDBgAP/3f/+Hv78/gwcPZubMmQUS62effYa7uzt33nmnfZjho48+mmP9F198kREjRlCuXDlee+01evfuzQcffEDnzp1JS0tzqHvhwgW6du1KgwYNeO2116hZsyZjxozhp59+umZcjzzyCG+++SadO3dm+vTpuLq60r179yz1oqOjadmyJatWrWLkyJHMnDmTatWqMXToUIehYR999BFPPvkktWvX5s0332TSpEk0bNiQLVu25Op9WrBgAaGhoTRr1oy7774bLy+vbIfb5Vfr1q2pUKGCwy/8ixYtwsfHJ9vrvpp169bx1FNP8eCDDzJ58mTOnTtH165d2b17t73Onj17uPPOO/njjz949tlnGT9+PIcPH6Zt27a5fk+ys3//fvr160enTp2YOXMmDRs2zLbeCy+8QMOGDSldurT9ubtyKN+UKVNYunQpzzzzDC+//DJubm7MnTuXBx54AIvFwrRp0xg2bBjffvstrVq1ynGer8zrveuuu0hJSWHy5Mm89tpr3HPPPWzYsOGa1zRp0iQeeughXF1dmTx5MpMmTaJixYr8/PPP9jp5/VzcddddtGjRghkzZuDu7k7fvn1ZtGgRffv2JTw8nOnTp5OQkMB9993HxYsXs8T0wAMPkJyczLRp0wgPD+ett95i+PDh9v1X+1wX1WdGREQkXwwRERHJlzlz5hhAti93d3d7vRUrVhiA8eOPPzocHx4eblStWtW+/eabbxqAMX/+fHtZamqqERYWZvj4+BhxcXH2csCYOHGifXvQoEFGSEhIlhgnTpxoXPnj3tvb2xg0aFCO13P48GHDMAzj9OnThpubm9G5c2cjIyPDXu+dd94xAOOTTz6xl7Vp08YAjE8//dRelpKSYgQFBRm9e/fOcq7LRUZGGoDxxBNPOJT3798/y3UOHTrUCA4ONs6ePetQt2/fvoa/v7+RmJhoGIZh9OjRw6hTp85Vz5uT1NRUo1SpUsYLL7zgEEuDBg2y1A0JCTG6d++ebTvbtm0zAGPOnDn2ssz7cebMGeOZZ54xqlWrZt/XrFkzY8iQIYZh2O7viBEjrhlr5vO2fft2e9nRo0cNDw8P495777WX9ezZ03BzczMOHTpkLzt58qTh6+trtG7dOkt8V7ry2ci8dsBYvnz5NeM0DMPo3r17ts/omjVrDMCoWrWq/f4Zhu0+BAYGGnXr1jWSkpLs5UuWLDEAY8KECTnG/cYbb9jf57z466+/DLPZbNx7770Oz7xhGIbVajUMI3+fi4ULF9rL/vzzTwMwzGazsXnzZnt55veJ7J6Xe+65xyGWJ554wgCMP/74w16W0+e6KD4zIiIi+aWeUiIiItfp3XffJSIiwuF1ee+g9u3bU7p0aRYtWmQvu3DhAhEREfTp08detmzZMoKCgujXr5+9zNXVlSeffJL4+HjWrVtXNBd0yapVq0hNTeWpp55ymNtn2LBh+Pn5sXTpUof6Pj4+PPjgg/ZtNzc3mjdvzt9//33V8yxbtgyAJ5980qH8qaeectg2DINvvvmGu+++G8MwHHqmdenShdjYWH777TcAAgICOH78ONu2bcvzdf/000+cO3fO4T7069ePP/74gz179uS5vZz079+fgwcPsm3bNvu/eRm6lyksLIwmTZrYtytVqkSPHj1YsWIFGRkZZGRksHLlSnr27EnVqlXt9YKDg+nfvz+//vqrfahcXlWpUoUuXbrk69grDRo0yGE+qu3bt3P69GmeeOIJPDw87OXdu3enZs2aWZ6/ywUEBADw/fffY7Vacx3D4sWLsVqtTJgwIct8VpnDA/PzucjsDQlQo0YNAgICqFWrFi1atLCXZ36d3edlxIgRDtv/+c9/gH8/Ozkpqs+MiIhIfikpJSIicp2aN29Ox44dHV7t2rWz73dxcaF37958//33pKSkALZV1tLS0hySUkePHqV69epZfhmuVauWfX9RyjxfjRo1HMrd3NyoWrVqlngqVKiQZV6fEiVKcOHChWuex2w2Exoa6lB+5XnPnDlDTEwMH374IWXKlHF4Zc7Zdfr0aQDGjBmDj48PzZs3p3r16owYMSJXQ7fANp9QlSpVcHd35+DBgxw8eJDQ0FC8vLxYsGBBrtq4XHZzNAE0atSImjVrsnDhQhYsWEBQUBDt27fPc/vVq1fPUnbbbbeRmJjImTNnOHPmDImJiVneT7A9W1arlX/++SfP5wVbUqqgXNlWTs8fQM2aNa/6eej
|
|
|
|
|
|
"text/plain": [
|
|
|
|
|
|
"<Figure size 1200x600 with 1 Axes>"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"output_type": "display_data"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"comparaison2(90)"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 306,
|
|
|
|
|
|
"id": "7124b4bc-9e17-4ad8-a863-800178c8a47e",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"text/html": [
|
|
|
|
|
|
"<div>\n",
|
|
|
|
|
|
"<style scoped>\n",
|
|
|
|
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
|
|
|
|
" vertical-align: middle;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" .dataframe tbody tr th {\n",
|
|
|
|
|
|
" vertical-align: top;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
" .dataframe thead th {\n",
|
|
|
|
|
|
" text-align: right;\n",
|
|
|
|
|
|
" }\n",
|
|
|
|
|
|
"</style>\n",
|
|
|
|
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
|
|
|
|
" <thead>\n",
|
|
|
|
|
|
" <tr style=\"text-align: right;\">\n",
|
|
|
|
|
|
" <th></th>\n",
|
|
|
|
|
|
" <th>date</th>\n",
|
|
|
|
|
|
" <th>old_account</th>\n",
|
|
|
|
|
|
" <th>new_account</th>\n",
|
|
|
|
|
|
" </tr>\n",
|
|
|
|
|
|
" </thead>\n",
|
|
|
|
|
|
" <tbody>\n",
|
|
|
|
|
|
" </tbody>\n",
|
|
|
|
|
|
"</table>\n",
|
|
|
|
|
|
"</div>"
|
|
|
|
|
|
],
|
|
|
|
|
|
"text/plain": [
|
|
|
|
|
|
"Empty DataFrame\n",
|
|
|
|
|
|
"Columns: [date, old_account, new_account]\n",
|
|
|
|
|
|
"Index: []"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
"execution_count": 306,
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"output_type": "execute_result"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"results_ISIN_unique[results_ISIN_unique['old_account'] == '200127581']"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
2025-12-04 16:11:38 +01:00
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": null,
|
2026-01-29 18:40:49 +01:00
|
|
|
|
"id": "e95bab82-365e-4797-8c6d-ed08bd7d9fe3",
|
2025-12-04 16:11:38 +01:00
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [],
|
|
|
|
|
|
"source": []
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"metadata": {
|
|
|
|
|
|
"kernelspec": {
|
|
|
|
|
|
"display_name": "Python 3 (ipykernel)",
|
|
|
|
|
|
"language": "python",
|
|
|
|
|
|
"name": "python3"
|
|
|
|
|
|
},
|
|
|
|
|
|
"language_info": {
|
|
|
|
|
|
"codemirror_mode": {
|
|
|
|
|
|
"name": "ipython",
|
|
|
|
|
|
"version": 3
|
|
|
|
|
|
},
|
|
|
|
|
|
"file_extension": ".py",
|
|
|
|
|
|
"mimetype": "text/x-python",
|
|
|
|
|
|
"name": "python",
|
|
|
|
|
|
"nbconvert_exporter": "python",
|
|
|
|
|
|
"pygments_lexer": "ipython3",
|
2026-01-29 18:40:49 +01:00
|
|
|
|
"version": "3.13.11"
|
2025-12-04 16:11:38 +01:00
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
"nbformat": 4,
|
|
|
|
|
|
"nbformat_minor": 5
|
|
|
|
|
|
}
|