BDC-team-1/Notebook_AR.ipynb

248 lines
58 KiB
Plaintext
Raw Normal View History

{
"cells": [
2024-02-06 11:16:42 +01:00
{
"cell_type": "code",
2024-03-20 10:27:03 +01:00
"execution_count": 2,
"id": "0c48e17e-3dd5-43ef-be44-a11a3cbeacfe",
2024-02-06 11:16:42 +01:00
"metadata": {},
"outputs": [
{
2024-03-20 10:27:03 +01:00
"name": "stdin",
2024-02-06 11:16:42 +01:00
"output_type": "stream",
"text": [
2024-03-20 10:27:03 +01:00
"Choisissez le type de compagnie : sport ? musique ? musee ? sport\n"
2024-02-06 11:16:42 +01:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-03-20 10:27:03 +01:00
"File path : projet-bdc2324-team1/0_Input/Company_5/customerplus_cleaned.csv\n"
2024-02-06 11:16:42 +01:00
]
2024-03-20 10:27:03 +01:00
},
2024-02-06 11:16:42 +01:00
{
2024-03-20 10:27:03 +01:00
"ename": "PermissionError",
"evalue": "Forbidden",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mClientError\u001b[0m Traceback (most recent call last)",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/s3fs/core.py:529\u001b[0m, in \u001b[0;36mS3FileSystem.info\u001b[0;34m(self, path, version_id, refresh)\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 529\u001b[0m out \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_s3\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43ms3\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhead_object\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mBucket\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbucket\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 530\u001b[0m \u001b[43m \u001b[49m\u001b[43mKey\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mversion_id_kw\u001b[49m\u001b[43m(\u001b[49m\u001b[43mversion_id\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mreq_kw\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 531\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[1;32m 532\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mETag\u001b[39m\u001b[38;5;124m'\u001b[39m: out[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mETag\u001b[39m\u001b[38;5;124m'\u001b[39m],\n\u001b[1;32m 533\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mKey\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m.\u001b[39mjoin([bucket, key]),\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 540\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mVersionId\u001b[39m\u001b[38;5;124m'\u001b[39m: out\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mVersionId\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 541\u001b[0m }\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/s3fs/core.py:200\u001b[0m, in \u001b[0;36mS3FileSystem._call_s3\u001b[0;34m(self, method, *akwarglist, **kwargs)\u001b[0m\n\u001b[1;32m 198\u001b[0m additional_kwargs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_s3_method_kwargs(method, \u001b[38;5;241m*\u001b[39makwarglist,\n\u001b[1;32m 199\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m--> 200\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mmethod\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43madditional_kwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/botocore/client.py:553\u001b[0m, in \u001b[0;36mClientCreator._create_api_method.<locals>._api_call\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 552\u001b[0m \u001b[38;5;66;03m# The \"self\" in this scope is referring to the BaseClient.\u001b[39;00m\n\u001b[0;32m--> 553\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_api_call\u001b[49m\u001b[43m(\u001b[49m\u001b[43moperation_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/botocore/client.py:1009\u001b[0m, in \u001b[0;36mBaseClient._make_api_call\u001b[0;34m(self, operation_name, api_params)\u001b[0m\n\u001b[1;32m 1008\u001b[0m error_class \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mexceptions\u001b[38;5;241m.\u001b[39mfrom_code(error_code)\n\u001b[0;32m-> 1009\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m error_class(parsed_response, operation_name)\n\u001b[1;32m 1010\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n",
"\u001b[0;31mClientError\u001b[0m: An error occurred (403) when calling the HeadObject operation: Forbidden",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[0;31mPermissionError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[2], line 28\u001b[0m\n\u001b[1;32m 25\u001b[0m list_of_comp \u001b[38;5;241m=\u001b[39m companies[type_of_activity] \n\u001b[1;32m 27\u001b[0m \u001b[38;5;66;03m# Load files\u001b[39;00m\n\u001b[0;32m---> 28\u001b[0m customer, campaigns_kpi, campaigns_brut, tickets, products \u001b[38;5;241m=\u001b[39m \u001b[43mload_files\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlist_of_comp\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;66;03m# Identify anonymous customer for each company and remove them from our datasets\u001b[39;00m\n\u001b[1;32m 31\u001b[0m outlier_list \u001b[38;5;241m=\u001b[39m outlier_detection(tickets, list_of_comp)\n",
"File \u001b[0;32m<string>:22\u001b[0m, in \u001b[0;36mload_files\u001b[0;34m(nb_compagnie)\u001b[0m\n",
"File \u001b[0;32m<string>:12\u001b[0m, in \u001b[0;36mdisplay_input_databases\u001b[0;34m(directory_path, file_name, datetime_col)\u001b[0m\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/fsspec/spec.py:1295\u001b[0m, in \u001b[0;36mAbstractFileSystem.open\u001b[0;34m(self, path, mode, block_size, cache_options, compression, **kwargs)\u001b[0m\n\u001b[1;32m 1293\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1294\u001b[0m ac \u001b[38;5;241m=\u001b[39m kwargs\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mautocommit\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_intrans)\n\u001b[0;32m-> 1295\u001b[0m f \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_open\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1296\u001b[0m \u001b[43m \u001b[49m\u001b[43mpath\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1297\u001b[0m \u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1298\u001b[0m \u001b[43m \u001b[49m\u001b[43mblock_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mblock_size\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1299\u001b[0m \u001b[43m \u001b[49m\u001b[43mautocommit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mac\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1300\u001b[0m \u001b[43m \u001b[49m\u001b[43mcache_options\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcache_options\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1301\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1302\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1303\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m compression \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 1304\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mfsspec\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcompression\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m compr\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/s3fs/core.py:375\u001b[0m, in \u001b[0;36mS3FileSystem._open\u001b[0;34m(self, path, mode, block_size, acl, version_id, fill_cache, cache_type, autocommit, requester_pays, **kwargs)\u001b[0m\n\u001b[1;32m 372\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cache_type \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 373\u001b[0m cache_type \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdefault_cache_type\n\u001b[0;32m--> 375\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mS3File\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpath\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mblock_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mblock_size\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43macl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43macl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 376\u001b[0m \u001b[43m \u001b[49m\u001b[43mversion_id\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mversion_id\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfill_cache\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfill_cache\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 377\u001b[0m \u001b[43m \u001b[49m\u001b[43ms3_additional_kwargs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkw\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcache_type\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcache_type\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 378\u001b[0m \u001b[43m \u001b[49m\u001b[43mautocommit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mautocommit\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrequester_pays\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequester_pays\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/s3fs/core.py:1096\u001b[0m, in \u001b[0;36mS3File.__init__\u001b[0;34m(self, s3, path, mode, block_size, acl, version_id, fill_cache, s3_additional_kwargs, autocommit, cache_type, requester_pays)\u001b[0m\n\u001b[1;32m 1094\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39ms3_additional_kwargs \u001b[38;5;241m=\u001b[39m s3_additional_kwargs \u001b[38;5;129;01mor\u001b[39;00m {}\n\u001b[1;32m 1095\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mreq_kw \u001b[38;5;241m=\u001b[39m {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mRequestPayer\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrequester\u001b[39m\u001b[38;5;124m'\u001b[39m} \u001b[38;5;28;01mif\u001b[39;00m requester_pays \u001b[38;5;28;01melse\u001b[39;00m {}\n\u001b[0;32m-> 1096\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43ms3\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpath\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mblock_size\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mautocommit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mautocommit\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1097\u001b[0m \u001b[43m \u001b[49m\u001b[43mcache_type\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcache_type\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1098\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39ms3 \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfs \u001b[38;5;66;03m# compatibility\u001b[39;00m\n\u001b[1;32m 1099\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwritable():\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/fsspec/spec.py:1651\u001b[0m, in \u001b[0;36mAbstractBufferedFile.__init__\u001b[0;34m(self, fs, path, mode, block_size, autocommit, cache_type, cache_options, size, **kwargs)\u001b[0m\n\u001b[1;32m 1649\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msize \u001b[38;5;241m=\u001b[39m size\n\u001b[1;32m 1650\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m-> 1651\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msize \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdetails\u001b[49m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msize\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 1652\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcache \u001b[38;5;241m=\u001b[39m caches[cache_type](\n\u001b[1;32m 1653\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mblocksize, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fetch_range, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msize, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mcache_options\n\u001b[1;32m 1654\u001b[0m )\n\u001b[1;32m 1655\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/fsspec/spec.py:1664\u001b[0m, in \u001b[0;36mAbstractBufferedFile.details\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1661\u001b[0m \u001b[38;5;129m@property\u001b[39m\n\u001b[1;32m 1662\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdetails\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 1663\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_details \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1664\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_details \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minfo\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpath\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1665\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_details\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/s3fs/core.py:548\u001b[0m, in \u001b[0;36mS3FileSystem.info\u001b[0;34m(self, path, version_id, refresh)\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msuper\u001b[39m(S3FileSystem, \u001b[38;5;28mself\u001b[39m)\u001b[38;5;241m.\u001b[39minfo(path)\n\u001b[1;32m 547\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 548\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ee\n\u001b[1;32m 549\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ParamValidationError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 550\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFailed to head path \u001b[39m\u001b[38;5;132;01m%r\u001b[39;00m\u001b[38;5;124m: \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m'\u001b[39m \u001b[38;5;241m%\u001b[39m (path, e))\n",
"\u001b[0;31mPermissionError\u001b[0m: Forbidden"
]
2024-02-06 11:16:42 +01:00
}
],
"source": [
2024-03-20 10:27:03 +01:00
"import pandas as pd\n",
"import numpy as np\n",
"import os\n",
"import io\n",
"import s3fs\n",
"import re\n",
"import warnings\n",
"\n",
"# Ignore warning\n",
"warnings.filterwarnings('ignore')\n",
"\n",
"exec(open('0_KPI_functions.py').read())\n",
"exec(open('utils_stat_desc.py').read())\n",
"\n",
"# Create filesystem object\n",
"S3_ENDPOINT_URL = \"https://\" + os.environ[\"AWS_S3_ENDPOINT\"]\n",
"fs = s3fs.S3FileSystem(client_kwargs={'endpoint_url': S3_ENDPOINT_URL})\n",
"\n",
"companies = {'musee' : ['1', '2', '3', '4'], # , '101'\n",
" 'sport': ['5', '6', '7', '8', '9'],\n",
" 'musique' : ['10', '11', '12', '13', '14']}\n",
2024-02-06 11:16:42 +01:00
"\n",
"\n",
2024-03-20 10:27:03 +01:00
"type_of_activity = input('Choisissez le type de compagnie : sport ? musique ? musee ?')\n",
"list_of_comp = companies[type_of_activity] \n",
"\n",
"# Load files\n",
"customer, campaigns_kpi, campaigns_brut, tickets, products = load_files(list_of_comp)\n",
"\n",
"# Identify anonymous customer for each company and remove them from our datasets\n",
"outlier_list = outlier_detection(tickets, list_of_comp)\n",
"\n",
"# Identify valid customer (customer who bought tickets after starting date or received mails after starting date)\n",
"customer_valid_list = valid_customer_detection(products, campaigns_brut)\n",
"\n",
"databases = [customer, campaigns_kpi, campaigns_brut, tickets, products]\n",
"\n",
"for dataset in databases:\n",
" dataset['customer_id'] = dataset['customer_id'].apply(lambda x: remove_elements(x, outlier_list))# remove outlier\n",
" dataset = dataset[dataset['customer_id'].isin(customer_valid_list)] # keep only valid customer\n",
" #print(f'shape of {dataset} : ', dataset.shape)\n",
"\n",
"# Identify customer who bought during the period of y\n",
"customer_target_period = identify_purchase_during_target_periode(products)\n",
"customer['has_purchased_target_period'] = np.where(customer['customer_id'].isin(customer_target_period), 1, 0)"
2024-02-06 11:16:42 +01:00
]
},
{
"cell_type": "code",
2024-03-20 10:27:03 +01:00
"execution_count": null,
"id": "e15380a0-76b8-4914-a927-303ab46a636e",
2024-02-06 11:16:42 +01:00
"metadata": {},
2024-03-20 10:27:03 +01:00
"outputs": [],
2024-02-06 11:16:42 +01:00
"source": [
2024-03-20 10:27:03 +01:00
"customer.head()"
2024-02-06 11:16:42 +01:00
]
},
{
"cell_type": "code",
2024-03-20 10:27:03 +01:00
"execution_count": null,
"id": "bf475e2b-fa82-40f0-bcbe-7ef40a13caae",
2024-02-06 11:16:42 +01:00
"metadata": {},
2024-03-20 10:27:03 +01:00
"outputs": [],
2024-02-06 11:16:42 +01:00
"source": [
2024-03-20 10:27:03 +01:00
"tickets.head()"
2024-02-06 11:16:42 +01:00
]
},
{
"cell_type": "code",
2024-03-20 10:27:03 +01:00
"execution_count": null,
"id": "171cf427-18bf-4c0b-9698-3cec5cd61073",
2024-02-06 11:16:42 +01:00
"metadata": {},
2024-03-20 10:27:03 +01:00
"outputs": [],
2024-02-06 11:16:42 +01:00
"source": [
2024-03-20 10:27:03 +01:00
"tickets.groupby('number_company')['achat_internet'].sum()"
2024-02-06 11:16:42 +01:00
]
},
{
"cell_type": "code",
2024-02-08 12:30:31 +01:00
"execution_count": null,
2024-03-20 10:27:03 +01:00
"id": "c430185e-7995-4287-8621-95c6410be9df",
2024-02-06 11:16:42 +01:00
"metadata": {},
2024-02-08 12:30:31 +01:00
"outputs": [],
2024-02-06 11:16:42 +01:00
"source": [
2024-03-20 10:27:03 +01:00
"tickets.columns"
2024-02-06 11:16:42 +01:00
]
},
{
"cell_type": "code",
2024-02-08 12:30:31 +01:00
"execution_count": null,
2024-03-20 10:27:03 +01:00
"id": "b299c7a4-aa07-4349-bebd-b4f24bda1c8f",
2024-02-06 11:16:42 +01:00
"metadata": {},
2024-02-08 12:30:31 +01:00
"outputs": [],
2024-02-06 11:16:42 +01:00
"source": [
2024-03-20 10:27:03 +01:00
"customer"
2024-02-06 11:16:42 +01:00
]
},
2024-02-08 12:30:31 +01:00
{
2024-03-20 10:27:03 +01:00
"cell_type": "code",
"execution_count": null,
"id": "f6630f7a-96f5-488d-9797-caacb6d6067a",
2024-02-08 12:30:31 +01:00
"metadata": {},
2024-03-20 10:27:03 +01:00
"outputs": [],
2024-02-08 12:30:31 +01:00
"source": [
2024-03-20 10:27:03 +01:00
"print(len(tickets['customer_id']))\n",
"print(len(tickets['customer_id'].unique()))"
2024-02-08 12:30:31 +01:00
]
},
2024-02-06 11:16:42 +01:00
{
"cell_type": "code",
2024-03-20 10:27:03 +01:00
"execution_count": null,
"id": "f4caa95a-7854-4a21-b291-28d779c4c4db",
2024-02-06 11:16:42 +01:00
"metadata": {},
"outputs": [],
"source": [
2024-03-20 10:27:03 +01:00
"has_purchased = customer.groupby('number_company').agg({\n",
" 'has_purchased_target_period' : 'sum',\n",
" 'customer_id' : 'nunique'})\n",
"has_purchased"
2024-02-06 11:16:42 +01:00
]
},
{
"cell_type": "code",
2024-03-20 10:27:03 +01:00
"execution_count": 35,
"id": "24fda291-764a-4a6f-9cdf-86da49b978e2",
2024-02-06 11:16:42 +01:00
"metadata": {},
"outputs": [
{
"data": {
2024-03-20 10:27:03 +01:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkQAAAHFCAYAAAAT5Oa6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABL30lEQVR4nO3deVxU9f4/8NewDYswCgoDCoimuIDLlWKxG+5LF62stCzUNM093DXzhqViVmbpz9QW96JuV01LUTSXEFBTqdzNDVQWQ5gBRLb5/P7oy7kOi8IwMAPn9Xw85qFzzmfOeZ85DOfF53zOGYUQQoCIiIhIxixMXQARERGRqTEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRCRbGzYsAEKhULv0axZM/To0QM//vijqct7qFGjRqFly5YGvXb16tXYsGGDUesBgMLCQowfPx7u7u6wtLREly5djL6OB12/fh0KhaJWtuVhKnv/DK2n9Ofw119/NUp9S5YswY4dO4yyrFIHDhxAQEAAHBwcoFAojL58c1dbnxkyb1amLoCorq1fvx7t2rWDEAJpaWlYtWoVBg0ahJ07d2LQoEGmLs/oVq9ejaZNm2LUqFFGXe5nn32GtWvXYuXKlejWrRsaNWpk1OWX5e7ujoSEBLRu3bpW11NWZe+fqeopa8mSJXjhhRfw7LPPGmV5QggMHToUbdu2xc6dO+Hg4ABfX1+jLLu+qK3PDJk3BiKSHT8/PwQEBEjPBwwYgCZNmuCbb75pkIGotpw5cwZ2dnaYPHlyra6npKQExcXFUCqVCAoKqtV1VYe51WMst2/fxt27d/Hcc8+hd+/eRllmfn4+bG1toVAojLK82nLv3j3Y29ubugwyEZ4yI9mztbWFjY0NrK2t9abfvXsXEydORPPmzWFjY4NWrVph/vz5KCgoAADcv38fXbt2xWOPPQaNRiO9Li0tDWq1Gj169EBJSUml6y09dRIbG4vXXnsNzs7OcHBwwKBBg3D16tVH1n3//n3MmzcPPj4+sLGxQfPmzTFp0iRkZ2dLbVq2bImzZ8/i8OHD0mnCR516q8pyFQoFvvjiC+Tn50vLfdgphh49esDPzw+//PILgoKCYGdnh+bNm2PBggV671Hpaahly5Zh0aJF8PHxgVKpxMGDBys9RXXhwgW8/PLLcHNzg1KphJeXF0aMGCHtJ+DvffLGG2+gRYsWsLGxgY+PDxYuXIji4uKHvhcPe/9qUk9Zqamp6NatG9q0aYPLly8DALRaLWbOnKm3HyIiIpCXl6e3H/Ly8rBx40apvh49egD4++Be+npbW1s4OzsjICAA33zzTaV1REZGokWLFgCAOXPmlPt5iYuLQ+/eveHo6Ah7e3uEhITgp59+0ltG6c/1vn37MHr0aDRr1gz29vaVbr9Op8OiRYvg6+sLOzs7NG7cGJ06dcInn3yiV5dCocDp06cxZMgQODk5QaVS4dVXX8WdO3fKLW/ZsmVo164dlEolXF1dMWLECNy8eVOvXenP5JEjRxASEgJ7e3uMHj3aoM8MNRCCSCbWr18vAIjExERRVFQkCgsLRUpKipg6daqwsLAQMTExUtv8/HzRqVMn4eDgID788EOxb98+sWDBAmFlZSWefvppqd2lS5eEo6OjGDJkiBBCiJKSEtGrVy/h6uoqbt++XaV6PD09xejRo8WePXvEunXrhKurq/D09BRZWVlS25EjRwpvb2/puU6nE/379xdWVlZiwYIFYt++feLDDz8UDg4OomvXruL+/ftCCCFOnTolWrVqJbp27SoSEhJEQkKCOHXqVKU1VXW5CQkJ4umnnxZ2dnbScjMyMipdbmhoqHBxcREeHh7i008/FXv37hVTp04VAMSkSZOkdteuXRMARPPmzUXPnj3F999/L/bt2yeuXbsmzVu/fr3UPikpSTRq1Ei0bNlSrFmzRhw4cEBs2bJFDB06VGi1WiGEEKmpqcLT01N4e3uLtWvXiv3794v33ntPKJVKMWrUqIfuo4e9f4bWU7rfT5w4IYQQ4o8//hCenp4iODhY3LlzRwghRF5enujSpYto2rSpWL58udi/f7/45JNPhEqlEr169RI6nU7aD3Z2duLpp5+W6jt79qwQQog33nhD2Nvbi+XLl4uDBw+KH3/8USxdulSsXLmy0u1NSUkR27ZtEwDElClT9Lb30KFDwtraWnTr1k18++23YseOHaJfv35CoVCI6OhoaRml29e8eXMxbtw4sWfPHvH999+L4uLiCtcZFRUlLC0txTvvvCMOHDggYmJixIoVK0RkZKTU5p133hEAhLe3t5g1a5bYu3evWL58ufRzWVhYKLUdN26cACAmT54sYmJixJo1a0SzZs2Ep6en9P4K8ffPpLOzs/D09BQrV64UBw8eFIcPH672Z4YaDgYiko3SX9RlH0qlUqxevVqv7Zo1awQA8d133+lNf//99wUAsW/fPmnat99+KwCIFStWiH//+9/CwsJCb/6j6nnuuef0ph89elQAEIsWLZKmlQ1EMTExAoBYtmyZ3mtLa1m3bp00rWPHjiI0NPSR9VR3uSNHjhQODg5VWm5oaKgAIH744Qe96WPHjhUWFhbixo0bQoj/hYzWrVvrHeQenPdgAOnVq5do3LjxQ8PYG2+8IRo1aiSto9SHH34oAEgBojKVvX+G1vNgIIqNjRVOTk7ihRdeEPn5+VKbqKgoYWFhIYWmUt9//70AIHbv3i1Nc3BwECNHjiy3Hj8/P/Hss88+dNsqUrpdH3zwgd70oKAg4erqKnJycqRpxcXFws/PT7Ro0UIKaaXbN2LEiCqtLywsTHTp0uWhbUoD0bRp0/Smb926VQAQW7ZsEUIIcf78eQFATJw4Ua/dsWPHBADx1ltvSdNKfyYPHDhQbn3V+cxQw8FTZiQ7mzZtwokTJ3DixAns2bMHI0eOxKRJk7Bq1Sqpzc8//wwHBwe88MILeq8tHWR54MABadrQoUMxYcIEzJo1C4sWLcJbb72Fvn37VrmeV155Re95SEgIvL29cfDgwUpf8/PPP+vVU+rFF1+Eg4ODXn3VUVvLBQBHR0cMHjxYb9rw4cOh0+lw5MgRvemDBw8udwqzrHv37uHw4cMYOnQomjVrVmm7H3/8ET179oSHhweKi4ulx8CBAwEAhw8fNnCLDKun1MaNG/H000/j9ddfx3fffQdbW1u9mv38/NClSxe9mvv37w+FQoFDhw49cvlPPPEE9uzZg7lz5+LQoUPIz883eNvy8vJw7NgxvPDCC3qD5y0tLREeHo6bN2/i4sWLeq95/vnnq7TsJ554Ar/99hsmTpyIvXv3QqvVVtq27Gdl6NChsLKykj4rpf+W/fl94okn0L59+3I/v02aNEGvXr2qVCc1fAxEJDvt27dHQEAAAgICMGDAAKxduxb9+vXD7NmzpXEymZmZUKvV5QaBurq6wsrKCpmZmXrTR48ejaKiIlhZWWHq1KnVqketVlc4rew6HpSZmQkrK6tyB16FQvHI1z5MbS0XANzc3MpNK932sst1d3d/5PKysrJQUlIijXmpTHp6Onbt2gVra2u9R8eOHQEAf/31V1U3wSj1lIqOjoadnR1ef/31cj9n6enp+P3338vV7OjoCCFElWr+9NNPMWfOHOzYsQM9e/aEs7Mznn32WWmMUnW3TQhR4X7x8PAAYNg+BIB58+bhww8/RGJiIgYOHAgXFxf07t27wtsSlP2sWFlZwcXFRVp36b+V1WlojSQPDEREADp16oT8/HxcunQJAODi4oL09HQIIfTaZWRkoLi4GE2bNpWm5eXlITw8HG3btpUOcNWRlpZW4TQXF5dKX+Pi4oLi4uJyA0rF/91K4MH6qqO2lgv8fZAvq3Tby25rVa5GcnZ2hqWlZbnBsmU1bdoU/fr1k3oFyz7GjBlTja2oeT2ltm7dinbt2iE0NBRJSUnlavb396+05gULFjxy+Q4ODli4cCEuXLiAtLQ0fPbZZ0hMTDToSsomTZrAwsICqamp5ebdvn1bqvlBVb2izMrKCtOnT8e
2024-02-06 11:16:42 +01:00
"text/plain": [
2024-03-20 10:27:03 +01:00
"<Figure size 640x480 with 1 Axes>"
2024-02-06 11:16:42 +01:00
]
},
"metadata": {},
"output_type": "display_data"
2024-03-20 10:27:03 +01:00
},
2024-02-06 11:16:42 +01:00
{
2024-03-20 10:27:03 +01:00
"ename": "ClientError",
"evalue": "An error occurred (InvalidAccessKeyId) when calling the PutObject operation: The Access Key Id you provided does not exist in our records.",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mClientError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[35], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m exec(\u001b[38;5;28mopen\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mutils_stat_desc.py\u001b[39m\u001b[38;5;124m'\u001b[39m)\u001b[38;5;241m.\u001b[39mread())\n\u001b[0;32m----> 2\u001b[0m \u001b[43mbox_plot_price_tickets\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtickets\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtype_of_activity\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m<string>:357\u001b[0m, in \u001b[0;36mbox_plot_price_tickets\u001b[0;34m(tickets, type_of_activity)\u001b[0m\n",
"File \u001b[0;32m<string>:62\u001b[0m, in \u001b[0;36msave_file_s3\u001b[0;34m(File_name, type_of_activity)\u001b[0m\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/fsspec/spec.py:1963\u001b[0m, in \u001b[0;36mAbstractBufferedFile.__exit__\u001b[0;34m(self, *args)\u001b[0m\n\u001b[1;32m 1962\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__exit__\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs):\n\u001b[0;32m-> 1963\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mclose\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/fsspec/spec.py:1930\u001b[0m, in \u001b[0;36mAbstractBufferedFile.close\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1928\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1929\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mforced:\n\u001b[0;32m-> 1930\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mflush\u001b[49m\u001b[43m(\u001b[49m\u001b[43mforce\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 1932\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfs \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 1933\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfs\u001b[38;5;241m.\u001b[39minvalidate_cache(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpath)\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/fsspec/spec.py:1801\u001b[0m, in \u001b[0;36mAbstractBufferedFile.flush\u001b[0;34m(self, force)\u001b[0m\n\u001b[1;32m 1798\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclosed \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 1799\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n\u001b[0;32m-> 1801\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_upload_chunk\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfinal\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mforce\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mFalse\u001b[39;00m:\n\u001b[1;32m 1802\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moffset \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuffer\u001b[38;5;241m.\u001b[39mseek(\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m2\u001b[39m)\n\u001b[1;32m 1803\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuffer \u001b[38;5;241m=\u001b[39m io\u001b[38;5;241m.\u001b[39mBytesIO()\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/s3fs/core.py:1252\u001b[0m, in \u001b[0;36mS3File._upload_chunk\u001b[0;34m(self, final)\u001b[0m\n\u001b[1;32m 1249\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparts\u001b[38;5;241m.\u001b[39mappend({\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mPartNumber\u001b[39m\u001b[38;5;124m'\u001b[39m: part, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mETag\u001b[39m\u001b[38;5;124m'\u001b[39m: out[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mETag\u001b[39m\u001b[38;5;124m'\u001b[39m]})\n\u001b[1;32m 1251\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mautocommit \u001b[38;5;129;01mand\u001b[39;00m final:\n\u001b[0;32m-> 1252\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcommit\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1253\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m final\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/s3fs/core.py:1267\u001b[0m, in \u001b[0;36mS3File.commit\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1265\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuffer\u001b[38;5;241m.\u001b[39mseek(\u001b[38;5;241m0\u001b[39m)\n\u001b[1;32m 1266\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuffer\u001b[38;5;241m.\u001b[39mread()\n\u001b[0;32m-> 1267\u001b[0m write_result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_s3\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1268\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43ms3\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mput_object\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1269\u001b[0m \u001b[43m \u001b[49m\u001b[43mKey\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mBucket\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbucket\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mBody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\n\u001b[1;32m 1270\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1271\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfs\u001b[38;5;241m.\u001b[39mversion_aware:\n\u001b[1;32m 1272\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mversion_id \u001b[38;5;241m=\u001b[39m write_result\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mVersionId\u001b[39m\u001b[38;5;124m'\u001b[39m)\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/s3fs/core.py:1130\u001b[0m, in \u001b[0;36mS3File._call_s3\u001b[0;34m(self, method, *kwarglist, **kwargs)\u001b[0m\n\u001b[1;32m 1129\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_call_s3\u001b[39m(\u001b[38;5;28mself\u001b[39m, method, \u001b[38;5;241m*\u001b[39mkwarglist, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m-> 1130\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_s3\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43ms3_additional_kwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwarglist\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1131\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/s3fs/core.py:200\u001b[0m, in \u001b[0;36mS3FileSystem._call_s3\u001b[0;34m(self, method, *akwarglist, **kwargs)\u001b[0m\n\u001b[1;32m 197\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCALL: \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m - \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m - \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m (method\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m, akwarglist, kw2))\n\u001b[1;32m 198\u001b[0m additional_kwargs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_s3_method_kwargs(method, \u001b[38;5;241m*\u001b[39makwarglist,\n\u001b[1;32m 199\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m--> 200\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mmethod\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43madditional_kwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/botocore/client.py:553\u001b[0m, in \u001b[0;36mClientCreator._create_api_method.<locals>._api_call\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 549\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\n\u001b[1;32m 550\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpy_operation_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m() only accepts keyword arguments.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 551\u001b[0m )\n\u001b[1;32m 552\u001b[0m \u001b[38;5;66;03m# The \"self\" in this scope is referring to the BaseClient.\u001b[39;00m\n\u001b[0;32m--> 553\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_api_call\u001b[49m\u001b[43m(\u001b[49m\u001b[43moperation_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m/opt/mamba/lib/python3.11/site-packages/botocore/client.py:1009\u001b[0m, in \u001b[0;36mBaseClient._make_api_call\u001b[0;34m(self, operation_name, api_params)\u001b[0m\n\u001b[1;32m 1005\u001b[0m error_code \u001b[38;5;241m=\u001b[39m error_info\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mQueryErrorCode\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;129;01mor\u001b[39;00m error_info\u001b[38;5;241m.\u001b[39mget(\n\u001b[1;32m 1006\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCode\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1007\u001b[0m )\n\u001b[1;32m 1008\u001b[0m error_class \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mexceptions\u001b[38;5;241m.\u001b[39mfrom_code(error_code)\n\u001b[0;32m-> 1009\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m error_class(parsed_response, operation_name)\n\u001b[1;32m 1010\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1011\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m parsed_response\n",
"\u001b[0;31mClientError\u001b[0m: An error occurred (InvalidAccessKeyId) when calling the PutObject operation: The Access Key Id you provided does not exist in our records."
2024-02-06 11:16:42 +01:00
]
},
{
2024-03-20 10:27:03 +01:00
"data": {
"text/plain": [
"<Figure size 640x480 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
2024-02-06 11:16:42 +01:00
}
],
"source": [
2024-03-20 10:27:03 +01:00
"exec(open('utils_stat_desc.py').read())\n",
"box_plot_price_tickets(tickets, type_of_activity)"
2024-02-06 11:16:42 +01:00
]
}
],
"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",
2024-03-20 10:27:03 +01:00
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}