BDC-team-1/Spectacle/Stat_desc.ipynb
2024-03-08 09:30:12 +00:00

6643 lines
717 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"id": "be628bfc-0bca-48b0-97c9-29063289127e",
"metadata": {},
"source": [
"# Statistiques descriptives : compagnies offrant des spectacles"
]
},
{
"cell_type": "markdown",
"id": "0bf5450b-f44d-430a-aed7-d875dc365048",
"metadata": {},
"source": [
"## Importations et chargement des données"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "aa915888-cede-4eb0-8a26-7df573d29a3e",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import os\n",
"import s3fs\n",
"import warnings\n",
"from datetime import date, timedelta, datetime\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import re"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "17949e81-c30b-4fdf-9872-d7dc2b22ba9e",
"metadata": {},
"outputs": [],
"source": [
"# Import KPI construction functions\n",
"#exec(open('0_KPI_functions.py').read())\n",
"exec(open('../0_KPI_functions.py').read())\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "9c1737a2-bad8-4266-8dec-452085d8cfe7",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['projet-bdc2324-team1/0_Input/Company_10/campaigns_information.csv',\n",
" 'projet-bdc2324-team1/0_Input/Company_10/customerplus_cleaned.csv',\n",
" 'projet-bdc2324-team1/0_Input/Company_10/products_purchased_reduced.csv',\n",
" 'projet-bdc2324-team1/0_Input/Company_10/target_information.csv']"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 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",
"BUCKET = \"projet-bdc2324-team1/0_Input/Company_10\"\n",
"fs.ls(BUCKET)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "a35dc2f6-2017-4b21-abd2-2c4c112c96b2",
"metadata": {},
"outputs": [],
"source": [
"# test avec company 10\n",
"\n",
"dic_base=['campaigns_information','customerplus_cleaned','products_purchased_reduced','target_information']\n",
"for nom_base in dic_base:\n",
" FILE_PATH_S3_fanta = 'projet-bdc2324-team1/0_Input/Company_10/' + nom_base + '.csv'\n",
" with fs.open(FILE_PATH_S3_fanta, mode=\"rb\") as file_in:\n",
" globals()[nom_base] = pd.read_csv(file_in, sep=\",\")"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "40b705eb-fd18-436b-b150-61611a3c6a84",
"metadata": {},
"outputs": [],
"source": [
"# fonction permettant d'extraire une table à partir du numéro de la compagnie (directory_path)\n",
"\n",
"def display_databases(directory_path, file_name, datetime_col = None):\n",
" \"\"\"\n",
" This function returns the file from s3 storage \n",
" \"\"\"\n",
" file_path = \"projet-bdc2324-team1\" + \"/0_Input/Company_\" + directory_path + \"/\" + file_name + \".csv\"\n",
" print(\"File path : \", file_path)\n",
" with fs.open(file_path, mode=\"rb\") as file_in:\n",
" df = pd.read_csv(file_in, sep=\",\", parse_dates = datetime_col, date_parser=custom_date_parser) \n",
" return df \n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "c56decc3-de19-4786-82a4-1386c72a6bfb",
"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>id</th>\n",
" <th>customer_id</th>\n",
" <th>target_name</th>\n",
" <th>target_type_is_import</th>\n",
" <th>target_type_name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1165098</td>\n",
" <td>618562</td>\n",
" <td>Newsletter mensuelle</td>\n",
" <td>False</td>\n",
" <td>manual_static_filter</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1165100</td>\n",
" <td>618559</td>\n",
" <td>Newsletter mensuelle</td>\n",
" <td>False</td>\n",
" <td>manual_static_filter</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1165101</td>\n",
" <td>618561</td>\n",
" <td>Newsletter mensuelle</td>\n",
" <td>False</td>\n",
" <td>manual_static_filter</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1165102</td>\n",
" <td>618560</td>\n",
" <td>Newsletter mensuelle</td>\n",
" <td>False</td>\n",
" <td>manual_static_filter</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1165103</td>\n",
" <td>618558</td>\n",
" <td>Newsletter mensuelle</td>\n",
" <td>False</td>\n",
" <td>manual_static_filter</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69253</th>\n",
" <td>1698158</td>\n",
" <td>18580</td>\n",
" <td>Newsletter mensuelle</td>\n",
" <td>False</td>\n",
" <td>manual_static_filter</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69254</th>\n",
" <td>1698159</td>\n",
" <td>18569</td>\n",
" <td>Newsletter mensuelle</td>\n",
" <td>False</td>\n",
" <td>manual_static_filter</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69255</th>\n",
" <td>1698160</td>\n",
" <td>2962</td>\n",
" <td>Newsletter mensuelle</td>\n",
" <td>False</td>\n",
" <td>manual_static_filter</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69256</th>\n",
" <td>1698161</td>\n",
" <td>3825</td>\n",
" <td>Newsletter mensuelle</td>\n",
" <td>False</td>\n",
" <td>manual_static_filter</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69257</th>\n",
" <td>1698162</td>\n",
" <td>5731</td>\n",
" <td>Newsletter mensuelle</td>\n",
" <td>False</td>\n",
" <td>manual_static_filter</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>69258 rows × 5 columns</p>\n",
"</div>"
],
"text/plain": [
" id customer_id target_name target_type_is_import \\\n",
"0 1165098 618562 Newsletter mensuelle False \n",
"1 1165100 618559 Newsletter mensuelle False \n",
"2 1165101 618561 Newsletter mensuelle False \n",
"3 1165102 618560 Newsletter mensuelle False \n",
"4 1165103 618558 Newsletter mensuelle False \n",
"... ... ... ... ... \n",
"69253 1698158 18580 Newsletter mensuelle False \n",
"69254 1698159 18569 Newsletter mensuelle False \n",
"69255 1698160 2962 Newsletter mensuelle False \n",
"69256 1698161 3825 Newsletter mensuelle False \n",
"69257 1698162 5731 Newsletter mensuelle False \n",
"\n",
" target_type_name \n",
"0 manual_static_filter \n",
"1 manual_static_filter \n",
"2 manual_static_filter \n",
"3 manual_static_filter \n",
"4 manual_static_filter \n",
"... ... \n",
"69253 manual_static_filter \n",
"69254 manual_static_filter \n",
"69255 manual_static_filter \n",
"69256 manual_static_filter \n",
"69257 manual_static_filter \n",
"\n",
"[69258 rows x 5 columns]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"target_information"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "c825d64b-356c-4b71-aa3c-90e0dd7ca092",
"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>ticket_id</th>\n",
" <th>customer_id</th>\n",
" <th>purchase_id</th>\n",
" <th>event_type_id</th>\n",
" <th>supplier_name</th>\n",
" <th>purchase_date</th>\n",
" <th>amount</th>\n",
" <th>is_full_price</th>\n",
" <th>name_event_types</th>\n",
" <th>name_facilities</th>\n",
" <th>name_categories</th>\n",
" <th>name_events</th>\n",
" <th>name_seasons</th>\n",
" <th>start_date_time</th>\n",
" <th>end_date_time</th>\n",
" <th>open</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1799177</td>\n",
" <td>36984</td>\n",
" <td>409613</td>\n",
" <td>2</td>\n",
" <td>guichet</td>\n",
" <td>2016-04-28 17:58:26+02:00</td>\n",
" <td>9.0</td>\n",
" <td>False</td>\n",
" <td>danse</td>\n",
" <td>le grand t</td>\n",
" <td>abo t gourmand jeune</td>\n",
" <td>aringa rossa</td>\n",
" <td>test 2016/2017</td>\n",
" <td>2016-09-27 00:00:00+02:00</td>\n",
" <td>1901-01-01 00:09:21+00:09</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1799178</td>\n",
" <td>36984</td>\n",
" <td>409613</td>\n",
" <td>3</td>\n",
" <td>guichet</td>\n",
" <td>2016-04-28 17:58:26+02:00</td>\n",
" <td>9.0</td>\n",
" <td>False</td>\n",
" <td>cirque</td>\n",
" <td>le grand t</td>\n",
" <td>abo t gourmand jeune</td>\n",
" <td>5èmes hurlants</td>\n",
" <td>test 2016/2017</td>\n",
" <td>2016-11-18 00:00:00+01:00</td>\n",
" <td>1901-01-01 00:09:21+00:09</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1799179</td>\n",
" <td>36984</td>\n",
" <td>409613</td>\n",
" <td>1</td>\n",
" <td>guichet</td>\n",
" <td>2016-04-28 17:58:26+02:00</td>\n",
" <td>9.0</td>\n",
" <td>False</td>\n",
" <td>théâtre</td>\n",
" <td>le grand t</td>\n",
" <td>abo t gourmand jeune</td>\n",
" <td>dom juan</td>\n",
" <td>test 2016/2017</td>\n",
" <td>2016-12-07 00:00:00+01:00</td>\n",
" <td>1901-01-01 00:09:21+00:09</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1799180</td>\n",
" <td>36984</td>\n",
" <td>409613</td>\n",
" <td>1</td>\n",
" <td>guichet</td>\n",
" <td>2016-04-28 17:58:26+02:00</td>\n",
" <td>9.0</td>\n",
" <td>False</td>\n",
" <td>théâtre</td>\n",
" <td>le grand t</td>\n",
" <td>abo t gourmand jeune</td>\n",
" <td>vanishing point</td>\n",
" <td>test 2016/2017</td>\n",
" <td>2017-01-04 00:00:00+01:00</td>\n",
" <td>1901-01-01 00:09:21+00:09</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1799181</td>\n",
" <td>36984</td>\n",
" <td>409613</td>\n",
" <td>3</td>\n",
" <td>guichet</td>\n",
" <td>2016-04-28 17:58:26+02:00</td>\n",
" <td>12.0</td>\n",
" <td>False</td>\n",
" <td>cirque</td>\n",
" <td>la cite des congres</td>\n",
" <td>abo t gourmand jeune</td>\n",
" <td>a o lang pho</td>\n",
" <td>test 2016/2017</td>\n",
" <td>2017-01-03 00:00:00+01:00</td>\n",
" <td>1901-01-01 00:09:21+00:09</td>\n",
" <td>True</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",
" <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>492309</th>\n",
" <td>3252232</td>\n",
" <td>621716</td>\n",
" <td>710062</td>\n",
" <td>1</td>\n",
" <td>guichet</td>\n",
" <td>2023-03-09 12:08:45+01:00</td>\n",
" <td>7.0</td>\n",
" <td>False</td>\n",
" <td>théâtre</td>\n",
" <td>cap nort</td>\n",
" <td>tarif sco co 1 seance scolaire</td>\n",
" <td>sur moi, le temps</td>\n",
" <td>2022/2023</td>\n",
" <td>2023-03-13 14:00:00+01:00</td>\n",
" <td>1901-01-01 00:09:21+00:09</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>492310</th>\n",
" <td>3252233</td>\n",
" <td>621716</td>\n",
" <td>710062</td>\n",
" <td>1</td>\n",
" <td>guichet</td>\n",
" <td>2023-03-09 12:08:45+01:00</td>\n",
" <td>7.0</td>\n",
" <td>False</td>\n",
" <td>théâtre</td>\n",
" <td>cap nort</td>\n",
" <td>tarif sco co 1 seance scolaire</td>\n",
" <td>sur moi, le temps</td>\n",
" <td>2022/2023</td>\n",
" <td>2023-03-13 14:00:00+01:00</td>\n",
" <td>1901-01-01 00:09:21+00:09</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>492311</th>\n",
" <td>3252234</td>\n",
" <td>621716</td>\n",
" <td>710062</td>\n",
" <td>1</td>\n",
" <td>guichet</td>\n",
" <td>2023-03-09 12:08:45+01:00</td>\n",
" <td>7.0</td>\n",
" <td>False</td>\n",
" <td>théâtre</td>\n",
" <td>cap nort</td>\n",
" <td>tarif sco co 1 seance scolaire</td>\n",
" <td>sur moi, le temps</td>\n",
" <td>2022/2023</td>\n",
" <td>2023-03-13 14:00:00+01:00</td>\n",
" <td>1901-01-01 00:09:21+00:09</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>492312</th>\n",
" <td>3252235</td>\n",
" <td>621716</td>\n",
" <td>710062</td>\n",
" <td>1</td>\n",
" <td>guichet</td>\n",
" <td>2023-03-09 12:08:45+01:00</td>\n",
" <td>7.0</td>\n",
" <td>False</td>\n",
" <td>théâtre</td>\n",
" <td>cap nort</td>\n",
" <td>tarif sco co 1 seance scolaire</td>\n",
" <td>sur moi, le temps</td>\n",
" <td>2022/2023</td>\n",
" <td>2023-03-13 14:00:00+01:00</td>\n",
" <td>1901-01-01 00:09:21+00:09</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>492313</th>\n",
" <td>3252236</td>\n",
" <td>621716</td>\n",
" <td>710062</td>\n",
" <td>1</td>\n",
" <td>guichet</td>\n",
" <td>2023-03-09 12:08:45+01:00</td>\n",
" <td>7.0</td>\n",
" <td>False</td>\n",
" <td>théâtre</td>\n",
" <td>cap nort</td>\n",
" <td>tarif sco co 1 seance scolaire</td>\n",
" <td>sur moi, le temps</td>\n",
" <td>2022/2023</td>\n",
" <td>2023-03-13 14:00:00+01:00</td>\n",
" <td>1901-01-01 00:09:21+00:09</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>492314 rows × 16 columns</p>\n",
"</div>"
],
"text/plain": [
" ticket_id customer_id purchase_id event_type_id supplier_name \\\n",
"0 1799177 36984 409613 2 guichet \n",
"1 1799178 36984 409613 3 guichet \n",
"2 1799179 36984 409613 1 guichet \n",
"3 1799180 36984 409613 1 guichet \n",
"4 1799181 36984 409613 3 guichet \n",
"... ... ... ... ... ... \n",
"492309 3252232 621716 710062 1 guichet \n",
"492310 3252233 621716 710062 1 guichet \n",
"492311 3252234 621716 710062 1 guichet \n",
"492312 3252235 621716 710062 1 guichet \n",
"492313 3252236 621716 710062 1 guichet \n",
"\n",
" purchase_date amount is_full_price name_event_types \\\n",
"0 2016-04-28 17:58:26+02:00 9.0 False danse \n",
"1 2016-04-28 17:58:26+02:00 9.0 False cirque \n",
"2 2016-04-28 17:58:26+02:00 9.0 False théâtre \n",
"3 2016-04-28 17:58:26+02:00 9.0 False théâtre \n",
"4 2016-04-28 17:58:26+02:00 12.0 False cirque \n",
"... ... ... ... ... \n",
"492309 2023-03-09 12:08:45+01:00 7.0 False théâtre \n",
"492310 2023-03-09 12:08:45+01:00 7.0 False théâtre \n",
"492311 2023-03-09 12:08:45+01:00 7.0 False théâtre \n",
"492312 2023-03-09 12:08:45+01:00 7.0 False théâtre \n",
"492313 2023-03-09 12:08:45+01:00 7.0 False théâtre \n",
"\n",
" name_facilities name_categories \\\n",
"0 le grand t abo t gourmand jeune \n",
"1 le grand t abo t gourmand jeune \n",
"2 le grand t abo t gourmand jeune \n",
"3 le grand t abo t gourmand jeune \n",
"4 la cite des congres abo t gourmand jeune \n",
"... ... ... \n",
"492309 cap nort tarif sco co 1 seance scolaire \n",
"492310 cap nort tarif sco co 1 seance scolaire \n",
"492311 cap nort tarif sco co 1 seance scolaire \n",
"492312 cap nort tarif sco co 1 seance scolaire \n",
"492313 cap nort tarif sco co 1 seance scolaire \n",
"\n",
" name_events name_seasons start_date_time \\\n",
"0 aringa rossa test 2016/2017 2016-09-27 00:00:00+02:00 \n",
"1 5èmes hurlants test 2016/2017 2016-11-18 00:00:00+01:00 \n",
"2 dom juan test 2016/2017 2016-12-07 00:00:00+01:00 \n",
"3 vanishing point test 2016/2017 2017-01-04 00:00:00+01:00 \n",
"4 a o lang pho test 2016/2017 2017-01-03 00:00:00+01:00 \n",
"... ... ... ... \n",
"492309 sur moi, le temps 2022/2023 2023-03-13 14:00:00+01:00 \n",
"492310 sur moi, le temps 2022/2023 2023-03-13 14:00:00+01:00 \n",
"492311 sur moi, le temps 2022/2023 2023-03-13 14:00:00+01:00 \n",
"492312 sur moi, le temps 2022/2023 2023-03-13 14:00:00+01:00 \n",
"492313 sur moi, le temps 2022/2023 2023-03-13 14:00:00+01:00 \n",
"\n",
" end_date_time open \n",
"0 1901-01-01 00:09:21+00:09 True \n",
"1 1901-01-01 00:09:21+00:09 True \n",
"2 1901-01-01 00:09:21+00:09 True \n",
"3 1901-01-01 00:09:21+00:09 True \n",
"4 1901-01-01 00:09:21+00:09 True \n",
"... ... ... \n",
"492309 1901-01-01 00:09:21+00:09 True \n",
"492310 1901-01-01 00:09:21+00:09 True \n",
"492311 1901-01-01 00:09:21+00:09 True \n",
"492312 1901-01-01 00:09:21+00:09 True \n",
"492313 1901-01-01 00:09:21+00:09 True \n",
"\n",
"[492314 rows x 16 columns]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"products_purchased_reduced"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "afd044b8-ac83-4a35-b959-700cae0b3b41",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"File path : projet-bdc2324-team1/0_Input/Company_10/customerplus_cleaned.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File path : projet-bdc2324-team1/0_Input/Company_10/campaigns_information.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File path : projet-bdc2324-team1/0_Input/Company_10/products_purchased_reduced.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File path : projet-bdc2324-team1/0_Input/Company_10/target_information.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n",
"<string>:27: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tables imported for tenant 10\n",
"File path : projet-bdc2324-team1/0_Input/Company_11/customerplus_cleaned.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File path : projet-bdc2324-team1/0_Input/Company_11/campaigns_information.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File path : projet-bdc2324-team1/0_Input/Company_11/products_purchased_reduced.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File path : projet-bdc2324-team1/0_Input/Company_11/target_information.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n",
"<string>:27: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tables imported for tenant 11\n",
"File path : projet-bdc2324-team1/0_Input/Company_12/customerplus_cleaned.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File path : projet-bdc2324-team1/0_Input/Company_12/campaigns_information.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File path : projet-bdc2324-team1/0_Input/Company_12/products_purchased_reduced.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n",
"<string>:13: DtypeWarning: Columns (4,8,10) have mixed types. Specify dtype option on import or set low_memory=False.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File path : projet-bdc2324-team1/0_Input/Company_12/target_information.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n",
"<string>:27: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tables imported for tenant 12\n",
"File path : projet-bdc2324-team1/0_Input/Company_13/customerplus_cleaned.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File path : projet-bdc2324-team1/0_Input/Company_13/campaigns_information.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File path : projet-bdc2324-team1/0_Input/Company_13/products_purchased_reduced.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File path : projet-bdc2324-team1/0_Input/Company_13/target_information.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n",
"<string>:27: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tables imported for tenant 13\n",
"File path : projet-bdc2324-team1/0_Input/Company_14/customerplus_cleaned.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File path : projet-bdc2324-team1/0_Input/Company_14/campaigns_information.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File path : projet-bdc2324-team1/0_Input/Company_14/products_purchased_reduced.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n",
"<string>:13: DtypeWarning: Columns (8,9) have mixed types. Specify dtype option on import or set low_memory=False.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File path : projet-bdc2324-team1/0_Input/Company_14/target_information.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:13: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n",
"<string>:27: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tables imported for tenant 14\n"
]
}
],
"source": [
"# création des bases contenant les KPI pour les 5 compagnies de spectacle\n",
"\n",
"# liste des compagnies de spectacle\n",
"nb_compagnie=['10','11','12','13','14']\n",
"\n",
"# début de la boucle permettant de générer des datasets agrégés pour les 5 compagnies de spectacle\n",
"for directory_path in nb_compagnie:\n",
" df_customerplus_clean_0 = display_databases(directory_path, file_name = \"customerplus_cleaned\")\n",
" df_campaigns_information = display_databases(directory_path, file_name = \"campaigns_information\", datetime_col = ['opened_at', 'sent_at', 'campaign_sent_at'])\n",
" df_products_purchased_reduced = display_databases(directory_path, file_name = \"products_purchased_reduced\", datetime_col = ['purchase_date'])\n",
" df_target_information = display_databases(directory_path, file_name = \"target_information\")\n",
" \n",
" df_campaigns_kpi = campaigns_kpi_function(campaigns_information = df_campaigns_information) \n",
" df_tickets_kpi = tickets_kpi_function(tickets_information = df_products_purchased_reduced)\n",
" df_customerplus_clean = customerplus_kpi_function(customerplus_clean = df_customerplus_clean_0)\n",
"\n",
" \n",
"# creation de la colonne Number compagnie, qui permettra d'agréger les résultats\n",
" df_tickets_kpi[\"number_compagny\"]=int(directory_path)\n",
" df_campaigns_kpi[\"number_compagny\"]=int(directory_path)\n",
" df_customerplus_clean[\"number_compagny\"]=int(directory_path)\n",
" df_target_information[\"number_compagny\"]=int(directory_path)\n",
"\n",
" if nb_compagnie.index(directory_path)>=1:\n",
" customerplus_clean_spectacle=pd.concat([customerplus_clean_spectacle,df_customerplus_clean],axis=0)\n",
" campaigns_information_spectacle=pd.concat([campaigns_information_spectacle,df_campaigns_kpi],axis=0)\n",
" products_purchased_reduced_spectacle=pd.concat([products_purchased_reduced_spectacle,df_tickets_kpi],axis=0)\n",
" target_information_spectacle=pd.concat([target_information_spectacle,df_target_information],axis=0)\n",
" else:\n",
" customerplus_clean_spectacle=df_customerplus_clean\n",
" campaigns_information_spectacle=df_campaigns_kpi\n",
" products_purchased_reduced_spectacle=df_tickets_kpi\n",
" target_information_spectacle=df_target_information\n",
"\n",
" print(f\"Tables imported for tenant {directory_path}\")"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "b5a4a031-9533-4a50-8569-5f4246691a7a",
"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>customer_id</th>\n",
" <th>street_id</th>\n",
" <th>structure_id</th>\n",
" <th>mcp_contact_id</th>\n",
" <th>fidelity</th>\n",
" <th>tenant_id</th>\n",
" <th>is_partner</th>\n",
" <th>deleted_at</th>\n",
" <th>gender</th>\n",
" <th>is_email_true</th>\n",
" <th>...</th>\n",
" <th>purchase_count</th>\n",
" <th>first_buying_date</th>\n",
" <th>country</th>\n",
" <th>gender_label</th>\n",
" <th>gender_female</th>\n",
" <th>gender_male</th>\n",
" <th>gender_other</th>\n",
" <th>country_fr</th>\n",
" <th>has_tags</th>\n",
" <th>number_compagny</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>2</td>\n",
" <td>139</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>False</td>\n",
" <td>...</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18031</th>\n",
" <td>2</td>\n",
" <td>319517</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>1556</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>2</td>\n",
" <td>2020-01-01 14:06:52+00:00</td>\n",
" <td>fr</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>291642</th>\n",
" <td>2</td>\n",
" <td>757541</td>\n",
" <td>303.0</td>\n",
" <td>5.0</td>\n",
" <td>1</td>\n",
" <td>862</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>3</td>\n",
" <td>2016-09-08 14:50:00+00:00</td>\n",
" <td>fr</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>1</td>\n",
" <td>14</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>3 rows × 29 columns</p>\n",
"</div>"
],
"text/plain": [
" customer_id street_id structure_id mcp_contact_id fidelity \\\n",
"17 2 139 NaN NaN 0 \n",
"18031 2 319517 NaN NaN 0 \n",
"291642 2 757541 303.0 5.0 1 \n",
"\n",
" tenant_id is_partner deleted_at gender is_email_true ... \\\n",
"17 875 False NaN 2 False ... \n",
"18031 1556 False NaN 0 True ... \n",
"291642 862 False NaN 1 True ... \n",
"\n",
" purchase_count first_buying_date country gender_label \\\n",
"17 3 NaN NaN other \n",
"18031 2 2020-01-01 14:06:52+00:00 fr female \n",
"291642 3 2016-09-08 14:50:00+00:00 fr male \n",
"\n",
" gender_female gender_male gender_other country_fr has_tags \\\n",
"17 0 0 1 NaN 0 \n",
"18031 1 0 0 1.0 0 \n",
"291642 0 1 0 1.0 1 \n",
"\n",
" number_compagny \n",
"17 10 \n",
"18031 11 \n",
"291642 14 \n",
"\n",
"[3 rows x 29 columns]"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"customerplus_clean_spectacle[customerplus_clean_spectacle[\"customer_id\"]==2]"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "b9b6ec1f-36fb-4ee9-a1ed-09ff41878005",
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'customerplus_clean_spectacle' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[1], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mcustomerplus_clean_spectacle\u001b[49m[customerplus_clean_spectacle[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcustomer_id\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m==\u001b[39m\u001b[38;5;241m1\u001b[39m]\n",
"\u001b[0;31mNameError\u001b[0m: name 'customerplus_clean_spectacle' is not defined"
]
}
],
"source": [
"customerplus_clean_spectacle[customerplus_clean_spectacle[\"customer_id\"]==1]"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "a12c1b7d-6f6f-483e-b215-6336d7a51057",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['customer_id', 'street_id', 'structure_id', 'mcp_contact_id',\n",
" 'fidelity', 'tenant_id', 'is_partner', 'deleted_at', 'gender',\n",
" 'is_email_true', 'opt_in', 'last_buying_date', 'max_price',\n",
" 'ticket_sum', 'average_price', 'average_purchase_delay',\n",
" 'average_price_basket', 'average_ticket_basket', 'total_price',\n",
" 'purchase_count', 'first_buying_date', 'country', 'gender_label',\n",
" 'gender_female', 'gender_male', 'gender_other', 'country_fr',\n",
" 'has_tags', 'number_compagny'],\n",
" dtype='object')"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"customerplus_clean_spectacle.columns"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6f263e9c-0adf-4f25-8939-7416f3013c04",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 38,
"id": "05b9a396-dcd7-4d3d-8b39-5ca48beba4b0",
"metadata": {},
"outputs": [],
"source": [
"#customerplus_clean_spectacle.isna().sum()\n",
"#campaigns_information_spectacle.isna().sum()\n",
"#products_purchased_reduced_spectacle.isna().sum()\n",
"#target_information_spectacle.isna().sum()"
]
},
{
"cell_type": "markdown",
"id": "81e15508-32ca-46f1-a03d-1febddbbf5b4",
"metadata": {},
"source": [
"### Ajout : importation de la table train_set pour faire les stats desc dessus"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "3a1fdd6b-ac43-4e90-9a31-4f522bcc44bb",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_444/3450421856.py:9: DtypeWarning: Columns (38) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" train_set_spectacle = pd.read_csv(file_in, sep=\",\")\n"
]
}
],
"source": [
"# importation de la table train_set pour les compagnies de spectacle (ou musique)\n",
"\n",
"S3_ENDPOINT_URL = \"https://\" + os.environ[\"AWS_S3_ENDPOINT\"]\n",
"fs = s3fs.S3FileSystem(client_kwargs={'endpoint_url': S3_ENDPOINT_URL})\n",
"\n",
"path_train_set_spectacle = \"projet-bdc2324-team1/Generalization/musique/Train_set.csv\"\n",
"\n",
"with fs.open(path_train_set_spectacle, mode=\"rb\") as file_in:\n",
" train_set_spectacle = pd.read_csv(file_in, sep=\",\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "3a4c1ff4-2861-4e86-99df-26eea0370dc3",
"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>customer_id</th>\n",
" <th>nb_tickets</th>\n",
" <th>nb_purchases</th>\n",
" <th>total_amount</th>\n",
" <th>nb_suppliers</th>\n",
" <th>vente_internet_max</th>\n",
" <th>purchase_date_min</th>\n",
" <th>purchase_date_max</th>\n",
" <th>time_between_purchase</th>\n",
" <th>nb_tickets_internet</th>\n",
" <th>...</th>\n",
" <th>country</th>\n",
" <th>gender_label</th>\n",
" <th>gender_female</th>\n",
" <th>gender_male</th>\n",
" <th>gender_other</th>\n",
" <th>country_fr</th>\n",
" <th>nb_campaigns</th>\n",
" <th>nb_campaigns_opened</th>\n",
" <th>time_to_open</th>\n",
" <th>y_has_purchased</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10_299341</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>fr</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>12.0</td>\n",
" <td>3.0</td>\n",
" <td>0 days 05:47:26.333333333</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10_63788</td>\n",
" <td>3.0</td>\n",
" <td>2.0</td>\n",
" <td>62.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>393.205891</td>\n",
" <td>281.017639</td>\n",
" <td>112.188252</td>\n",
" <td>3.0</td>\n",
" <td>...</td>\n",
" <td>fr</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>3.0</td>\n",
" <td>1.0</td>\n",
" <td>0 days 05:13:51</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>10_759946</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>10_20653</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>fr</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>11.0</td>\n",
" <td>10.0</td>\n",
" <td>1 days 00:45:54</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>10_824705</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 40 columns</p>\n",
"</div>"
],
"text/plain": [
" customer_id nb_tickets nb_purchases total_amount nb_suppliers \\\n",
"0 10_299341 0.0 0.0 0.0 0.0 \n",
"1 10_63788 3.0 2.0 62.0 1.0 \n",
"2 10_759946 0.0 0.0 0.0 0.0 \n",
"3 10_20653 0.0 0.0 0.0 0.0 \n",
"4 10_824705 0.0 0.0 0.0 0.0 \n",
"\n",
" vente_internet_max purchase_date_min purchase_date_max \\\n",
"0 0.0 NaN NaN \n",
"1 1.0 393.205891 281.017639 \n",
"2 0.0 NaN NaN \n",
"3 0.0 NaN NaN \n",
"4 0.0 NaN NaN \n",
"\n",
" time_between_purchase nb_tickets_internet ... country gender_label \\\n",
"0 NaN 0.0 ... fr male \n",
"1 112.188252 3.0 ... fr female \n",
"2 NaN 0.0 ... NaN other \n",
"3 NaN 0.0 ... fr male \n",
"4 NaN 0.0 ... NaN other \n",
"\n",
" gender_female gender_male gender_other country_fr nb_campaigns \\\n",
"0 0 1 0 1.0 12.0 \n",
"1 1 0 0 1.0 3.0 \n",
"2 0 0 1 NaN 0.0 \n",
"3 0 1 0 1.0 11.0 \n",
"4 0 0 1 NaN 0.0 \n",
"\n",
" nb_campaigns_opened time_to_open y_has_purchased \n",
"0 3.0 0 days 05:47:26.333333333 NaN \n",
"1 1.0 0 days 05:13:51 1.0 \n",
"2 0.0 NaN NaN \n",
"3 10.0 1 days 00:45:54 NaN \n",
"4 0.0 NaN NaN \n",
"\n",
"[5 rows x 40 columns]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_set_spectacle.head()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "4632384d-2a06-445d-9fdb-b0c91b37ebaf",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0., 1.])"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# on remplace les valeurs has purchased = NaN par des 0\n",
"train_set_spectacle[\"y_has_purchased\"] = train_set_spectacle[\"y_has_purchased\"].fillna(0)\n",
"train_set_spectacle[\"y_has_purchased\"].unique()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "5fd56696-b479-46c7-8a59-fb8137db5fb5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([10, 11, 12, 13, 14])"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# on reproduit une colonne avec le numéro de la compagnie \n",
"\n",
"train_set_spectacle[\"number_company\"] = train_set_spectacle[\"customer_id\"].apply(lambda x : int(re.split(\"_\", str(x))[0]))\n",
"train_set_spectacle[\"number_company\"].unique()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "91c6e047-43d2-456c-81f1-087026eef4f0",
"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>customer_id</th>\n",
" <th>nb_tickets</th>\n",
" <th>nb_purchases</th>\n",
" <th>total_amount</th>\n",
" <th>nb_suppliers</th>\n",
" <th>vente_internet_max</th>\n",
" <th>purchase_date_min</th>\n",
" <th>purchase_date_max</th>\n",
" <th>time_between_purchase</th>\n",
" <th>nb_tickets_internet</th>\n",
" <th>...</th>\n",
" <th>gender_label</th>\n",
" <th>gender_female</th>\n",
" <th>gender_male</th>\n",
" <th>gender_other</th>\n",
" <th>country_fr</th>\n",
" <th>nb_campaigns</th>\n",
" <th>nb_campaigns_opened</th>\n",
" <th>time_to_open</th>\n",
" <th>y_has_purchased</th>\n",
" <th>number_company</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10_299341</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>12.0</td>\n",
" <td>3.0</td>\n",
" <td>0 days 05:47:26.333333333</td>\n",
" <td>0.0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10_63788</td>\n",
" <td>3.0</td>\n",
" <td>2.0</td>\n",
" <td>62.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>393.205891</td>\n",
" <td>281.017639</td>\n",
" <td>112.188252</td>\n",
" <td>3.0</td>\n",
" <td>...</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>3.0</td>\n",
" <td>1.0</td>\n",
" <td>0 days 05:13:51</td>\n",
" <td>1.0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>10_759946</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>10_20653</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>11.0</td>\n",
" <td>10.0</td>\n",
" <td>1 days 00:45:54</td>\n",
" <td>0.0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>10_824705</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 41 columns</p>\n",
"</div>"
],
"text/plain": [
" customer_id nb_tickets nb_purchases total_amount nb_suppliers \\\n",
"0 10_299341 0.0 0.0 0.0 0.0 \n",
"1 10_63788 3.0 2.0 62.0 1.0 \n",
"2 10_759946 0.0 0.0 0.0 0.0 \n",
"3 10_20653 0.0 0.0 0.0 0.0 \n",
"4 10_824705 0.0 0.0 0.0 0.0 \n",
"\n",
" vente_internet_max purchase_date_min purchase_date_max \\\n",
"0 0.0 NaN NaN \n",
"1 1.0 393.205891 281.017639 \n",
"2 0.0 NaN NaN \n",
"3 0.0 NaN NaN \n",
"4 0.0 NaN NaN \n",
"\n",
" time_between_purchase nb_tickets_internet ... gender_label \\\n",
"0 NaN 0.0 ... male \n",
"1 112.188252 3.0 ... female \n",
"2 NaN 0.0 ... other \n",
"3 NaN 0.0 ... male \n",
"4 NaN 0.0 ... other \n",
"\n",
" gender_female gender_male gender_other country_fr nb_campaigns \\\n",
"0 0 1 0 1.0 12.0 \n",
"1 1 0 0 1.0 3.0 \n",
"2 0 0 1 NaN 0.0 \n",
"3 0 1 0 1.0 11.0 \n",
"4 0 0 1 NaN 0.0 \n",
"\n",
" nb_campaigns_opened time_to_open y_has_purchased \\\n",
"0 3.0 0 days 05:47:26.333333333 0.0 \n",
"1 1.0 0 days 05:13:51 1.0 \n",
"2 0.0 NaN 0.0 \n",
"3 10.0 1 days 00:45:54 0.0 \n",
"4 0.0 NaN 0.0 \n",
"\n",
" number_company \n",
"0 10 \n",
"1 10 \n",
"2 10 \n",
"3 10 \n",
"4 10 \n",
"\n",
"[5 rows x 41 columns]"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_set_spectacle.head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "21e562d4-035d-4112-9f94-527b7fd935cf",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "fff306c2-1d41-4ef6-867b-ba9a7cf4ee68",
"metadata": {},
"source": [
"## Statistiques descriptives"
]
},
{
"cell_type": "markdown",
"id": "0549bdc4-edd7-4511-916e-26e94b5a30f5",
"metadata": {},
"source": [
"### 0. Détection du client anonyme (outlier) - utile pour la section 3"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "5b460061-f8b5-4a6b-ba59-539446d8487f",
"metadata": {},
"outputs": [],
"source": [
"def outlier_detection(directory_path = \"1\", coupure = 1):\n",
" df_tickets = display_databases(directory_path, file_name = 'products_purchased_reduced' , datetime_col = ['purchase_date'])\n",
" df_tickets_kpi = tickets_kpi_function(df_tickets)\n",
"\n",
" if directory_path == \"101\" :\n",
" df_tickets_1 = display_databases(directory_path, file_name = 'products_purchased_reduced_1' , datetime_col = ['purchase_date'])\n",
" df_tickets_kpi_1 = tickets_kpi_function(df_tickets_1)\n",
"\n",
" df_tickets_kpi = pd.concat([df_tickets_kpi, df_tickets_kpi_1])\n",
" # Part du CA par customer\n",
" total_amount_share = df_tickets_kpi.groupby('customer_id')['total_amount'].sum().reset_index()\n",
" total_amount_share['total_amount_entreprise'] = total_amount_share['total_amount'].sum()\n",
" total_amount_share['share_total_amount'] = total_amount_share['total_amount']/total_amount_share['total_amount_entreprise']\n",
" \n",
" total_amount_share_index = total_amount_share.set_index('customer_id')\n",
" df_circulaire = total_amount_share_index['total_amount'].sort_values(axis = 0, ascending = False)\n",
" \n",
" top = df_circulaire[:coupure]\n",
" rest = df_circulaire[coupure:]\n",
" \n",
" # Calculez la somme du reste\n",
" rest_sum = rest.sum()\n",
" \n",
" # Créez une nouvelle série avec les cinq plus grandes parts et 'Autre'\n",
" new_series = pd.concat([top, pd.Series([rest_sum], index=['Autre'])])\n",
" \n",
" # Créez le graphique circulaire\n",
" plt.figure(figsize=(3, 3))\n",
" plt.pie(new_series, labels=new_series.index, autopct='%1.1f%%', startangle=140, pctdistance=0.5)\n",
" plt.axis('equal') # Assurez-vous que le graphique est un cercle\n",
" plt.title('Répartition des montants totaux')\n",
" plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "b6417f09-a6c7-4319-95b3-98c95ec5a3b7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"File path : projet-bdc2324-team1/0_Input/Company_10/products_purchased_reduced.csv\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_1173/2987234667.py:8: FutureWarning: The argument 'date_parser' is deprecated and will be removed in a future version. Please use 'date_format' instead, or read your data in as 'object' dtype and then call 'to_datetime'.\n",
" df = pd.read_csv(file_in, sep=\",\", parse_dates = datetime_col, date_parser=custom_date_parser)\n"
]
},
{
"data": {
"image/png": "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xs3Nrcjzr/78kpOTKSws5J133inyO+jbty9w+Xfw7LPP8vrrr7N582b69OlDUFAQt99+O9u2bSvlXVsFBgba3fbw8Ljm/bm5uXbvJSQkxG46nU5n97u/5Ho/M7i+5efq1zMajSVOe7W3336bZ555hsWLF9OtWzcCAwMZNGjQNYffXUtZl6/inDhxgk6dOnHq1CneeustNmzYwNatW3n33XcBx95XSfr160etWrXIzc1l8uTJGAyG657XjXDKo+SNGze2HSXv1q0bZrOZTz75hG+//ZahQ4cSHBwMWP8QBw8eXOw8YmNj7W4nJSUVmSYpKYn69esDsHv3bnbs2MH8+fMZPXq0bZr4+PgSc1bmOMlLf1yJiYlFjp6fPn3a9pmUx+sUFhaSnJxs9wd99ecXEBCAwWBg5MiRTJo0qdh51alTBwA3NzcmT57M5MmTSUtLY9WqVTz33HP06tWLhISEUkcX3Oh7OXfunF1pKqVISkri5ptvLrfXup7l50Z4e3sza9YsZs2axZkzZ2xrmwMGDGD//v1lnt+Vy9fVHF2+Fi9eTFZWFt9//71tzRoodpyxyWQiLy+vyP3nz58v9rUeeughMjIyaNq0KY899hidOnUiICCg1EzlzSnXMK/22muvERAQwPTp07FYLMTGxtKgQQN27NhB27Zti/3x9fW1m8fChQvtbv/xxx8cP36crl27ApfL79K/8pd8+OGHZcpalrWEskzbvXt3AL744gu7+7du3cq+ffu4/fbby5SzJN26dQOKfl5ffvml3W0vLy+6devG33//TYsWLYr9HRS3xubv78/QoUOZNGkSKSkpFToA/NJncvVn9t1335GVlXVdn1lJv7PyWn6Ke73Slo9atWoxZswYhg8fzoEDB8jOzr7m/KBo/vbt2+Pp6Vnkszp58iRr1qyx+6zK8hkopfj444+L5IiJiWHnzp129x08eLDIrjSATz75hC+++IK5c+fy448/kpaWVuzwwsrglGuYVwsICODZZ59lypQpfPnll4wYMYIPP/yQPn360KtXL8aMGUN4eDgpKSns27eP7du3880339jNY9u2bYwfP55hw4aRkJDAv/71L8LDw22b8I0aNaJevXpMnToVpRSBgYEsXbqUlStXlilr8+bNAXj11Vfp06cPBoOBFi1a2DYXr1SvXj08PT1ZuHAhjRs3xsfHh9q1a1O7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",
"text/plain": [
"<Figure size 300x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# outlier à enlever (dépend des stats desc !)\n",
"outlier_detection(directory_path=\"10\") # mettre 2 si on veut le 1er client non anonyme"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f08c082e-f76f-41f3-9530-3e6700eb74d9",
"metadata": {},
"outputs": [],
"source": [
"# boucle pour identifier les outliers de chaque compagnie (et le client principal non anonyme)\n",
"\n",
"# nb_compagnie=['10','11','12','13','14']\n",
"for company_number in nb_compagnie :\n",
" print(f\"outlier for tenant {company_number}\")\n",
" outlier_detection(directory_path=company_number, coupure = 2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "dbe1af6a-79e9-45c7-a810-c6df3bf647f7",
"metadata": {},
"outputs": [],
"source": [
"# print(products_purchased_reduced_spectacle.loc[products_purchased_reduced_spectacle[\"number_compagny\"]==10][\"total_amount\"].describe())\n",
"\n",
"products_purchased_reduced_spectacle.loc[(products_purchased_reduced_spectacle[\"number_compagny\"]==10) & \n",
"(products_purchased_reduced_spectacle[\"customer_id\"]==19521)]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "20e2b8a2-f31c-42a4-8ea5-7ad67ab66915",
"metadata": {},
"outputs": [],
"source": [
"# company 11 \n",
"# etrange, pas de vente sur internet, et un seul supplier. Plus de 9k achats\n",
"products_purchased_reduced_spectacle.loc[(products_purchased_reduced_spectacle[\"number_compagny\"]==11) & \n",
"(products_purchased_reduced_spectacle[\"customer_id\"]==36)]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5dbce57c-d091-4ce2-92f9-1201deb2462e",
"metadata": {},
"outputs": [],
"source": [
"# company 12\n",
"products_purchased_reduced_spectacle.loc[(products_purchased_reduced_spectacle[\"number_compagny\"]==12) & \n",
"(products_purchased_reduced_spectacle[\"customer_id\"]==1706757)]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0a243b57-19da-4e29-a53d-bb8d03e2ab77",
"metadata": {},
"outputs": [],
"source": [
"# company 13\n",
"products_purchased_reduced_spectacle.loc[(products_purchased_reduced_spectacle[\"number_compagny\"]==13) & \n",
"(products_purchased_reduced_spectacle[\"customer_id\"]==8422)]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3d9b01bc-9584-4882-bd06-7de8acb8a88f",
"metadata": {},
"outputs": [],
"source": [
"# company 14\n",
"# a-t-on vrmt un outlier ? A acheté quasi 3k tickets, pr 96 achats\n",
"products_purchased_reduced_spectacle.loc[(products_purchased_reduced_spectacle[\"number_compagny\"]==14) & \n",
"(products_purchased_reduced_spectacle[\"customer_id\"]==6354)]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "033c1e00-52bd-4651-b893-57bda531760e",
"metadata": {},
"outputs": [],
"source": [
"# verifs dans les tables customerplus (outlier incertain pr 11 et 14)\n",
"\n",
"customerplus_clean_spectacle.loc[(customerplus_clean_spectacle[\"customer_id\"]==36) &\n",
"(customerplus_clean_spectacle[\"number_compagny\"]==11)]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "28ac8cda-32fa-4fb7-a75b-e1cc24871c39",
"metadata": {},
"outputs": [],
"source": [
"customerplus_clean_spectacle.loc[(customerplus_clean_spectacle[\"customer_id\"]==6354) &\n",
"(customerplus_clean_spectacle[\"number_compagny\"]==14)]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3faea297-2cc5-4704-af85-77d95f600cc1",
"metadata": {},
"outputs": [],
"source": [
"customerplus_clean_spectacle.loc[(customerplus_clean_spectacle[\"customer_id\"]==8422) &\n",
"(customerplus_clean_spectacle[\"number_compagny\"]==13)]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b165ea79-347b-46fb-8217-635d9e888c65",
"metadata": {},
"outputs": [],
"source": [
"customerplus_clean_spectacle.loc[(customerplus_clean_spectacle[\"customer_id\"]==19521) &\n",
"(customerplus_clean_spectacle[\"number_compagny\"]==10)]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "282b0a96-5e78-48aa-9c2c-7d00d3907add",
"metadata": {},
"outputs": [],
"source": [
"customerplus_clean_spectacle.columns"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4918db6e-249b-412e-b646-9a6686989b79",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "e866edce-f4bc-4627-89d3-3ec7d9ef26e3",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "42f8171c-e80d-4faa-b278-21fcbe3b242c",
"metadata": {},
"source": [
"### 1. customerplus_clean"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "47f98721-53dd-4f8f-85ac-88043ee8d967",
"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>customer_id</th>\n",
" <th>street_id</th>\n",
" <th>structure_id</th>\n",
" <th>mcp_contact_id</th>\n",
" <th>fidelity</th>\n",
" <th>tenant_id</th>\n",
" <th>is_partner</th>\n",
" <th>deleted_at</th>\n",
" <th>gender</th>\n",
" <th>is_email_true</th>\n",
" <th>...</th>\n",
" <th>purchase_count</th>\n",
" <th>first_buying_date</th>\n",
" <th>country</th>\n",
" <th>gender_label</th>\n",
" <th>gender_female</th>\n",
" <th>gender_male</th>\n",
" <th>gender_other</th>\n",
" <th>country_fr</th>\n",
" <th>has_tags</th>\n",
" <th>number_compagny</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>821538</td>\n",
" <td>139</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>809126</td>\n",
" <td>1063</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>11005</td>\n",
" <td>1063</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>False</td>\n",
" <td>...</td>\n",
" <td>14</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>17663</td>\n",
" <td>12731</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>False</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>38100</td>\n",
" <td>12395</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>307036</td>\n",
" <td>139</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>2946</td>\n",
" <td>1063</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>False</td>\n",
" <td>...</td>\n",
" <td>8</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>18441</td>\n",
" <td>11139</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>False</td>\n",
" <td>...</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>9231</td>\n",
" <td>139</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>9870</td>\n",
" <td>139</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>10 rows × 29 columns</p>\n",
"</div>"
],
"text/plain": [
" customer_id street_id structure_id mcp_contact_id fidelity tenant_id \\\n",
"0 821538 139 NaN NaN 0 875 \n",
"1 809126 1063 NaN NaN 0 875 \n",
"2 11005 1063 NaN NaN 0 875 \n",
"3 17663 12731 NaN NaN 0 875 \n",
"4 38100 12395 NaN NaN 0 875 \n",
"5 307036 139 NaN NaN 0 875 \n",
"6 2946 1063 NaN NaN 0 875 \n",
"7 18441 11139 NaN NaN 0 875 \n",
"8 9231 139 NaN NaN 0 875 \n",
"9 9870 139 NaN NaN 0 875 \n",
"\n",
" is_partner deleted_at gender is_email_true ... purchase_count \\\n",
"0 False NaN 2 True ... 0 \n",
"1 False NaN 2 True ... 0 \n",
"2 False NaN 2 False ... 14 \n",
"3 False NaN 0 False ... 1 \n",
"4 False NaN 0 True ... 1 \n",
"5 False NaN 2 True ... 1 \n",
"6 False NaN 2 False ... 8 \n",
"7 False NaN 2 False ... 3 \n",
"8 False NaN 0 True ... 1 \n",
"9 False NaN 2 True ... 1 \n",
"\n",
" first_buying_date country gender_label gender_female gender_male \\\n",
"0 NaN NaN other 0 0 \n",
"1 NaN fr other 0 0 \n",
"2 NaN fr other 0 0 \n",
"3 NaN fr female 1 0 \n",
"4 NaN fr female 1 0 \n",
"5 NaN NaN other 0 0 \n",
"6 NaN fr other 0 0 \n",
"7 NaN fr other 0 0 \n",
"8 NaN NaN female 1 0 \n",
"9 NaN NaN other 0 0 \n",
"\n",
" gender_other country_fr has_tags number_compagny \n",
"0 1 NaN 0 10 \n",
"1 1 1.0 0 10 \n",
"2 1 1.0 0 10 \n",
"3 0 1.0 0 10 \n",
"4 0 1.0 0 10 \n",
"5 1 NaN 0 10 \n",
"6 1 1.0 0 10 \n",
"7 1 1.0 0 10 \n",
"8 0 NaN 0 10 \n",
"9 1 NaN 0 10 \n",
"\n",
"[10 rows x 29 columns]"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# visu de la table\n",
"customerplus_clean_spectacle.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "738e063b-f84e-4a00-b35d-6d1d657e3c09",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Nombre de lignes de la table : 1523688\n"
]
},
{
"data": {
"text/plain": [
"customer_id 0\n",
"street_id 0\n",
"structure_id 1460624\n",
"mcp_contact_id 729167\n",
"fidelity 0\n",
"tenant_id 0\n",
"is_partner 0\n",
"deleted_at 1523688\n",
"gender 0\n",
"is_email_true 0\n",
"opt_in 0\n",
"last_buying_date 762879\n",
"max_price 762879\n",
"ticket_sum 0\n",
"average_price 667328\n",
"average_purchase_delay 762915\n",
"average_price_basket 762915\n",
"average_ticket_basket 762915\n",
"total_price 95551\n",
"purchase_count 0\n",
"first_buying_date 762879\n",
"country 429486\n",
"gender_label 0\n",
"gender_female 0\n",
"gender_male 0\n",
"gender_other 0\n",
"country_fr 429486\n",
"has_tags 0\n",
"number_compagny 0\n",
"dtype: int64"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# nombre de NaN\n",
"print(\"Nombre de lignes de la table : \",customerplus_clean_spectacle.shape[0])\n",
"customerplus_clean_spectacle.isna().sum()"
]
},
{
"cell_type": "code",
"execution_count": 148,
"id": "296e51c5-30ae-4ade-ba3d-4ba4981a8758",
"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>number_compagny</th>\n",
" <th>customer_id</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10</td>\n",
" <td>45264</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>11</td>\n",
" <td>35313</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>12</td>\n",
" <td>216105</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>13</td>\n",
" <td>388731</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>14</td>\n",
" <td>101642</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" number_compagny customer_id\n",
"0 10 45264\n",
"1 11 35313\n",
"2 12 216105\n",
"3 13 388731\n",
"4 14 101642"
]
},
"execution_count": 148,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# nombre de clients de la compagnie (pas les clients visés par une campagne mais ceux ayant acheté)\n",
"# on rq le nbre de clients est très variable : de 35k à 389k\n",
"company_nb_clients = customerplus_clean_spectacle[customerplus_clean_spectacle[\"purchase_count\"]>0].groupby(\"number_compagny\")[\"customer_id\"].count().reset_index()\n",
"company_nb_clients"
]
},
{
"cell_type": "code",
"execution_count": 151,
"id": "5845aedf-78ca-4d3d-ad61-3561d4fc1886",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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pKamYs2aNfj666/h5+eHZs2aYdOmTbhw4QIOHjxoqJdERERE5YjBw864cePQrVs3+Pn5abXHx8cjMTERnTt3lttUKhV8fHwQHR0NAIiNjUV2drZWHycnJ3h4eMh9iIiI6M1m0BOUw8PDcfbsWcTExBRYl5iYCABwcHDQandwcMDNmzflPqamplozQvl98p9fGI1GA41GIy+npaWV+DUQERFR+WawmZ3bt2/jn//8JzZt2gQzM7Mi+714hrUQ4pVnXb+qz9y5c2FjYyM/eI8dIiIi5TJY2ImNjUVSUhJatGgBY2NjGBsbIyoqCsuWLYOxsbE8o/PiDE1SUpK8Tq1WIysrCykpKUX2Kcy0adOQmpoqP27fvq3nV0dERETlhcHCTqdOnXDhwgXExcXJDy8vL3zwwQeIi4tD7dq1oVarERkZKT8nKysLUVFR8Pb2BgC0aNECJiYmWn0SEhJw8eJFuU9hVCqVfE8d3luHiIhI2Qx2zo6VlRU8PDy02iwtLWFnZye3BwUFISwsDO7u7nB3d0dYWBgsLCwwaNAgAICNjQ1GjBiBkJAQ2NnZwdbWFpMmTULjxo0LnPBMREREb6ZyfQflyZMnIzMzE2PHjkVKSgpatWqFAwcOaN0WevHixTA2NkZgYCAyMzPRqVMnrFu3DkZGRgasnIiIiMoLSQghDF2EoaWlpcHGxgapqak8pEVERFRBFPfvt8Hvs0NERERUlhh2iIiISNEYdoiIiEjRGHaIiIhI0cr11VhERPRqrlN3G7qECuPGvG6GLoEMgDM7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAYNO6tWrYKnpyesra1hbW2NNm3aYO/evfL6YcOGQZIkrUfr1q21tqHRaDBhwgTY29vD0tISPXv2xJ07d173SyEiIqJyyqBhp2bNmpg3bx7OnDmDM2fOoGPHjujVqxcuXbok9+natSsSEhLkx549e7S2ERQUhIiICISHh+P48eNIT09H9+7dkZub+7pfDhEREZVDxobceY8ePbSW58yZg1WrVuHkyZN46623AAAqlQpqtbrQ56empmLNmjXYuHEj/Pz8AACbNm2Cs7MzDh48iC5dupTtCyAiIqJyr9ycs5Obm4vw8HBkZGSgTZs2cvvRo0dRvXp11KtXD6NGjUJSUpK8LjY2FtnZ2ejcubPc5uTkBA8PD0RHRxe5L41Gg7S0NK0HERERKZPBw86FCxdQuXJlqFQqfPzxx4iIiECjRo0AAAEBAfjxxx9x+PBhfP3114iJiUHHjh2h0WgAAImJiTA1NUXVqlW1tung4IDExMQi9zl37lzY2NjID2dn57J7gURERGRQBj2MBQD169dHXFwcHj16hG3btmHo0KGIiopCo0aNMGDAALmfh4cHvLy84OLigt27d6Nv375FblMIAUmSilw/bdo0BAcHy8tpaWkMPERERApl8LBjamqKunXrAgC8vLwQExODpUuX4ptvvinQ19HRES4uLrh27RoAQK1WIysrCykpKVqzO0lJSfD29i5ynyqVCiqVSs+vhIiIiMojgx/GepEQQj5M9aLk5GTcvn0bjo6OAIAWLVrAxMQEkZGRcp+EhARcvHjxpWGHiIiI3hwGndn57LPPEBAQAGdnZzx+/Bjh4eE4evQo9u3bh/T0dISGhqJfv35wdHTEjRs38Nlnn8He3h59+vQBANjY2GDEiBEICQmBnZ0dbG1tMWnSJDRu3Fi+OouIiIjebAYNO3///TcGDx6MhIQE2NjYwNPTE/v27YO/vz8yMzNx4cIFbNiwAY8ePYKjoyN8fX2xdetWWFlZydtYvHgxjI2NERgYiMzMTHTq1Anr1q2DkZGRAV8ZERERlReSEEIYughDS0tLg42NDVJTU2FtbW3ocoiIdOI6dbehS6gwbszrZugSSI+K+/e73J2zQ0RERKRPDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGilCjsajUZfdRARERGVCZ3Czv79+zFs2DDUqVMHJiYmsLCwgJWVFXx8fDBnzhzcu3evrOokIiIiKpFihZ0dO3agfv36GDp0KCpVqoRPP/0U27dvx/79+7FmzRr4+Pjg4MGDqF27Nj7++GPcv3+/rOsmIiIiKhbj4nQKCwvDV199hW7duqFSpYL5KDAwEABw9+5dLF26FBs2bEBISIh+KyUiIiIqgWLN7Jw+fRo9evQoNOg8r0aNGliwYEGxg86qVavg6ekJa2trWFtbo02bNti7d6+8XgiB0NBQODk5wdzcHB06dMClS5e0tqHRaDBhwgTY29vD0tISPXv2xJ07d4q1fyIiIlK+Ul+NlZubi7i4OKSkpOj83Jo1a2LevHk4c+YMzpw5g44dO6JXr15yoFmwYAEWLVqEFStWICYmBmq1Gv7+/nj8+LG8jaCgIERERCA8PBzHjx9Heno6unfvjtzc3NK+NCIiIlIAncNOUFAQ1qxZA+BZ0PHx8UHz5s3h7OyMo0eP6rStHj164N1330W9evVQr149zJkzB5UrV8bJkychhMCSJUswffp09O3bFx4eHli/fj2ePHmCzZs3AwBSU1OxZs0afP311/Dz80OzZs2wadMmXLhwAQcPHtT1pREREZEC6Rx2/vOf/6BJkyYAgJ07dyI+Ph5Xr15FUFAQpk+fXuJCcnNzER4ejoyMDLRp0wbx8fFITExE586d5T4qlQo+Pj6Ijo4GAMTGxiI7O1urj5OTEzw8POQ+hdFoNEhLS9N6EBERkTLpHHYePHgAtVoNANizZw/69++PevXqYcSIEbhw4YLOBVy4cAGVK1eGSqXCxx9/jIiICDRq1AiJiYkAAAcHB63+Dg4O8rrExESYmpqiatWqRfYpzNy5c2FjYyM/nJ2dda6biIiIKgadw46DgwMuX76M3Nxc7Nu3D35+fgCAJ0+ewMjISOcC6tevj7i4OJw8eRJjxozB0KFDcfnyZXm9JEla/YUQBdpe9Ko+06ZNQ2pqqvy4ffu2znUTERFRxVCsS8+f9+GHHyIwMBCOjo6QJAn+/v4AgFOnTqFBgwY6F2Bqaoq6desCALy8vBATE4OlS5diypQpAJ7N3jg6Osr9k5KS5NketVqNrKwspKSkaM3uJCUlwdvbu8h9qlQqqFQqnWslIiKiikfnmZ3Q0FCsWbMGH330EX777Tc5NBgZGWHq1KmlLkgIAY1GAzc3N6jVakRGRsrrsrKyEBUVJQeZFi1awMTERKtPQkICLl68+NKwQ0RERG8OnWZ28k8G/uabb9CvXz+tdUOHDtV555999hkCAgLg7OyMx48fIzw8HEePHsW+ffsgSRKCgoIQFhYGd3d3uLu7IywsDBYWFhg0aBAAwMbGBiNGjEBISAjs7Oxga2uLSZMmoXHjxvLhNSIiInqz6RR2TExMcPHixVeeM1Ncf//9NwYPHoyEhATY2NjA09MT+/btkw+NTZ48GZmZmRg7dixSUlLQqlUrHDhwAFZWVvI2Fi9eDGNjYwQGBiIzMxOdOnXCunXrSnT+EBERESmPJIQQujwhJCQEJiYmmDdvXlnV9NqlpaXBxsYGqampsLa2NnQ5REQ6cZ2629AlVBg35nUzdAmkR8X9+63zCcpZWVn4/vvvERkZCS8vL1haWmqtX7Roke7VEhEREZURncPOxYsX0bx5cwDAn3/+qbVOX4e3iIiIiPRF57Bz5MiRsqiDiIiIqEyU+ItAr1+/jv379yMzMxPAs0vGiYiIiMobncNOcnIyOnXqhHr16uHdd99FQkICAGDkyJEICQnRe4FEREREpaFz2Pnkk09gYmKCW7duwcLCQm4fMGAA9u3bp9fiiIiIiEpL53N2Dhw4gP3796NmzZpa7e7u7rh586beCiMiIiLSB51ndjIyMrRmdPI9ePCA3zdFRERE5Y7OYad9+/bYsGGDvCxJEvLy8rBw4UL4+vrqtTgiIiKi0tL5MNbChQvRoUMHnDlzBllZWZg8eTIuXbqEhw8f4rfffiuLGomIiIhKTOeZnUaNGuH8+fN4++234e/vj4yMDPTt2xfnzp1DnTp1yqJGIiIiohLTeWYHANRqNWbNmqXvWoiIiIj0rlhh5/z58/Dw8EClSpVw/vz5l/b19PTUS2FERERE+lCssNO0aVMkJiaievXqaNq0KSRJKvSOyZIkITc3V+9FEhEREZVUscJOfHw8qlWrJv+biIiIqKIoVthxcXEp9N9ERERE5V2xws4vv/xS7A327NmzxMUQERER6Vuxwk7v3r2LtTGes0NERETlTbHCTl5eXlnXQURERFQmdL6pIBEREVFFUqyZnWXLlhV7gxMnTixxMURERET6Vqyws3jx4mJtTJIkhh0iIiIqV4p9nx0iIiKiiojn7BAREZGiFWtmJzg4GP/6179gaWmJ4ODgl/ZdtGiRXgojIiIi0odihZ1z584hOztb/ndRJEnST1VEREREelKssHPkyJFC/01ERERU3vGcHSIiIlK0Ys3sPO/p06dYvnw5jhw5gqSkpAJ3Vz579qzeiiMiIiIqLZ3DzvDhwxEZGYn33nsPb7/9Ns/TISIionJN57Cze/du7NmzB23bti2LeoiIiIj0SudzdmrUqAErK6uyqIWIiIhI73QOO19//TWmTJmCmzdvlkU9RERERHql82EsLy8vPH36FLVr14aFhQVMTEy01j98+FBvxRERERGVls5h5/3338fdu3cRFhYGBweHUp2gPHfuXGzfvh1Xr16Fubk5vL29MX/+fNSvX1/uM2zYMKxfv17rea1atcLJkyflZY1Gg0mTJmHLli3IzMxEp06dsHLlStSsWbPEtREREZEy6Bx2oqOjceLECTRp0qTUO4+KisK4cePQsmVL5OTkYPr06ejcuTMuX74MS0tLuV/Xrl2xdu1aednU1FRrO0FBQdi5cyfCw8NhZ2eHkJAQdO/eHbGxsTAyMip1nURERFRx6Rx2GjRogMzMTL3sfN++fVrLa9euRfXq1REbG4v27dvL7SqVCmq1utBtpKamYs2aNdi4cSP8/PwAAJs2bYKzszMOHjyILl266KVWIiIiqph0PkF53rx5CAkJwdGjR5GcnIy0tDStR2mkpqYCAGxtbbXajx49iurVq6NevXoYNWoUkpKS5HWxsbHIzs5G586d5TYnJyd4eHggOjq60P1oNBq91k1ERETll84zO127dgUAdOrUSatdCAFJkpCbm1uiQoQQCA4OxjvvvAMPDw+5PSAgAP3794eLiwvi4+MxY8YMdOzYEbGxsVCpVEhMTISpqSmqVq2qtT0HBwckJiYWuq+5c+di1qxZJaqTiIiIKhadw05ZfRHo+PHjcf78eRw/flyrfcCAAfK/PTw84OXlBRcXF+zevRt9+/Ytcnv54asw06ZNQ3BwsLyclpYGZ2fnUr4CIiIiKo90Djs+Pj56L2LChAn45ZdfcOzYsVdeQeXo6AgXFxdcu3YNAKBWq5GVlYWUlBSt2Z2kpCR4e3sXug2VSgWVSqW/F0BERETlVrHO2bl165ZOG717926x+gkhMH78eGzfvh2HDx+Gm5vbK5+TnJyM27dvw9HREQDQokULmJiYIDIyUu6TkJCAixcvFhl2iIiI6M1RrLDTsmVLjBo1CqdPny6yT2pqKr777jt4eHhg+/btxdr5uHHjsGnTJmzevBlWVlZITExEYmKifLVXeno6Jk2ahBMnTuDGjRs4evQoevToAXt7e/Tp0wcAYGNjgxEjRiAkJASHDh3CuXPn8I9//AONGzeWr84iIiKiN1exDmNduXIFYWFh6Nq1K0xMTODl5QUnJyeYmZkhJSUFly9fxqVLl+Dl5YWFCxciICCgWDtftWoVAKBDhw5a7WvXrsWwYcNgZGSECxcuYMOGDXj06BEcHR3h6+uLrVu3an0/1+LFi2FsbIzAwED5poLr1q3jPXaIiIgIkhBCFLfz06dPsWfPHvz666+4ceMGMjMzYW9vj2bNmqFLly5aV1FVJGlpabCxsUFqaiqsra0NXQ4RkU5cp+42dAkVxo153QxdAulRcf9+63SCspmZGfr27fvSq6CIiIiIyhOdbypIREREVJEw7BAREZGiMewQERGRojHsEBERkaIx7BAREZGi6Rx21q9fj927/+8yx8mTJ6NKlSrw9vbGzZs39VocERERUWnpHHbCwsJgbm4OADhx4gRWrFiBBQsWwN7eHp988oneCyQiIiIqDZ2/CPT27duoW7cuAGDHjh1477338NFHH6Ft27YF7oRMREREZGg6z+xUrlwZycnJAIADBw7I3z9lZmYmf6cVERERUXmh88yOv78/Ro4ciWbNmuHPP/9Et27Pbr196dIluLq66rs+IiIiolLReWbn3//+N9q0aYP79+9j27ZtsLOzAwDExsbi/fff13uBRERERKWh88xOWloali1bhkqVtHNSaGgobt++rbfCiIiIiPRB55kdNzc3PHjwoED7w4cP4ebmppeiiIiIiPRF57AjhCi0PT09HWZmZqUuiIiIiEifin0YKzg4GAAgSRK++OILWFhYyOtyc3Nx6tQpNG3aVO8FEhEREZVGscPOuXPnADyb2blw4QJMTU3ldaampmjSpAkmTZqk/wqJiIiISqHYYefIkSMAgA8//BBLly6FtbV1mRVFREREpC86X421du3asqiDiIiIqEzoHHYyMjIwb948HDp0CElJScjLy9Na/7///U9vxRERERGVls5hZ+TIkYiKisLgwYPh6OgISZLK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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Création du barplot\n",
"plt.bar(company_nb_clients[\"number_compagny\"], company_nb_clients[\"customer_id\"]/1000)\n",
"\n",
"# Ajout de titres et d'étiquettes\n",
"plt.xlabel('Company')\n",
"plt.ylabel(\"Nombre de clients (milliers)\")\n",
"plt.title(\"Nombre de clients de chaque compagnie de spectacle\")\n",
"\n",
"# Affichage du barplot\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "884a33d0-c275-4ab4-ab1f-8b53e563fb95",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" number_compagny already_purchased customer_id\n",
"0 10 True 45264\n",
"1 11 True 35313\n",
"2 12 True 216105\n",
"3 13 True 388731\n",
"4 14 True 101642\n",
" number_compagny already_purchased customer_id\n",
"0 10 False 53530\n",
"1 11 False 35994\n",
"2 12 False 26620\n",
"3 13 False 379005\n",
"4 14 False 241484\n"
]
}
],
"source": [
"# nouveau barplot pr les clients : on regarde la taille totale de la base et on distingue clients ayant acheté / pas acheté\n",
"\n",
"# variable relative à l'achat\n",
"customerplus_clean_spectacle[\"already_purchased\"] = customerplus_clean_spectacle[\"purchase_count\"]>0\n",
"\n",
"nb_customers_purchasing_spectacle = customerplus_clean_spectacle[customerplus_clean_spectacle[\"already_purchased\"]].groupby([\"number_compagny\",\"already_purchased\"])[\"customer_id\"].count().reset_index()\n",
"nb_customers_no_purchase_spectacle = customerplus_clean_spectacle[~customerplus_clean_spectacle[\"already_purchased\"]].groupby([\"number_compagny\",\"already_purchased\"])[\"customer_id\"].count().reset_index()\n",
"\n",
"print(nb_customers_purchasing_spectacle)\n",
"print(nb_customers_no_purchase_spectacle)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "41c9fb5a-708b-4f85-9918-00337151f155",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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pKSiaAKVsKNHj8odAhEREX0g2GPyAVm+fDlatWoFBwcHtflvPpshv+dgaFpmxowZMDc3l15OTk7vHjgRERERlXpMTD4QcXFxOHjwIAYOHCjNU6lUAJCj5yMhIUHqRVGpVEhLS8OTJ0/yLJObCRMmIDExUXrdvXu3wBg5DgO973gMExERvTsmJh+IlStXomzZsmjTpo00z8XFBSqVChEREdK8tLQ0REZGomHDhgCAunXrQk9PT63M/fv3ceXKFalMbpRKJczMzNReecl+5kVBD+Uj0nbZx7Amz3EhIiIidbzH5AOQlZWFlStXom/fvtDV/b9drlAo4O/vj9DQULi6usLV1RWhoaEwMjJCz549AQDm5uYYMGAAAgICYG1tDSsrK4wbNw4eHh5o1qxZkcSno6MDCwsLJCQkAHj1/ImCLiUj0iZCCLx48QIJCQmwsLDQeBhtIiIi+j9MTD4ABw8exJ07d9C/f/8cywIDA5GSkoLhw4fjyZMnqF+/Pg4cOCA9wwQA5syZA11dXXTt2hUpKSlo2rQpVq1aVaQ/vrIvK8tOTojeRxYWFtKxTERERG+HD1ikEqHpA5oyMzORnp5egpERFQ09PT32lJR2fMCi5viAxVKDD1ikksQeE9IqOjo6/HFHRERE9AHize9ERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ7XbkDoJyEEIiMjMSxY8dw+/ZtvHjxAra2tqhduzaaNWsGJycnuUMkIiIiIipS7DHRIikpKQgNDYWTkxNatWqF3377DU+fPoWOjg5u3bqFoKAguLi4oHXr1jh16pTc4RIRERERFRn2mGgRNzc31K9fH0uWLEGLFi2gp6eXo0xcXBw2bNiAbt264bvvvsOgQYNkiJSIiIiIqGgphBBC7iDolStXrsDd3V2jsmlpaYiLi4Orq2sxR1U0kpKSYG5ujsTERJiZ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Nj82Nhbx8fFo3ry5NE+pVMLHxwdRUVEAgPPnzyM9PV2tjIODA9zd3aUyb0pNTUVSUpLai4iIiIgoL7zHREt17NixyOratGkToqOjcfbs2RzL4uPjAQB2dnZq8+3s7BAXFyeV0dfXV+tpyS6T/f43zZgxAyEhIUURPhERERF9AJiYaKmgoKAiqefu3bv46quvcODAARgYGORZ7s1Rv4QQBY4Ell+ZCRMmYOzYsdJ0UlISnJyc3iJyIiIiIvqQ8FIuLfb06VP89NNPmDBhAh4/fgwAiI6Oxj///KNxHefPn0dCQgLq1q0LXV1d6OrqIjIyEvPnz4eurq7UU/Jmz0dCQoK0TKVSIS0tDU+ePMmzzJuUSiXMzMzUXkREREREeWFioqUuXboENzc3hIWFYebMmXj69CkAYMeOHZgwYYLG9TRt2hSXL19GTEyM9PLy8kKvXr0QExODihUrQqVSISIiQnpPWloaIiMj0bBhQwBA3bp1oaenp1bm/v37uHLlilSGiIiIiKgweCmXlho7diz69euH8PBwmJqaSvNbtWqFnj17alyPqakp3N3d1eYZGxvD2tpamu/v74/Q0FC4urrC1dUVoaGhMDIyktZjbm6OAQMGICAgANbW1rCyssK4cePg4eGR42Z6IiIiIqJ3wcRES509exb/+9//csx3dHTM84bzdxUYGIiUlBQMHz5cesDigQMH1BKiOXPmQFdXF127dpUesLhq1Sro6OgUaSxERNrK+eUGuUN4b9yWOwAiei8xMdFSBgYGuQ6xe+PGDdja2haq7qNHj6pNKxQKBAcHIzg4ON94FixYgAULFhRq3UREREREueE9JlqqQ4cOmDJlCtLT0wG8Sh7u3LmDb775Bp07d5Y5OiIiIiKiosXEREvNnDkTDx48QNmyZZGSkgIfHx9UrlwZpqammD59utzhEREREREVKV7KpaXMzMxw/PhxHD58GNHR0cjKykKdOnV4szkRERERlUpMTLRckyZN0KRJE7nDICIiIiIqVkxMtMj8+fMxePBgGBgYYP78+fmWHT16dAlFRURERERU/JiYaJE5c+agV69eMDAwwJw5c/Isp1AomJgQERERUanCxESLxMbG5vp/IiIiIqLSjqNyERERERGR7NhjokXGjh2rcdnZs2cXYyRERERERCWLiYkWuXDhgkblFApFMUdCRERERFSymJhokSNHjsgdAhERERGRLHiPiZZKTEzE48ePc8x//PgxkpKSZIiIiIiIiKj4MDHRUt27d8emTZtyzN+yZQu6d+8uQ0RERERERMWHiYmWOn36NBo3bpxjvq+vL06fPi1DRERERERExYeJiZZKTU1FRkZGjvnp6elISUmRISIiIiIiouLDxERLffTRR1i6dGmO+UuWLEHdunVliIiIiIiIqPhwVC4tNX36dDRr1gwXL15E06ZNAQCHDh3C2bNnceDAAZmjIyIiIiIqWuwx0VLe3t44efIknJycsGXLFuzatQuVK1fGpUuX8Omnn8odHhERERFRkWKPiRarVasW1q9fL3cYRERERETFjokJERERaa9gc7kjeH8EJ8odAVGh8FIuIiIiIiKSHRMTIiIiIiKSHRMTIiIiIiKSHRMTLXfr1i3s379feqiiEELmiIiIiIiIih4TEy316NEjNGvWDG5ubmjdujXu378PABg4cCACAgJkjo6IiIiIqGgxMdFSY8aMga6uLu7cuQMjIyNpfrdu3bBv3z4ZIyMiIiIiKnocLlhLHThwAPv370e5cuXU5ru6uiIuLk6mqIiIiIiIigd7TLRUcnKyWk9JtocPH0KpVMoQERERERFR8WFioqUaNWqENWvWSNMKhQJZWVn44Ycf0LhxYxkjIyIiIiIqeryUS0v98MMP8PX1xblz55CWlobAwEBcvXoVjx8/xokTJ+QOj4iIiIioSLHHREtVr14dly5dQr169eDn54fk5GR06tQJFy5cQKVKleQOj4iIiIioSLHHRIupVCqEhITIHQYRERERUbFjYqJFLl26pHFZT0/PYoyEiIiIiKhkMTHRIrVq1YJCoYAQAgqFQpqf/bT31+dlZmaWeHxERERERMWF95hokdjYWPz999+IjY3Ftm3b4OLigkWLFiEmJgYxMTFYtGgRKlWqhG3btskdKhERERFRkWJiokUqVKggvUJDQzF//nwMGTIEnp6e8PT0xJAhQzB37lxMnTpV4zoXL14MT09PmJmZwczMDA0aNMDevXul5UIIBAcHw8HBAYaGhvD19cXVq1fV6khNTcWoUaNgY2MDY2NjtG/fHvfu3SuydhMRERERMTHRUpcvX4aLi0uO+S4uLrh27ZrG9ZQrVw7ff/89zp07h3PnzqFJkybo0KGDlHyEh4dj9uzZWLhwIc6ePQuVSgU/Pz88e/ZMqsPf3x87duzApk2bcPz4cTx//hxt27bl5WREREREVGSYmGipatWqYdq0aXj58qU0LzU1FdOmTUO1atU0rqddu3Zo3bo13Nzc4ObmhunTp8PExASnTp2CEAJz587FxIkT0alTJ7i7u2P16tV48eIFNmzYAABITEzE8uXLMWvWLDRr1gy1a9fGunXrcPnyZRw8eLDI201EREREHybe/K6llixZgnbt2sHJyQk1a9YEAFy8eBEKhQK7d+9+pzozMzOxdetWJCcno0GDBoiNjUV8fDyaN28ulVEqlfDx8UFUVBSGDBmC8+fPIz09Xa2Mg4MD3N3dERUVhRYtWuS6rtTUVKSmpkrTSUlJ7xQzEREREX0YmJhoqXr16iE2Nhbr1q3DH3/8ASEEunXrhp49e8LY2Pit6rp8+TIaNGiAly9fwsTEBDt27ED16tURFRUFALCzs1Mrb2dnh7i4OABAfHw89PX1YWlpmaNMfHx8nuucMWMGn8FCRERERBpjYqLFjIyMMHjw4ELXU6VKFcTExODp06fYtm0b+vbti8jISGn568MQA8gxXHFuCiozYcIEjB07VppOSkqCk5PTO7aAiIiIiEo73mPyAdDX10flypXh5eWFGTNmoGbNmpg3bx5UKhUA5Oj5SEhIkHpRVCoV0tLS8OTJkzzL5EapVEojgWW/iIiIiIjywsTkAySEQGpqKlxcXKBSqRARESEtS0tLQ2RkJBo2bAgAqFu3LvT09NTK3L9/H1euXJHKEBEREREVFi/lKuW+/fZbtGrVCk5OTnj27Bk2bdqEo0ePYt++fVAoFPD390doaChcXV3h6uqK0NBQGBkZoWfPngAAc3NzDBgwAAEBAbC2toaVlRXGjRsHDw8PNGvWTObWEREREVFpwcSklPvvv//Qu3dv3L9/H+bm5vD09MS+ffvg5+cHAAgMDERKSgqGDx+OJ0+eoH79+jhw4ABMTU2lOubMmQNdXV107doVKSkpaNq0KVatWgUdHR25mkVEREREpYxCCCHkDoJy9/TpU/z888/466+/8PXXX8PKygrR0dGws7ODo6Oj3OG9laSkJJibmyMxMZH3mxDRe8n5m9/kDuG9cfv7NkVXWbB50dVV2gUnFnmV/P6mksQeEy116dIlNGvWDObm5rh9+zYGDRoEKysr7NixA3FxcVizZo3cIRIRERERFRne/K6lxo4di379+uHmzZswMDCQ5rdq1Qq///67jJERERERERU9JiZa6uzZsxgyZEiO+Y6Ojvk+2JCIiIiI6H3ExERLGRgYICkpKcf8GzduwNbWVoaIiIiIiIiKDxMTLdWhQwdMmTIF6enpAF49nf3OnTv45ptv0LlzZ5mjIyIiIiIqWkxMtNTMmTPx4MEDlC1bFikpKfDx8UHlypVhamqK6dOnyx0eEREREVGR4qhcWsrMzAzHjx/H4cOHER0djaysLNSpU4cPNSQiIiKiUomJiRbKyMiAgYEBYmJi0KRJEzRp0kTukIiIiIiIihUv5dJCurq6qFChAjIzM+UOhYiIiIioRDAx0VLfffcdJkyYgMePH8sdChERERFRseOlXFpq/vz5uHXrFhwcHFChQgUYGxurLY+OjpYpMiIiIiKiosfEREt17NhR7hCIiIiIiEoMExMtFRQUJHcIREREREQlhomJljt37hyuX78OhUKBatWqoW7dunKHRERERERU5JiYaKl79+6hR48eOHHiBCwsLAAAT58+RcOGDbFx40Y4OTnJGyARERERURHiqFxaqn///khPT8f169fx+PFjPH78GNevX4cQAgMGDJA7PCIiIiKiIsUeEy117NgxREVFoUqVKtK8KlWqYMGCBfD29pYxMiIiIiKiosceEy1Vvnx5pKen55ifkZEBR0dHGSIiIiIiIio+TEy0VHh4OEaNGoVz585BCAHg1Y3wX331FWbOnClzdERERERERYuXcmkRS0tLKBQKaTo5ORn169eHru6r3ZSRkQFdXV3079+fzzkh+pAFm8sdwfsjOFHuCIiISENMTLTI3Llz5Q6BiIiIiEgWTEy0SN++feUOgYiIiIhIFkxMtFxCQgISEhKQlZWlNt/T01OmiIiIiIiIih4TEy11/vx59O3bV3p2yesUCgUyMzNlioyIiIiIqOgxMdFSX375Jdzc3LB8+XLY2dmp3RRPRERERFTaMDHRUrGxsdi+fTsqV64sdyhERERERMWOzzHRUk2bNsXFixflDoOIiIiIqESwx0RL/fTTT+jbty+uXLkCd3d36OnpqS1v3769TJERERERERU9JiZaKioqCsePH8fevXtzLOPN70RERERU2vBSLi01evRo9O7dG/fv30dWVpbai0kJEREREZU2TEy01KNHjzBmzBjY2dnJHQoRERERUbFjYqKl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sGHDBgwZMgSJiYlYvnw51q5di2bNmgEA1q1bBycnJxw8eBAtWrQosbYQERERUenFxOQDFhsbi/j4eDRv3lyap1Qq4ePjg6ioKAwZMgTnz59Henq6WhkHBwe4u7sjKioqz8QkNTUVqamp0nRSUlLxNYSIiEot55cb5A7hvXFb7gCIComJyQcsPj4eAGBnZ6c2387ODnFxcVIZfX19WFpa5iiT/f7czJgxAyEhIUUccT6CzUtuXe+74ES5IyAiIiLKgfeYEBQKhdq0ECLHvDcVVGbChAlITEyUXnfv3i2SWImIiIiodGJi8gFTqVQAkKPnIyEhQepFUalUSEtLw5MnT/IskxulUgkzMzO1FxERERFRXpiYfMBcXFygUqkQEREhzUtLS0NkZCQaNmwIAKhbty709PTUyty/fx9XrlyRyhARERERFRbvMSnlnj9/jlu3bknTsbGxiImJgZWVFcqXLw9/f3+EhobC1dUVrq6uCA0NhZGREXr27AkAMDc3x4ABAxAQEABra2tYWVlh3Lhx8PDwkEbpIiIiIiIqLCYmpdy5c+fQuHFjaXrs2LEAgL59+2LVqlUIDAxESkoKhg8fjidPnqB+/fo4cOAATE1NpffMmTMHurq66Nq1K1JSUtC0aVOsWrUKOjo6Jd4eIiIiIiqdmJiUcr6+vhBC5LlcoVAgODgYwcHBeZYxMDDAggULsGDBgmKIkIiIiIiI95gQEREREZEWYGJCRERERESyY2JCRERERESyY2JCRERERESyY2JCRERERESyY2JCRERERESy43DBRPTugs3ljuD9EZwodwRERERajT0mREREREQkOyYmREREREQkOyYmREREREQkOyYmREREREQkOyYmREREREQkOyYmREREREQkOyYmREREREQkOyYmREREREQkOyYmREREREQkOyYmREREREQkOyYmREREREQkO125AyAqCs4vN8gdwnvjttwBEBEREeWCPSZERERERCQ7JiZERERERCQ7JiZERERERCQ7JiZERERERCQ73vxORO+Mgw5o7rbcARAREWk59pgQEREREZHsmJgQEREREZHsmJgQEREREZHsmJgQEREREZHsmJgQEREREZHsmJgQEREREZHsmJgQEREREZHsmJgQEREREZHsmJgQEREREZHsmJgQEREREZHsmJjQW1m0aBFcXFxgYGCAunXr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EcmOiQkREREREcmOiQkREREREcmOiQkRUSkSHx+PUaNGoWLFilAqlXByckK7du1w6NAhuUMjIiLKl67cARARUdG4ffs2vL29YWFhgfDwcHh6eiI9PR379+/HiBEj8Mcff8gdIhERUZ7YY0JEVEoMHz4cCoUCZ86cQZcuXeDm5oYaNWpg7NixOHXqFADgzp076NChA0xMTGBmZoauXbviv//+k+oIDg5GrVq1sGLFCpQvXx4mJiYYNmwYMjMzER4eDpVKhbJly2L69Olq61YoFFi8eDFatWoFQ0NDuLi4YOvWrWplxo8fDzc3NxgZGaFixYqYNGkS0tPTc6x77dq1cHZ2hrm5Obp3745nz54BANasWQNra2ukpqaq1du5c2f06dOnSLclERGVPCYmRESlwOPHj7Fv3z6MGDECxsbGOZZbWFhACIGOHTvi8ePHiIyMREREBP766y9069ZNrexff/2FvXv3Yt++fdi4cSNWrFiBNm3a4N69e4iMjERYWBi+++47KdnJNmnSJHTu3BkXL17EF198gR49euD69evSclNTU6xatQrXrl3DvHnzsGzZMsyZMyfHunfu3Indu3dj9+7diIyMxPfffw8A+Pzzz5GZmYlff/1VKv/w4UPs3r0bX375ZaG3IRERyUwQEdF77/Tp0wKA2L59e55lDhw4IHR0dMSdO3ekeVevXhUAxJkzZ4QQQgQFBQkjIyORlJQklWnRooVwdnYWmZmZ0rwqVaqIGTNmSNMAxNChQ9XWV79+fTFs2LA84wkPDxd169aVpnNb99dffy3q168vTQ8bNky0atVKmp47d66oWLGiyMrKynM9RET0fuA9JkREpYAQAsCrS6rycv36dTg5OcHJyUmaV716dVhYWOD69ev46KOPAADOzs4wNTWVytjZ2UFHRwdlypRRm5eQkKBWf4MGDXJMx8TESNM///wz5s6di1u3buH58+fIyMiAmZmZ2nveXLe9vb3aegYNGoSPPvoI//zzDxwdHbFy5Ur069cv33YTEdH7gZdyERGVAq6urlAoFGqXTr1JCJHrD/g35+vp6aktVygUuc7LysoqMK7sek+dOoXu3bujVatW2L17Ny5cuICJEyciLS1NrXxB66lduzZq1qyJNWvWIDo6GpcvX0a/fv0KjIOIiLQfExMiolLAysoKLVq0wI8//ojk5OQcy58+fYrq1avjzp07uHv3rjT/2rVrSExMRLVq1Qodw5v3nJw6dQpVq1YFAJw4cQIVKlTAxIkT4eXlBVdXV8TFxb3TegYOHIiVK1dixYoVaNasmVoPEBERvb+YmBARlRKLFi1CZmYm6tWrh23btuHmzZu4fv065s+fjwYNGqBZs2bw9PREr169EB0djTNnzqBPnz7w8fGBl5dXode/detWrFixAn/++SeCgoJw5swZjBw5EgBQuXJl3LlzB5s2bcJff/2F+fPnY8eOHe+0nl69euGff/7BsmXL0L9//0LHTURE2oGJCRFRKeHi4oLo6Gg0btwYAQEBcHd3h5+fHw4dOoTFixdDoVBg586dsLS0RKNGjdCsWTNUrFgRmzdvLpL1h4SEYNOmTfD09MTq1auxfv16VK9eHQDQoUMHjBkzBiNHjkStWrUQFRWFSZMmvdN6zMzM0LlzZ5iYmKBjx45FEjsREclPIbLvmCQiInpHCoUCO3bsKLFEwc/PD9WqVcP8+fNLZH1ERFT8OCoXERG9Nx4/fowDBw7g8OHDWLhwodzhEBFREWJiQkRE7406dergyZMnCAsLQ5UqVeQOh4iIihAv5SIiIiIiItnx5nciIiIiIpIdExMiIiIiIpIdExMiIiIiIpIdExMiIiIiIpIdExMiIiIiIpIdExMiIiIiIpIdExMiIiIiIpIdExMiIiIiIpIdExMiIiIiIpLd/wPAKkBbBtKw7gAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Création du barplot\n",
"plt.bar(nb_customers_purchasing_spectacle[\"number_compagny\"], nb_customers_purchasing_spectacle[\"customer_id\"]/1000, label = \"has purchased\")\n",
"plt.bar(nb_customers_no_purchase_spectacle[\"number_compagny\"], nb_customers_no_purchase_spectacle[\"customer_id\"]/1000, \n",
" bottom = nb_customers_purchasing_spectacle[\"customer_id\"]/1000, label = \"has not purchased\")\n",
"\n",
"\n",
"# Ajout de titres et d'étiquettes\n",
"plt.xlabel('Company')\n",
"plt.ylabel(\"Nombre de clients (en milliers)\")\n",
"plt.title(\"Nombre de clients ayant acheté ou été ciblés par des mails pour les compagnies de spectacle\")\n",
"plt.legend()\n",
"\n",
"# Affichage du barplot\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 152,
"id": "fd11c547-7128-4ef6-ad7b-4b7c2a30cd9e",
"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>number_compagny</th>\n",
" <th>max_price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10</td>\n",
" <td>13823.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>11</td>\n",
" <td>108.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>12</td>\n",
" <td>5000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>13</td>\n",
" <td>3180.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>14</td>\n",
" <td>456.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" number_compagny max_price\n",
"0 10 13823.0\n",
"1 11 108.0\n",
"2 12 5000.0\n",
"3 13 3180.0\n",
"4 14 456.0"
]
},
"execution_count": 152,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# prix maximal payé par un client pour chaque compagnie - très variable : de 108 à 13823\n",
"\n",
"company_max_price = customerplus_clean_spectacle.groupby(\"number_compagny\")[\"max_price\"].max().reset_index()\n",
"company_max_price"
]
},
{
"cell_type": "code",
"execution_count": 153,
"id": "b8f8f162-4153-4cfe-bfaa-d981d414510d",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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eHIoreCKtdf5y4SJiIjo9SA7QKWkpJRGHURERETlhuwA5eLiUhp1EBEREZUbsgPUunXrip0+YMCAFy6GiIiIqDyQHaA+/vhjred5eXl48OABTE1NYWFhwQBFREREFZ7sG2k+fePMzMxMZGdn4+LFi3jrrbewadOm0qiRiIiIyKDIDlCFqVevHubOnaszOkVERERUEeklQAFPvmIlNTVVX4sjIiIiMliyz4Hatm2b1nMhBG7evImIiAi0bdtWb4URERERGSrZAapbt25azxUKBapVq4Z33nkHX3/9tb7qIiIiIjJYsgNUfn5+adRBREREVG7o7RwoIiIiotdFiUegZs2apfX8888/13sxREREROVBiQPU09+Bp1AoSqUYIiIiovKgxAFqzZo1pVkHERERUbnBc6CIiIiIZCrRCNQHH3xQ4gVGRUW9cDFERERE5UGJRqCUSqX0sLa2xr59+3DixAlpemJiIvbt2welUllqhRIREREZihKNQD19/tPkyZPRq1cvLF++HEZGRgAAjUaDUaNGwdraunSqJCIiIjIgss+BWr16NSZMmCCFJ+DJ9+CNHz8eq1ev1mtxRERERIZIdoB6/PgxkpOTddqTk5N5l3IiIiJ6Lcj+KpdBgwZh8ODBuHTpEtq0aQMASEhIwNy5czFo0CC9F0hERERkaGQHqIULF8LJyQnh4eG4efMmAKB69eqYNGkSwsLC9F4gERERkaGRHaAqVaqESZMmYdKkScjKygIAnjxORERErxXZAeppDE5ERET0OuKdyImIiIhkYoAiIiIikokBioiIiEgmBigiIiIimUp0EvmSJUtKvMBx48a9cDFERERE5UGJAlR4eHiJFqZQKBigiIiIqMIrUYBKSUkp7TqIiIiIyg2eA0VEREQk0wvdSPP69evYtm0brl69itzcXK1pixYt0kthRERERIZKdoDat28fAgMD4ebmhosXL8Ld3R2XL1+GEAItWrQojRqJiIiIDIrsQ3hTp05FWFgYzp49i8qVK+OXX37BtWvX4OPjgw8//LA0aiQiIiIyKLIDVHJyMkJCQgAAxsbGePjwIapUqYJZs2Zh3rx5ei+QiIiIyNDIDlCWlpbIyckBAKhUKvz999/StH///Vd/lREREREZKNnnQLVp0wa///47GjVqBD8/P4SFheHMmTOIiopCmzZtSqNGIiIiIoMiO0At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EwMUERERkUwMUM9YtmwZ3NzcULlyZbRs2RKHDh0q65KIiIjIwDBAPWXz5s0IDQ3Fp59+ilOnTqFdu3Z49913cfXq1bIujYiIiAwIb6T5lEWLFmHIkCH46KOPAACLFy/G7t278e2332LOnDllXB2VBd7gruQM6QZ3RESljSNQ/yc3NxeJiYno3LmzVnvnzp1x5MiRMqqKiIiIDBFHoP7Pv//+C41GA0dHR612R0dHpKWlFTpPTk4OcnJypOdqtRoAkJWVpff68nMe6H2ZFZU+9z/3e8lxv5cN7veywf1eNkrj9+vTyxVClHgeBqhnKBQKredCCJ22AnPmzMHMmTN12p2dnUulNioZ5eKyruD1xP1eNrjfywb3e9ko7f1+7949KJXKEvVlgPo/9vb2MDIy0hltSk9P1xmVKjB16lSMHz9eep6fn4+MjAzY2dkVGboqkqysLDg7O+PatWuwtrYu63JeG9zvZYP7vWxwv5eN122/CyFw7949qFSqEs/DAPV/TE1N0bJlS8TGxqJ79+5Se2xsLN5///1C5zEzM4OZmZlWW9WqVUuzTINkbW39WrzBDA33e9ngfi8b3O9l43Xa7yUdeSrAAPWU8ePHIzg4GK1atYKXlxdWrlyJq1evYsSIEWVdGhERERkQBqin9O7dG3fu3MGsWbNw8+ZNuLu7Y+fOnXBxcSnr0oiIiMiAMEA9Y9SoURg1alRZl1EumJmZYfr06TqHMal0cb+XDe73ssH9Xja4359PIeRcs0dEREREvJEmERERkVwMUEREREQyMUARERERycQARURERCQTAxQV67fffkNAQABUKhUUCgW2bt2qNV0IgRkzZkClUsHc3Bzt27fHuXPnyqbYCuR5+z0qKgpdunSBvb09FAoFkpKSyqTOiqa4/Z6Xl4fJkyfDw8MDlpaWUKlUGDBgAFJTU8uu4Ariea/3GTNmoEGDBrC0tISNjQ06deqEo0ePlk2xFcjz9vvThg8fDoVCgcWLF7+y+gwdAxQV6/79+2jatCkiIiIKnT5//nwsWrQIEREROH78OJycnODr64t79+694korluft9/v376Nt27aYO3fuK66sYituvz948AAnT57EtGnTcPLkSURFReHPP/9EYGBgGVRasTzv9f7GG28gIiICZ86cweHDh+Hq6orOnTvj9u3br7jSiuV5+73A1q1bcfToUVlf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Z8+JSkhIQIMGDQAAv//+O1xcXPDpp5+iVatWqFevHq5cufJC6/noo4+wZs0arF69Gp06ddIaUSMiw8AARUTlxrJly6DRaNC6dWv88ssv+Ouvv5CcnIwlS5bAy8sLnTp1QpMmTdCvXz+cPHkSx44dw4ABA+Dj44NWrVq99Pq3bNmC1atX488//8T06dNx7NgxjBkzBgBQt25dXL16FZGRkfj777+xZMkSREdHv9B6+vXrhxs3buC7777D4MGDX7puItI/BigiKjfc3Nxw8uRJdOjQAWFhYXB3d4evry/27duHb7/9FgqFAlu3boWNjQ3efvttdOrUCbVr18bmzZv1sv6ZM2ciMjISTZo0wQ8//ICNGzeiUaNGAID3338fn3zyCcaMGYNmzZrhyJEjmDZt2gutx9raGj169ECVKlXQrVs3vdRORPqlEAVnZhIRUZEUCgWio6NfWaDx9fVFw4YNsWTJkleyPiKSh1fhEREZkIyMDOzZswf79+9HREREWZdDREVggCIiMiAtWrRAZmYm5s2bh/r165d1OURUBB7CIyIiIpKJJ5ETERERycQARURERCQTAxQRERGRTAxQRERERDIxQBERERHJxABFREREJBMDFBEREZFMDFBEREREMjFAEREREcn0/wD+PdVJx8K92QAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Création du barplot\n",
"plt.bar(company_max_price[\"number_compagny\"], company_max_price[\"max_price\"])\n",
"\n",
"# Ajout de titres et d'étiquettes\n",
"plt.xlabel('Company')\n",
"plt.ylabel(\"Prix maximal d'un billet vendu\")\n",
"plt.title(\"Prix maximal de vente observé par compagnie de spectacle\")\n",
"\n",
"# Affichage du barplot\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 71,
"id": "bff23e5d-d7ed-4092-ae3c-5df503e54a6d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 762879.000000\n",
"mean 0.079068\n",
"std 3.969729\n",
"min 0.000000\n",
"25% 0.000000\n",
"50% 0.000000\n",
"75% 0.000000\n",
"max 3334.000000\n",
"Name: purchase_count, dtype: float64"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"customerplus_clean_spectacle[customerplus_clean_spectacle[\"first_buying_date\"].isna()][\"purchase_count\"].describe()"
]
},
{
"cell_type": "code",
"execution_count": 72,
"id": "89466dbd-14d2-4ede-9ca0-b9c32b764e25",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 7.608090e+05\n",
"mean 3.863940e+00\n",
"std 1.685825e+03\n",
"min 1.000000e+00\n",
"25% 1.000000e+00\n",
"50% 1.000000e+00\n",
"75% 2.000000e+00\n",
"max 1.469325e+06\n",
"Name: purchase_count, dtype: float64"
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"customerplus_clean_spectacle[~customerplus_clean_spectacle[\"first_buying_date\"].isna()][\"purchase_count\"].describe()"
]
},
{
"cell_type": "code",
"execution_count": 77,
"id": "5f9feae4-35f4-43b6-adeb-f75773900a2d",
"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>customer_id</th>\n",
" <th>street_id</th>\n",
" <th>structure_id</th>\n",
" <th>mcp_contact_id</th>\n",
" <th>fidelity</th>\n",
" <th>tenant_id</th>\n",
" <th>is_partner</th>\n",
" <th>deleted_at</th>\n",
" <th>gender</th>\n",
" <th>is_email_true</th>\n",
" <th>...</th>\n",
" <th>first_buying_date</th>\n",
" <th>country</th>\n",
" <th>gender_label</th>\n",
" <th>gender_female</th>\n",
" <th>gender_male</th>\n",
" <th>gender_other</th>\n",
" <th>country_fr</th>\n",
" <th>has_tags</th>\n",
" <th>number_compagny</th>\n",
" <th>already_purchased</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>821538</td>\n",
" <td>139</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>809126</td>\n",
" <td>1063</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>11005</td>\n",
" <td>1063</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>False</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>17663</td>\n",
" <td>12731</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>False</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>38100</td>\n",
" <td>12395</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>10</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",
" <td>...</td>\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",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>343121</th>\n",
" <td>4667645</td>\n",
" <td>122</td>\n",
" <td>NaN</td>\n",
" <td>1534181.0</td>\n",
" <td>0</td>\n",
" <td>862</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>343122</th>\n",
" <td>4667649</td>\n",
" <td>122</td>\n",
" <td>NaN</td>\n",
" <td>1534177.0</td>\n",
" <td>0</td>\n",
" <td>862</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>343123</th>\n",
" <td>4667660</td>\n",
" <td>122</td>\n",
" <td>NaN</td>\n",
" <td>1534165.0</td>\n",
" <td>0</td>\n",
" <td>862</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>343124</th>\n",
" <td>4667679</td>\n",
" <td>122</td>\n",
" <td>NaN</td>\n",
" <td>1534132.0</td>\n",
" <td>0</td>\n",
" <td>862</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>343125</th>\n",
" <td>4667686</td>\n",
" <td>122</td>\n",
" <td>NaN</td>\n",
" <td>1567949.0</td>\n",
" <td>0</td>\n",
" <td>862</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1523688 rows × 30 columns</p>\n",
"</div>"
],
"text/plain": [
" customer_id street_id structure_id mcp_contact_id fidelity \\\n",
"0 821538 139 NaN NaN 0 \n",
"1 809126 1063 NaN NaN 0 \n",
"2 11005 1063 NaN NaN 0 \n",
"3 17663 12731 NaN NaN 0 \n",
"4 38100 12395 NaN NaN 0 \n",
"... ... ... ... ... ... \n",
"343121 4667645 122 NaN 1534181.0 0 \n",
"343122 4667649 122 NaN 1534177.0 0 \n",
"343123 4667660 122 NaN 1534165.0 0 \n",
"343124 4667679 122 NaN 1534132.0 0 \n",
"343125 4667686 122 NaN 1567949.0 0 \n",
"\n",
" tenant_id is_partner deleted_at gender is_email_true ... \\\n",
"0 875 False NaN 2 True ... \n",
"1 875 False NaN 2 True ... \n",
"2 875 False NaN 2 False ... \n",
"3 875 False NaN 0 False ... \n",
"4 875 False NaN 0 True ... \n",
"... ... ... ... ... ... ... \n",
"343121 862 False NaN 2 True ... \n",
"343122 862 False NaN 2 True ... \n",
"343123 862 False NaN 0 True ... \n",
"343124 862 False NaN 2 True ... \n",
"343125 862 False NaN 0 True ... \n",
"\n",
" first_buying_date country gender_label gender_female gender_male \\\n",
"0 NaN NaN other 0 0 \n",
"1 NaN fr other 0 0 \n",
"2 NaN fr other 0 0 \n",
"3 NaN fr female 1 0 \n",
"4 NaN fr female 1 0 \n",
"... ... ... ... ... ... \n",
"343121 NaN NaN other 0 0 \n",
"343122 NaN NaN other 0 0 \n",
"343123 NaN NaN female 1 0 \n",
"343124 NaN NaN other 0 0 \n",
"343125 NaN NaN female 1 0 \n",
"\n",
" gender_other country_fr has_tags number_compagny already_purchased \n",
"0 1 NaN 0 10 False \n",
"1 1 1.0 0 10 False \n",
"2 1 1.0 0 10 False \n",
"3 0 1.0 0 10 False \n",
"4 0 1.0 0 10 False \n",
"... ... ... ... ... ... \n",
"343121 1 NaN 0 14 False \n",
"343122 1 NaN 0 14 False \n",
"343123 0 NaN 0 14 False \n",
"343124 1 NaN 0 14 False \n",
"343125 0 NaN 0 14 False \n",
"\n",
"[1523688 rows x 30 columns]"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"customerplus_clean_spectacle[\"already_purchased\"] = customerplus_clean_spectacle[\"first_buying_date\"].isna()==False\n",
"customerplus_clean_spectacle"
]
},
{
"cell_type": "code",
"execution_count": 83,
"id": "cec4f1eb-cec8-409d-8b2c-1e01f1bf81ff",
"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>customer_id</th>\n",
" <th>street_id</th>\n",
" <th>structure_id</th>\n",
" <th>mcp_contact_id</th>\n",
" <th>fidelity</th>\n",
" <th>tenant_id</th>\n",
" <th>is_partner</th>\n",
" <th>deleted_at</th>\n",
" <th>gender</th>\n",
" <th>is_email_true</th>\n",
" <th>...</th>\n",
" <th>first_buying_date</th>\n",
" <th>country</th>\n",
" <th>gender_label</th>\n",
" <th>gender_female</th>\n",
" <th>gender_male</th>\n",
" <th>gender_other</th>\n",
" <th>country_fr</th>\n",
" <th>has_tags</th>\n",
" <th>number_compagny</th>\n",
" <th>already_purchased</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>11005</td>\n",
" <td>1063</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>False</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>17663</td>\n",
" <td>12731</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>False</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>38100</td>\n",
" <td>12395</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>307036</td>\n",
" <td>139</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>2946</td>\n",
" <td>1063</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>False</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>10</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",
" <td>...</td>\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",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>338933</th>\n",
" <td>3625705</td>\n",
" <td>648752</td>\n",
" <td>NaN</td>\n",
" <td>1253864.0</td>\n",
" <td>0</td>\n",
" <td>862</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>338954</th>\n",
" <td>3627626</td>\n",
" <td>636890</td>\n",
" <td>NaN</td>\n",
" <td>1253887.0</td>\n",
" <td>0</td>\n",
" <td>862</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>338959</th>\n",
" <td>3628124</td>\n",
" <td>653042</td>\n",
" <td>NaN</td>\n",
" <td>1253899.0</td>\n",
" <td>0</td>\n",
" <td>862</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>338986</th>\n",
" <td>3631189</td>\n",
" <td>648423</td>\n",
" <td>NaN</td>\n",
" <td>1253928.0</td>\n",
" <td>0</td>\n",
" <td>862</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>339039</th>\n",
" <td>3635380</td>\n",
" <td>659417</td>\n",
" <td>NaN</td>\n",
" <td>1253975.0</td>\n",
" <td>0</td>\n",
" <td>862</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>26246 rows × 30 columns</p>\n",
"</div>"
],
"text/plain": [
" customer_id street_id structure_id mcp_contact_id fidelity \\\n",
"2 11005 1063 NaN NaN 0 \n",
"3 17663 12731 NaN NaN 0 \n",
"4 38100 12395 NaN NaN 0 \n",
"5 307036 139 NaN NaN 0 \n",
"6 2946 1063 NaN NaN 0 \n",
"... ... ... ... ... ... \n",
"338933 3625705 648752 NaN 1253864.0 0 \n",
"338954 3627626 636890 NaN 1253887.0 0 \n",
"338959 3628124 653042 NaN 1253899.0 0 \n",
"338986 3631189 648423 NaN 1253928.0 0 \n",
"339039 3635380 659417 NaN 1253975.0 0 \n",
"\n",
" tenant_id is_partner deleted_at gender is_email_true ... \\\n",
"2 875 False NaN 2 False ... \n",
"3 875 False NaN 0 False ... \n",
"4 875 False NaN 0 True ... \n",
"5 875 False NaN 2 True ... \n",
"6 875 False NaN 2 False ... \n",
"... ... ... ... ... ... ... \n",
"338933 862 False NaN 0 True ... \n",
"338954 862 False NaN 0 True ... \n",
"338959 862 False NaN 0 True ... \n",
"338986 862 False NaN 0 True ... \n",
"339039 862 False NaN 1 True ... \n",
"\n",
" first_buying_date country gender_label gender_female gender_male \\\n",
"2 NaN fr other 0 0 \n",
"3 NaN fr female 1 0 \n",
"4 NaN fr female 1 0 \n",
"5 NaN NaN other 0 0 \n",
"6 NaN fr other 0 0 \n",
"... ... ... ... ... ... \n",
"338933 NaN fr female 1 0 \n",
"338954 NaN fr female 1 0 \n",
"338959 NaN fr female 1 0 \n",
"338986 NaN fr female 1 0 \n",
"339039 NaN fr male 0 1 \n",
"\n",
" gender_other country_fr has_tags number_compagny already_purchased \n",
"2 1 1.0 0 10 False \n",
"3 0 1.0 0 10 False \n",
"4 0 1.0 0 10 False \n",
"5 1 NaN 0 10 False \n",
"6 1 1.0 0 10 False \n",
"... ... ... ... ... ... \n",
"338933 0 1.0 0 14 False \n",
"338954 0 1.0 0 14 False \n",
"338959 0 1.0 0 14 False \n",
"338986 0 1.0 0 14 False \n",
"339039 0 1.0 0 14 False \n",
"\n",
"[26246 rows x 30 columns]"
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# attention, on a des cas où le client a pas de première date d'achat alors qu'il compte plusieurs achats\n",
"# on peut donc avoir une date de première achat valant NaN non pas parce que l'individu n'a jamais acheté \n",
"# mais simplement car elle n'est pas renseignée\n",
"\n",
"customerplus_clean_spectacle[(customerplus_clean_spectacle[\"already_purchased\"]==False) &\n",
"(customerplus_clean_spectacle[\"purchase_count\"]>0)]"
]
},
{
"cell_type": "code",
"execution_count": 80,
"id": "b5904039-a967-47d5-ba13-1b805bcd76ca",
"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>customer_id</th>\n",
" <th>street_id</th>\n",
" <th>structure_id</th>\n",
" <th>mcp_contact_id</th>\n",
" <th>fidelity</th>\n",
" <th>tenant_id</th>\n",
" <th>is_partner</th>\n",
" <th>deleted_at</th>\n",
" <th>gender</th>\n",
" <th>is_email_true</th>\n",
" <th>...</th>\n",
" <th>first_buying_date</th>\n",
" <th>country</th>\n",
" <th>gender_label</th>\n",
" <th>gender_female</th>\n",
" <th>gender_male</th>\n",
" <th>gender_other</th>\n",
" <th>country_fr</th>\n",
" <th>has_tags</th>\n",
" <th>number_compagny</th>\n",
" <th>already_purchased</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"<p>0 rows × 30 columns</p>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [customer_id, street_id, structure_id, mcp_contact_id, fidelity, tenant_id, is_partner, deleted_at, gender, is_email_true, opt_in, last_buying_date, max_price, ticket_sum, average_price, average_purchase_delay, average_price_basket, average_ticket_basket, total_price, purchase_count, first_buying_date, country, gender_label, gender_female, gender_male, gender_other, country_fr, has_tags, number_compagny, already_purchased]\n",
"Index: []\n",
"\n",
"[0 rows x 30 columns]"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# cpdt, si un client a un nombre d'achats nul, il a bien une date de premier achat valant NaN, OK\n",
"customerplus_clean_spectacle[(customerplus_clean_spectacle[\"already_purchased\"]) &\n",
"(customerplus_clean_spectacle[\"purchase_count\"]==0)]"
]
},
{
"cell_type": "code",
"execution_count": 89,
"id": "e940bfcf-29cc-4d4c-ae5e-e2a8cecf28af",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"number_compagny already_purchased\n",
"10 False 0.234840\n",
" True 0.236236\n",
"11 False 0.141746\n",
" True 0.002804\n",
"12 False 0.485950\n",
" True 0.244779\n",
"13 False 0.084057\n",
" True 0.177213\n",
"14 False 0.885553\n",
" True 0.308859\n",
"Name: opt_in, dtype: float64"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# différence de consentement aux campagnes de mails (opt in)\n",
"\n",
"# en se restreignant au personnes n'ayant pas acheté, on a quand même des individus acceptant d'être ciblés\n",
"customerplus_clean_spectacle[customerplus_clean_spectacle[\"first_buying_date\"].isna()][\"opt_in\"].unique()\n",
"\n",
"# taux de consentement variés\n",
"customerplus_clean_spectacle[\"already_purchased\"] = customerplus_clean_spectacle[\"purchase_count\"] > 0\n",
"customerplus_clean_spectacle.groupby([\"number_compagny\", \"already_purchased\"])[\"opt_in\"].mean()"
]
},
{
"cell_type": "code",
"execution_count": 94,
"id": "a5e79beb-9ba0-4c89-b084-e27ff0d65dcc",
"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>number_compagny</th>\n",
" <th>already_purchased</th>\n",
" <th>opt_in</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10</td>\n",
" <td>False</td>\n",
" <td>0.234840</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" <td>0.236236</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>11</td>\n",
" <td>False</td>\n",
" <td>0.141746</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>11</td>\n",
" <td>True</td>\n",
" <td>0.002804</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>12</td>\n",
" <td>False</td>\n",
" <td>0.485950</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>12</td>\n",
" <td>True</td>\n",
" <td>0.244779</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>13</td>\n",
" <td>False</td>\n",
" <td>0.084057</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>13</td>\n",
" <td>True</td>\n",
" <td>0.177213</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" <td>0.885553</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>14</td>\n",
" <td>True</td>\n",
" <td>0.308859</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" number_compagny already_purchased opt_in\n",
"0 10 False 0.234840\n",
"1 10 True 0.236236\n",
"2 11 False 0.141746\n",
"3 11 True 0.002804\n",
"4 12 False 0.485950\n",
"5 12 True 0.244779\n",
"6 13 False 0.084057\n",
"7 13 True 0.177213\n",
"8 14 False 0.885553\n",
"9 14 True 0.308859"
]
},
"execution_count": 94,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_graph = customerplus_clean_spectacle.groupby([\"number_compagny\", \"already_purchased\"])[\"opt_in\"].mean().reset_index()\n",
"df_graph"
]
},
{
"cell_type": "code",
"execution_count": 127,
"id": "5be56c41-7697-481a-84ea-f77a2041484b",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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0aJFWrp0qc1tMvPmzbNZr2zZsoqMjNSePXsUExNjVz3SX7eKzZ8/X7Nnz77l7XeNGzfWxIkT9fnnn+v111+3tn/11Ve6evVqlskH7BUYGKju3btrz549mjJlipKTk+/6vG7lVl+DNm3aKCYmRv7+/oqIiMix45nVrVtXRYoU0YEDB9SvX78c2689fcue/hweHq69e/fatK1duzbLrUi5IfM/HP4+UYgkzZgxI9ePbZY5CcnChQtVvXp1a/t///vfbM1I93deXl5q2bKlUlNT1a5dO+3fv19hYWFq06aNli9frgcffFBFixa1a5+NGzfW119/rTNnztj8wfvZZ5/J09Mz16aK/qf9uWTJkurXr5/WrFmjTZs23XI9Dw8P1a9fX19++aXGjh17y8CT1+e/Zs0a/f7779YQmJ6eroULF+rBBx+0jn5ZLJYsfXfv3r3asmWLzS2C9evX16JFi7RixQrrbXCSssyid7f+Sf+6VV8F8iOCEuAgrVu31qRJk9S5c2f16tVLFy5c0HvvvZfll+CdVKpUSevXr9c333yj4OBg+fj43HJUpGvXrpo8ebK6du2qsWPHKjIyUsuXL9d3332XZd0ZM2aoZcuWat68ubp3764SJUro4sWLOnjwoHbt2qUvv/zyljV16tRJsbGx6tOnjw4dOqSGDRsqIyND27ZtU/ny5fXss8+qadOmat68uYYMGaLLly+rbt261lnvqlWrpueff96u6yBJNWvWVJs2bVS5cmUVLVpUBw8e1Ny5c1W7dm15enre9XndSqVKlbRgwQItXLhQpUqVkru7uypVqqQBAwboq6++Ur169fT666+rcuXKysjI0IkTJ/T9999r4MCBqlmzpt3HM/P29tYHH3ygbt266eLFi+rQoYOKFy+u8+fPa8+ePTp//nyW/4HO7nllt2/Z05+ff/55vfPOOxoxYoTq16+vAwcOaNq0afL19bW7RnvVqVNHRYsWVZ8+fRQVFSUXFxd98cUX2rNnT64f26xixYrq1KmT3n//fTk5OalRo0bav3+/3n//ffn6+t721lVJeumll+Th4aG6desqODhY586d07hx4+Tr62sdkR01apRWrVqlOnXqqH///ipbtqxSUlJ07NgxLV++XNOnT7/lLWhRUVHWZ1BGjBghPz8/ffHFF/r22281ceLEXPt6Zbc/JyYmqmHDhurcubPK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hmbPnq2xY8da99++fXs5OTlp69atmj59uoYMGXK3lxIAAACwwWQO97DQ0FBNnjxZFotFZcuW1b59+zR58mS99NJL2d7HgAED1L59e+v7MWPGaODAgXrttdesbY888ojNNt27d1enTp0kSTExMfrggw+0fft2tWjRQi4uLho5cqR13YiICG3evFmLFi1Sx44ddfnyZSUmJqpNmzZ68MEHJUnly5e3rj927FgNHTpU3bp1kySVKlVKo0eP1uDBgxUVFaXVq1fr4MGDOnbsmB544AFrDS1btsz2OQMAAAB3QlC6h9WqVcs6EiNJtWvX1vvvv6/09PRs76NGjRrWfyckJOjMmTNq3LjxbbepXLmy9d9eXl7y8fFRQkKCtW369On65JNPdPz4cV27dk2pqamqWrWqJMnPz0/du3dX8+bN1bRpUzVp0kQdO3ZUcHCwJGnnzp3asWOHdQRJ+ut2vpSUFCUnJ+vgwYMqWbKkNSRlnjcAAACQk7j1roCyWCzW55Uy3WyyBi8vL+u/PTw8srVvFxeXLMfKyMiQJC1atEivv/66XnjhBX3//feKj49Xjx49lJqaal0/NjZWW7ZsUZ06dbRw4UKVKVNGW7dulfTXrXUjR45UfHy89bVv3z4dPnxY7u7uWc4p8/gAAABATmJE6R6WGS7+/j4yMlJOTk4qVqyYzp49a112+PBhJScn33Z/Pj4+Cg8P15o1a9SwYcN/VNOGDRtUp04d9e3b19r266+/ZlmvWrVqqlatmoYNG6batWtr3rx5qlWrlqpXr65Dhw5leS4qU4UKFXTixAmdOXNGISEhkqQtW7b8o1oBAACAWyEo3cNOnjypN954Q71799auXbv0wQcf6P3335ckNWrUSNOmTVOtWrWUkZGhIUOGZBkJupno6Gj16dNHxYsXV8uWLZWUlKRNmzbp1VdfzVZNpUuX1meffabvvvtOERERmjt3rnbs2KGIiAhJ0tGjRzVz5ky1bdtWISEhOnTokH755Rd17dpVkjRixAi1adNGoaGhevrpp1WoUCHt3btX+/bt05gxY9SkSROVLVtWXbt21fvvv6/Lly9r+PDh//AKAgAAADdHULqV6ERHV3BHXbt21bVr1/Too4/KyclJr776qnr16iVJev/999WjRw/Vq1dPISEh+ve//62dO3fecZ/dunVTSkqKJk+erEGDBikgIEAd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",
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Création du barplot groupé\n",
"fig, ax = plt.subplots(figsize=(10, 6))\n",
"\n",
"categories = df_graph[\"number_compagny\"].unique()\n",
"bar_width = 0.35\n",
"bar_positions = np.arange(len(categories))\n",
"\n",
"# Grouper les données par label et créer les barres groupées\n",
"for label in df_graph[\"already_purchased\"].unique():\n",
" label_data = df_graph[df_graph['already_purchased'] == label]\n",
" values = [label_data[label_data['number_compagny'] == category]['opt_in'].values[0]*100 for category in categories]\n",
"\n",
" label_printed = \"purchased\" if label else \"no purchase\"\n",
" ax.bar(bar_positions, values, bar_width, label=label_printed)\n",
"\n",
" # Mise à jour des positions des barres pour le prochain groupe\n",
" bar_positions = [pos + bar_width for pos in bar_positions]\n",
"\n",
"# Ajout des étiquettes, de la légende, etc.\n",
"ax.set_xlabel('Numero de compagnie')\n",
"ax.set_ylabel('Part de consentement (%)')\n",
"ax.set_title('Part de consentement au mailing selon les compagnies')\n",
"ax.set_xticks([pos + bar_width / 2 for pos in np.arange(len(categories))])\n",
"ax.set_xticklabels(categories)\n",
"ax.legend()\n",
"\n",
"# Affichage du plot\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "91b743c4-5473-41e1-b97e-cf06904f0fa8",
"metadata": {
"scrolled": true
},
"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>number_company</th>\n",
" <th>y_has_purchased</th>\n",
" <th>opt_in</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10</td>\n",
" <td>0.0</td>\n",
" <td>0.226815</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10</td>\n",
" <td>1.0</td>\n",
" <td>0.456172</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>11</td>\n",
" <td>0.0</td>\n",
" <td>0.086818</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>11</td>\n",
" <td>1.0</td>\n",
" <td>0.000347</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>12</td>\n",
" <td>0.0</td>\n",
" <td>0.387308</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>12</td>\n",
" <td>1.0</td>\n",
" <td>0.000461</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>13</td>\n",
" <td>0.0</td>\n",
" <td>0.125966</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>13</td>\n",
" <td>1.0</td>\n",
" <td>0.167097</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>14</td>\n",
" <td>0.0</td>\n",
" <td>0.777891</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>14</td>\n",
" <td>1.0</td>\n",
" <td>0.175614</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" number_company y_has_purchased opt_in\n",
"0 10 0.0 0.226815\n",
"1 10 1.0 0.456172\n",
"2 11 0.0 0.086818\n",
"3 11 1.0 0.000347\n",
"4 12 0.0 0.387308\n",
"5 12 1.0 0.000461\n",
"6 13 0.0 0.125966\n",
"7 13 1.0 0.167097\n",
"8 14 0.0 0.777891\n",
"9 14 1.0 0.175614"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# on refait le graphique sur train set \n",
"\n",
"df_graph = train_set_spectacle.groupby([\"number_company\", \"y_has_purchased\"])[\"opt_in\"].mean().reset_index()\n",
"df_graph"
]
},
{
"cell_type": "code",
"execution_count": 66,
"id": "728e0021-4f95-4601-bb01-032db2cf6571",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.43578991448407206\n",
"0.2889600758160463\n"
]
}
],
"source": [
"# pourquoi une telle différence sur la variable opt in ??\n",
"print(train_set_spectacle[\"opt_in\"].mean())\n",
"print(customerplus_clean_spectacle[\"opt_in\"].mean())"
]
},
{
"cell_type": "code",
"execution_count": 72,
"id": "274b4bc5-277f-476a-8bc1-c1764b1df2de",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.8473746548562269\n",
"0.7573747808905485\n"
]
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": 76,
"id": "e1d837e1-c445-424b-867a-48b1e790f703",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"genre = homme : \n",
"0.3175633912091978\n",
"0.3103916287323914\n",
"email vérifié : \n",
"0.9581971527197163\n",
"0.9360131470484772\n",
"nationalité française : \n",
"0.8473746548562269\n",
"0.7573747808905485\n",
"nbre d'achats : \n",
"2.925387603847428\n",
"1.968932616126136\n"
]
}
],
"source": [
"# pour les autres variables, la distribution semble similaire\n",
"\n",
"print(\"genre = homme : \")\n",
"print(train_set_spectacle[\"gender_male\"].mean())\n",
"print(customerplus_clean_spectacle[\"gender_male\"].mean())\n",
"\n",
"print(\"email vérifié : \")\n",
"print(train_set_spectacle[\"is_email_true\"].mean())\n",
"print(customerplus_clean_spectacle[\"is_email_true\"].mean())\n",
"\n",
"print(\"nationalité française : \")\n",
"print(train_set_spectacle[\"country_fr\"].mean())\n",
"print(customerplus_clean_spectacle[\"country_fr\"].mean())\n",
"\n",
"# sauf pr nbre d'achats - à verif\n",
"print(\"nbre d'achats : \")\n",
"print(train_set_spectacle[\"purchase_count\"].mean())\n",
"print(customerplus_clean_spectacle[\"purchase_count\"].mean())"
]
},
{
"cell_type": "code",
"execution_count": 70,
"id": "ec31d69c-846e-4d52-9ea9-f6712187b028",
"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>customer_id</th>\n",
" <th>street_id</th>\n",
" <th>structure_id</th>\n",
" <th>mcp_contact_id</th>\n",
" <th>fidelity</th>\n",
" <th>tenant_id</th>\n",
" <th>is_partner</th>\n",
" <th>deleted_at</th>\n",
" <th>gender</th>\n",
" <th>is_email_true</th>\n",
" <th>...</th>\n",
" <th>purchase_count</th>\n",
" <th>first_buying_date</th>\n",
" <th>country</th>\n",
" <th>gender_label</th>\n",
" <th>gender_female</th>\n",
" <th>gender_male</th>\n",
" <th>gender_other</th>\n",
" <th>country_fr</th>\n",
" <th>number_compagny</th>\n",
" <th>already_purchased</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>821538</td>\n",
" <td>139</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>10</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>809126</td>\n",
" <td>1063</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1.0</td>\n",
" <td>10</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>11005</td>\n",
" <td>1063</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>False</td>\n",
" <td>...</td>\n",
" <td>14</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1.0</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>17663</td>\n",
" <td>12731</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>False</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>38100</td>\n",
" <td>12395</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>875</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>fr</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>10</td>\n",
" <td>True</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",
" <td>...</td>\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",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>343121</th>\n",
" <td>4667645</td>\n",
" <td>122</td>\n",
" <td>NaN</td>\n",
" <td>1534181.0</td>\n",
" <td>0</td>\n",
" <td>862</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>343122</th>\n",
" <td>4667649</td>\n",
" <td>122</td>\n",
" <td>NaN</td>\n",
" <td>1534177.0</td>\n",
" <td>0</td>\n",
" <td>862</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>343123</th>\n",
" <td>4667660</td>\n",
" <td>122</td>\n",
" <td>NaN</td>\n",
" <td>1534165.0</td>\n",
" <td>0</td>\n",
" <td>862</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>343124</th>\n",
" <td>4667679</td>\n",
" <td>122</td>\n",
" <td>NaN</td>\n",
" <td>1534132.0</td>\n",
" <td>0</td>\n",
" <td>862</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>343125</th>\n",
" <td>4667686</td>\n",
" <td>122</td>\n",
" <td>NaN</td>\n",
" <td>1567949.0</td>\n",
" <td>0</td>\n",
" <td>862</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>True</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1523688 rows × 29 columns</p>\n",
"</div>"
],
"text/plain": [
" customer_id street_id structure_id mcp_contact_id fidelity \\\n",
"0 821538 139 NaN NaN 0 \n",
"1 809126 1063 NaN NaN 0 \n",
"2 11005 1063 NaN NaN 0 \n",
"3 17663 12731 NaN NaN 0 \n",
"4 38100 12395 NaN NaN 0 \n",
"... ... ... ... ... ... \n",
"343121 4667645 122 NaN 1534181.0 0 \n",
"343122 4667649 122 NaN 1534177.0 0 \n",
"343123 4667660 122 NaN 1534165.0 0 \n",
"343124 4667679 122 NaN 1534132.0 0 \n",
"343125 4667686 122 NaN 1567949.0 0 \n",
"\n",
" tenant_id is_partner deleted_at gender is_email_true ... \\\n",
"0 875 False NaN 2 True ... \n",
"1 875 False NaN 2 True ... \n",
"2 875 False NaN 2 False ... \n",
"3 875 False NaN 0 False ... \n",
"4 875 False NaN 0 True ... \n",
"... ... ... ... ... ... ... \n",
"343121 862 False NaN 2 True ... \n",
"343122 862 False NaN 2 True ... \n",
"343123 862 False NaN 0 True ... \n",
"343124 862 False NaN 2 True ... \n",
"343125 862 False NaN 0 True ... \n",
"\n",
" purchase_count first_buying_date country gender_label \\\n",
"0 0 NaN NaN other \n",
"1 0 NaN fr other \n",
"2 14 NaN fr other \n",
"3 1 NaN fr female \n",
"4 1 NaN fr female \n",
"... ... ... ... ... \n",
"343121 0 NaN NaN other \n",
"343122 0 NaN NaN other \n",
"343123 0 NaN NaN female \n",
"343124 0 NaN NaN other \n",
"343125 0 NaN NaN female \n",
"\n",
" gender_female gender_male gender_other country_fr number_compagny \\\n",
"0 0 0 1 NaN 10 \n",
"1 0 0 1 1.0 10 \n",
"2 0 0 1 1.0 10 \n",
"3 1 0 0 1.0 10 \n",
"4 1 0 0 1.0 10 \n",
"... ... ... ... ... ... \n",
"343121 0 0 1 NaN 14 \n",
"343122 0 0 1 NaN 14 \n",
"343123 1 0 0 NaN 14 \n",
"343124 0 0 1 NaN 14 \n",
"343125 1 0 0 NaN 14 \n",
"\n",
" already_purchased \n",
"0 False \n",
"1 False \n",
"2 True \n",
"3 True \n",
"4 True \n",
"... ... \n",
"343121 False \n",
"343122 False \n",
"343123 False \n",
"343124 False \n",
"343125 False \n",
"\n",
"[1523688 rows x 29 columns]"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"customerplus_clean_spectacle"
]
},
{
"cell_type": "code",
"execution_count": 69,
"id": "e8872cac-bde9-41ad-9297-0f2e02c7f0e8",
"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>customer_id</th>\n",
" <th>nb_tickets</th>\n",
" <th>nb_purchases</th>\n",
" <th>total_amount</th>\n",
" <th>nb_suppliers</th>\n",
" <th>vente_internet_max</th>\n",
" <th>purchase_date_min</th>\n",
" <th>purchase_date_max</th>\n",
" <th>time_between_purchase</th>\n",
" <th>nb_tickets_internet</th>\n",
" <th>...</th>\n",
" <th>gender_label</th>\n",
" <th>gender_female</th>\n",
" <th>gender_male</th>\n",
" <th>gender_other</th>\n",
" <th>country_fr</th>\n",
" <th>nb_campaigns</th>\n",
" <th>nb_campaigns_opened</th>\n",
" <th>time_to_open</th>\n",
" <th>y_has_purchased</th>\n",
" <th>number_company</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10_299341</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>12.0</td>\n",
" <td>3.0</td>\n",
" <td>0 days 05:47:26.333333333</td>\n",
" <td>0.0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10_63788</td>\n",
" <td>3.0</td>\n",
" <td>2.0</td>\n",
" <td>62.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>393.205891</td>\n",
" <td>281.017639</td>\n",
" <td>112.188252</td>\n",
" <td>3.0</td>\n",
" <td>...</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>3.0</td>\n",
" <td>1.0</td>\n",
" <td>0 days 05:13:51</td>\n",
" <td>1.0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>10_759946</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>10_20653</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>11.0</td>\n",
" <td>10.0</td>\n",
" <td>1 days 00:45:54</td>\n",
" <td>0.0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>10_824705</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>10</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",
" <td>...</td>\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",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>697292</th>\n",
" <td>14_119950</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>697293</th>\n",
" <td>14_938</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>697294</th>\n",
" <td>14_5004707</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>2.0</td>\n",
" <td>1.0</td>\n",
" <td>2 days 16:42:51</td>\n",
" <td>0.0</td>\n",
" <td>14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>697295</th>\n",
" <td>14_108184</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>697296</th>\n",
" <td>14_4663981</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>other</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>NaN</td>\n",
" <td>0.0</td>\n",
" <td>14</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>697297 rows × 41 columns</p>\n",
"</div>"
],
"text/plain": [
" customer_id nb_tickets nb_purchases total_amount nb_suppliers \\\n",
"0 10_299341 0.0 0.0 0.0 0.0 \n",
"1 10_63788 3.0 2.0 62.0 1.0 \n",
"2 10_759946 0.0 0.0 0.0 0.0 \n",
"3 10_20653 0.0 0.0 0.0 0.0 \n",
"4 10_824705 0.0 0.0 0.0 0.0 \n",
"... ... ... ... ... ... \n",
"697292 14_119950 0.0 0.0 0.0 0.0 \n",
"697293 14_938 0.0 0.0 0.0 0.0 \n",
"697294 14_5004707 0.0 0.0 0.0 0.0 \n",
"697295 14_108184 0.0 0.0 0.0 0.0 \n",
"697296 14_4663981 0.0 0.0 0.0 0.0 \n",
"\n",
" vente_internet_max purchase_date_min purchase_date_max \\\n",
"0 0.0 NaN NaN \n",
"1 1.0 393.205891 281.017639 \n",
"2 0.0 NaN NaN \n",
"3 0.0 NaN NaN \n",
"4 0.0 NaN NaN \n",
"... ... ... ... \n",
"697292 0.0 NaN NaN \n",
"697293 0.0 NaN NaN \n",
"697294 0.0 NaN NaN \n",
"697295 0.0 NaN NaN \n",
"697296 0.0 NaN NaN \n",
"\n",
" time_between_purchase nb_tickets_internet ... gender_label \\\n",
"0 NaN 0.0 ... male \n",
"1 112.188252 3.0 ... female \n",
"2 NaN 0.0 ... other \n",
"3 NaN 0.0 ... male \n",
"4 NaN 0.0 ... other \n",
"... ... ... ... ... \n",
"697292 NaN 0.0 ... male \n",
"697293 NaN 0.0 ... male \n",
"697294 NaN 0.0 ... male \n",
"697295 NaN 0.0 ... other \n",
"697296 NaN 0.0 ... other \n",
"\n",
" gender_female gender_male gender_other country_fr nb_campaigns \\\n",
"0 0 1 0 1.0 12.0 \n",
"1 1 0 0 1.0 3.0 \n",
"2 0 0 1 NaN 0.0 \n",
"3 0 1 0 1.0 11.0 \n",
"4 0 0 1 NaN 0.0 \n",
"... ... ... ... ... ... \n",
"697292 0 1 0 1.0 0.0 \n",
"697293 0 1 0 1.0 0.0 \n",
"697294 0 1 0 1.0 2.0 \n",
"697295 0 0 1 1.0 0.0 \n",
"697296 0 0 1 NaN 0.0 \n",
"\n",
" nb_campaigns_opened time_to_open y_has_purchased \\\n",
"0 3.0 0 days 05:47:26.333333333 0.0 \n",
"1 1.0 0 days 05:13:51 1.0 \n",
"2 0.0 NaN 0.0 \n",
"3 10.0 1 days 00:45:54 0.0 \n",
"4 0.0 NaN 0.0 \n",
"... ... ... ... \n",
"697292 0.0 NaN 0.0 \n",
"697293 0.0 NaN 0.0 \n",
"697294 1.0 2 days 16:42:51 0.0 \n",
"697295 0.0 NaN 0.0 \n",
"697296 0.0 NaN 0.0 \n",
"\n",
" number_company \n",
"0 10 \n",
"1 10 \n",
"2 10 \n",
"3 10 \n",
"4 10 \n",
"... ... \n",
"697292 14 \n",
"697293 14 \n",
"697294 14 \n",
"697295 14 \n",
"697296 14 \n",
"\n",
"[697297 rows x 41 columns]"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_set_spectacle"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "d972ade5-974a-4fc9-8f83-bdf8503e1469",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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DRtqzpw58vHx0aJFi/TEE08oLS3thr/EXbt2TW3bttWPP/6o6OhoNW/eXNeuXdO2bdt0/PhxNW7cWIZhqHPnzlq7dq1GjRqlpk2bau/evRozZoy2bt2qrVu3Wvz1b8+ePRo6dKhGjhwpf39/ffzxx3r66adVuXJlNWvWTJI0ZMgQffbZZxo/frzq1aunS5cu6eeff9bZs2dv+byeeeYZtW/fXgsWLNCJEyf06quv6qmnntK6desk/TM847HHHpOPj49mzZolSea609LSFBERoZMnT+q1115T7dq1tX//fr355pvat2+f1qxZY/GL+PLly7V7925NmjRJJpNJI0aMUPv27dWnTx/9/vvvmjlzplJSUjRkyBB17dpVCQkJ5u0///xz9e7dW4888ojmz58vJycnffDBB2rdurW+++47tWjRwuK8unbtqieeeEJPP/209u3bp1GjRkmSOXxu3brVpr4l2dafb9f777+v2rVr6/3339fff/+toUOHqmPHjmrYsKGcnJz0ySef6NixYxo2bJieeeYZLVu2zLzt4cOH1a5dO0VHR8vDw0O//PKLJk+erB07dpjf14Jws74jSf369dPixYs1fPhwNW/eXAcOHNCjjz6q1NTUm+5/0aJFGjRokF588UW98847KlWqlH777TcdOHDAvE5SUpIeeOABlSpVSm+++abuvfdebd26VePHj9fRo0c1b968PPd/6NAhNW7cWOXLl9eMGTPk5+enzz//XH379tWff/6p4cOHW6z/2muvqUmTJvr444+VmpqqESNGqGPHjjp48KAcHBxseu3y25979eqlXbt2acKECapSpYr+/vtv7dq1y+JnPjd79uzRQw89pLJly+qtt95SeHi4Tp8+rWXLlikjI0MuLi63dP5RUVGKi4vT0aNHNWzYMD355JNydHRUnTp1tHDhQu3evVuvvfaavLy8NGPGDIvtly1bpvXr1+utt96Sh4eHZs2aZd7+sccekySdO3dOkjRmzBgFBATo4sWL+uabbxQZGam1a9ea/5hx6dIlRUVF6dy5c5o8ebIqV66sVatW5fpZL0lXr15Vp06d9PTTT2vo0KH64YcfNG7cOPn4+NzwZze//Ss/fTUv3377rZo1a6ZSpf7vb+WzZs3Sc889pyNHjuibb77JdbsZM2aoSpUqeuedd+Tt7a3w8HClp6fr3LlzGjZs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z52goCCL+vN7vvllS39evHix+vTpo48//liNGjWSr6+vevfuned9l5J0/vx5ZWZm3nSiDlvP/1b7ZDbrz+Hr27KPNXXqVD3//PNq2LChvv76a23btk3x8fFq06aNxeuc12d9bm2S5O7uLldXV4s2FxeXHDVay2//yk9fzU32OVnXlh+5vXdLlixRt27dVKFCBX3++efaunWr4uPj1b9//5uea7Zb7ec366u38jl+I66urgX+uYuij3uUUKxUr17dPOudtUWLFsnJyUnLly+3+E8gr+mY83NT+c34+flpx44dOdqtf6koW7asJGnUqFHq0qVLrvuqWrVqnscpV66cNm3apKysrDzDkp+fn65du6YzZ85YhCXDMJSUlKR//etfNz0fax4eHho7dqzGjh2rP//803x1qWPHjvrll19u+7xsVbZsWbm5ueWYdOL65QV1HEl677338pyVKq9fkAqKLf3ZxcUlx03iUs5fPAvDunXrdOrUKW3YsMF8FUlSrtPsFrbsX7j+/PNPVahQwdx+7dq1fL8W/fr1U79+/XTp0iX98MMPGjNmjDp06KBff/1VISEhKlu2rGrXrq0JEybkun32L/151Xf69Okc7dl/5S+o/mvNlv5ctmxZTZ8+XdOnT9fx48e1bNkyjRw5UsnJyXnOkubr6ysHBweLqzS5udPnn1u4y27L7iuff/65IiMjNXv2bIv1rG/az+9n/e2ypX/drK/mtX9JNgWEbLn9n/n5558rLCxMixcvtlie2+dRQbtZXy3oz/Hz588X2s8oii6CEkqM7C+ivf7mz8uXL+uzzz6zaT/WV1VuJCoqSl9++aWWLVtmMXxgwYIFFutVrVpV4eHh2rNnj2JjY22qR/pnqNjChQsVFxeX5/C7Fi1aaMqUKfr888/1yiuvmNu//vprXbp0KcfkA7by9/dX3759tWfPHk2fPl1paWm3fV55yes96NChg2JjY+Xn56ewsLACO561Jk2aqHTp0jpw4IAGDx5cYPu1pW/Z0p9DQ0O1d+9ei7Z169blGIpUGLJ/ObKeJviDDz4o9GNby56EZPHixapfv765/T//+U++ZqS7noeHh9q2bauMjAx17txZ+/fvV0hIiDp06KAVK1bo3nvvVZkyZWzaZ4sWLfTNN9/o1KlTFr/wfvrpp3J3dy+0qaJvtT9XrFhRgwcP1tq1a7V58+Y813Nzc1NERIS++uorTZgwIc9fJu/0+a9du1Z//vmn+ZfhzMxMLV68WPfee6/56pfJZMrRd/fu3autW7daDBGMiIjQl19+qZUrV5qHwUnKMYve7bqV/pVXX81NSEiI3NzcdOTIkRzLbPl8ymYymeTs7GwRkpKSknKd9a4w5dZXben3N7uKderUKV25csViggfcHQhKKDHat2+vqVOnqkePHnruued09uxZvfPOOzZ9z4Mk1apVSxs2bND//vc/BQYGysvLK8+rIr1799a0adPUu3dvTZgwQeHh4VqxYoW+++67HOt+8MEHatu2rVq3bq2+ffuqQoUKOnfunA4ePKhdu3bpq6++yrOmJ598UvPmzdPAgQN16NAhRUVFKSsrS9u3b1f16tXVvXt3tWzZUq1bt9aIESOUmpqqJk2amGe9q1evnnr16mXT6yBJDRs2VIcOHVS7dm2VKVNGBw8e1GeffaZGjRrJ3d39ts8rL7Vq1dKiRYu0ePFiVapUSa6urqpVq5aio6P19ddfq1mzZnrllVdUu3ZtZWVl6fjx4/r+++81dOhQNWzY0ObjWfP09NR7772nPn366Ny5c3rsscdUvnx5nTlzRnv27NGZM2dy/AU6v+eV375lS3/u1auX3njjDb355puKiIjQgQMHNHPmTPn4+Nhco60aN26sMmXKaODAgRozZoycnJz0xRdfaM+ePYV+bGs1atTQk08+qXfffVcODg5q3ry59u/fr3fffVc+Pj43HLoqSc8++6zc3NzUpEkTBQYGKikpSRMnTpSPj4/5iuxbb72l1atXq3HjxnrppZdUtWpVXblyRUePHtWKFSs0Z86cPIegjRkzxnwPyptvvilfX1998cUX+vbbbzVlypRCe7/y259TUlIUFRWlHj16qFq1avLy8lJ8fLxWrVqV5xXjbFOnTtVDDz2khg0bauTIkapcubL+/PNPLVu2TB988IG8vLzu+PmXLVtWzZs31xtvvGGe9e6XX36xCDcdOnTQuHHjNGbMGEVEROjQoUN66623FBYWZhGu+/Tpo2nTpumpp57S+PHjVblyZa1cudL8WX+zvpVf+e1f+emruXF2dlajRo20bdu2HMtq1aqlJUuWaPbs2br//vtVqlSpPEdwZMv+mo1Bgwbpscce04kTJzRu3DgFBgaah2gXhvz0VVs+x2vVqiVJ+ve//60+ffrI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Yj3rqzyGYeR55WfUqFFKSUkxP06cOHHTOvirN1Bw+HkCAAAlgV2vKL366qsaOXKkunfvLkmqVauWjh07pokTJ6pPnz4KCAiQ9M+VpcDAQPN2ycnJOa4yZXNxcZGLi0vhFw8AAACgxLLrn37T0tJy/PXZwcHBPD14WFiYAgICtHr1avPyjIwMbdy4UY0bN76jtQIAAAC4e9j1ilLHjh01YcIEVaxYUTVq1NDu3bs1depU9e/fX9I/Q+6io6MVGxur8PBwhYeHKzY2Vu7u7urRo0eh1hY68ttC3f/1jk5qf8eOVdz17dtXf//9t5YuXWrvUgAAAFCC2TUovffee3rjjTc0aNAgJScnKygoSAMGDNCbb75pXmf48OG6fPmyBg0apPPnz6thw4b6/vvvC+w7lHD32bBhg6KionT+/HmVLl3a3uUAAACgCLJrUPLy8tL06dPN04HnxmQyKSYmRjExMXesLgAAAAB3N6anKoZWrVqlhx56SKVLl5afn586dOigI0eOmJdv2LBBJpNJf//9t7ktISFBJpNJR48eNbdt3rxZERERcnd3V5kyZdS6dWudP39ekhQaGpojwNatW9cisJpMJn388cd69NFH5e7urvDwcC1btuyGtX/++edq0KCBvLy8FBAQoB49eig5Odlinf3796t9+/by9vaWl5eXmjZtanF+kvTOO+8oMDBQfn5+euGFF3T16tV8HePo0aOKioqSJJUpU0Ymk0l9+/a9Yc0AAAC4+xCUiqFLly5pyJAhio+P19q1a1WqVCk9+uij5kkw8iMhIUEtWrRQjRo1tHXrVm3atEkdO3ZUZmamTbWMHTtW3bp10969e9WuXTv17NlT586dy3P9jIwMjRs3Tnv27NHSpUuVmJhoEVT++OMPNWvWTK6urlq3bp127typ/v3769q1a+Z11q9fryNHjmj9+vWaP3++4uLiFBcXl69jBAcH6+uvv5YkHTp0SKdPn9a///1vm84ZAAAAJZ9dh97h1nTt2tXi+dy5c1W+fHkdOHBANWvWzNc+pkyZogYNGmjWrFnmtho1athcS9++fc1fEBwbG6v33ntPO3bsUJs2bXJdP3uiDkmqVKmSZsyYoQceeEAXL16Up6en3n//ffn4+GjRokVycnKSJFWpUsViH2XKlNHMmTPl4OCgatWqqX379lq7dq2effbZfB3D19dXklS+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V6+WJD3++OOSpClTpmjq1KmaOXOm4uPjFRAQoJYtW+rChQv2LBsAAABACWfXoFSuXDkFBASYH8uXL9e9996riIgIGYah6dOna/To0erSpYtq1qyp+fPnKy0tTQsWLLBn2QAAAABKuCJzj1JGRoY+//xz9e/fXyaTSYmJiUpKSlKrVq3M67i4uCgiIkJbtmzJcz/p6elKTU21eAAAAACALYpMUFq6dKn+/vtv9e3bV5KUlJQkSfL397dYz9/f37wsNxMnTpSPj4/5ERwcXGg1AwAAACiZikxQmjt3rtq2baugoCCLdpPJZPHcMIwcbdcbNWqUUlJSzI8TJ04USr0AAAAASi5HexcgSceOHdOaNWu0ZMkSc1tAQICkf64sBQYGmtuTk5NzXGW6nouLi1xcXAqvWAAAAAAlXpG4ojRv3jyVL19e7du3N7eFhYUpICDAPBOe9M99TBs3blTjxo3tUSYAAACAu4TdryhlZWVp3rx56tOnjxwd/68ck8mk6OhoxcbGKjw8XOHh4YqNjZW7u7t69Ohhx4oBAAAAlHR2D0pr1qzR8ePH1b9//xzLhg8frsuXL2vQoEE6f/68GjZsqO+//15eXl52qBQAAADA3cJkGIZh7yIKU2pqqnx8fJSSkiJvb297lwMAAIACFjryW3uXUKCOTmp/85VwS2zJBkXiHiUAAAAAKEoISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFbsHpT++OMPPfXUU/Lz85O7u7vq1q2rnTt3mpcbhqGYmBgFBQXJzc1NkZGR2r9/vx0r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HZKXl5etpQMAAABAvpgMwzBudePU1FRJKtBJHHx9ffX222+rf//+CgoKUnR0tEaMGCFJSk9Pl7+/vyZPnqwBAwbku0YfHx+lpKQw2URhiSlhsx3GpNi7AqBICB35rb1LKHBHJ7W3dwkACkFJ+7zis6rw2JINbB56d73sIXMFITMzU4sWLdKlS5fUqFEjJSYmKikpSa1atTKv4+LiooiICG3ZsiXP/aSnpys1NdXiAQAAAAC2uK2gVBD27dsnT09Pubi4aODAgfrmm2903333KSkpSZLk7+9vsb6/v795WW4mTpxo8b1PwcHBhVo/AAAAgJLH7kGpatWqSkhI0LZt2/T888+rT58+OnDggHm5yWSyWN8wjBxt1xs1apRSUlLMjxMnThRa7QAAAABKJpsncyhozs7O5skcGjRooPj4eP373/8235eUlJSkwMBA8/rJyck5rjJdz8XFRS4uLoVbNAAAAIASzeYrSp9++qnS09NztGdkZOjTTz+97YIMw1B6errCwsIUEBCg1atXWxxj48aNaty48W0fBwAAAADyckvfo5SSknNWsAsXLtj8PUqvvfaafvzxRx09elT79u3T6NGjtWHDBvXs2VMmk0nR0dGKjY3VN998o59//ll9+/aVu7u7evToYWvZAAAAAJBvNg+9y+seoZMnT8rHx7Zpov/880/16tVLp0+flo+Pj2rXrq1Vq1apZcuWkqThw4fr8uXLGjRokM6fP6+GDRvq+++/5zuUAAAAABSqfAelevXqyWQyyWQyqUWLFnJ0/L9NMzMzlZiYqDZt2th08Llz595wuclkUkxMjGJiYmzaLwAAAADcjnwHpc6dO0uSEhIS1Lp1a3l6epqXOTs7KzQ0VF27di3wAgEAAADgTst3UBozZowyMzMVEhKi1q1bW8xEBwAAAAAliU2TOTg4OGjgwIG6cuVKYdUDAAAAAHZn86x3tWrV0u+//14YtQAAAABAkWBzUJowYYKGDRum5cuX6/Tp00pNTbV4AAAAAEBxZ/P04Nkz23Xq1MlimvDsacMzMzMLrjoAAAAAsAObg9L69esLow4AAAAAKDJsDkoRERGFUQcAAAAAFBk2B6VsaWlpOn78uDIyMizaa9eufdtFAQAAAIA92RyUzpw5o379+mnlypW5LuceJQAAAADFnc2z3kVHR+v8+fPatm2b3NzctGrVKs2fP1/h4eFatmxZYdQIAAAAAHeUzVeU1q1bp//+97/617/+pVKlSikkJEQtW7aUt7e3Jk6cqPbt2xdGnQAAAABwx9h8RenSpUsqX768JMnX11dnzpyR9M8X0e7atatgqwMAAAAAO7A5KFWtWlWHDh2SJNWtW1cffPCB/vjjD82ZM0eBgYEFXiAAAAAA3Gk2D72Ljo7WqVOnJEljxoxR69at9cUXX8jZ2VlxcXEFXR8AAAAA3HE2B6WePXua/12vXj0dPXpUv/zyiypWrKiyZcsWaHEAAAAAYA/5HnqXlpamF154QRUqVFD58uXVo0cP/fXXX3J3d1f9+vUJSQAAAABKjHwHpTFjxiguLk7t27dX9+7dtXr1aj3//POFWRsAAAAA2EW+h94tWbJEc+fOVffu3SVJTz31lJo0aaLMzEw5ODgUWoEAAAAAcKfl+4rSiRMn1LRpU/PzBx54QI6OjuaJHQAAAACgpMh3UMrMzJSzs7NFm6Ojo65du1bgRQEAAACAPeV76J1hGOrbt69cXFzMbVeuXNHAgQPl4eFhbluyZEnBVggAAAAAd1i+g1KfPn1ytD311FMFWgwAAAAAFAX5Dkrz5s0rzDoAAAAAoMjI9z1KAAAAAHC3ICgBAAAAgBWCEgAAAABYISgBAAAAgBWCEgAAAABYISgBAAAAgBWCEgAAAABYISgBAAAAgBWCEgAAAABYISgBAAAAgBVHexdwtwkd+a29SyhwR13tXQEAAABQsLiiBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABW7BqUJk6cqH/961/y8vJS+fLl1blzZx06dMhiHcMwFBMTo6CgILm5uSkyMlL79++3U8UAAAAA7gZ2DUobN27UCy+8oG3btmn16tW6du2aWrVqpUuXLpnXmTJliqZOnaqZM2cqPj5eAQEBatmypS5cuGDHygEAAACUZI72PPiqVassns+bN0/ly5fXzp071axZMxmGoenTp2v06NHq0qWLJGn+/Pny9/fXggULNGDAAHuUDQAAAKCEK1L3KKWkpEiSfH19JUmJiYlKSkpSq1atzOu4uLgoIiJCW7ZsyXUf6enpSk1NtXgAAAAAgC2KTFAyDENDhgzRQw89pJo1a0qSkpKSJEn+/v4W6/r7+5uXWZs4caJ8fHzMj+Dg4MItHAAAAECJU2SC0uDBg7V3714tXLgwxzKTyWTx3DCMHG3ZRo0apZSUFPPjxIkThVIvAAAAgJLLrvcoZXvxxRe1bNky/fDDD7rnnnvM7QEBAZL+ubIUGBhobk9OTs5xlSmbi4uLXFxcCrdgAAAAACWaXa8oGYahwYMHa8mSJVq3bp3CwsIsloeFhSkgIECrV682t2VkZGjjxo1q3LjxnS4XAAAAwF3CrleUXnjhBS1YsED//e9/5eXlZb7vyMfHR25ubjKZTIqOjlZsbKzCw8MVHh6u2NhYubu7q0ePHvYsHQAAAEAJZtegNHv2bElSZGSkRfu8efPUt29fSdLw4cN1+fJlDRo0SOfPn1fDhg31/fffy8vL6w5XCwAAAOBuYdegZBjGTdcxmUyKiYlRTExM4RcEAAAAACpCs94BAAAAQFFBUAIAAAAAKwQlAAAAALBCUAIAAAAAKwQlAAAAALBCUAIAAAAAK3adHhwAAACAlRgfe1dQ8GJS7F2BzbiiBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIXJHAAAAG4VN90DJRZXlAAAAADACkEJAAAAAKwQlAAAAADACkEJAAAAAKwQlAAAAADACkEJAAAAAKwQlAAAAADACkEJAAAAAKwQlAAAAADACkEJAAAAAKwQlAAAAADACkEJAAAAAKwQlAAAAADACkEJAAAAAKwQlAAAAADACkEJAAAAAKwQlAAAAADACkEJAAAAAKwQlAAAAADACkEJAAAAAKwQlAAAAADACkEJAAAAAKw42rsAAABw9wgd+a29SyhQR13tXQGAwsIVJQAAAACwQlACAAAAACsEJQAAAACwQlACAAAAACsEJQAAAACwQlACAAAAACsEJQAAAACwQlACAAAAACsEJQAAAACwQlACAAAAACt2DUo//PCDOnbsqKCgIJlMJi1dutRiuWEYiomJUVBQkNzc3BQZGan9+/fbp1gAAAAAdw27BqVLly6pTp06mjlzZq7Lp0yZoqlTp2rmzJmKj49XQECAWrZsqQsXLtzhSgEAAADcTRztefC2bduqbdu2uS4zDEPTp0/X6NGj1aVLF0nS/Pnz5e/vrwULFmjAgAF3slQAAAAAd5Eie49SYmKikpKS1KpVK3Obi4uLIiIitGXLljy3S09PV2pqqsUDAAAAAGxRZINSUlKSJMnf39+i3d/f37wsNxMnTpSPj4/5ERwcXKh1AgAAACh5imxQymYymSyeG4aRo+16o0aNUkpKivlx4sSJwi4RAAAAQAlj13uUbiQgIEDSP1eWAgMDze3Jyck5rjJdz8XFRS4uLoVeHwAAAICSq8heUQoLC1NAQIBWr15tbsvIyNDGjRvVuHFjO1YGAAAAoKSz6xWlixcv6rfffjM/T0xMVEJCgnx9fVWxYkVFR0crNjZW4eHhCg8PV2xsrNzd3dWjRw87Vg0AAACgpLNrUPrpp58UFRVlfj5kyBBJUp8+fRQXF6fhw4fr8uXLGjRokM6fP6+GDRvq+++/l5eXl71KBgAAAHAXsGtQioyMlGEYeS43mUyKiYlRTEzMnSsKAAAAwF2vyN6jBAAAAAD2UmRnvQOQf6Ejv7V3CQXu6KT29i4BAADcxbiiBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYIWgBAAAAABWCEoAAAAAYKVYBKVZs2YpLCxMrq6uuv/++/Xjjz/auyQAAAAAJViRD0qLFy9WdHS0Ro8erd27d6tp06Zq27atjh8/bu/SAAAAAJRQRT4oTZ06VU8//bSeeeYZVa9eXdOnT1dwcLBmz55t79IAAAAAlFCO9i7gRjIyMrRz506NHDnSor1Vq1basmVLrtukp6crPT3d/DwlJUWSlJqaWniF2iArPc3eJRS4VJNh7xIKVhHpK7Yokf2qGL4PJU2J7FejvO1dQsEaddLeFdispPWrEvd/oMT/g0UA/arwZP9+YRg3f42LdFD666+/lJmZKX9/f4t2f39/JSUl5brNxIkTNXbs2BztwcHBhVIjJB97F1DQJpW4MyqWfKbbuwKURCXup5vPK7srke8A/cruSuQ7UMT61YULF+Tjc+OainRQymYymSyeG4aRoy3bqFGjNGTIEPPzrKwsnTt3Tn5+fnlug1uXmpqq4OBgnThxQt7eJewvtbAb+hUKA/0KBY0+hcJAvypchmHowoULCgoKuum6RToolS1bVg4ODjmuHiUnJ+e4ypTNxcVFLi4uFm2lS5curBLx/3l7e/PDjAJHv0JhoF+hoNGnUBjoV4XnZleSshXpyRycnZ11//33a/Xq1Rbtq1evVuPGje1UFQAAAICSrkhfUZKkIUOGqFevXmrQoIEaNWqkDz/8UMePH9fAgQPtXRoAAACAEqrIB6UnnnhCZ8+e1VtvvaXTp0+rZs2aWrFihUJCQuxdGvTPUMcxY8bkGO4I3A76FQoD/QoFjT6FwkC/KjpMRn7mxgMAAACAu0iRvkcJAAAAAOyBoAQAAAAAVghKAAAAAGCFoAQAAAAAVghKuKkffvhBHTt2VFBQkEwmk5YuXWqx3DAMxcTEKCgoSG5uboqMjNT+/fvtUyyKjZv1qyVLlqh169YqW7asTCaTEhIS7FInipcb9aurV69qxIgRqlWrljw8PBQUFKTevXvr1KlT9isYxcLNPq9iYmJUrVo1eXh4qEyZMnr44Ye1fft2+xSLYuNm/ep6AwYMkMlk0vTp0+9YfSAoIR8uXbqkOnXqaObMmbkunzJliqZOnaqZM2cqPj5eAQEBatmypS5cuHCHK0VxcrN+denSJTVp0kSTJk26w5WhOLtRv0pLS9OuXbv0xhtvaNeuXVqyZIl+/fVXderUyQ6Voji52edVlSpVNHPmTO3bt0+bNm1SaGioWrVqpTNnztzhSlGc3KxfZVu6dKm2b9+uoKCgO1QZzAzABpKMb775xvw8KyvLCAgIMCZNmmRuu3LliuHj42PMmTPHDhWiOLLuV9dLTEw0JBm7d+++ozWh+LtRv8q2Y8cOQ5Jx7NixO1MUir389KuUlBRDkrFmzZo7UxSKvbz61cmTJ40KFSoYP//8sxESEmJMmzbtjtd2N+OKEm5LYmKikpKS1KpVK3Obi4uLIiIitGXLFjtWBgA3l5KSIpPJpNKlS9u7FJQQGRkZ+vDDD+Xj46M6derYuxwUY1lZWerVq5deffVV1ahRw97l3JUc7V0AirekpCRJkr+/v0W7v7+/jh07Zo+SACBfrly5opEjR6pHjx7y9va2dzko5pYvX67u3bsrLS1NgYGBWr16tcqWLWvvslCMTZ48WY6OjnrppZfsXcpdiytKKBAmk8niuWEYOdoAoKi4evWqunfvrqysLM2aNcve5aAEiIqKUkJCgrZs2aI2bdqoW7duSk5OtndZKKZ27typf//734qLi+P3KTsiKOG2BAQESPq/K0vZkpOTc1xlAoCi4OrVq+rWrZsSExO1evVqriahQHh4eKhy5cp68MEHNXfuXDk6Omru3Ln2LgvF1I8//qjk5GRVrFhRjo6OcnR01LFjxzR06FCFhobau7y7BkEJtyUsLEwBAQFavXq1uS0jI0MbN25U48aN7VgZAOSUHZIOHz6sNWvWyM/Pz94loYQyDEPp6en2LgPFVK9evbR3714lJCSYH0FBQXr11Vf13Xff2bu8uwb3KOGmLl68qN9++838PDExUQkJCfL19VXFihUVHR2t2NhYhYeHKzw8XLGxsXJ3d1ePHj3sWDWKupv1q3Pnzun48ePm77g5dOiQpH+uYmZfyQSs3ahfBQUF6bHHHtOuXbu0fPlyZWZmmq+G+/r6ytnZ2V5lo4i7Ub/y8/PThAkT1KlTJwUGBurs2bOaNWuWTp48qccff9yOVaOou9n/g9Z/yHFyclJAQICqVq16p0u9e9l72j0UfevXrzck5Xj06dPHMIx/pggfM2aMERAQYLi4uBjNmjUz9u3bZ9+iUeTdrF/Nmzcv1+Vjxoyxa90o2m7Ur7Knms/tsX79enuXjiLsRv3q8uXLxqOPPmoEBQUZzs7ORmBgoNGpUydjx44d9i4bRdzN/h+0xvTgd57JMAyjcKMYAAAAABQv3KMEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAAAAAFYISgAAAABghaAEAChWNmzYIJPJpL///tvepRRrkZGRio6OtncZAFBkEZQAoJjp27evTCaTJk2aZNG+dOlSmUwmO1WF4mbJkiUaN26cvcsAgCKLoAQAxZCrq6smT56s8+fP27uUfMnIyLB3CbDi6+srLy8ve5cBAEUWQQkAiqGHH35YAQEBmjhxYp7rxMTEqG7duhZt06dPV2hoqPl537591blzZ8XGxsrf31+lS5fW2LFjde3aNb366qvy9fXVPffco08++cRiP3/88YeeeOIJlSlTRn5+fnrkkUd09OjRHPudOHGigoKCVKVKFUnSvn371Lx5c7m5ucnPz0/PPfecLl68eMNzXbFihapUqSI3NzdFRUVZHCfbli1b1KxZM7m5uSk4OFgvvfSSLl26dMP9Llu2TA0aNJCrq6vKli2rLl26mJedP39evXv3VpkyZeTu7q62bdvq8OHD5uVxcXEqXbq0li9frqpVq8rd3V2PPfaYLl26pPnz5ys0NFRlypTRiy++qMzMTPN2oaGhGjdunHr06CFPT08FBQXpvffes6hr6tSpqlWrljw8PBQcHKxBgwbleI0++ugjBQcHy93dXY8++qimTp2q0qVLm5dnv/efffaZQkND5ePjo+7du+vChQvmdayH3mVkZGj48OGqUKGCPDw81LBhQ23YsOGGryEAlGQEJQAohhwcHBQbG6v33ntPJ0+evK19rVu3TqdOndIPP/ygqVOnKiYmRh06dFCZMmW0fft2DRw4UAMHDtSJEyckSWlpaYqKipKnp6d++OEHbdq0SZ6enmrTpo3FlaO1a9fq4MGDWr16tZYvX660tDS1adNGZcqUUXx8vL766iutWbNGgwcPzrO2EydOqEuXLmrXrp0SEhL0zDPPaOTIkRbr7Nu3T61bt1aXLl20d+9eLV68WJs2bbrhfr/99lt16dJF7du31+7du7V27Vo1aNDAvLxv37766aeftGzZMm3dulWGYahdu3a6evWqeZ20tDTNmDFDixYt0qpVq7RhwwZ16dJFK1as0IoVK/TZZ5/pww8/1H/+8x+LY7/99tuqXbu2du3apVGjRumVV17R6tWrzctLlSqlGTNm6Oeff9b8+fO1bt06DR8+3Lx88+bNGjhwoF5++WUlJCSoZcuWmjBhQo5zPHLkiJYuXarly5dr+fLl2rhxY47hmtfr16+fNm/erEWLFmnv3r16/PHH1aZNG4uACAB3FQMAUKz06dPHeOSRRwzDMIwHH3zQ6N+/v2EYhvHNN98Y13+sjxkzxqhTp47FttOmTTNCQkIs9hUSEmJkZmaa26pWrWo0bdrU/PzatWuGh4eHsXDhQsMwDGPu3LlG1apVjaysLPM66enphpubm/Hdd9+Z9+vv72+kp6eb1/nwww+NMmXKGBcvXjS3ffvtt0apUqWMpKSkXM911KhRRvXq1S2ONWLECEOScf78ecMwDKNXr17Gc889Z7Hdjz/+aJQqVcq4fPlyrvtt1KiR0bNnz1yX/frrr4YkY/Pmzea2v/76y3BzczO+/PJLwzAMY968eYYk47fffjOvM2DAAMPd3d24cOGCua1169bGgAEDzM9DQkKMNm3aWBzviSeeMNq2bZtrLYZhGF9++aXh5+dnsX779u0t1unZs6fh4+Njfj5mzBjD3d3dSE1NNbe9+uqrRsOGDc3PIyIijJdfftkwDMP47bffDJPJZPzxxx8W+23RooUxatSoPGsDgJKMK0oAUIxNnjxZ8+fP14EDB255HzVq1FCpUv/334G/v79q1aplfu7g4CA/Pz8lJydLknbu3KnffvtNXl5e8vT0lKenp3x9fXXlyhUdOXLEvF2tWrXk7Oxsfn7w4EHVqVNHHh4e5rYmTZooKytLhw4dyrW2gwcP6sEHH7SYpKJRo0YW6+zcuVNxcXHmWjw9PdW6dWtlZWUpMTEx1/0mJCSoRYsWeR7T0dFRDRs2NLf5+fmpatWqOnjwoLnN3d1d9957r8XrFhoaKk9PT4u27Nctr/obNWpksd/169erZcuWqlChgry8vNS7d2+dPXvWPJTw0KFDeuCBByz2Yf1c+meY3/X3IAUGBuaoJduuXbtkGIaqVKli8Tpu3LjR4j0FgLuJo70LAADcumbNmql169Z67bXX1LdvX4tlpUqVkmEYFm3XDx3L5uTkZPHcZDLl2paVlSVJysrK0v33368vvvgix77KlStn/vf1gUiSDMPIc1a+vNqt689NVlaWBgwYoJdeeinHsooVK+a6jZubW577y+uY1vXb+rrdSPZ+jx07pnbt2mngwIEaN26cfH19tWnTJj399NPm9y631zG3mm2pJSsrSw4ODtq5c6ccHBwsll0f/ADgbkJQAoBibtKkSapbt655woRs5cqVU1JSksUv1gkJCbd9vPr162vx4sUqX768vL29873dfffdp/nz5+vSpUvmELV582aVKlUqR+3Xb7N06VKLtm3btuWoZ//+/apcuXK+a6ldu7bWrl2rfv365XrMa9euafv27WrcuLEk6ezZs/r1119VvXr1fB8jL9b1b9u2TdWqVZMk/fTTT7p27Zreffdd81W+L7/80mL9atWqaceOHRZtP/30023VVK9ePWVmZio5OVlNmza9rX0BQEnB0DsAKOZq1aqlnj175pg9LTIyUmfOnNGUKVN05MgRvf/++1q5cuVtH69nz54qW7asHnnkEf34449KTEzUxo0b9fLLL99wYomePXvK1dVVffr00c8//6z169frxRdfVK9eveTv75/rNgMHDtSRI0c0ZMgQHTp0SAsWLFBcXJzFOiNGjNDWrVv1wgsvKCEhQYcPH9ayZcv04osv5lnLmDFjtHDhQo0ZM0YHDx7Uvn37NGXKFElSeHi4HnnkET377LPatGmT9uzZo6eeekoVKlTQI488YvsLZmXz5s2aMmWKfv31V73//vv66quv9PLLL0uS7r33Xl27dk3vvfeefv/9d3322WeaM2eOxfYvvviiVqxYoalTp+rw4cP64IMPtHLlytv6Dq0qVaqoZ8+e6t27t5YsWaLExETFx8dr8uTJWrFixW2dLwAUVwQlACgBxo0bl2P4VfXq1TVr1iy9//77qlOnjnbs2KFhw4bd9rHc3d31ww8/qGLFiurSpYuqV6+u/v376/Llyze8wuTu7q7vvvtO586d07/+9S899thjatGihWbOnJnnNhUrVtTXX3+t//3vf6pTp47mzJmj2NhYi3Vq166tjRs36vDhw2ratKnq1aunN954Q4GBgXnuNzIyUl999ZWWLVumunXrqnnz5tq+fbt5+bx583T//ferQ4cOatSokQzD0IoVK3IMZ7sVQ4cO1c6dO1WvXj2NGzdO7777rlq3bi1Jqlu3rqZOnarJkyerZs2a+uKLL3JMAd+kSRPNmTNHU6dOVZ06dbRq1Sq98sorcnV1va265s2bp969e2vo0KGqWrWqOnXqpO3btys4OPi29gsAxZXJyM8AcAAAcNtCQ0MVHR1t8f1FBeHZZ5/VL7/8oh9//LFA9wsAdzPuUQIAoJh555131LJlS3l4eGjlypWaP3++Zs2aZe+yAKBEISgBAFDM7NixQ1OmTNGFCxdUqVIlzZgxQ88884y9ywKAEoWhdwAAAABghckcAAAAAMAKQQkAAAAArBCUAAAAAMAKQQkAAAAArBCUAAAAAMAKQQkAAAAArBCUAAAAAMAKQQkAAAAArPw/q5Zjnui4MTsAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Création du barplot groupé\n",
"fig, ax = plt.subplots(figsize=(10, 6))\n",
"\n",
"categories = df_graph[\"number_company\"].unique()\n",
"bar_width = 0.35\n",
"bar_positions = np.arange(len(categories))\n",
"\n",
"# Grouper les données par label et créer les barres groupées\n",
"for label in df_graph[\"y_has_purchased\"].unique():\n",
" label_data = df_graph[df_graph['y_has_purchased'] == label]\n",
" values = [label_data[label_data['number_company'] == category]['opt_in'].values[0]*100 for category in categories]\n",
"\n",
" label_printed = \"achat durant la période\" if label else \"aucun achat\"\n",
" ax.bar(bar_positions, values, bar_width, label=label_printed)\n",
"\n",
" # Mise à jour des positions des barres pour le prochain groupe\n",
" bar_positions = [pos + bar_width for pos in bar_positions]\n",
"\n",
"# Ajout des étiquettes, de la légende, etc.\n",
"ax.set_xlabel('Numero de compagnie')\n",
"ax.set_ylabel('Part de consentement (%)')\n",
"ax.set_title('Part de consentement au mailing selon les compagnies (train set)')\n",
"ax.set_xticks([pos + bar_width / 2 for pos in np.arange(len(categories))])\n",
"ax.set_xticklabels(categories)\n",
"ax.legend()\n",
"\n",
"# Affichage du plot\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "43deeeb5-8092-42fc-b80b-59d2c58093de",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 124,
"id": "32960530-cb46-4eeb-a6d2-1dcf5fb640d8",
"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>number_compagny</th>\n",
" <th>gender_male</th>\n",
" <th>gender_female</th>\n",
" <th>gender_other</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10</td>\n",
" <td>0.181580</td>\n",
" <td>0.343837</td>\n",
" <td>0.474583</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>11</td>\n",
" <td>0.179520</td>\n",
" <td>0.314443</td>\n",
" <td>0.506037</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>12</td>\n",
" <td>0.346380</td>\n",
" <td>0.454036</td>\n",
" <td>0.199584</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>13</td>\n",
" <td>0.318108</td>\n",
" <td>0.503092</td>\n",
" <td>0.178800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>14</td>\n",
" <td>0.331954</td>\n",
" <td>0.316181</td>\n",
" <td>0.351865</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" number_compagny gender_male gender_female gender_other\n",
"0 10 0.181580 0.343837 0.474583\n",
"1 11 0.179520 0.314443 0.506037\n",
"2 12 0.346380 0.454036 0.199584\n",
"3 13 0.318108 0.503092 0.178800\n",
"4 14 0.331954 0.316181 0.351865"
]
},
"execution_count": 124,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# genre \n",
"\n",
"company_genders = customerplus_clean_spectacle.groupby(\"number_compagny\")[[\"gender_male\", \"gender_female\", \"gender_other\"]].mean().reset_index()\n",
"company_genders"
]
},
{
"cell_type": "code",
"execution_count": 126,
"id": "1b4a49d7-7bfe-4e80-aa7e-c9c6d4bc46e2",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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3AwaNAgzZsxAZmYmZDIZlEolDh48iGnTpqkd/EtERESkD5LDzcKFC+Hq6ooaNWrg4cOHaNiwIdq2bQt/f398/PHHZVEjERERkdYk337B1NQUsbGxmDdvHlJSUqBUKuHt7Y06deqURX1EREREkpT43lK1atVCrVq1dFkLERERUalJDjcjR4586evF3cCSiIiIqDxIDjf37t1Te/7s2TP8888/uH//Pt59912dFUZERERUEpLDzZYtWzTalEolxo8fD09PT50URURERFRSOrlxppGREaZMmYJly5bpYnZEREREJaazu4JfunQJBQUFupodERERUYlI3i0VEhKi9lwIgYyMDPz2228YNmyYzgojIiIiKgnJ4SYlJUXtuZGREapVq4bPP//8lWdSEREREZU1yeFm7969ZVEHERERkU7o7JgbIiIioopA8pYbb29vyGQyrfoeP35cckFEREREpSE53HTq1AlRUVFo2LAh/Pz8AACHDx/G6dOnMW7cOFhYWOi8SCIiIiJtSQ43t2/fxsSJEzF//ny19rCwMKSnp/P2C0RERKRXko+52bhxI4KDgzXahwwZgk2bNumkKCIiIqKSkhxuLCwscODAAY32AwcOwNzcXCdFEREREZWU5N1SkydPxrhx45CcnIxWrVoBeH7MTXR0NObMmaPzAomIiIikkBxuZs6cCU9PTyxfvhw//PADAKBBgwaIiYlBv379dF4gERERkRSSww0A9OvXj0GGiIiIKiRexI+IiIgMiuQtNwqFAsuWLcNPP/2EtLQ05Ofnq71+9+5dnRVHREREJJXkLTdz587F0qVL0a9fP+Tk5CAkJAS9evWCkZERwsPDy6BEIiIiIu1J3nITGxuLb775Bl27dsXcuXMxcOBA1KpVC02aNMHhw4cxceLEsqjz9RFuq+8KXh/hOfqugIiIDJDkLTeZmZnw8vICAFhbWyMn5/kfqPfeew+//fabbqsjIiIikkhyuKlZsyYyMjIAALVr18auXbsAAH/99RfkcrluqyMiIiKSSHK46dmzJ3bv3g0AmDRpEmbPno06deogODgYI0eO1HmBRERERFJIPuZm8eLFqn/36dMHNWvWRFJSEmrXro3u3bvrtDgiIiIiqUp0Eb9/a9Wqleo2DERERET6VqJwc/78eezbtw9ZWVlQKpVqr0m9v1RUVBQ+/fRTZGRkoFGjRoiMjESbNm2K7Ltv3z4EBARotJ85cwb169eXtFwiIiIyTJLDzTfffINx48bB3t4eTk5OkMlkqtdkMpmkcBMXF4fJkycjKioKrVu3xqpVq9C5c2ekpqbC1dW12OnOnTsHGxsb1fNq1apJXQ0iIiIyUJLDzYIFC7Bw4ULMmDGj1AtfunQpRo0ahdGjRwMAIiMjsXPnTqxYsQIRERHFTufg4AA7O7tSL5+IiIgMj+Szpe7du4e+ffuWesH5+flITk5GYGCgWntgYCCSkpJeOq23tzecnZ3Rvn177N2796V98/LykJubq/YgIiIiwyU53PTt21d1bZvSuHPnDhQKBRwdHdXaHR0dkZmZWeQ0zs7OWL16NTZt2oTNmzejXr16aN++Pf78889ilxMREQFbW1vVw8XFpdS1ExERUcWl1W6pL774QvXv2rVrY/bs2Th8+DC8vLxgamqq1lfq7Rf+fcwOAAghNNoK1atXD/Xq1VM99/PzQ3p6Oj777DO0bdu2yGlCQ0MREhKiep6bm8uAQ0REZMC0CjfLli1Te25tbY3ExEQkJiaqtctkMq3Djb29PYyNjTW20mRlZWlszXmZVq1a4fvvvy/2dblczisnExERvUG0CjdXrlzR+YLNzMzg4+ODhIQE9OzZU9WekJCAHj16aD2flJQUODs767w+es3whqXa4w1LicjAlfoifqUREhKCoUOHwtfXF35+fli9ejXS0tIwduxYAM93Kd24cQPr168H8PxsKnd3dzRq1Aj5+fn4/vvvsWnTJmzatEmfq0FEREQViORw06dPH/j6+mLmzJlq7Z9++imOHj2KjRs3aj2v/v37Izs7G/PmzUNGRgYaN26M+Ph4uLm5AQAyMjKQlpam6p+fn49p06bhxo0bsLCwQKNGjfDbb7+hS5cuUleDiIiIDJRMCCGkTFCtWjXs2bMHXl5eau2nTp1Chw4dcOvWLZ0WqGu5ubmwtbVFTk6O2oUAdYa7R7Sny90jHHftcdz1g+OuHxx3/SiD3d9S/n5LPhX84cOHMDMz02g3NTXlNWSIiIhI7ySHm8aNGyMuLk6j/ccff0TDhg11UhQRERFRSUk+5mb27Nno3bs3Ll26hHfffRcAsHv3bmzYsEHS8TZEREREZUFyuOnevTu2bt2KRYsW4eeff4aFhQWaNGmCP/74A+3atSuLGomIiIi0VqJTwbt27YquXbvquhYiIiKiUpN8zA0RERFRRcZwQ0RERAaF4YaIiIgMCsMNERERGZQSh5v8/HycO3cOBQUFuqyHiIiIqFQkh5vHjx9j1KhRsLS0RKNGjVT3fpo4cSIWL16s8wKJiIiIpJAcbkJDQ3Hy5Ens27cP5ubmqvYOHToUeeViIiIiovIk+To3W7duRVxcHFq1agWZTKZqb9iwIS5duqTT4oiIiIikkrzl5vbt23BwcNBof/TokVrYISIiItIHyeGmRYsW+O2331TPCwPNN998Az8/P91VRkRERFQCkndLRUREoFOnTkhNTUVBQQGWL1+O06dP49ChQ0hMTCyLGomIiIi0JnnLjb+/Pw4ePIjHjx+jVq1a2LVrFxwdHXHo0CH4+PiURY1EREREWivRjTO9vLywbt06XddCREREVGpahZvc3FytZ2hjY1PiYoiIiIhKS6twY2dnp/WZUAqFolQFEREREZWGVuFm7969qn9fvXoVM2fOxPDhw1VnRx06dAjr1q1DRERE2VRJREREpCWtwk27du1U/543bx6WLl2KgQMHqtq6d+8OLy8vrF69GsOGDdN9lURERERakny21KFDh+Dr66vR7uvri6NHj+qkKCIiIqKSkhxuXFxcsHLlSo32VatWwcXFRSdFEREREZWU5FPBly1bht69e2Pnzp1o1aoVAODw4cO4dOkSNm3apPMCiYiIiKSQvOWmS5cuuHDhAnr06IG7d+8iOzsbPXr0wPnz59GlS5eyqJGIiIhIayW6iF/NmjWxcOFCXddCREREVGqSt9wQERERVWQMN0RERGRQGG6IiIjIoDDcEBERkUGRHG6ePHmCx48fq55fu3YNkZGR2LVrl04LIyIiIioJyeGmR48eWL9+PQDg/v37eOutt/D555+jR48eWLFiheQCoqKi4OHhAXNzc/j4+GD//v1aTXfw4EGYmJigWbNmkpdJREREhktyuDl+/DjatGkDAPj555/h6OiIa9euYf369fjiiy8kzSsuLg6TJ0/GrFmzkJKSgjZt2qBz585IS0t76XQ5OTkIDg5G+/btpZZPREREBk5yuHn8+DEqVaoEANi1axd69eoFIyMjtGrVCteuXZM0r6VLl2LUqFEYPXo0GjRogMjISLi4uLxyC9CYMWMwaNAg1V3JiYiIiApJDje1a9fG1q1bkZ6ejp07dyIwMBAAkJWVBRsb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3JiZmcHHxwcJCQlq7QkJCfD399dTVURERPS609uWGwAICQnB0KFD4evrCz8/P6xevRppaWkYO3YsgOe7lG7cuIH169erpjlx4gQA4OHDh7h9+zZOnDgBMzMzNGzYUB+rQERERBWMXsNN//79kZ2djXnz5iEjIwONGzdGfHw83NzcADy/aN+L17zx9vZW/Ts5ORk//PAD3NzccPXq1fIsnYiIiCoovYYbABg/fjzGjx9f5GsxMTEabUKIMq6IiIiIXmd6P1uKiIiISJcYboiIiMigMNwQERGRQWG4ISIiIoPCcENEREQGheGGiIiIDArDDRERERkUhhsiIiIyKAw3REREZFAYboiIiMigMNwQERGRQWG4ISIiIoPCcENEREQGheGGiIiIDArDDRERERkUhhsiIiIyKAw3REREZFAYboiIiMigMNwQERGRQWG4ISIiIoPCcENEREQGheGGiIiIDArDDRERERkUhhsiIiIyKAw3REREZFAYboiIiMigMNwQERGRQWG4ISIiIoPCcENEREQGheGGiIiIDArDDRERERkUvYebqKgoeHh4wNzcHD4+Pti/f/9L+ycmJsLHxwfm5ubw9PTEypUry6lSIiIieh3oNdzExcVh8uTJmDVrFlJSUtCmTRt07twZaWlpRfa/cuUKunTpgjZt2iAlJQX/+9//MHHiRGzatKmcKyciIqKKSq/hZunSpRg1ahRGjx6NBg0aIDIyEi4uLlixYkWR/VeuXAlXV1dERkaiQYMGGD16NEaOHInPPvusnCsnIiKiikpv4SY/Px/JyckIDAxUaw8MDERSUlKR0xw6dEijf1BQEI4dO4Znz56VWa1ERET0+jDR14Lv3LkDhUIBR0dHtXZHR0dkZmYWOU1mZmaR/QsKCnDnzh04OztrTJOXl4e8vDzV85ycHABAbm5uaVehSMq8x2UyX0Oky/eA4649jrt+cNz1g+OuH2XxN7ZwnkKIV/bVW7gpJJPJ1J4LITTaXtW/qPZCERERmDt3rka7i4uL1FJJx2wj9V3Bm4njrh8cd/3guOtHWY77gwcPYGtr+9I+egs39vb2MDY21thKk5WVpbF1ppCTk1OR/U1MTFC1atUipwkNDUVISIjquVKpxN27d1G1atWXhihDkpubCxcXF6Snp8PGxkbf5bwROOb6wXHXD467frxp4y6EwIMHD1C9evVX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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Création du barplot\n",
"plt.bar(company_genders[\"number_compagny\"], company_genders[\"gender_male\"], label = \"Homme\")\n",
"plt.bar(company_genders[\"number_compagny\"], company_genders[\"gender_female\"], \n",
" bottom = company_genders[\"gender_male\"], label = \"Femme\")\n",
"\n",
"\n",
"# Ajout de titres et d'étiquettes\n",
"plt.xlabel('Company')\n",
"plt.ylabel(\"Part de clients de chaque sexe\")\n",
"plt.title(\"Sexe des clients de chaque compagnie de spectacle\")\n",
"plt.legend()\n",
"\n",
"# Affichage du barplot\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 58,
"id": "c7348c95-e506-4002-90d9-d3b6768af985",
"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>number_company</th>\n",
" <th>y_has_purchased</th>\n",
" <th>gender_male</th>\n",
" <th>gender_female</th>\n",
" <th>gender_other</th>\n",
" <th>share_of_women</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10</td>\n",
" <td>0.0</td>\n",
" <td>0.171838</td>\n",
" <td>0.333929</td>\n",
" <td>0.494232</td>\n",
" <td>0.660243</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10</td>\n",
" <td>1.0</td>\n",
" <td>0.312165</td>\n",
" <td>0.683363</td>\n",
" <td>0.004472</td>\n",
" <td>0.686433</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>11</td>\n",
" <td>0.0</td>\n",
" <td>0.151162</td>\n",
" <td>0.273204</td>\n",
" <td>0.575635</td>\n",
" <td>0.643794</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>11</td>\n",
" <td>1.0</td>\n",
" <td>0.328477</td>\n",
" <td>0.597641</td>\n",
" <td>0.073881</td>\n",
" <td>0.645318</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>12</td>\n",
" <td>0.0</td>\n",
" <td>0.334546</td>\n",
" <td>0.433672</td>\n",
" <td>0.231782</td>\n",
" <td>0.564517</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>12</td>\n",
" <td>1.0</td>\n",
" <td>0.366020</td>\n",
" <td>0.506659</td>\n",
" <td>0.127321</td>\n",
" <td>0.580579</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>13</td>\n",
" <td>0.0</td>\n",
" <td>0.314243</td>\n",
" <td>0.503242</td>\n",
" <td>0.182515</td>\n",
" <td>0.615598</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>13</td>\n",
" <td>1.0</td>\n",
" <td>0.351721</td>\n",
" <td>0.504910</td>\n",
" <td>0.143369</td>\n",
" <td>0.589414</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>14</td>\n",
" <td>0.0</td>\n",
" <td>0.317971</td>\n",
" <td>0.296388</td>\n",
" <td>0.385641</td>\n",
" <td>0.482434</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>14</td>\n",
" <td>1.0</td>\n",
" <td>0.451289</td>\n",
" <td>0.485106</td>\n",
" <td>0.063605</td>\n",
" <td>0.518057</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" number_company y_has_purchased gender_male gender_female gender_other \\\n",
"0 10 0.0 0.171838 0.333929 0.494232 \n",
"1 10 1.0 0.312165 0.683363 0.004472 \n",
"2 11 0.0 0.151162 0.273204 0.575635 \n",
"3 11 1.0 0.328477 0.597641 0.073881 \n",
"4 12 0.0 0.334546 0.433672 0.231782 \n",
"5 12 1.0 0.366020 0.506659 0.127321 \n",
"6 13 0.0 0.314243 0.503242 0.182515 \n",
"7 13 1.0 0.351721 0.504910 0.143369 \n",
"8 14 0.0 0.317971 0.296388 0.385641 \n",
"9 14 1.0 0.451289 0.485106 0.063605 \n",
"\n",
" share_of_women \n",
"0 0.660243 \n",
"1 0.686433 \n",
"2 0.643794 \n",
"3 0.645318 \n",
"4 0.564517 \n",
"5 0.580579 \n",
"6 0.615598 \n",
"7 0.589414 \n",
"8 0.482434 \n",
"9 0.518057 "
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"company_genders = train_set_spectacle.groupby([\"number_company\", \"y_has_purchased\"])[[\"gender_male\", \"gender_female\", \"gender_other\"]].mean().reset_index()\n",
"company_genders[\"share_of_women\"] = company_genders[\"gender_female\"]/(1-company_genders[\"gender_other\"])\n",
"company_genders"
]
},
{
"cell_type": "code",
"execution_count": 59,
"id": "799db5a6-24e3-43e9-a5ff-c8a7168a2897",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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08cff3ze+SVBuXLl7FcfnnnmmQKXyfsD0NPTU3379lXfvn31zz//6LvvvtN//vMftWnTRnv27JG/v3+B619sPVdqKKj+MmXKaN++ffnm5f1PcVGd67zt/ve//73oSIeVK1fWpEmTJP37P+dffvmlkpKSlJ2drQkTJhS4Tt6obX/88cd5t+uO4y9oQJTMzEx5e3vbr2pNmzZN3bp1U3JyssNyf//9t8qWLWufDgsLs//xdrF9XKri6ONhYWHnPS/nynsvxo4dax/wxup8IdHV+jIzM1WxYkX79NmzZ3XgwAH7H+HO9l9n+uGFLF68WH/++aeWLl1qv4okKd8w4pe6n8s9p3nrHzx40KX9SgX/rpo2bZqaN2+u8ePHO7Sfb2CPwnSxzxlXPrMuJu98lZTfZbhyEJQAi7wvovXw8LC3nTx5Up9++qlL27nY/xyfq0WLFvryyy81e/Zsh9sYpk+f7rBc9erVFR8fr40bN+b7o+5ydOjQQcnJyQoLCzvvH/klgb+/v1q0aKENGzYoISHBfnXhYsqWLat7771Xe/fuVZ8+fbRr1658t0+5st6l1CBJAQEBatSokVJSUvTmm2/Kz89P0r+jg02bNk3XXHPNZd/GeT5t2rSRp6endu7ced5bcApSrVo1vfrqq5o5c6bWr19/weWqVq2qjz/+WH379rX/r/K53HH8KSkpeuONN+z/6XH06FF98803atasmf1n3Gaz5at37ty52rt3r6699lp7W2Jiot588039/PPPDv1nxowZhVZvcfTxFi1aaNSoUdq4caPD7XfWz5ubbrpJZcuW1c8//6xnn3320g/Kifo+++wzh9txv/zyS509e9Y+Wqiz/deZfiid/6pHXpiwrmcdWtrZ/Vhd7jnNu/V0586d+ea58jsnT0F9f9OmTVq5cqViYmJcru9SFfQ548pn1rnvZ97nyrl+++03SXLqcx84F0EJsGjfvr1Gjx6tLl266Mknn9SBAwf05ptvOv2LME+dOnW0dOlSffPNN4qKilJQUNB5r/Z069ZNb7/9trp166Zhw4YpPj5e8+bN04IFC/It+8EHH6hdu3Zq06aNevTooYoVK+rgwYPaunWr1q9fr6+++srlY+7Tp49mzpypW265RS+88IISEhKUm5ur3bt3a+HCherXr58aNWrk8naLwjvvvKObb75ZzZo109NPP63Y2FgdPXpUO3bs0DfffKPFixdLkjp27KjatWurQYMGqlChgn7//XeNGTNGlStXVnx8/Hm378x6ztZQkOHDh6tVq1Zq0aKF+vfvL29vb73//vv66aef9PnnnxfKFcqCxMbG6vXXX9crr7yi3377TW3btlW5cuX0119/ac2aNQoICNDgwYO1adMmPfvss7rvvvsUHx8vb29vLV68WJs2bdLLL798wX2899576tixoxo3bqwXXnhBlSpV0u7du7VgwQJ99tlnbjl+Dw8PtWrVSn379lVubq5GjhypI0eOOHw5ZYcOHTRlyhRdd911SkhI0Lp16/TGG2/ku62qT58++vjjj9WuXTu9/vrrioiI0PTp0/XLL79Icu1WoAsp6j6edxzt27fX0KFDFRERoc8++8x+HHkCAwM1duxYde/eXQcPHtS9996r8PBw7d+/Xxs3btT+/fvzXYk4lyv1paSkyNPTU61atdKWLVv02muvqW7duurcubMk5/uv5Fw/rFOnjv1cd+/eXV5eXqpevbqaNm2qcuXKqWfPnho0aJC8vLz02WefaePGjfmOz5n9WF3uOb3mmmtUpUoVrVq1Sr1793aYV6dOHc2YMUNffPGFqlSpIl9fX/txnk+HDh00ZMgQDRo0SImJidq2bZtef/11xcXFufw9S65w5nPGlfc87zhHjhypdu3aycPDw+E/GlatWmW/9RNwibtHkwCK0/mGB7f6+OOPTfXq1Y2Pj4+pUqWKGT58uJk0aVK+UZIKGkEuT3p6urnpppuMv7+/kVTgaETn+uOPP8w999xjAgMDTVBQkLnnnnvMihUrChz2e+PGjaZz584mPDzceHl5mcjISHPrrbeaCRMmXPQcnK/mY8eOmVdffdVUr17deHt724cnfuGFFxxGA5RknnnmGYd180bueuONNxza80Zb+uqrr+xtiYmJplatWk7Xdb79Pfroo6ZixYrGy8vLVKhQwTRt2tQMHTrUvsxbb71lmjZtasqXL2+8vb1NpUqVzGOPPWZ27dp1wfPj7HrO1FDQiGbGGLNs2TJz6623moCAAOPn52caN25svvnmG4dlztdX887pxYbqLmh4cGP+HaGwRYsWJjg42Pj4+JjKlSube++91z4s8V9//WV69OhhrrvuOhMQEGACAwNNQkKCefvtt83Zs2cvuE9jjFm5cqVp166dCQkJMT4+PqZq1ar5RjS7nOPPO679+/c7tHfv3t0EBATYp/PO/ciRI83gwYPNNddcY7y9vU39+vXNggULHNY9dOiQeeyxx0x4eLjx9/c3N998s1m2bJlJTEzM93P7008/mdtuu834+vqa0NBQ89hjj5mpU6fmGxHtfP28e/fupnLlyvnqtPaRouzjxhjz888/m1atWjkcx//+978C+1ZaWppp3769CQ0NNV5eXqZixYqmffv2Dj/XBXGmvrz3c926daZjx472z78HH3zQ/PXXX/m2ebH+m8eZfjhw4EATHR1typQp43DcK1asME2aNDH+/v6mQoUK5vHHHzfr168v8H262H4KGh78cs6pMca89tprply5cg7DXxtjzK5du0zr1q1NUFCQfch1Ywr+HM5z+vRp079/f1OxYkXj6+trrr/+ejNr1qx8/dSY8496dymfUa58zjjznp8+fdo8/vjjpkKFCsZms+U7582aNcs30iDgDJsxfPsWAKB02bVrl+Li4vTGG2+cd+CTwvLkk0/q888/14EDB1y6FRP/fvnr4MGDtX//fp4fcdKff/6puLg4ffLJJ7r//vvdXU6Jt3PnTsXHx2vBggVq1aqVu8vBFYZb7wAAcNLrr7+u6OhoValSRceOHdOcOXP00Ucf6dVXXyUkoVhER0erT58+GjZsmO67775Cu+WztBo6dKhatmxJSMIlISgBAOAkLy8vvfHGG/rjjz909uxZxcfHa/To0Xr++efdXRquIq+++qr8/f21d+/eYh104Upz9uxZVa1aVQMHDnR3KbhCcesdAAAAAFhwvRYAAAAALAhKAAAAAGBBUAIAAAAAi1I/mENubq7+/PNPBQUFFdkXOQIAAAAo+YwxOnr0qKKjoy86amSpD0p//vknI8IAAAAAsNuzZ4+uueaaCy5T6oNSUFCQpH9PRnBwsJurAQAAAOAuR44cUUxMjD0jXEipD0p5t9sFBwcTlAAAAAA49UgOgzkAAAAAgAVBCQAAAAAsCEoAAAAAYFHqn1ECAAAo6YwxOnv2rHJyctxdCnBF8/DwkKenZ6F8LRBBCQAAwI2ys7O1b98+nThxwt2lAKWCv7+/oqKi5O3tfVnbISgBAAC4SW5urjIyMuTh4aHo6Gh5e3sXyv+EA1cjY4yys7O1f/9+ZWRkKD4+/qJfKnshbg1KsbGx+v333/O19+rVS++9956MMRo8eLAmTpyoQ4cOqVGjRnrvvfdUq1YtN1QLAABQuLKzs5Wbm6uYmBj5+/u7uxzgiufn5ycvLy/9/vvvys7Olq+v7yVvy62DOaxdu1b79u2zv1JTUyVJ9913nyRp1KhRGj16tMaNG6e1a9cqMjJSrVq10tGjR91ZNgAAQKG6nP/1BuCosH6e3PpTWaFCBUVGRtpfc+bMUdWqVZWYmChjjMaMGaNXXnlFnTp1Uu3atTV16lSdOHFC06dPd2fZAAAAAEq5EvPfF9nZ2Zo2bZoeffRR2Ww2ZWRkKDMzU61bt7Yv4+Pjo8TERK1YseK82zl9+rSOHDni8AIAAAAAV5SYwRxmzZqlf/75Rz169JAkZWZmSpIiIiIclouIiCjwuaY8w4cP1+DBg4usTgAAgOIQ+/LcYt3frhHti3V/V7IePXron3/+0axZs9xdCopQibmiNGnSJLVr107R0dEO7daRX4wxFxwNZuDAgTp8+LD9tWfPniKpFwAAALhUS5culc1m0z///OPuUnAeJeKK0u+//67vvvtOKSkp9rbIyEhJ/15ZioqKsrdnZWXlu8p0Lh8fH/n4+BRdsQAAAABKvRJxRWny5MkKDw9X+/b/d8k3Li5OkZGR9pHwpH+fY0pLS1PTpk3dUSYAAAD+f/Pnz9fNN9+ssmXLKiwsTB06dNDOnTvt8wu6YpKeni6bzaZdu3bZ23744QclJibK399f5cqVU5s2bXTo0CFJ/36VzJgxYxz2W69ePSUlJdmnbTabPvroI919993y9/dXfHy8Zs+efcHap02bpgYNGigoKEiRkZHq0qWLsrKyHJbZsmWL2rdvr+DgYAUFBalZs2YOxydJb775pqKiohQWFqZnnnlGZ86ccWofu3btUosWLSRJ5cqVk81msz9+gpLD7UEpNzdXkydPVvfu3eXp+X8XuGw2m/r06aPk5GR9/fXX+umnn9SjRw/5+/urS5cubqwYAAAAx48fV9++fbV27VotWrRIZcqU0d13363c3Fynt5Genq6WLVuqVq1aWrlypZYvX66OHTsqJyfHpVoGDx6szp07a9OmTbr99tvVtWtXHTx48LzLZ2dna8iQIdq4caNmzZqljIwMh6Cyd+9e3XLLLfL19dXixYu1bt06Pfroozp79qx9mSVLlmjnzp1asmSJpk6dqilTpmjKlClO7SMmJkYzZ86UJG3btk379u3TO++849Ixo+i5/da77777Trt379ajjz6ab96AAQN08uRJ9erVy/6FswsXLlRQUJAbKgUAAECee+65x2F60qRJCg8P188//6zatWs7tY1Ro0apQYMGev/99+1ttWrVcrmWHj166MEHH5QkJScna+zYsVqzZo3atm1b4PLn/t1ZpUoVvfvuu2rYsKGOHTumwMBAvffeewoJCdGMGTPk5eUlSapWrZrDNsqVK6dx48bJw8ND1113ndq3b69FixbpiSeecGofoaGhkqTw8HCVLVvW5WNG0XP7FaXWrVvLGJOv80n/XlVKSkrSvn37dOrUKaWlpTn9gwcAAICis3PnTnXp0kVVqlRRcHCw4uLiJEm7d+92eht5V5QuV0JCgv3fAQEBCgoKyncr3bk2bNigO++8U5UrV1ZQUJCaN28u6f9qT09PV7NmzewhqSC1atWSh4eHfToqKsphnxfbB0o+twclAAAAXHk6duyoAwcO6MMPP9Tq1au1evVqSf/eciZJZcr8+2emMca+zrnP8EiSn5/fBfdRpkwZh/UL2oakfIHGZrOd9xbA48ePq3Xr1goMDNS0adO0du1aff311w61X6yui+3TmX2g5CMoAQAAwCUHDhzQ1q1b9eqrr6ply5aqUaOGfQCGPBUqVJAk7du3z96Wnp7usExCQoIWLVp03v1UqFDBYf0jR44oIyPjsmr/5Zdf9Pfff2vEiBFq1qyZrrvuunxXnxISErRs2bICQ1lh7cPb21uSXH4eC8XH7c8ooRRICnF3BYUr6bC7KwAAoEQrV66cwsLCNHHiREVFRWn37t16+eWXHZa59tprFRMTo6SkJA0dOlTbt2/XW2+95bDMwIEDVadOHfXq1Us9e/aUt7e3lixZovvuu0/ly5fXrbfeqilTpqhjx44qV66cXnvtNYfb3S5FpUqV5O3trbFjx6pnz5766aefNGTIEIdlnn32WY0dO1YPPPCABg4cqJCQEK1atUoNGzZU9erVC2UflStXls1m05w5c3T77bfLz89PgYGBl3VsKFwEJQAAgBJo14j2F1/ITcqUKaMZM2aod+/eql27tqpXr653333X/hyO9O+taZ9//rmefvpp1a1bVzfeeKOGDh2q++67z75MtWrVtHDhQv3nP/9Rw4YN5efnp0aNGtkHZhg4cKB+++03dejQQSEhIRoyZMhlX1GqUKGCpkyZov/85z969913df311+vNN9/UHXfcYV8mLCxMixcv1osvvqjExER5eHioXr16uummmwptHxUrVtTgwYP18ssv65FHHlG3bt0cRs2D+9mM9cbPUubIkSMKCQnR4cOHFRwc7O5ySieuKAEAcElOnTqljIwMxcXFydfX193lAKXChX6uXMkGPKMEAAAAABYEJQAAAACwICgBAAAAgAVBCQAAAAAsCEoAAAAAYEFQAgAAAAALghIAAAAAWBCUAAAAAMCCoAQAAADgvLKzs5WcnKytW7e6u5RiRVACAABAsUtKSlK9evXctv+lS5fKZrPpn3/+cVsNl6JHjx666667inWf/fv31+bNm3XddddddNnCqK+kvDeebt07AAAACpYUUsz7O1y8+ysEu3btUlxcnDZs2ODW0FUYkpKSNGvWLKWnp7u7FAczZ87UTz/9pPnz58tms110+XfeeUfGmGKorOhxRQkAAAC4BNnZ2e4uocjdc889Wrx4sby9vS+4XE5OjnJzcxUSEqKyZcsWT3FFjKAEAAAAl82fP18333yzypYtq7CwMHXo0EE7d+50WOaPP/7QAw88oNDQUAUEBKhBgwZavXq1wzKffvqpYmNjFRISogceeEBHjx51eh9xcXGSpPr168tms6l58+bnrXfevHmqVq2a/Pz81KJFC+3atcthfkG3Ao4ZM0axsbH26bzbyoYPH67o6GhVq1ZNkjRt2jQ1aNBAQUFBioyMVJcuXZSVlWVfL+9WskWLFqlBgwby9/dX06ZNtW3bNknSlClTNHjwYG3cuFE2m002m01Tpkw577Gcy5n3wap58+Z69tln9eyzz9rXe/XVVx2uBGVnZ2vAgAGqWLGiAgIC1KhRIy1dutQ+f8qUKSpbtqzmzJmjmjVrysfHR7///nu+W+9Onz6t3r17Kzw8XL6+vrr55pu1du1ah3ou9t5I0ooVK3TLLbfIz89PMTEx6t27t44fP+7UObpUBCUAAAC47Pjx4+rbt6/Wrl2rRYsWqUyZMrr77ruVm5srSTp27JgSExP1559/avbs2dq4caMGDBhgny9JO3fu1KxZszRnzhzNmTNHaWlpGjFihNP7WLNmjSTpu+++0759+5SSklJgrXv27FGnTp10++23Kz09XY8//rhefvnlSzruRYsWaevWrUpNTdWcOXMk/RsqhgwZoo0bN2rWrFnKyMhQ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ITg569ixY+ratas+/PBDlStXzt5ujNGYMWP0yiuvqFOnTqpdu7amTp2qEydOaPr06S7vBwAAAACc5XJQuvHGGzV37lz7dF44+vDDD9WkSROXC3jmmWfUvn173XbbbQ7tGRkZyszMtH9PkyT5+PgoMTFRK1asOO/2Tp8+rSNHjji8AAAAAMAVLo96N3z4cLVt21Y///yzzp49q3feeUdbtmzRypUrlZaW5tK2ZsyYofXr12vt2rX55mVmZkqSIiIiHNojIiL0+++/X7C+wYMHu1QHAAAAAJzL5StKTZs21Q8//KATJ06oatWqWrhwoSIiIrRy5UrdcMMNTm9nz549ev755zVt2jSHQSGsrLfzGWMueIvfwIEDdfjwYftrz549TtcEAAAAANIlfo9SnTp1NHXq1Mva8bp165SVleUQrnJycvT9999r3Lhx2rZtm6R/ryxFRUXZl8nKysp3lelcPj4+8vHxuazaAAAAAFzdLikoSf8GlqysLOXm5jq0W0euO5+WLVtq8+bNDm2PPPKIrrvuOr300kuqUqWKIiMjlZqaqvr160uSsrOzlZaWppEjR15q2QAAAABwUS4HpXXr1ql79+7aunWrjDEO82w2m3JycpzaTlBQkGrXru3QFhAQoLCwMHt7nz59lJycrPj4eMXHxys5OVn+/v7q0qWLq2UDAAAAgNNcDkqPPPKIqlWrpkmTJikiIuKShgR31oABA3Ty5En16tVLhw4dUqNGjbRw4UIFBQUV2T4BAAAAwOWglJGRoZSUFF177bWFXszSpUsdpm02m5KSkpSUlFTo+wIAAACA83F51LuWLVtq48aNRVELAAAAAJQILl9R+uijj9S9e3f99NNPql27try8vBzm33HHHYVWHAAAAAC4g8tBacWKFVq+fLm+/fbbfPNcGcwBAAAAAEoql2+96927tx5++GHt27dPubm5Di9CEgAAAIDSwOWgdODAAb3wwgsX/NJXAAAAALiSuRyUOnXqpCVLlhRFLQAAAABQIrj8jFK1atU0cOBALV++XHXq1Mk3mEPv3r0LrTgAAAAAcIdLGvUuMDBQaWlpSktLc5hns9kISgAAAACueJf0hbMAAAAAUJq5/IwSAAAAAJR2Ll9RMsbov//9r5YsWaKsrCzl5uY6zE9JSSm04gAAAADAHVwOSs8//7wmTpyoFi1aKCIiQjabrSjqAgAAAAC3cTkoTZs2TSkpKbr99tuLoh4AAAAAcDuXn1EKCQlRlSpViqIWAAAAACgRXA5KSUlJGjx4sE6ePFkU9QAAAACA27l86919992nzz//XOHh4YqNjc33hbPr168vtOIAAAAAwB1cDko9evTQunXr9NBDDzGYAwAAAIBSyeWgNHfuXC1YsEA333xzUdQDAAAAAG7n8jNKMTExCg4OLopaAAAAAKBEcDkovfXWWxowYIB27dpVBOUAAAAAgPu5fOvdQw89pBMnTqhq1ary9/fPN5jDwYMHC604AAAAAHAHl4PSmDFjiqAMAAAAACg5XA5K3bt3L4o6AAAAAKDEcPkZJUnauXOnXn31VT344IPKysqSJM2fP19btmwp1OIAAAAAwB1cDkppaWmqU6eOVq9erZSUFB07dkyStGnTJg0aNKjQCwQAAACA4uZyUHr55Zc1dOhQpaamytvb297eokULrVy5slCLAwAAAAB3cDkobd68WXfffXe+9goVKujAgQOFUhQAAAAAuJPLQals2bLat29fvvYNGzaoYsWKhVIUAAAAALiTy0GpS5cueumll5SZmSmbzabc3Fz98MMP6t+/v7p161YUNQIAAABAsXI5KA0bNkyVKlVSxYoVdezYMdWsWVO33HKLmjZtqldffbUoagQAAACAYuXU9ygdOXJEwcHBkiQvLy999tlnGjJkiNavX6/c3FzVr19f8fHxRVooAAAAABQXp4JSuXLltG/fPoWHh+vWW29VSkqKqlSpoipVqhR1fQAAAABQ7Jy69S4wMNA+ot3SpUt15syZIi0KAAAAANzJqStKt912m1q0aKEaNWpIku6++26H71A61+LFiwuvOgAAAABwA6eC0rRp0zR16lTt3LlTaWlpqlWrlvz9/Yu6NgAAAABwC6eCkp+fn3r27ClJ+vHHHzVy5EiVLVu2KOsCAAAAALdxKiida8mSJUVRBwAAAACUGC5/jxIAAAAAlHYEJQAAAACwICgBAAAAgAVBCQAAAAAsLikoLVu2TA899JCaNGmivXv3SpI+/fRTLV++vFCLAwAAAAB3cDkozZw5U23atJGfn582bNig06dPS5KOHj2q5OTkQi8QAAAAAIqby0Fp6NChmjBhgj788EN5eXnZ25s2bar169cXanEAAAAA4A4uB6Vt27bplltuydceHBysf/75pzBqAgAAAAC3cjkoRUVFaceOHfnaly9fripVqhRKUQAAAADgTi4HpaeeekrPP/+8Vq9eLZvNpj///FOfffaZ+vfvr169ehVFjQAAAABQrDxdXWHAgAE6fPiwWrRooVOnTumWW26Rj4+P+vfvr2effbYoagQAAACAYuVyUJKkYcOG6ZVXXtHPP/+s3Nxc1axZU4GBgYVdGwAAAAC4xSUFJUny9/dXgwYNCrMWAAAAACgRnApKnTp1cnqDKSkpl1wMAAAAAJQETg3mEBISYn8FBwdr0aJF+vHHH+3z161bp0WLFikkJKTICgUAAACA4uLUFaXJkyfb//3SSy+pc+fOmjBhgjw8PCRJOTk56tWrl4KDg4umSgAAAAAoRi4PD/7xxx+rf//+9pAkSR4eHurbt68+/vjjQi0OAAAAANzB5aB09uxZbd26NV/71q1blZub69K2xo8fr4SEBAUHBys4OFhNmjTRt99+a59vjFFSUpKio6Pl5+en5s2ba8uWLa6WDAAAAAAucXnUu0ceeUSPPvqoduzYocaNG0uSVq1apREjRuiRRx5xaVvXXHONRowYoWuvvVaSNHXqVN15553asGGDatWqpVGjRmn06NGaMmWKqlWrpqFDh6pVq1batm2bgoKCXC0dAAAAAJziclB68803FRkZqbffflv79u2TJEVFRWnAgAHq16+fS9vq2LGjw/SwYcM0fvx4rVq1SjVr1tSYMWP0yiuv2Efdmzp1qiIiIjR9+nQ99dRTBW7z9OnTOn36tH36yJEjLtUEAAAAAC7felemTBkNGDBAe/fu1T///KN//vlHe/fu1YABAxyeW3JVTk6OZsyYoePHj6tJkybKyMhQZmamWrdubV/Gx8dHiYmJWrFixXm3M3z4cIdR+mJiYi65JgAAAABXJ5eD0rnyni26HJs3b1ZgYKB8fHzUs2dPff3116pZs6YyMzMlSREREQ7LR0RE2OcVZODAgTp8+LD9tWfPnsuqDwAAAMDVx+Vb7wpb9erVlZ6ern/++UczZ85U9+7dlZaWZp9vs9kcljfG5Gs7l4+Pj3x8fIqsXgAAAACl32VdUSoM3t7euvbaa9WgQQMNHz5cdevW1TvvvKPIyEhJynf1KCsrK99VJgAAAAAoTG4PSlbGGJ0+fVpxcXGKjIxUamqqfV52drbS0tLUtGlTN1YIAAAAoLRzOSh98sknDqPK5cnOztYnn3zi0rb+85//aNmyZdq1a5c2b96sV155RUuXLlXXrl1ls9nUp08fJScn6+uvv9ZPP/2kHj16yN/fX126dHG1bAAAAABw2iV9j1Lbtm0VHh7u0H706FE98sgj6tatm9Pb+uuvv/Twww9r3759CgkJUUJCgubPn69WrVpJkgYMGKCTJ0+qV69eOnTokBo1aqSFCxfyHUoAAAAAipTLQel8gyn88ccfCgkJcWlbkyZNuuB8m82mpKQkJSUlubRdAAAAALgcTgel+vXry2azyWazqWXLlvL0/L9Vc3JylJGRobZt2xZJkQAAAABQnJwOSnfddZckKT09XW3atFFgYKB9nre3t2JjY3XPPfcUeoEAAAAAUNycDkqDBg1STk6OKleurDZt2igqKqoo6wIAAAAAt3Fp1DsPDw/17NlTp06dKqp6AAAAAMDtXB4evE6dOvrtt9+KohYAAAAAKBFcDkrDhg1T//79NWfOHO3bt09HjhxxeAEAAADAlc7l4cHzRra74447HIYJzxs2PCcnp/CqAwAAAAA3cDkoLVmypCjqAAAAAIASw+WglJiYWBR1AAAAAECJ4XJQynPixAnt3r1b2dnZDu0JCQmXXRQAAAAAuJPLQWn//v165JFH9O233xY4n2eUAAAAAFzpXB71rk+fPjp06JBWrVolPz8/zZ8/X1OnTlV8fLxmz55dFDUCAAAAQLFy+YrS4sWL9b///U833nijypQpo8qVK6tVq1YKDg7W8OHD1b59+6KoEwAAAACKjctXlI4fP67w8HBJUmhoqPbv3y/p3y+iXb9+feFWBwAAAABu4HJQql69urZt2yZJqlevnj744APt3btXEyZMUFRUVKEXCAAAAADFzeVb7/r06aM///xTkjRo0CC1adNGn332mby9vTVlypTCrg8AAAAAip3LQalr1672f9evX1+7du3SL7/8okqVKql8+fKFWhwAAAAAuIPTt96dOHFCzzzzjCpWrKjw8HB16dJFf//9t/z9/XX99dcTkgAAAACUGk4HpUGDBmnKlClq3769HnjgAaWmpurpp58uytoAAAAAwC2cvvUuJSVFkyZN0gMPPCBJeuihh3TTTTcpJydHHh4eRVYgAAAAABQ3p68o7dmzR82aNbNPN2zYUJ6envaBHQAAAACgtHA6KOXk5Mjb29uhzdPTU2fPni30ogAA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l7Heepedna0BAwaoYsWKCggIUKNGjbR06dILnkMAKM0ISgBwBfLw8FBycrLGjh2rP/7447K2tXjxYv3555/6/vvvNXr0aCUlJalDhw4qV66cVq9erZ49e6pnz57as2ePJOnEiRNq0aKFAgMD9f3332v58uUKDAxU27ZtHa4cLVq0SFu3blVqaqrmzJmjEydOqG3btipXrpzWrl2rr776St99952effbZ89a2Z88ederUSbfffrvS09P1+OOP6+WXX3ZYZvPmzWrTpo06deqkTZs26YsvvtDy5csvuN25c+eqU6dOat++vTZs2KBFixapQYMG9vk9evTQjz/+qNmzZ2vlypUyxuj222/XmTNn7MucOHFC7777rmbMmKH58+dr6dKl6tSpk+bNm6d58+bp008/1cSJE/Xf//7XYd9vvPGGEhIStH79eg0cOFAvvPCCUlNT7fPLlCmjd999Vz/99JOmTp2qxYsXa8CAAfb5P/zwg3r27Knnn39e6enpatWqlYYNG5bvGHfu3KlZs2Zpzpw5mjNnjtLS0vLdrnmuRx55RD/88INmzJihTZs26b777lPbtm0dAiIAXFUMAOCK0r17d3PnnXcaY4xp3LixefTRR40xxnz99dfm3I/1QYMGmbp16zqs+/bbb5vKlSs7bKty5comJyfH3la9enXTrFkz+/TZs2dNQECA+fzzz40xxkyaNMlUr17d5Obm2pc5ffq08fPzMwsWLLBvNyIiwpw+fdq+zMSJE025cuXMsWPH7G1z5841ZcqUMZmZmQUe68CBA02NGjUc9vXSSy8ZSebQoUPGGGMefvhh8+STTzqst2zZMlOmTBlz8uTJArfbpEkT07Vr1wLn/frrr0aS+eGHH+xtf//9t/Hz8zNffvmlMcaYyZMnG0lmx44d9mWeeuop4+/vb44ePWpva9OmjXnqqafs05UrVzZt27Z12N/9999v2rVrV2Atxhjz5ZdfmrCwMIfl27dv77BM165dTUhIiH160KBBxt/f3xw5csTe9uKLL5pGjRrZpxMTE83zzz9vjDFmx44dxmazmb179zpst2XLlmbgwIHnrQ0ASjOuKAHAFWzkyJGaOnWqfv7550veRq1atVSmzP/9OoiIiFCdOnXs0x4eHgoLC1NWVpYkad26ddqxY4eCgoIUGBiowMBAhYaG6tSpU9q5c6d9vTp16sjb29s+vXXrVtWtW1cBAQH2tptuukm5ubnatm1bgbVt3bpVjRs3dhikokmTJg7LrFu3TlOmTLHXEhgYqDZt2ig3N1cZGRkFbjc9PV0tW7Y87z49PT3VqFEje1tYWJiqV6+urVu32tv8/f1VtWpVh/MWGxurwMBAh7a883a++ps0aeKw3SVLlqhVq1aqWLGigoKC1K1bNx04cMB+K+G2bdvUsGFDh21Yp6V/b/M79xmkqKiofLXkWb9+vYwxqlatmsN5TEtLc3hPAeBq4unuAgAAl+6WW25RmzZt9J///Ec9evRwmFemTBkZYxzazr11LI+Xl5fDtM1mK7AtNzdXkpSbm6sbbrhBn332Wb5tVahQwf7vcwORJBljzjsq3/narfUXJDc3V0899ZR69+6db16lSpUKXMfPz++82zvfPq31u3reLiRvu7///rtuv/129ezZU0OGDFFoaKiWL1+uxx57zP7eFXQeC6rZlVpyc3Pl4eGhdevWycPDw2HeucEPAK4mBCUAuMKNGDFC9erVsw+YkKdChQrKzMx0+MM6PT39svd3/fXX64svvlB4eLiCg4OdXq9mzZqaOnWqjh8/bg9RP/zwg8qUKZOv9nPXmTVrlkPbqlWr8tWzZcsWXXvttU7XkpCQoEWLFumRRx4pcJ9nz57V6tWr1bRpU0nSgQMH9Ouvv6pGjRpO7+N8rPWvWrVK1113nSTpxx9/1NmzZ/XWW2/Zr/J9+eWXDstfd911WrNmjUPbjz/+eFk11a9fXzk5OcrKylKzZs0ua1sAUFpw6x0AXOHq1Kmjrl275hs9rXnz5tq/f79GjRqlnTt36r333tO333572fvr2rWrypcvrzvvvFPLli1TRkaG0tLS9Pzzz19wYImuXbvK19dX3bt3108//aQlS5boueee08MPP6yIiIgC1+nZs6d27typvn37atu2bZo+fbqmTJnisMxLL72klStX6plnnlF6erq2b9+u2bNn67nnnjtvLYMGDdLnn3+uQYMGaevWrdq8ebNGjRolSYqPj9edd96pJ554QsuXL9fGjRv10EMPqWLFirrzzjtdP2EWP/zwg0aNGqVff/1V7733nr766is9//zzkqSqVavq7NmzGjt2rH777Td9+umnmjBhgsP6zz33nObNm6fRo0dr+/bt+uCDD/Ttt99e1ndoVatWTV27dlW3bt2UkpKijIwMrV27ViNHjtS8efMu63gB4EpFUAKAUmDIkCH5br+qUaOG3n//fb333nuqW7eu1qxZo/79+1/2vvz9/fX999+rUqVK6tSpk2rUqKFHH31UJ0+evOAVJn9/fy1YsEAHDx7UjTfeqHvvvVctW7bUuHHjzrtOpUqVNHPmTH3zzTeqW7euJkyYoOTkZIdlEhISlJaWpu3bt6tZs2aqX7++XnvtNUVFRZ13u82bN9dXX32l2bNnq169err11lu1evVq+/zJkyfrhhtuUIcOHdSkSRMZYzRv3rx8t7Ndin79+mndunWqX7++hgwZorfeektt2rSRJNWrV0+jR4/WyJEjVbt2bX322Wf5hoC/6aabNGHCBI0ePVp169bV/Pnz9cILL8jX1/ey6po8ebK6deumfv36qXr16rrjjju0evVqxcTEXNZ2AeBKZTPO3AAOAAAuW2xsrPr06ePw/UWF4YknntAvv/yiZcuWFep2AeBqxjNKAABcYd588021atVKAQEB+vbbbzV16lS9//777i4LAEoVghIAAFeYNWvWaNSoUTp69KiqVKmid999V48//ri7ywKAUoVb7wAAAADAgsEcAAAAAMCCoAQAAAAAFgQlAAAAALAgKAEAAACABUEJAAAAACwISgAAAABgQVACAAAAAAuCEgAAAABY/H+p6RTzLCL8LgAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Création du barplot groupé\n",
"fig, ax = plt.subplots(figsize=(10, 6))\n",
"\n",
"categories = company_genders[\"number_company\"].unique()\n",
"bar_width = 0.35\n",
"bar_positions = np.arange(len(categories))\n",
"\n",
"# Grouper les données par label et créer les barres groupées\n",
"for label in company_genders[\"y_has_purchased\"].unique():\n",
" label_data = company_genders[df_graph['y_has_purchased'] == label]\n",
" values = [label_data[label_data['number_company'] == category]['share_of_women'].values[0]*100 for category in categories]\n",
"\n",
" label_printed = \"achat durant la période\" if label else \"aucun achat\"\n",
" ax.bar(bar_positions, values, bar_width, label=label_printed)\n",
"\n",
" # Mise à jour des positions des barres pour le prochain groupe\n",
" bar_positions = [pos + bar_width for pos in bar_positions]\n",
"\n",
"# Ajout des étiquettes, de la légende, etc.\n",
"ax.set_xlabel('Numero de compagnie')\n",
"ax.set_ylabel('Part de femmes (%)')\n",
"ax.set_title('Part de femmes selon les compagnies de spectacle (train set)')\n",
"ax.set_xticks([pos + bar_width / 2 for pos in np.arange(len(categories))])\n",
"ax.set_xticklabels(categories)\n",
"ax.legend()\n",
"\n",
"# Affichage du plot - la proportion de femmes est la même selon qu'il y ait achat sur la période ou non\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 144,
"id": "ed6374e5-f36c-4f8e-9dba-602715b726f1",
"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>number_compagny</th>\n",
" <th>country_fr</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10</td>\n",
" <td>0.996136</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>11</td>\n",
" <td>0.994838</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>12</td>\n",
" <td>0.002119</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>13</td>\n",
" <td>0.831795</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>14</td>\n",
" <td>0.993978</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" number_compagny country_fr\n",
"0 10 0.996136\n",
"1 11 0.994838\n",
"2 12 0.002119\n",
"3 13 0.831795\n",
"4 14 0.993978"
]
},
"execution_count": 144,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# pays d'origine (France VS reste du monde)\n",
"\n",
"company_country_fr = customerplus_clean_spectacle.groupby(\"number_compagny\")[\"country_fr\"].mean().reset_index()\n",
"company_country_fr"
]
},
{
"cell_type": "code",
"execution_count": 147,
"id": "8d95cdd9-2ab3-4c9a-8442-bb9b98e0dd18",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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w0Nt27bNdHsfe+wxFStWzPrc19dXpUqVuuN+n9P98V7t9868L2///KtVq5YiIiKsr8G6deuUnJysLl262NSRnp6upk2batOmTbp06ZIuX76sNWvWqG3bttm+BtCRvxvZXU9Ox/RuOC11B+3bt9c777yjYcOG2R2+laSEhATVrVtXpUuX1vvvv6/IyEj5+vpq48aN6tOnj65cuZKt9Z45c0aFCxe2aw8PD7dOv1VISIjN84xDgBnrT09PV+PGjXX8+HENHz5cFSpUkL+/v9LT01WjRo1s15mZkydPaunSpVme5rrTmzpju8LCwmzavby87LbR0fV06tRJN27c0KeffqrWrVsrPT1djz/+uMaMGaOYmJgsazl9+rTCw8NzdPu6dHObbty4oQ8++EAffPDBHWvNcLfX806yu71nzpxRaGioXfvtr8XJkyclSYMGDdKgQYMc2p5bOTOut4+DdHMsbh2HAQMG6KOPPtKQIUMUHR2tAgUKyMPDQz169LDpd+bMGUVFRdkt7/btc8bJkyd18ODBbO3rp0+flqQ73kiQ8X7I6rMgPT1dZ8+elZ+fn7U9ODjYpp+3t7f8/Pzk6+tr156SkmK33MzGIywszObmig4dOmjVqlUaPny4Hn/8cQUGBspiseipp56yG/PM9qnM2iTHXu/b5XR/vFf7vTPvy6xeg4z9IaOW5557Lsv1JScny8PDQ2lpadm+WcXRvxtnz57N1npyOqZ3Q7i5A4vFogkTJigmJkaffPKJ3fTFixfr0qVLWrRokTXNStL27dtztN6QkBAlJibatR8/flySbP4n5Ijdu3drx44dio2NVZcuXaztBw8ezFGdmSlYsKAqVqyosWPHZjo9I6BlJuPD7cSJEypSpIi1/caNG3aBzpn1dOvWTd26ddOlS5f0888/a+TIkXr66ad14MABm9ftVg899JB++eUXpaen5yjgFChQQJ6enurUqZP69OmTaZ/M/ujmRHa2NyQkJNMLt2+/sDJj3xs6dGimgV+S9TqXzLhqXDNkXHswbtw4m/akpCSbu/RCQkIyvUg0szZfX99ML4JMSkqyee8VLFhQefPmtbvo9dbpWcn4H+7Ro0ez7JPxfsjqs8DDw0MFChTIcv7syGqMMmo5f/68li1bppEjR+r111+39klNTVVycrLNfCEhIdY/YHdbR3bldH+8V/u95Pj7MqvXoESJEja1fPDBB6pRo0am6woNDVVaWpo8PT3vuI/diaN/N4KDg7O1HleM6Z0Qbu6iUaNGiomJ0ejRo+1OE2Ucvr31YinDMPTpp5/aLedu/wO5VcOGDfXNN9/o+PHjNn+k586dKz8/vyx36KxkVqckffzxx04t51ZZbc/TTz+t5cuX65FHHnH6gzfjTpR58+apatWq1vavvvrK7g6o7KzH399fzZo107Vr1/SPf/xDv//+e5Z/7Js1a6Yvv/xSsbGxOTo15efnp/r162vbtm2qWLGivL29s72sWzmyPzmzvfXr19dXX32lJUuW2Byi/+KLL2z6lS5dWiVLltSOHTvsAoUjXDWuGSwWi91+/d133+nYsWPWPwbSze2bOHGiduzYYXNq6vbtk27eubNz506btgMHDmj//v02geXpp5/WuHHjFBIS4nRArVWrloKCgjR9+nS1b98+01NTpUuXVpEiRfTFF19o0KBB1j6XLl3SwoULrXdQudKXX36pAQMGWNcVHx+vdevWqXPnzpJujrdhGHZjPmPGDKWlpdm0RUdHa/ny5TahMD09XQsWLHBZvTndH+/Vfn+ru70v582bp9atW1ufr1u3TvHx8dbvQqtdu7by58+vPXv23PWC+OjoaC1YsEBjx47NMmxndWTY0b8bGXfV3W09t3PlmGaGcOOACRMmqGrVqjp16pQeffRRa3tMTIy8vb31/PPPa/Dgwbp69aqmTZums2fP2i2jQoUKWrRokaZNm6aqVavKw8ND1apVy3R9I0eOtF5TMmLECAUHB2vevHn67rvvNHHiRAUFBTlVf5kyZfTII4/o9ddfl2EYCg4O1tKlSxUXF+fcQNy2PT/99JOWLl2qwoULKyAgQKVLl9bo0aMVFxenWrVqqW/fvipdurSuXr2qw4cPa/ny5Zo+fXqWhy/Lli2rF154QZMnT1aePHnUqFEj7d69W++8847d91o4up6XXnpJefPmVe3atVW4cGGdOHFC48ePV1BQkB5//PEst+/555/X7Nmz1atXL+3fv1/169dXenq6fvvtN5UtW1bt27d3eKzef/991alTR3Xr1tXLL7+syMhIXbhwQQcPHtTSpUv1448/OrysDFntT9nd3s6dO+u9995T586dNXbsWJUsWVLLly/XihUr7Pp+/PHHatasmZo0aaKuXbuqSJEiSk5O1t69e7V169Y7/vFy5bhKNwNGbGysypQpo4oVK2rLli36z3/+Y7eP9evXT7NmzVLz5s01ZswY691S+/bts1tmp06d9MILL6h3795q3bq14uPjNXHiRLvrCfr166eFCxfqySefVP/+/VWxYkWlp6crISFBK1eu1MCBA1W9evVM686XL5/effdd9ejRQ40aNbJ+k/fBgwe1Y8cOffjhh/Lw8NDEiRPVsWNHPf300+rZs6dSU1P1n//8R+fOndPbb7/t1Fg54tSpU3rmmWf00ksv6fz58xo5cqR8fX01dOhQSTfvinzyySf1n//8RwULFlRkZKTWrFmjmTNn2n2f1bBhw7R06VI1bNhQw4YNU968eTV9+nTrbfKuOHIn5Wx/vFf7vTPvy82bN6tHjx5q06aNjhw5omHDhqlIkSLq3bu3pJv7zgcffKAuXbooOTlZzz33nAoVKqTTp09rx44dOn36tKZNmyZJ1jubqlevrtdff10lSpTQyZMntWTJEn388ccKCAiwfuv+J598ooCAAPn6+ioqKsqpvxuOrMfVr91dZftSZBO69W6p23Xo0MGQZHe31NKlS41KlSoZvr6+RpEiRYzXXnvN+N///md3VXhycrLx3HPPGfnz5zcsFotx69DrtrulDMMwdu3aZbRo0cIICgoyvL29jUqVKtlcuW8Y/3/1+YIFC2zaM7tjZ8+ePUZMTIwREBBgFChQwGjTpo2RkJBgt25H75bavn27Ubt2bcPPz8+QZHMXyenTp42+ffsaUVFRRp48eYzg4GCjatWqxrBhw4yLFy/aje2tUlNTjYEDBxqFChUyfH19jRo1ahjr16/P9A4WR9YzZ84co379+kZoaKjh7e1thIeHG23btjV27tx5xzoM4+bdGiNGjDBKlixpeHt7GyEhIUaDBg2MdevWWfs4crdURvuLL75oFClSxMiTJ4/x0EMPGbVq1bLeAWEYzr2eWe1POdneo0ePGq1btzby5ctnBAQEGK1btzbWrVuX6fbs2LHDaNu2rVGoUCEjT548RlhYmNGgQQNj+vTpd12PI+MqyejTp4/dvLeP99mzZ43u3bsbhQoVMvz8/Iw6deoYa9eutbuzyTD+/z3g6+trBAcHG927dze+/fZbu/dqenq6MXHiRKN48eKGr6+vUa1aNePHH3/MdJkXL1403nzzTaN06dKGt7e3ERQUZFSoUMHo37+/ceLEibuOxfLly43o6GjD39/f8PPzM8qVK2dMmDDBps/ixYuN6tWrG76+voa/v7/RsGFD49dff7Xpk3G31K13JhnGzfeuv7+/3Xpvv/MzY9/77LPPjL59+xoPPfSQ4ePjY9StW9fYvHmzzbwZ+0mBAgWMgIAAo2nTpsbu3bszfY+uXbvWqF69uuHj42OEhYUZr732mjFhwgRDkvWuT8O4+bo2b9480zpvHfPM7rgxjJztj/div3fkfZnx2bty5UqjU6dORv78+Y28efMaTz31lPHHH3/YLXPNmjVG8+bNjeDgYCNPnjxGkSJFjObNm9t9fuzZs8do06aNERISYnh7exvFihUzunbtaly9etXaZ/LkyUZUVJTh6elps92O/t1wZD258drdicUwDCP70QgAHlw//fST6tevr9WrV9t9Qd/fScY4LFiw4I4XqrpC48aNdfjw4WzfTWpWsbGx6tatmzZt2pTlUX04jtNSAIBcMWDAAFWuXFlFixZVcnKy5s2bp7i4OM2cOdPdpcHkCDcAgFyRlpamESNG6MSJE7JYLCpXrpw+++wzvfDCC+4uDSbHaSkAAGAqfEMxAAAwFcINAAAwFcINAAAwlb/dBcXp6ek6fvy4AgICsvzBOgAAcH8xDEMXLlxw6Pfp/nbh5vjx43Y/owAAAB4MR44cuesPdf7twk3G10AfOXLE7iv9AQDA/SklJUVFixbN8uccbvW3CzcZp6ICAwMJNwAAPGAcuaSEC4oBAICpEG4AAICpEG4AAICpEG4AAICpEG4AAICpEG4AAICpEG4AAICpEG4AAICpEG4AAICpuDXc/Pzzz2rRooXCw8NlsVi0ePHiu86zZs0aVa1aVb6+vipevLimT5+e+4UCAIAHhlvDzaVLl1SpUiV9+OGHDvU/dOiQnnrqKdWtW1fbtm3TG2+8ob59+2rhwoW5XCkAAHhQuPW3pZo1a6ZmzZo53H/69OkqVqyYJk+eLEkqW7asNm/erHfeeUetW7fOpSoBAMCD5IG65mb9+vVq3LixTVuTJk20efNmXb9+PdN5UlNTlZKSYvMAAADm9UCFmxMnTig0NNSmLTQ0VDdu3FBSUlKm84wfP15BQUHWR9GiRe9FqQAAwE0eqHAj2f/UuWEYmbZnGDp0qM6fP299HDlyJNdrBAAA7uPWa26cFRYWphMnTti0nTp1Sl5eXgoJCcl0Hh8fH/n4+NyL8iRJka9/d8/W9aA7/HZzly2LcXecK8cd+Dvhc8Zx7v6ceaCO3NSsWVNxcXE2bStXrlS1atWUJ08eN1UFAADuJ24NNxcvXtT27du1fft2STdv9d6+fbsSEhIk3Tyl1LlzZ2v/Xr16KT4+XgMGDNDevXs1a9YszZw5U4MGDXJH+QAA4D7k1tNSmzdvVv369a3PBwwYIEnq0qWLYmNjlZiYaA06khQVFaXly5erf//++uijjxQeHq4pU6ZwGzgAALBya7ipV6+e9YLgzMTGxtq1RUdHa+vWrblYFQAAeJA9UNfcAAAA3A3hBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmIqXuwsAADgn8vXv3F3CA+Pw283dXQLcgCM3AADAVAg3AADAVAg3AADAVAg3AADAVAg3AADAVAg3AADAVNwebqZOnaqoqCj5+vqqatWqWrt27R37z5s3T5UqVZKfn58KFy6sbt266cyZM/eoWgAAcL9za7iZP3+++vXrp2HDhmnbtm2qW7eumjVrpoSEhEz7//LLL+rcubO6d++u33//XQsWLNCmTZvUo0ePe1w5AAC4X7k13EyaNEndu3dXjx49VLZsWU2ePFlFixbVtGnTMu2/YcMGRUZGqm/fvoqKilKdOnXUs2dPbd68+R5XDgAA7lduCzfXrl3Tli1b1LhxY5v2xo0ba926dZnOU6tWLR09elTLly+XYRg6efKkvv76azVvnvU3UKampiolJcXmAQAAzMtt4SYpKUlpaWkKDQ21aQ8NDdWJEycynadWrVqaN2+e2rVrJ29vb4WFhSl//vz64IMPslzP+PHjFRQUZH0ULVrUpdsBAADuL26/oNhisdg8NwzDri3Dnj171LdvX40YMUJbtmzR999/r0OHDqlXr15ZLn/o0KE6f/689XHkyBGX1g8AAO4vbvvhzIIFC8rT09PuKM2pU6fsjuZkGD9+vGrXrq3XXntNklSxYkX5+/urbt26GjNmjAoXLmw3j4+Pj3x8fFy/AQAA4L7ktiM33t7eqlq1quLi4mza4+LiVKtWrUznuXz5sjw8bEv29PSUdPOIDwAAgFtPSw0YMEAzZszQrFmztHfvXvXv318JCQnW00xDhw5V586drf1btGihRYsWadq0afrrr7/066+/qm/fvnriiScUHh7urs0AAAD3EbedlpKkdu3a6cyZMxo9erQSExNVvnx5LV++XBEREZKkxMREm++86dq1qy5cuKAPP/xQAwcOVP78+dWgQQNNmDDBXZsAAADuM24NN5LUu3dv9e7dO9NpsbGxdm2vvvqqXn311VyuCgAAPKjcfrcUAACAKxFuAACAqRBuAACAqRBuAACAqRBuAACAqRBuAACAqRBuAACAqRBuAACAqRBuAACAqRBuAACAqRBuAACAqRBuAACAqRBuAACAqeQ43KSlpWn79u06e/asK+oBAADIEafDTb9+/TRz5kxJN4NNdHS0qlSpoqJFi+qnn35ydX0AAABOcTrcfP3116pUqZIkaenSpTp06JD27dunfv36adiwYS4vEAAAwBlOh5ukpCSFhYVJkpYvX642bdqoVKlS6t69u3bt2uXyAgEAAJzhdLgJDQ3Vnj17lJaWpu+//16NGjWSJF2+fFmenp4uLxAAAMAZXs7O0K1bN7Vt21aFCxeWxWJRTEyMJOm3335TmTJlXF4gAACAM5wON6NGjVL58uV15MgRtWnTRj4+PpIkT09Pvf766y4vEAAAwBlOhxtJeu655+zaunTpkuNiAAAAcsqhcDNlyhT985//lK+vr6ZMmXLHvn379nVJYQAAANnhULh577331LFjR/n6+uq9997Lsp/FYiHcAAAAt3Io3Bw6dCjTfwMAANxv+G0pAABgKtm6oPjo0aNasmSJEhISdO3aNZtpkyZNcklhAAAA2eF0uFm1apVatmypqKgo7d+/X+XLl9fhw4dlGIaqVKmSGzUCAAA4zOnTUkOHDtXAgQO1e/du+fr6auHChTpy5Iiio6PVpk2b3KgRAADAYU6Hm71791q/08bLy0tXrlxRvnz5NHr0aE2YMMHlBQIAADjD6XDj7++v1NRUSVJ4eLj+/PNP67SkpCTXVQYAAJANTl9zU6NGDf36668qV66cmjdvroEDB2rXrl1atGiRatSokRs1AgAAOMzpcDNp0iRdvHhR0s3fmbp48aLmz5+vEiVK3PEL/gAAAO4Fp8NN8eLFrf/28/PT1KlTXVoQAABATjh9zc2mTZv022+/2bX/9ttv2rx5s0uKAgAAyC6nw02fPn105MgRu/Zjx46pT58+Onv2rL799lslJia6pEAAAABnOH1aas+ePZl+WV/lypW1adMmtWjRQmlpaUpJSdHvv//ukiIBAAAc5XS48fHx0cmTJ22uvZGkxMRE+fj46JdfftFff/2lcuXKuaxIAAAARzl9WiomJkZDhw7V+fPnrW3nzp3T0KFD1aJFC0k3A9C0adNcVyUAAICDnD5y8+677+rJJ59URESEKleuLEnavn27QkND9fnnn0uSihQpom7durm2UgAAAAc4HW6KFCminTt3at68edqxY4fy5s2rbt266fnnn1eePHlyo0YAAACHOR1upJs/wfDPf/7T1bUAAADkWLbCzYEDB/TTTz/p1KlTSk9Pt5k2YsQIlxQGAACQHU6Hm08//VQvv/yyChYsqLCwMFksFus0i8VCuAEAAG7ldLgZM2aMxo4dqyFDhuRGPQAAADni9K3gZ8+eVZs2bXKjFgAAgBxzOty0adNGK1euzI1aAAAAcszp01IlSpTQ8OHDtWHDBlWoUMHu9u++ffu6rDgAAABnOR1uPvnkE+XLl09r1qzRmjVrbKZZLBbCDQAAcCunw82hQ4dyow4AAACXcPqaGwAAgPtZtr7E7+jRo1qyZIkSEhJ07do1m2mTJk1ySWEAAADZ4XS4WbVqlVq2bKmoqCjt379f5cuX1+HDh2UYhqpUqZIbNQIAADjM6dNSQ4cO1cCBA7V79275+vpq4cKFOnLkiKKjo/n+GwAA4HZOh5u9e/eqS5cukiQvLy9duXJF+fLl0+jRozVhwgSXFwgAAOAMp8ONv7+/UlNTJUnh4eH6888/rdOSkpJcVxkAAEA2OH3NTY0aNfTrr7+qXLlyat68uQYOHKhdu3Zp0aJFqlGjRm7UCAAA4DCnw82kSZN08eJFSdKoUaN08eJFzZ8/XyVKlNB7773n8gIBAACc4VS4SUtL05EjR1SxYkVJkp+fn6ZOnZorhQEAAGSHU9fceHp6qkmTJjp37lwulQMAAJAzTl9QXKFCBf31118uK2Dq1KmKioqSr6+vqlatqrVr196xf2pqqoYNG6aIiAj5+PjokUce0axZs1xWDwAAeLA5fc3N2LFjNWjQIP373/9W1apV5e/vbzM9MDDQ4WXNnz9f/fr109SpU1W7dm19/PHHatasmfbs2aNixYplOk/btm118uRJzZw5UyVKlNCpU6d048YNZzcDAACYlNPhpmnTppKkli1bymKxWNsNw5DFYlFaWprDy5o0aZK6d++uHj16SJImT56sFStWaNq0aRo/frxd/++//15r1qzRX3/9peDgYElSZGSks5sAAABMzOlws3r1apes+Nq1a9qyZYtef/11m/bGjRtr3bp1mc6zZMkSVatWTRMnTtRnn30mf39/tWzZUv/+97+VN29el9QFAAAebA6Fm2effVaxsbEKDAxUfHy82rVrJx8fnxytOCkpSWlpaQoNDbVpDw0N1YkTJzKd56+//tIvv/wiX19fffPNN0pKSlLv3r2VnJyc5XU3qamp1i8dlKSUlJQc1Q0AAO5vDl1QvGzZMl26dEmS1K1bN50/f95lBdx6akv6/9NbmUlPT5fFYtG8efP0xBNP6KmnntKkSZMUGxurK1euZDrP+PHjFRQUZH0ULVrUZbUDAID7j0NHbsqUKaOhQ4eqfv36MgxDX331VZYXDnfu3NmhFRcsWFCenp52R2lOnTpldzQnQ+HChVWkSBEFBQVZ28qWLSvDMHT06FGVLFnSbp6hQ4dqwIAB1ucpKSkEHAAATMyhcDN9+nQNGDBA3333nSwWi958881Mj65YLBaHw423t7eqVq2quLg4PfPMM9b2uLg4tWrVKtN5ateurQULFujixYvKly+fJOnAgQPy8PDQww8/nOk8Pj4+OT6FBgAAHhwOnZaqVauWNmzYoNOnT8swDB04cEBnz561eyQnJzu18gEDBmjGjBmaNWuW9u7dq/79+yshIUG9evWSdPOoy61hqUOHDgoJCVG3bt20Z88e/fzzz3rttdf04osvckExAACQlI27pQ4dOqSHHnrIJStv166dzpw5o9GjRysxMVHly5fX8uXLFRERIUlKTExUQkKCtX++fPkUFxenV199VdWq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ZEktXbr0HlcOAADuV24LN9euXdOWLVvUuHFjm/bGjRtr3bp1Di0jPT1dFy5cUHBwcJZ9UlNTlZKSYvMAAADm5bZwk5SUpLS0NIWGhtq0h4aG6sSJEw4t491339WlS5fUtm3bLPuMHz9eQUFB1kfRokVzVDcAALi/uf2CYovFYvPcMAy7tsx8+eWXGjVqlObPn69ChQpl2W/o0KE6f/689XHkyJEc1wwAAO5fXu5accGCBeXp6Wl3lObUqVN2R3NuN3/+fHXv3l0LFixQo0aN7tjXx8dHPj4+Oa4XAAA8GNx25Mbb21tVq1ZVXFycTXtcXJxq1aqV5Xxffvmlunbtqi+++ELNmzfP7TIBAMADxm1HbiRpwIAB6tSpk6pVq6aaNWvqk08+UUJCgnr16iXp5imlY8eOae7cuZJuBpvOnTvr/fffV40aNaxHffLmzaugoCC3bQcAALh/uDXctGvXTmfOnNHo0aOVmJio8uXLa/ny5YqIiJAkJSYm2nznzccff6wbN26oT58+6tOnj7W9S5cuio2NvdflAwCA+5Bbw40k9e7dW71798502u2B5aeffsr9ggAAwAPN7XdLAQAAuBLhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmArhBgAAmIrbw83UqVMVFRUlX19fVa1aVWvXrr1j/zVr1qhq1ary9fVV8eLFNX369HtUKQAAeBC4NdzMnz9f/fr107Bhw7Rt2zbVrVtXzZo1U0JCQqb9Dx06pKeeekp169bVtm3b9MYbb6hv375a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++zZszOdPnLkSLfW/aC707hn3Haf2WP16tXuLv2Bdqdxv3LlivHMM88Y4eHhhre3t1G4cGGjZcuWxsaNG91d9gPvbp8zt+NWcMOwGIZh5G58AgAAuHe45gYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QZArjhx4oReffVVFS9eXD4+PipatKhatGihVatWubs0ACbHb0sBcLnDhw+rdu3ayp8/vyZOnKiKFSvq+vXrWrFihfr06aN9+/a5u0QAJsaRGwAu17t3b1ksFm3cuFHPPfecSpUqpUcffVQDBgzQhg0bJEkJCQlq1aqV8uXLp8DAQLVt21YnT560LmPUqFF67LHHNGvWLBUrVkz58uXTyy+/rLS0NE2cOFFhYWEqVKiQxo4da7Nui8WiadOmqVmzZsqbN6+ioqK0YMECmz5DhgxRqVKl5Ofnp+LFi2v48OG6fv263bo/++wzRUZGKigoSO3bt9eFCxckSXPnzlVISIjdr123bt1anTt3dulYAnAe4QaASyUnJ+v7779Xnz595O/vbzc9f/78MgxD//jHP5ScnKw1a9YoLi5Of/75p9q1a2fT988//9T//vc/ff/99/ryyy81a9YsNW/eXEePHtWaNWs0YcIEvfnmm9bAlGH48OFq3bq1duzYoRdeeEHPP/+89u7da50eEBCg2NhY7dmzR++//74+/fRTvffee3brXrx4sZYtW6Zly5ZpzZo1evvttyVJbdq0UVpampYsWWLtn5SUpGXLlqlbt245HkMAOeTmH+4EYDK//fabIclYtGhRln1WrlxpeHp6GgkJCda233//3ZBk/RXpkSNHGn5+fkZKSoq1T5MmTYzIyEgjLS3N2la6dGlj/Pjx1ueSjF69etmsr3r16sbLL7+cZT0TJ040qlatan2e2bpfe+01o3r16tbnL7/8stGsWTPr88mTJxvFixc30tPTs1wPgHuDa24AuJRhGJJunh7Kyt69e1W0aFEVLVrU2lauXDnlz59fe/fu1eOPPy5JioyMVEBAgLVPaGioPD095eHhYdN26tQpm+XXrFnT7vn27dutz7/++mtNnjxZBw8e1MWLF3Xjxg0FBgbazHP7ugsXLmyznpdeekmPP/64jh07piJFimj27Nnq2rXrHbcbwL3BaSkALlWyZElZLBab00C3Mwwj0xBwe3uePHlsplsslkzb0tPT71pXxnI3bNig9u3bq1mzZlq2bJm2bdumYcOG6dq1azb977aeypUrq1KlSpo7d662bt2qXbt2qWvXrnetA0DuI9wAcKng4GA1adJEH330kS5dumQ3/dy5cypXrpwSEhJ05MgRa/uePXt0/vx5lS1bNsc13H4NzoYNG1SmTBlJ0q+//qqIiAgNGzZM1apVU8mSJRUfH5+t9fTo0UOzZ8/WrFmz1KhRI5sjUQDch3ADwOWmTp2qtLQ0PfHEE1q4cKH++OMP7d27V1OmTFHNmjXVqFEjVaxYUR07dtTWrVu1ceNGde7cWdHR0apWrVqO179gwQLNmjVLBw4c0MiRI7Vx40a98sorkqQSJUooISFB//3vf/Xnn39qypQp+uabb7K1no4dO+rYsWP69NNP9eKLL+a4bgCuQbgB4HJRUVHaunWr6tevr4EDB6p8+fKKiYnRqlWrNG3aNFksFi1evFgFChTQk08+qUaNGql48eKaP3++S9b/1ltv6b///a8qVqyoOXPmaN68eSpXrpwkqVWrVurfv79eeeUVPfbYY1q3bp2GDx+erfUEBgaqdevWypcvn/7xj3+4pHYAOWcxMq7+AwATsFgs+uabb+5Z2IiJiVHZsmU1ZcqUe7I+AHfH3VIAkA3JyclauXKlfvzxR3344YfuLgfALQg3AJANVapU0dmzZzVhwgSVLl3a3eUAuAWnpQAAgKlwQTEAADAVwg0AADAVwg0AADAVwg0AADAVwg0AADAVwg0AADAVwg0AADAVwg0AADAVwg0AADCV/wPJ0nECepCwAAAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Création du barplot\n",
"plt.bar(company_country_fr[\"number_compagny\"], company_country_fr[\"country_fr\"])\n",
"\n",
"# Ajout de titres et d'étiquettes\n",
"plt.xlabel('Company')\n",
"plt.ylabel(\"Part de clients français\")\n",
"plt.title(\"Nationalité des clients de chaque compagnie de spectacle\")\n",
"\n",
"# Affichage du barplot\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 60,
"id": "b459f81f-6d30-44fa-ad65-e85acbf12fd2",
"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>number_company</th>\n",
" <th>y_has_purchased</th>\n",
" <th>country_fr</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10</td>\n",
" <td>0.0</td>\n",
" <td>0.995421</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10</td>\n",
" <td>1.0</td>\n",
" <td>0.999097</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>11</td>\n",
" <td>0.0</td>\n",
" <td>0.995433</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>11</td>\n",
" <td>1.0</td>\n",
" <td>0.995016</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>12</td>\n",
" <td>0.0</td>\n",
" <td>0.001565</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>12</td>\n",
" <td>1.0</td>\n",
" <td>0.002656</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>13</td>\n",
" <td>0.0</td>\n",
" <td>0.843896</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>13</td>\n",
" <td>1.0</td>\n",
" <td>0.775967</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>14</td>\n",
" <td>0.0</td>\n",
" <td>0.995202</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>14</td>\n",
" <td>1.0</td>\n",
" <td>0.984715</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" number_company y_has_purchased country_fr\n",
"0 10 0.0 0.995421\n",
"1 10 1.0 0.999097\n",
"2 11 0.0 0.995433\n",
"3 11 1.0 0.995016\n",
"4 12 0.0 0.001565\n",
"5 12 1.0 0.002656\n",
"6 13 0.0 0.843896\n",
"7 13 1.0 0.775967\n",
"8 14 0.0 0.995202\n",
"9 14 1.0 0.984715"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# graphique sur le train set\n",
"\n",
"company_country_fr = train_set_spectacle.groupby([\"number_company\", \"y_has_purchased\"])[[\"country_fr\"]].mean().reset_index()\n",
"company_country_fr"
]
},
{
"cell_type": "code",
"execution_count": 61,
"id": "357a6cd6-b1f2-41b8-9d92-155de84858cf",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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00+rTp06+vDDDyXd/OtxVq5du6ZnnnlGx48f17Bhw1SiRAn99NNPeumllzLMu3LlSjVo0EBRUVGaOHGi/Pz8NHv2bL300ku6evWqzbNNt0tJSVHDhg21Zs0a9ezZU08//bRSUlK0YcMGHTlyRNWrV7f7mP3xxx+qXr26ChcurM8++0yhoaFasmSJevTooTNnzmjgwIE287/33nuqUaOGJk+erEuXLundd99V06ZNtWfPHjk7O2v8+PF6/fXXdfDgQf344482y86ePVvdunXTW2+9pU8//VROTk46cOCA/vjjjyzrS7/t6bnnntOjjz5qDQhhYWHWX3oGDBigatWqaeLEiXJyclJwcLBOnz4tSRo4cKBCQ0N15coV/fjjj6pdu7aWL1+eIRCPGzdOpUqVst4a8uGHH6pRo0ZKSEiQn5+fJGnJkiVq2rSpSpcurVGjRqlw4cI6dOiQli5dal3P8ePHFRgYqOHDhysoKEjnzp3TtGnTFBUVpW3btqlkyZJZ7mu7du20detWDR06VCVKlNCFCxe0detWnT17Nus3UNLy5cv17LPPqlq1apo9e7ZSU1M1cuRI/e9//8swb5cuXRQXF6cePXpoxIgROnfunD7++GNVr15dO3bsUEhIiBITE1WvXj0VLVpU48aNU0hIiE6ePKmVK1faPI+RmSlTpqhz586qVauWJk6cqODgYO3bt0+///67dZ6ZM2eqbdu2ql+/vmbNmqWkpCSNHDnS+t48+eSTNuts2bKlXn75ZXXp0kXLli2z/kL7yy+/qFu3burTp49mzpypd999V8WLF1eLFi1sln/vvfdUuXJlTZ48WRcvXlRMTIxq166tbdu2qVixYpJuXitKliypVq1aKSAgQCdOnNCECRP0+OOP648//lCBAgUkSTt37lS9evVUokQJTZs2TZ6enpo4caJmzJiR6fHYsWOH3nnnHfXv318hISGaPHmyXn31VRUvXlxPPfVUlsfR3utD7969NX36dA0ZMkSVKlVSYmKifv/997ueM3/88Yfq1q2riIgIxcXFydPTU+PHj9fMmTMzzBsbG6sPPvhAHTt21AcffKDk5GR98sknqlmzpjZt2qQyZcpkuR1767tx44YaNWqkLl26qH///lq3bp2GDBmiw4cPa8GCBdb57Dl/pbufhx9++KESExP1/fff2wT4sLAwSdLBgwfVpk0bFS1aVK6urtqxY4eGDh2qP//80yYI23O+Z+Zejunff/+tXbt26Y033rBpX79+/V0/rzp16qTGjRtr+vTpSkxMVL58+e7pmpXu+eef10svvaRXX31Vu3bt0oABAyQpwx8NbmXvdcae9/xOnzvpateurQEDBujChQs2ARSQATxkpk6dakgyNmzYYNy4ccO4fPmysXDhQiMoKMjw8fExTp48mWGZ1NRU48aNG8bHH39sBAYGGmlpadZpRYoUMZydnY29e/dmWM7Ly8t45ZVX7KprwoQJhiTjv//9r017586dDUnG1KlTrW2lSpUyKlWqZNy4ccNm3iZNmhhhYWFGampqltv5+uuvDUnGl19+ecd6ihQpYlN7QkJChjqio6ONRx55xLh48aLNst27dzfc3d2Nc+fOGYZhGCtXrjQkGY0aNbKZ79tvvzUkGevXr7e2NW7c2ChSpEiGerp3727kz5//jjXfaV8aN25s05Ze01NPPXXX5VNSUowbN24YdevWNZ577jlre/oxKVeunJGSkmJt37RpkyHJmDVrlrXt0UcfNR599FHj2rVrdtedkpJiJCcnG5GRkUavXr0ybPfW98Lb29vo2bOn3etOFxUVZYSHh9vUdenSJSMgIMC49SNi/fr1hiTjs88+s1n+6NGjhoeHh9GvXz/DMAxj8+bNhiRj3rx5puq4fPmy4evrazz55JM2/79ulZqaaoSHhxvlypWzOccvX75sBAcHG9WrV7e2DRw4MNN6K1asaEgy5s6da227ceOGERQUZLRo0cLaln5+VK5c2aaeQ4cOGfny5TNee+21LPclJSXFuHLliuHl5WX8+9//tra/+OKLhpeXl3H69GmbfSpTpowhyUhISLC2FylSxHB3dzcOHz5sbbt27ZoREBBgdOnSJUOdK1eutLbZe30oW7as0bx58yz3IysvvfSS4eHhYXOtTElJMUqVKmWzH0eOHDFcXFyMt956y2b5y5cvG6GhoUbLli3vuB176nvllVcMSTbH2TAMY+jQoYYkY+3atYZh2H/+2nMeGoZhvPnmm4Y9v0Klf3Z8/fXXhrOzs/WaaO920s/jdPd6TOfMmWP9/LtdVp9X6Z+Z7du3v+O6DcPcNSt930aOHGmzjm7duhnu7u53PC72XGfsfc8NI+vPnXTLli0zJBk///xzlvPg4cStfXhoPfHEE8qXL598fHzU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n3yiAgUKKCIiQqtXr9aUKVMy/EX+/fff14IFC1S3bl29//778vDw0MSJE61fAn6vt9ums/f6EBUVpSZNmqh8+fLy9/fXnj17NH369LsG0g8++EDz58/X008/rY8++kienp4aN25chi8zj4iI0Mcff6z3339ff/31lxo0aCB/f3/973//06ZNm6w9Tlmxtz5XV1d99tlnunLlih5//HHrqH0NGza0juJo7/lrz3koyfpL+IgRI9SwYUM5OzurfPnyqlevnlxdXdW6dWv169dP169f14QJEzLccmrvdm6XHcfUw8NDGzZsyPBskpnPq3T/9Jp1r+y5ztj7nqfve2afO+k2bNigwMDATP9ghIfcfR/eAshl6SMQxcfH33G+r776yihZsqTh5uZmFCtWzBg2bJgxZcqUTEfXun1EuHTbt283atSoYXh6ehqSjFq1at1xm3///bfx/PPPG97e3oaPj4/x/PPPG+vWrcsw2pFhGMaOHTuMli1bGsHBwUa+fPmM0NBQ4+mnnzYmTpx412Nw7do146OPPjIiIyMNV1dXIzAw0Hj66aeNdevW2ezX3UbtS2/v1KmTUbBgQSNfvnxGUFCQUb16dWPIkCHWedJHFvvuu+8yLHv7Os+dO2e88MILRv78+Q2LxWIdsWratGlGnTp1jJCQEMPV1dUIDw83WrZsaezcufOu+3unUftur8kwDCMpKcno06ePUbBgQcPd3d2oXLmyMW/ePOOVV16xGdkpvf5PPvkkwzokGQMHDrRpW79+vdGwYUPDx8fHkGQ8+uijNiNbnT9/3nj11VeN4OBgw9PT03jyySeNNWvWGLVq1bI5d24/btevXze6du1qlC9f3vD19TU8PDyMkiVLGgMHDjQSExPvenzmz59vlC9f3nB1dTUKFy5sDB8+PMNoYem++uorIyoqyvDy8jI8PDyMRx991Gjfvr2xefNmwzAM488//zRat25tPProo4aHh4fh5+dnVK1a1YiLi7trHYZhGIsWLTJq1apleHl5GZ6enkaZMmWMESNG2Mwzb948IyoqynB3dze8vLyMunXrGr/99pvNPOn13zpCnmHcHOXNy8srw3Zr1aplPPbYY9bX6efH9OnTjR49ehhBQUGGm5ubUbNmTeu+pkv/f+vv72/4+PgYDRo0MH7//fcM/4cMwzDWrFljREVFGW5ubkZoaKjRt29f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",
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Création du barplot groupé\n",
"fig, ax = plt.subplots(figsize=(10, 6))\n",
"\n",
"categories = company_country_fr[\"number_company\"].unique()\n",
"bar_width = 0.35\n",
"bar_positions = np.arange(len(categories))\n",
"\n",
"# Grouper les données par label et créer les barres groupées\n",
"for label in company_country_fr[\"y_has_purchased\"].unique():\n",
" label_data = company_country_fr[df_graph['y_has_purchased'] == label]\n",
" values = [label_data[label_data['number_company'] == category]['country_fr'].values[0]*100 for category in categories]\n",
"\n",
" label_printed = \"achat durant la période\" if label else \"aucun achat\"\n",
" ax.bar(bar_positions, values, bar_width, label=label_printed)\n",
"\n",
" # Mise à jour des positions des barres pour le prochain groupe\n",
" bar_positions = [pos + bar_width for pos in bar_positions]\n",
"\n",
"# Ajout des étiquettes, de la légende, etc.\n",
"ax.set_xlabel('Numero de compagnie')\n",
"ax.set_ylabel('Part de clients frnaçais (%)')\n",
"ax.set_title('Part de clients français des compagnies de spectacle (train set)')\n",
"ax.set_xticks([pos + bar_width / 2 for pos in np.arange(len(categories))])\n",
"ax.set_xticklabels(categories)\n",
"ax.legend()\n",
"\n",
"# Affichage du plot - la proportion de français est la même selon qu'il y ait achat sur la période ou non\n",
"# sauf compagnie 12, et peut-être 13\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "ecfd112e-270a-4223-b80f-7e95e57d199d",
"metadata": {},
"source": [
"### 2. campaigns_information"
]
},
{
"cell_type": "code",
"execution_count": 189,
"id": "b37e7ddf-321a-4ebe-9742-9e760a541d29",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Nombre de lignes de la table : 688953\n"
]
},
{
"data": {
"text/plain": [
"customer_id 0\n",
"nb_campaigns 0\n",
"nb_campaigns_opened 0\n",
"time_to_open 301495\n",
"number_compagny 0\n",
"dtype: int64"
]
},
"execution_count": 189,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# nombre de nan\n",
"print(\"Nombre de lignes de la table : \",campaigns_information_spectacle.shape[0])\n",
"campaigns_information_spectacle.isna().sum()"
]
},
{
"cell_type": "code",
"execution_count": 192,
"id": "de1ecaac-25bb-4853-b8ab-3ef2ca6917ed",
"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>customer_id</th>\n",
" <th>nb_campaigns</th>\n",
" <th>nb_campaigns_opened</th>\n",
" <th>time_to_open</th>\n",
" <th>number_compagny</th>\n",
" <th>no_campaign_opened</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>29</td>\n",
" <td>4</td>\n",
" <td>0.0</td>\n",
" <td>NaT</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>37</td>\n",
" <td>3</td>\n",
" <td>0.0</td>\n",
" <td>NaT</td>\n",
" <td>10</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>39</td>\n",
" <td>4</td>\n",
" <td>1.0</td>\n",
" <td>0 days 05:16:38</td>\n",
" <td>10</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>41</td>\n",
" <td>4</td>\n",
" <td>1.0</td>\n",
" <td>0 days 01:12:29</td>\n",
" <td>10</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>44</td>\n",
" <td>4</td>\n",
" <td>0.0</td>\n",
" <td>NaT</td>\n",
" <td>10</td>\n",
" <td>True</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",
" </tr>\n",
" <tr>\n",
" <th>254699</th>\n",
" <td>6837769</td>\n",
" <td>1</td>\n",
" <td>1.0</td>\n",
" <td>0 days 23:42:15</td>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>254700</th>\n",
" <td>6875038</td>\n",
" <td>1</td>\n",
" <td>0.0</td>\n",
" <td>NaT</td>\n",
" <td>14</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>254701</th>\n",
" <td>6875066</td>\n",
" <td>1</td>\n",
" <td>0.0</td>\n",
" <td>NaT</td>\n",
" <td>14</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>254702</th>\n",
" <td>6875099</td>\n",
" <td>1</td>\n",
" <td>0.0</td>\n",
" <td>NaT</td>\n",
" <td>14</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>254703</th>\n",
" <td>6875143</td>\n",
" <td>1</td>\n",
" <td>1.0</td>\n",
" <td>0 days 01:17:01</td>\n",
" <td>14</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>688953 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
" customer_id nb_campaigns nb_campaigns_opened time_to_open \\\n",
"0 29 4 0.0 NaT \n",
"1 37 3 0.0 NaT \n",
"2 39 4 1.0 0 days 05:16:38 \n",
"3 41 4 1.0 0 days 01:12:29 \n",
"4 44 4 0.0 NaT \n",
"... ... ... ... ... \n",
"254699 6837769 1 1.0 0 days 23:42:15 \n",
"254700 6875038 1 0.0 NaT \n",
"254701 6875066 1 0.0 NaT \n",
"254702 6875099 1 0.0 NaT \n",
"254703 6875143 1 1.0 0 days 01:17:01 \n",
"\n",
" number_compagny no_campaign_opened \n",
"0 10 True \n",
"1 10 True \n",
"2 10 False \n",
"3 10 False \n",
"4 10 True \n",
"... ... ... \n",
"254699 14 False \n",
"254700 14 True \n",
"254701 14 True \n",
"254702 14 True \n",
"254703 14 False \n",
"\n",
"[688953 rows x 6 columns]"
]
},
"execution_count": 192,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# part de clients n'ouvrant jamais les mails par compagnie\n",
"\n",
"campaigns_information_spectacle[\"no_campaign_opened\"] = pd.isna(campaigns_information_spectacle[\"time_to_open\"])\n",
"campaigns_information_spectacle"
]
},
{
"cell_type": "code",
"execution_count": 197,
"id": "b5a0060f-a9dd-435b-844f-b24674b8bc27",
"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>number_compagny</th>\n",
" <th>no_campaign_opened</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10</td>\n",
" <td>0.605656</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>11</td>\n",
" <td>0.294001</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>12</td>\n",
" <td>0.475719</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>13</td>\n",
" <td>0.353820</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>14</td>\n",
" <td>0.428148</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" number_compagny no_campaign_opened\n",
"0 10 0.605656\n",
"1 11 0.294001\n",
"2 12 0.475719\n",
"3 13 0.353820\n",
"4 14 0.428148"
]
},
"execution_count": 197,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"company_lazy_customers = campaigns_information_spectacle.groupby(\"number_compagny\")[\"no_campaign_opened\"].mean().reset_index()\n",
"company_lazy_customers"
]
},
{
"cell_type": "code",
"execution_count": 198,
"id": "788c90e0-f13a-4804-ace7-e5159fddd7fd",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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6Ok//vhD9O/fX1SqVEkxSvry5csq83/33XfCx8dHsW2Dg4PFP//8ozLf2rVrhaenpzAxMRF169YVsbGxhY6eVvf9L0zBz0gIIR4/fiymTZsmPDw8FHF5e3uLsWPHKu64sWvXLhEQECCqVasmjIyMhJ2dnejcubM4fPiw1jZ12afkcrmYP3++cHd3F4aGhqJKlSqiX79+IiUlRakuXT/7fADExx9/rHifv8+fPn1adOnSRfF79MEHH4g7d+4oLavr8UyIl8eHWrVqCSMjI+Hu7i5Wr14tgoODlUbWFuV4re67KYQQO3bsEG3bthVWVlbC2NhYuLi4iJ49e4o9e/YIIYS4c+eOGDhwoKhTp44wNzcXFhYWwsfHRyxevFhpxHZhvvvuO8VvZ/56qPu+5ObmioULFyp+PywsLESdOnXE0KFD1e73+XSNL//z3LJli6hXr54wMjISrq6uYtGiRSp16rL/CqHbfnjjxg3RqVMnYWlpKQAorfe8efOEq6urMDY2Fp6enuLbb78t9jFU3R0SirtNC5IJUeCO20QS+eqrrzBq1Cj8/fffqFevntThEEku/952J0+eLPQUIZUds2bNQkREBO7evftarpXM9+DBA7i7u6Nr164qZyZIO1dXV3h5eWHXrl1Sh1LulPjpaaKiSkhIwPXr1xEZGYng4GAmjERE/y8tLQ1z585F27ZtYWtri6SkJCxevBiPHj3C6NGjpQ6P3jBMGkly3bp1Q1paGlq1alXo6DsiojeRsbExbty4geHDhyMzMxNmZmZo3rw5li9fzv9gU6nj6WkiIiIi0qrEb7lDRERERBUPk0YiIiIi0opJIxERERFpxYEwxZSXl4fbt2/D0tKyRB6FSERERK+fEAKPHj2Ck5NTid0g/U3BpLGYbt++DWdnZ6nDICIiomJISUlReR45acaksZjyn1GdkpLyWh6/RURERCUvKysLzs7Oit9x0h2TxmLKPyVtZWXFpJGIiKic4aVlRceT+URERESkFZNGIiIiItKKSSMRERERacWkkYiIiIi0YtJIRERERFoxaSQiIiIirZg0EhEREZFWTBqJiIiISCsmjURERESkFZNGIiIiItKKSSMRERERacWkkYiIiIi0YtJIRERERFoxaSQiIiIirSpM0rh06VK4ubnBxMQEjRs3xuHDhzXOn52djalTp8LFxQXGxsZ46623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FjpvdnY2srOzFe+zsrJ0jpGIiIiovJPk9HR4eDiaNGmCv//+G5mZmbh//77ilZmZWaS67t27B7lcDnt7e6Vye3t7pKWlqV3G0dERK1euxNatW7Ft2zZ4eHigffv2OHToUKHtREVFwdraWvFydnYuUpxERERE5ZkkPY2XL1/Gli1bUKtWrRKrUyaTKb0XQqiU5fPw8ICHh4fiva+vL1JSUrBw4cJCT41PnjwZ48aNU7zPyspi4khERERvDEl6Gps1a4YrV66USF1VqlSBvr6+Sq9ienq6Su+jJs2bN8fly5cLnW5sbAwrKyulFxEREdGbQpKexpEjR2L8+PFIS0uDt7c3DA0Nlab7+PjoXJeRkREaN26MuLg4dOvWTVEeFxeH4OBgnetJSEiAo6OjzvMTERERvUkkSRp79OgBABg0aJCiTCaTKU4pF2UgDACMGzcO/fv3R5MmTeDr64uVK1ciOTkZ4eHhAF6eWr516xbWrVsH4OXoaldXV9SrVw85OTlYv349tm7diq1bt5bQGhIRERFVLJIkjdevXy/R+nr37o2MjAxERkYiNTUVXl5e2L17N1xcXAAAqampSvdszMnJwYQJE3Dr1i2YmpqiXr16+OWXX9C5c+cSjYuIiIioopCJgve8IZ1kZWXB2toaDx8+LPHrG10n/VKi9VV0N+YFSh0CERGVE6/z97uik6SnMf80cWFCQ0NLKRIiIiIi0oUkSePo0aOV3ufm5uLp06cwMjKCmZkZk0YiIiKiMkaSW+7892be9+/fx+PHj3Hx4kW888472LRpkxQhEREREZEGkiSN6tSuXRvz5s1T6YUkIiIiIumVmaQRAPT19XH79m2pwyAiIiKiAiS5pnHnzp1K74UQSE1Nxddff42WLVtKERIRERERaSBJ0ti1a1el9zKZDFWrVkW7du3wxRdfSBESEREREWkgSdKYl5cnRbNEVAbxvqS64z1JiUhKZeqaRiIiIiIqmyRJGnv27Il58+aplH/++ed4//33JYiIiIiIiDSRJGk8ePAgAgNVT7O8++67OHTokAQREREREZEmkiSNjx8/hpGRkUq5oaEhsrKyJIiIiIiIiDSRJGn08vJCbGysSvkPP/yAunXrShAREREREWkiyejp6dOno0ePHrh69SratWsHANi7dy82bdqEzZs3SxESEREREWkgSdIYFBSEHTt24LPPPsOWLVtgamoKHx8f7NmzB35+flKEREREREQaSJI0AkBgYKDawTBEREREVPbwPo1EREREpJUkPY16enqQyWSFTpfL5aUYDRERERFpI0nSuH37dqX3ubm5SEhIwNq1axERESFFSERERESkgSRJY3BwsEpZz549Ua9ePcTGxmLw4MESREVEREREhSlT1zQ2a9YMe/bskToMIiIiIiqgzCSNz549w1dffYXq1atLHQoRERERFSDJ6enKlSsrDYQRQuDRo0cwMzPD+vXrpQiJiIiIiDSQJGmMjo5Weq+np4eqVauiWbNmqFy5shQhEREREZEGkiSNAwYMkKJZIiIiIiomyZ4IAwBPnz5FcnIycnJylMp9fHwkioiIiIiI1JEkabx79y7CwsLw66+/qp3Om3sTERERlS2SjJ4eM2YM7t+/j2PHjsHU1BS//fYb1q5di9q1a2Pnzp1ShEREREREGkjS07hv3z789NNPaNq0KfT09ODi4oKOHTvCysoKUVFRCAwMlCIsIiIiIiqEJD2NT548gZ2dHQDAxsYGd+/eBQB4e3sjPj5eipCIiIiISANJkkYPDw9cvHgRANCgQQOsWLECt27dwvLly+Ho6ChFSERERESkgSSnp8eMGYPU1FQAwMyZM+Hv748NGzbAyMgIMTExUoRERERERBpIkjT27dtX8XfDhg1x48YN/Pvvv6hRowaqVKkiRUhEREREpIGk92nMZ2ZmhkaNGkkdBhEREREVQpJrGomIiIiofCkTPY1ERERvAtdJv0gdQrlxYx5vv1fWsKeRiIiIiLSSJGlMTk6GEEKlXAiB5ORkCSIiIiIiIk0kSRrd3NwUN/T+r8zMTLi5uUkQERERERFpIknSKISATCZTKX/8+DFMTEwkiIiIiIiINCnVgTDjxo0DAMhkMkyfPh1mZmaKaXK5HMePH0eDBg1KMyQiIiIi0kGpJo0JCQkAXvY0njt3DkZGRoppRkZGqF+/PiZMmFCaIRERERGRDko1ady/fz8AYODAgfjqq69gaWlZms0TERERUTGV+jWNL168wPr165GUlFTaTRMRERFRMZV60mhgYAAXFxfI5fLSbpqIiIiIikmS0dPTpk3D5MmTkZmZKUXzRERERFREkjxGcMmSJbhy5QqcnJzg4uICc3Nzpenx8fFShEVEREREhZAkaezatWuJ17l06VJ8/vnnSE1NRb169RAdHY1WrVppXe6vv/6Cn58fvLy8kJiYWOJxEREREVUEkiSNM2fOLNH6YmNjMWbMGCxduhQtW7bEihUrEBAQgPPnz6NGjRqFLvfw4UOEhoaiffv2uHPnTonGRERERFSRSHJNIwA8ePAA3333ndK1jfHx8bh161aR61q0aBEGDx6MIUOGwNPTE9HR0XB2dsayZcs0Ljd06FCEhITA19e3WOtARERE9KaQJGk8e/Ys3N3dMX/+fCxcuBAPHjwAAGzfvh2TJ08uUl05OTk4ffo0OnXqpFTeqVMnHDlypNDl1qxZg6tXr+rc65mdnY2srCylFxEREdGbQpKkcdy4cRg4cCAuX76s9KzpgIAAHDp0qEh13bt3D3K5HPb29krl9vb2SEtLU7vM5cuXMWnSJGzYsAEGBrqdoY+KioK1tbXi5ezsXKQ4iYiIiMozSZLGkydPYujQoSrl1apVKzTR00Ymkym9F0KolAEvn3EdEhKCiIgIuLu761z/5MmT8fDhQ8UrJSWlWHESERERlUeSDIQxMTFRe3r34sWLqFq1apHqqlKlCvT19VWSzfT0dJXeRwB49OgRTp06hYSEBIwYMQIAkJeXByEEDAwM8Mcff6Bdu3YqyxkbG8PY2LhIsRERERFVFJL0NAYHByMyMhK5ubkAXvYSJicnY9KkSejRo0eR6jIyMkLjxo0RFxenVB4XF4cWLVqozG9lZYVz584hMTFR8QoPD4eHhwcSExPRrFmz4q8YERERUQUlSU/jwoUL0blzZ9jZ2eHZs2fw8/NDWloafH19MXfu3CLXN27cOPTv3x9NmjSBr68vVq5cieTkZISHhwN4eWr51q1bWLduHfT09ODl5aW0vJ2dHUxMTFTKiYiIiOglSZJGKysr/Pnnn9i3bx/i4+ORl5eHRo0aoUOHDsWqr3fv3sjIyEBkZCRSU1Ph5eWF3bt3w8XFBQCQmpqK5OTkklwFIiIiojeKTAghSrvRGzduwNXVtbSbLVFZWVmwtrbGw4cPYWVlVaJ1u076pUTrq+huzAuUOgR6Bdzfdcd9vfzj/q6717W/v87f74pOkmsaa9asiXfeeQcrVqxQ3NibiIiIiMouSZLGU6dOwdfXF3PmzIGTkxOCg4OxefNmZGdnSxEOEREREWkhSdLYqFEjfP7550hOTsavv/4KOzs7DB06FHZ2dhg0aJAUIRERERGRBpI9exp4eaudtm3b4ttvv8WePXtQs2ZNrF27VsqQiIiIiEgNSZPGlJQULFiwAA0aNEDTpk1hbm6Or7/+WsqQiIiIiEgNSW65s3LlSmzYsAF//fUXPDw80LdvX+zYsaPcj6gmIiIiqqgkSRpnz56NPn364Msvv0SDBg2kCIGIiIiIikCSpDE5ORkymUyKpomIiIioGCRJGg8fPqxxeuvWrUspEiIiIiLShSRJY5s2bVTK/tvzKJfLSzEaIiIiItJGktHT9+/fV3qlp6fjt99+Q9OmTfHHH39IERIRERERaSBJT6O1tbVKWceOHWFsbIyxY8fi9OnTEkRFRERERIWR9D6NBVWtWhUXL16UOgwiIiIiKkCSnsazZ88qvRdCIDU1FfPmzUP9+vWlCImIiIiINJAkaWzQoAFkMhmEEErlzZs3x+rVq6UIiYiIiIg0kCRpvH79utJ7PT09VK1aFSYmJlKEQ0RERERaSJI0uri4SNEsERERERWTZANhDh48iC5duqBWrVqoXbs2goKCtN70m4iIiIikIUnSuH79enTo0AFmZmYYNWoURowYAVNTU7Rv3x4bN26UIiQiIiIi0kCS09Nz587FggULMHbsWEXZ6NGjsWjRIsyePRshISFShEVEREREhZAkabx27Rq6dOmiUh4UFIQpU6ZIEBER0ZvFddIvUodQbtyYFyh1CERlgiSnp52dnbF3716V8r1798LZ2VmCiIiIiIhIE0l6GsePH49Ro0YhMTERLVq0gEwmw59//omYmBh8+eWXUoRERERERBpIkjQOGzYMDg4O+OKLL/Djjz8CADw9PREbG4vg4GApQiIiIiIiDSRJGgGgW7du6Natm1TNExEREVERSHafRiIiIiIqP5g0EhEREZFWTBqJiIiISCsmjURERESklSRJY2RkJJ4+fapS/uzZM0RGRkoQERERERFpIknSGBERgcePH6uUP336FBERERJERERERESaSJI0CiEgk8lUys+cOQMbGxsJIiIiIiIiTUr1Po2VK1eGTCaDTCaDu7u7UuIol8vx+PFjhIeHl2ZIRERERKSDUk0ao6OjIYTAoEGDEBERAWtra8U0IyMjuLq6wtfXtzRDIiIiIiIdlGrSOGDAAACAm5sbWrRoAUNDw9JsnoiIiIiKSZLHCPr5+SEvLw+XLl1Ceno68vLylKa3bt1airCI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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Création du barplot\n",
"plt.bar(company_lazy_customers[\"number_compagny\"], company_lazy_customers[\"no_campaign_opened\"])\n",
"\n",
"# Ajout de titres et d'étiquettes\n",
"plt.xlabel('Company')\n",
"plt.ylabel(\"Part de clients n'ayant ouvert aucun mail\")\n",
"plt.title(\"Part de clients n'ayant ouvert aucun mail pour les compagnies de spectacle\")\n",
"\n",
"# Affichage du barplot\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 203,
"id": "c48015c2-6451-4089-93b7-6d55d3b2e553",
"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>number_compagny</th>\n",
" <th>nb_campaigns</th>\n",
" <th>nb_campaigns_opened</th>\n",
" <th>ratio_campaigns_opened</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10</td>\n",
" <td>734772</td>\n",
" <td>126151.0</td>\n",
" <td>0.171687</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>11</td>\n",
" <td>342396</td>\n",
" <td>129833.0</td>\n",
" <td>0.379190</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>12</td>\n",
" <td>3168123</td>\n",
" <td>810722.0</td>\n",
" <td>0.255900</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>13</td>\n",
" <td>3218569</td>\n",
" <td>793581.0</td>\n",
" <td>0.246563</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>14</td>\n",
" <td>2427043</td>\n",
" <td>723846.0</td>\n",
" <td>0.298242</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" number_compagny nb_campaigns nb_campaigns_opened ratio_campaigns_opened\n",
"0 10 734772 126151.0 0.171687\n",
"1 11 342396 129833.0 0.379190\n",
"2 12 3168123 810722.0 0.255900\n",
"3 13 3218569 793581.0 0.246563\n",
"4 14 2427043 723846.0 0.298242"
]
},
"execution_count": 203,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# taux d'ouverture des campaigns\n",
"\n",
"company_campaigns_stats = campaigns_information_spectacle.groupby(\"number_compagny\")[[\"nb_campaigns\", \"nb_campaigns_opened\"]].sum().reset_index()\n",
"company_campaigns_stats[\"ratio_campaigns_opened\"] = company_campaigns_stats[\"nb_campaigns_opened\"] / company_campaigns_stats[\"nb_campaigns\"]\n",
"company_campaigns_stats"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "d06ab865-4832-4fe9-918b-e5ff72bebee4",
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'company_campaigns_stats' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[43], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Création du barplot\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m plt\u001b[38;5;241m.\u001b[39mbar(\u001b[43mcompany_campaigns_stats\u001b[49m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnumber_compagny\u001b[39m\u001b[38;5;124m\"\u001b[39m], \u001b[38;5;241m100\u001b[39m \u001b[38;5;241m*\u001b[39m company_campaigns_stats[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mratio_campaigns_opened\u001b[39m\u001b[38;5;124m\"\u001b[39m])\n\u001b[1;32m 4\u001b[0m \u001b[38;5;66;03m# Ajout de titres et d'étiquettes\u001b[39;00m\n\u001b[1;32m 5\u001b[0m plt\u001b[38;5;241m.\u001b[39mxlabel(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mCompany\u001b[39m\u001b[38;5;124m'\u001b[39m)\n",
"\u001b[0;31mNameError\u001b[0m: name 'company_campaigns_stats' is not defined"
]
}
],
"source": [
"# Création du barplot\n",
"plt.bar(company_campaigns_stats[\"number_compagny\"], 100 * company_campaigns_stats[\"ratio_campaigns_opened\"])\n",
"\n",
"# Ajout de titres et d'étiquettes\n",
"plt.xlabel('Company')\n",
"plt.ylabel(\"Taux d'ouverture (%)\")\n",
"plt.title(\"Taux d'ouverture des campagnes de mails pour les compagnies de spectacle\")\n",
"\n",
"# Affichage du barplot\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 219,
"id": "5c37e063-a717-4a8c-828e-b386b87e8409",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkoAAAHFCAYAAAANLdYJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABbXUlEQVR4nO3dd1gUV/828HulLB0EgQVdARWxYSUSNQloFHuPPSoajQY1sT2WqBEsoEYRyyMao4IFjcYSW1RsmAQL9l4fFI0iiQUUpJ/3D1/m5wJDE1jU+3Nde13OmTMz351dZm/PzOwqhBACRERERJRDOW0XQERERFRWMSgRERERyWBQIiIiIpLBoEREREQkg0GJiIiISAaDEhEREZEMBiUiIiIiGQxKRERERDIYlIiIiIhklKmgFBISAoVCgdOnT8v2uXv3LhQKBUJCQkqvsBIUFhaGoKCgUtteUlISfH19cfTo0VLbZnHz9vaGo6OjtssoUQ8fPoSvry/Onz+v7VIK7H3728zO09MTnp6eGm0KhQK+vr6lVsP78PdbkOO8tuT2Gpc0X19fKBSKUq/j6tWr8PX1xd27d0t0O0WVV325fQY8ffoUvXv3ho2NDRQKBbp06VJstegW25pKiZ2dHY4fP46qVatqu5RiERYWhsuXL2P06NGlsr2kpCT4+fkBQKkfEKjgHj58CD8/Pzg6OqJ+/fraLocALFu2TNsl8O/3A1Ea77WrV6/Cz88Pnp6eZfI/nnnVN23aNHz33XcabTNnzsT27duxevVqVK1aFZaWlsVWyzsXlJRKJT7++GNtl6EVGRkZSE9Ph1Kp1HYpVEKyXuOSXj/fQ4VXq1YtbZdAeB0WjYyMtF1GieJ7LW+5DZRcvnwZVatWRb9+/Yp9e2Xq1FtByA3v37p1C3379oWNjQ2USiVq1qyJ//73vxp9jh49CoVCgY0bN2LKlCmwt7eHmZkZWrZsiRs3bhRo+8W5HU9PT+zZswf37t2DQqGQHm8+z3nz5mHWrFlwcnKCUqnEkSNHAACnT59Gp06dYGlpCQMDAzRo0ACbN2/Od99ZW1sDAPz8/KTteXt7AwBu376NQYMGwdnZGUZGRqhYsSI6duyIS5cuaawna+g8+5Bo1vPOOi1w69YtmJmZoUePHhr9Dh8+DB0dHUybNi3f/R0SEgIXFxdpX69duzbfZbJkZmZi3rx5qFGjBpRKJWxsbDBgwAA8ePBAo5+jo6O0D9705vD3P//8A319/Vxrvn79OhQKBRYvXiy1xcbGYtiwYahUqRL09fXh5OQEPz8/jRCU12v80UcfAQAGDRokvU5Zp3jkhuWzD0eXxHsoy8OHD9GzZ0+YmprC3NwcvXr1QmxsbK59C7KdpKQkjB8/Hk5OTjAwMIClpSXc3NywcePGPOvIei8ePnwYQ4cOhZWVFczMzDBgwAAkJiYiNjYWPXv2hIWFBezs7DB+/HikpaVprMPPzw/u7u6wtLSEmZkZGjZsiFWrViH774UX5HRIUZ8HkP97Jr+/39wU9pi3evVq1KtXT6q9a9euuHbtmkYfb29vmJiY4Pr162jdujWMjY1hZ2eHOXPmAABOnDiBTz75BMbGxqhevTpCQ0Nzre3Zs2cYNGgQLC0tYWxsjI4dO+J///ufRh9PT0/UqVMHx44dQ9OmTWFkZITBgwcDABISEqR9ra+vj4oVK2L06NFITEzMd18LITBv3jw4ODjAwMAADRs2xO+//55r37fZDgDs27cPn3/+OczNzWFkZISaNWsiICAgz2Vye6+lpqZi1qxZ0vHM2toagwYNwj///KPRz9HRER06dMC+ffvQsGFDGBoaokaNGli9erXUJyQkRDouN2/eXHovZX2unjt3Dh06dJA+5+zt7dG+ffscx87swsPD0blzZ1SqVAkGBgaoVq0ahg0bhn///TdH3+vXr6NPnz6wtbWFUqlE5cqVMWDAAKSkpORb35vHuqzj3MGDB3Ht2jWpb9bnUHBwMOrVqwcTExOYmpqiRo0a+P777/N8HjmIMmTNmjUCgIiKipLtEx0dLQCINWvWSG1XrlwR5ubmwtXVVaxdu1YcOHBAjBs3TpQrV074+vpK/Y4cOSIACEdHR9GvXz+xZ88esXHjRlG5cmXh7Ows0tPT86yvuLdz5coV0axZM6FSqcTx48elx5vPs2LFiqJ58+bi119/FQcOHBDR0dHi8OHDQl9fX3z66afil19+Efv27RPe3t459kt2ycnJYt++fQKA+Oqrr6Tt3b59WwghREREhBg3bpz49ddfRUREhNi+fbvo0qWLMDQ0FNevX8/xOkVHR2usP+t5HzlyRGrbtGmTACAWLVokhBDi0aNHwtbWVnh4eOS7v7O207lzZ7Fr1y6xfv16Ua1aNaFWq4WDg0OeywohxNdffy0AiJEjR4p9+/aJ5cuXC2tra6FWq8U///wj9XNwcBADBw7MsbyHh4fw8PCQprt27SrUarXIyMjQ6DdhwgShr68v/v33X+k5ZtW4YsUKcfDgQTFz5kyhVCqFt7e3tJzca3zhwgXpuU+dOlV6ne7fv59rXVkGDhyosV9K4j0khBBJSUmiZs2awtzcXCxZskTs379ffPvtt6Jy5co5li/odoYNGyaMjIxEYGCgOHLkiNi9e7eYM2eOWLJkSZ61ZO0nJycnMW7cOHHgwAExd+5coaOjI/r06SMaNmwoZs2aJcLDw8XEiRMFALFgwQKNdXh7e4tVq1aJ8PBwER4eLmbOnCkMDQ2Fn5+fRr/c9jsAMX369Ld+HgV5z+T395ubwhzz/P39BQDRp08fsWfPHrF27VpRpUoVYW5uLm7evCn1GzhwoNDX1xc1a9YUixYtEuHh4WLQoEECgJg8ebKoXr26WLVqldi/f7/o0KGDACBOnz6d4zVTq9Vi8ODB4vfffxc//fSTsLGxEWq1Wjx79kxjn1taWgq1Wi2WLFkijhw5IiIiIkRiYqKoX7++qFChgggMDBQHDx4UixYtEubm5qJFixYiMzMzz/09ffp0aT9mbb9ixYpCpVJpvMZvu52ff/5ZKBQK4enpKcLCwsTBgwfFsmXLhI+PT45a3pT9vZaRkSHatGkjjI2NhZ+fnwgPDxc///yzqFixoqhVq5ZISkqS+jo4OIhKlSqJWrVqibVr14r9+/eLHj16CAAiIiJCCCFEXFyc9Hr/97//ld5LcXFx4uXLl8LKykq4ubmJzZs3i4iICPHLL7+I4cOHi6tXr+b5fIODg0VAQIDYuXOniIiIEKGhoaJevXrCxcVFpKamSv3Onz8vTExMhKOjo1i+fLk4dOiQWL9+vejZs6dISEjIsz4hNI91ycnJ4vjx46JBgwaiSpUqUt/4+HixceNGAUCMGjVKHDhwQBw8eFAsX75cfPvtt3k+j+zei6DUunVrUalSJREfH6/Rd+TIkcLAwEA8ffpUCPF/B4127dpp9Nu8ebMAIIUUOSWxnfbt2+f6oZ/1PKtWrarxBhNCiBo1aogGDRqItLQ0jfYOHToIOzu7HB/kb/rnn39yHNzlpKeni9TUVOHs7CzGjBkjtRcmKAkhxDfffCP09fXF8ePHRYsWLYSNjY14+PBhntvOyMgQ9vb2omHDhhoHo7t37wo9Pb18g9K1a9cEAI0DkhBCnDx5UgAQ33//vdRW0KC0c+dOAUAcOHBAaktPTxf29vaie/fuUtuwYcOEiYmJuHfvnsb65s+fLwCIK1euCCHyfo2joqJkQ0thg1Jxv4eCg4MFAPHbb79ptA8dOjRHzQXdTp06dUSXLl1ktykn6704atQojfYuXboIACIwMFCjvX79+qJhw4ay68vIyBBpaWlixowZwsrKSuO9V5CgVNTnUdD3TGH+foUo+LHo2bNnwtDQMEe/mJgYoVQqRd++faW2gQMHCgBi69atUltaWpqwtrYWAMTZs2el9idPnggdHR0xduxYqS3rNevatavGtv766y8BQMyaNUtq8/DwEADEoUOHNPoGBASIcuXK5fis+PXXXwUAsXfvXtl98uzZM2FgYCC7/Tdf47fZzosXL4SZmZn45JNP8gxUBQlKWR/4b+5zIf7vOLFs2TKpzcHBQRgYGGi8l169eiUsLS3FsGHDpLYtW7bkerw+ffq0ACB27NghW3NBZGZmirS0NHHv3r0cx4sWLVoICwsLKfjkRq4+IXIe64R4vc9q166t0TZy5EhhYWHxVs9DCCHeuVNv2SUnJ+PQoUPo2rUrjIyMkJ6eLj3atWuH5ORknDhxQmOZTp06aUzXrVsXAHDv3j2tbye7Tp06QU9PT5q+ffs2rl+/Lp2HzV7Ho0ePCnwaMbv09HT4+/ujVq1a0NfXh66uLvT19XHr1q0cw++FsXDhQtSuXRvNmzfH0aNHsX79etjZ2eW5zI0bN/Dw4UP07dtX444QBwcHNG3aNN9tZp1eyn5aonHjxqhZsyYOHTpU6OfRtm1bqFQqrFmzRmrbv38/Hj58KJ0OAIDdu3ejefPmsLe313h92rZtCwCIiIjQWG/217i4Ffd76MiRIzA1Nc3x/u7bt6/GdGG207hxY/z++++YNGkSjh49ilevXhXqOXbo0EFjumbNmgCA9u3b52jP/vd3+PBhtGzZEubm5tDR0YGenh5++OEHPHnyBHFxcYWqo6jPo7DvmcLK71h0/PhxvHr1Ksffi1qtRosWLXL8vSgUCrRr106a1tXVRbVq1WBnZ4cGDRpI7ZaWlrCxscn1mJf9WpKmTZvCwcFB+tvNUr58ebRo0UKjbffu3ahTpw7q16+vsb9at26tcdolN8ePH0dycrLs9otrO5GRkUhISICPj0+Ou9oKa/fu3bCwsEDHjh016qhfvz5UKlWOOurXr4/KlStL0wYGBqhevXqBPnuqVauG8uXLY+LEiVi+fDmuXr1a4Drj4uIwfPhwqNVq6OrqQk9PT9qnWZ8hSUlJiIiIQM+ePaVTySWlcePGeP78Ofr06YPffvst11OABfHOB6UnT54gPT0dS5YsgZ6ensYj6w85+86xsrLSmM66sDWvg1ppbSe77IHi8ePHAIDx48fnqMPHxyfXOgpq7NixmDZtGrp06YJdu3bh5MmTiIqKQr169Qr9wfUmpVKJvn37Ijk5GfXr10erVq3yXebJkycAAJVKlWNebm1yy+cWyOzt7aX5haGrq4v+/ftj+/bteP78OYDX5/rt7OzQunVrqd/jx4+xa9euHK9P7dq1AeR8ffILjW+ruN9DT548ga2tbY727K9LYbazePFiTJw4ETt27EDz5s1haWmJLl264NatWwV6jtnvcNHX15dtT05OlqZPnToFLy8vAMDKlSvx119/ISoqClOmTAFQuL/Vt3kehX3PFFZ+x6LC/r0YGRnBwMBAo01fXz/XO42y7/Mscn/b2beVW02PHz/GxYsXc+wvU1NTCCHyff/mtf3i2k7WtUOVKlWS7VNQjx8/xvPnz6Gvr5+jltjY2Hw/e4DXr3lB3s/m5uaIiIhA/fr18f3336N27dqwt7fH9OnTc1zf96bMzEx4eXlh27ZtmDBhAg4dOoRTp05JAwhZ23727BkyMjKKZb/kp3///li9ejXu3buH7t27w8bGBu7u7ggPDy/Uet65u96yK1++PHR0dNC/f3+MGDEi1z5OTk7vzHayy/4/kQoVKgAAJk+ejG7duuW6jIuLS5G2tX79egwYMAD+/v4a7f/++y8sLCyk6awDZEpKSo5+ubl8+TJ++OEHfPTRR4iKikJgYCDGjh2bZy1Zf+i5XSAsd9Fwbss/evQoxx/kw4cPpf0IvH4+2Z8L8Pr5vNkPeH1x9Y8//ohNmzahV69e2LlzJ0aPHg0dHR2pT4UKFVC3bl3Mnj0719rs7e01pgv7v00DAwPEx8fnWm9uivs9ZGVlhVOnTuVoz/66FGY7xsbG8PPzg5+fHx4/fiyNynTs2BHXr1+XreVtbdq0CXp6eti9e7fGB/+OHTuKtL6iPo/CvmeK25t/L9ll/3spLnJ/29WqVdNoy+3vo0KFCjA0NNS4QDn7fDn5HVvevCHibbaTNVqS3wXQBVGhQgVYWVlh3759uc43NTV96228ydXVFZs2bYIQAhcvXkRISAhmzJgBQ0NDTJo0KddlLl++jAsXLiAkJAQDBw6U2m/fvq3Rz9LSEjo6OsWyXwpi0KBBGDRoEBITE3Hs2DFMnz4dHTp0wM2bN3OMIMp554OSkZERmjdvjnPnzqFu3brS/yTfle0UNOVncXFxgbOzMy5cuJAj0BR0e0Du/1NWKBQ5bhvfs2cP/v77b42DV9aB5OLFixofqDt37syxzsTERPTo0QOOjo44cuQIJk2ahEmTJqFZs2Zwd3eXrdPFxQV2dnbYuHEjxo4dKx0s7927h8jIyHw/OLKG6tevXy/dQQYAUVFRuHbtmjRikPV8Ll68qLH8zZs3cePGjRwHwpo1a8Ld3R1r1qxBRkYGUlJSMGjQII0+HTp0wN69e1G1alWUL18+zzrl5PU6OTo6YsuWLUhJSZH6PXnyBJGRkTAzM8t33W/7HmrevDk2b96MnTt3apzSCQsLK5bt2NrawtvbGxcuXEBQUFCJ3g6uUCigq6urEXRfvXqFdevWvfW6C/M8CvqeKcqodEE0adIEhoaGWL9+vcZdqg8ePMDhw4fxxRdfFOv2AGDDhg3o3r27NB0ZGYl79+5hyJAh+S7boUMH+Pv7w8rKqtD/Qf34449hYGAgu/03g9LbbKdp06YwNzfH8uXL0bt377c6/dahQwds2rQJGRkZeR43C6Mg7yWFQoF69eph4cKFCAkJwdmzZ/Ps++Z6s6xYsUJj2tDQEB4eHtiyZQtmz54tGzaL+71ubGyMtm3bIjU1FV26dMGVK1fe7aB0+PDhXL+N881z4m9atGgRPvnkE3z66af45ptv4OjoiBcvXuD27dvYtWsXDh8+XCx1lcR2XF1dsW3bNgQHB6NRo0YoV64c3Nzc8lxmxYoVaNu2LVq3bg1vb29UrFgRT58+xbVr13D27Fls2bJFdllTU1M4ODjgt99+w+effw5LS0tUqFBBuqU0JCQENWrUQN26dXHmzBn8+OOPOUZkPvroI7i4uGD8+PFIT09H+fLlsX37dvz55585tjd8+HDExMTg1KlTMDY2xoIFC3D8+HH07t0b586d0xipelO5cuUwc+ZMDBkyBF27dsXQoUPx/Plz+Pr6FujUm4uLC77++mssWbIE5cqVQ9u2bXH37l1MmzYNarUaY8aMkfr2798fX375JXx8fNC9e3fcu3cP8+bNkz1/PnjwYAwbNgwPHz5E06ZNc4y+zJgxA+Hh4WjatCm+/fZbuLi4IDk5GXfv3sXevXuxfPnyfIedq1atCkNDQ2zYsAE1a9aEiYkJ7O3tYW9vj/79+2PFihX48ssvMXToUDx58gTz5s0rUEjK8jbvoQEDBmDhwoUYMGAAZs+eDWdnZ+zduxf79+8v8nbc3d3RoUMH1K1bF+XLl8e1a9ewbt06NGnSpES/M6d9+/YIDAxE37598fXXX+PJkyeYP39+kb9nqqjPo6Dvmbz+ft+GhYUFpk2bhu+//x4DBgxAnz598OTJE/j5+cHAwADTp09/q/Xn5vTp0xgyZAh69OiB+/fvY8qUKahYsaJ0WjYvo0ePxtatW/HZZ59hzJgxqFu3LjIzMxETE4MDBw5g3LhxsoGifPnyGD9+PGbNmqWx/dyOLW+zHRMTEyxYsABDhgxBy5YtMXToUNja2uL27du4cOECli5dWuB91bt3b2zYsAHt2rXDd999h8aNG0NPTw8PHjzAkSNH0LlzZ3Tt2rXA6wOAOnXqAAB++uknmJqawsDAAE5OTjh+/DiWLVuGLl26oEqVKhBCYNu2bXj+/Hmel03UqFEDVatWxaRJkyCEgKWlJXbt2pXraa7AwEB88skncHd3x6RJk1CtWjU8fvwYO3fuxIoVK2BqaipbX26nFeUMHToUhoaGaNasGezs7BAbG4uAgACYm5tr/Ac6X299OXgxyrobQu4RHR2d611vQry+w2fw4MGiYsWKQk9PT1hbW4umTZtq3EGRdQfIli1bciyb2zpzU9zbefr0qfjiiy+EhYWFUCgU0t0PWX1//PHHXOu4cOGC6Nmzp7CxsRF6enpCpVKJFi1aiOXLl+f7HA4ePCgaNGgglEqlACDd8fXs2TPx1VdfCRsbG2FkZCQ++eQT8ccff+R6t8/NmzeFl5eXMDMzE9bW1mLUqFFiz549GncprFy5Mtf9evv2bWFmZlagu4N+/vln4ezsLPT19UX16tXF6tWrc73jITcZGRli7ty5onr16kJPT09UqFBBfPnll9Jt9lkyMzPFvHnzRJUqVYSBgYFwc3MThw8flr27LD4+XhgaGgoAYuXKlblu+59//hHffvutcHJyEnp6esLS0lI0atRITJkyRbx8+VIIkf9rvHHjRlGjRg2hp6eX406n0NBQUbNmTWFgYCBq1aolfvnlF9m73kriPfTgwQPRvXt3YWJiIkxNTUX37t1FZGRkrq93QbYzadIk4ebmJsqXLy+USqWoUqWKGDNmjPSVC3Lk7pTNupPoza+BEOL13TLGxsYabatXrxYuLi7SdgMCAsSqVaty3NlZkLveivo8hCjYe0YI+b/f3BT2mPfzzz+LunXrCn19fWFubi46d+4s3XGXJbd9KETudx0J8fourPbt20vTWa/ZgQMHRP/+/YWFhYV0x92tW7cKtE4hhHj58qWYOnWqcHFxkep1dXUVY8aMEbGxsbL7RIjXf/MBAQFCrVYLfX19UbduXbFr165cX+O32Y4QQuzdu1d4eHgIY2NjYWRkJGrVqiXmzp0rzS/IXW9CvL6zcP78+aJevXrCwMBAmJiYiBo1aohhw4Zp7Lfs+zuvdQYFBQknJyeho6MjvR+uX78u+vTpI6pWrSoMDQ2Fubm5aNy4sQgJCcn3uV69elW0atVKmJqaivLly4sePXqImJiYXO/UvHr1qujRo4ewsrIS+vr6onLlysLb21skJyfnWZ8QBb/rLTQ0VDRv3lzY2toKfX19YW9vL3r27CkuXryY73N5k0KIbN+qRkREREQA3oO73oiIiIhKCoMSERERkQwGJSIiIiIZDEpEREREMhiUiIiIiGQwKBERERHJKJNfOFmcMjMz8fDhQ5iamr71DxMSERFR6RBC4MWLF7C3t0e5ctob13nvg9LDhw+hVqu1XQYREREVwf3790vlR3TlvPdBKevHAu/fv1+on3ggIiIi7UlISIBarS72H/0trPc+KGWdbjMzM2NQIiIiesdo+7IZXsxNREREJINBiYiIiEgGgxIRERGRjPf+GiUiKn4ZGRlIS0vTdhlE9A7T09ODjo6OtsvIF4MSERWYEAKxsbF4/vy5tkshoveAhYUFVCqV1i/YzguDEhEVWFZIsrGxgZGRUZk+uBFR2SWEQFJSEuLi4gAAdnZ2Wq5IHoMSERVIRkaGFJKsrKy0XQ4RveMMDQ0BAHFxcbCxsSmzp+F4MTcRFUjWNUlGRkZaroSI3hdZx5OyfM0jgxIRFQpPtxFRcXkXjicMSkREREQyGJSIiLTs6NGjUCgUvJuQqAzixdxE9Na+Cokq1e2t8v6oUP09PT1Rv359BAUFlUxBxezo0aPw9vbG3bt3tV1Kgbxr+5eoMDiiRERERVLcF+CW5Qt66cOl1aDk6OgIhUKR4zFixAgAr79nwdfXF/b29jA0NISnpyeuXLmizZKJ6B3j7e2NiIgILFq0SDrG3L17FxkZGfjqq6/g5OQEQ0NDuLi4YNGiRRrLenp6YvTo0RptXbp0gbe3NwDg+vXrMDIyQlhYmDR/27ZtMDAwwKVLl2Rr2rt3L6pXrw5DQ0M0b968QCNHwcHBqFq1KvT19eHi4oJ169ZJ8+7evQuFQoHz589Lbc+fP4dCocDRo0eRmZmJSpUqYfny5RrrPHv2LBQKBf73v/8BAOLj4/H111/DxsYGZmZmaNGiBS5cuCD19/X1Rf369bF69WpUqVIFSqUSAwcOzHX/hoSEwMLCQmN7O3bs0Lh4N7f1CSHyrYOoNGk1KEVFReHRo0fSIzw8HADQo0cPAMC8efMQGBiIpUuXIioqCiqVCq1atcKLFy+0WTYRvUMWLVqEJk2aYOjQodKxRq1WS+Fh8+bNuHr1Kn744Qd8//332Lx5c4HXXaNGDcyfPx8+Pj64d+8eHj58iKFDh2LOnDlwdXXNdZn79++jW7duaNeuHc6fP48hQ4Zg0qRJeW5n+/bt+O677zBu3DhcvnwZw4YNw6BBg3DkyJEC1VmuXDn07t0bGzZs0GgPCwtDkyZNUKVKFQgh0L59e8TGxmLv3r04c+YMGjZsiM8//xxPnz6Vlrl9+zY2b96MrVu34vz581i8eHGu+7egsq8PQIHqICotWr1GydraWmN6zpw5qFq1Kjw8PCCEQFBQEKZMmYJu3boBAEJDQ2Fra4uwsDAMGzZMGyUTFa+wXtquQFPfX7RdQbEzNzeHvr4+jIyMoFKppHYdHR34+flJ005OToiMjMTmzZvRs2fPAq/fx8cHe/fuRf/+/aGvr49GjRrhu+++k+0fHByMKlWqYOHChVAoFHBxccGlS5cwd+5cqY+np6fGKNP8+fPh7e0NHx8fAMDYsWNx4sQJzJ8/H82bNy9Qnf369UNgYCDu3bsHBwcHZGZmYtOmTfj+++8BAEeOHMGlS5cQFxcHpVIpbXfHjh349ddf8fXXXwMAUlNTsW7dOo3jd277t6Cyr+/w4cMFqoOotJSZa5RSU1Oxfv16DB48GAqFAtHR0YiNjYWXl5fUR6lUwsPDA5GRkVqslIjeF8uXL4ebmxusra1hYmKClStXIiYmptDrWb16NS5evIizZ88iJCQkz++GuXbtGj7++GONPk2aNMlz/deuXUOzZs002po1a4Zr164VuMYGDRqgRo0a2LhxIwAgIiICcXFxUig8c+YMXr58CSsrK5iYmEiP6Oho3LlzR1qPg4NDjv/kvo3s6ytoHUSlpczc9bZjxw48f/5cOvcfGxsLALC1tdXoZ2tri3v37smuJyUlBSkpKdJ0QkJC8RdLRO+8zZs3Y8yYMViwYAGaNGkCU1NT/Pjjjzh58qTUp1y5chBCaCyX2wXHFy5cQGJiIsqVK4fY2FjY29vLbjf7+goqe/gSQkht5cqVy7Hu3Ors168fwsLCMGnSJISFhaF169aoUKECACAzMxN2dnY4evRojuXevNbI2Ni4QPUWdN9lX19B6yAqLWVmRGnVqlVo27ZtjgNMXgeH3AQEBMDc3Fx6FOZcORG9n/T19ZGRkaHR9scff6Bp06bw8fFBgwYNUK1atRwjFtbW1nj06JE0nZGRgcuXL2v0efr0Kby9vTFlyhQMGjQI/fr1w6tXr2RrqVWrFk6cOKHRln06u5o1a+LPP//UaIuMjETNmjWlOgFo1Prmhd1Z+vbti0uXLuHMmTP49ddf0a9fP2lew4YNERsbC11dXVSrVk3jkRWm5OS2f62trfHixQskJibmWVN2b1MHUUkoE0Hp3r17OHjwIIYMGSK1ZZ3rzhpZyhIXF5djlOlNkydPRnx8vPS4f/9+yRRNRO8MR0dHnDx5Enfv3sW///6LzMxMVKtWDadPn8b+/ftx8+ZNTJs2DVFRmt8H1aJFC+zZswd79uzB9evX4ePjk+NLIYcPHw61Wo2pU6ciMDAQQgiMHz9etpbhw4fjzp07GDt2LG7cuIGwsDCEhITkWf9//vMfhISEYPny5bh16xYCAwOxbds2aTuGhob4+OOPMWfOHFy9ehXHjh3D1KlTc6zHyckJTZs2xVdffYX09HR07txZmteyZUs0adIEXbp0wf79+3H37l1ERkZi6tSpOH36dKH3r7u7O4yMjPD999/j9u3bBXqeb1sHUUkoE0FpzZo1sLGxQfv27aU2JycnqFQq6U444PV1TBEREWjatKnsupRKJczMzDQeRPRhGz9+PHR0dFCrVi1YW1sjJiYGw4cPR7du3dCrVy+4u7vjyZMn0sXSWQYPHoyBAwdiwIAB8PDwgJOTk8bF02vXrsXevXuxbt066OrqwsjICBs2bMDPP/+MvXv35lpL5cqVsXXrVuzatQv16tXD8uXL4e/vn2f9Xbp0waJFi/Djjz+idu3aWLFiBdasWQNPT0+pz+rVq5GWlgY3Nzd89913mDVrVq7r6tevHy5cuIBu3bpJv94OvB6937t3Lz777DMMHjwY1atXR+/evXH37t08/3Mqt38tLS2xfv167N27F66urti4cSN8fX3zXM/b1kFUEhSiqCfMi0lmZiacnJzQp08fzJkzR2Pe3LlzERAQgDVr1sDZ2Rn+/v44evQobty4AVNT0wKtPyEhAebm5oiPj2doorLnHbrrLTk5GdHR0XBycoKBgUEpFkVE76u8jitl5fNb6xdzHzx4EDExMRg8eHCOeRMmTMCrV6/g4+ODZ8+ewd3dHQcOHChwSCIiIiJ6G1oPSl5eXrJ3gSgUCvj6+hZouJaIiIiouJWJa5SIiIiIyiIGJSIiIiIZDEpEREREMhiUiIiIiGQwKBERERHJYFAiIiIiksGgRERERCSDQYmISAu8vb3RpUuXElv/0aNHoVAopN+mCwkJgYWFRYltj4rG09MTo0eP1nYZhZa9bkdHRwQFBWmtnpKk9S+cJKL3QGn/FEseP7WSG29vb4SGhgIAdHV1oVar0a1bN/j5+cHY2LjIZfj6+mLHjh04f/58kddRWnr16oV27doV6zqPHj2K5s2b49mzZx90CPP29sbz58+xY8cObZdSarZt2wY9PT1tl1EqGJSI6IPQpk0brFmzBmlpafjjjz8wZMgQJCYmIjg4uNDrEkIgIyOjBKosOYaGhho/gvuhS01Nhb6+vrbLeGdZWlpqu4RSw1NvRPRBUCqVUKlUUKvV6Nu3L/r16yeNAKxfvx5ubm4wNTWFSqVC3759ERcXJy2bdRpr//79cHNzg1KpxLp16+Dn54cLFy5AoVBAoVAgJCQk121nZGRg7NixsLCwgJWVFSZMmJDjp5uEEJg3bx6qVKkCQ0ND1KtXD7/++muezyklJQUTJkyAWq2GUqmEs7MzVq1alWvf3E697dq1C40aNYKBgQGqVKkCPz8/pKenS/MVCgV+/vlndO3aFUZGRnB2dsbOnTsBAHfv3kXz5s0BAOXLl4dCoYC3tzcA4Ndff4WrqysMDQ1hZWWFli1bIjExUfZ5REREoHHjxlAqlbCzs8OkSZM06sjttE79+vWln7fq06cPevfurTE/LS0NFSpUwJo1awC8PlU0cuRIjB07FhUqVECrVq0AAIGBgXB1dYWxsTHUajV8fHzw8uXLHPtt//79qFmzJkxMTNCmTRs8evQIwOtRxdDQUPz222/S++Do0aO5Ps/ExEQMGDAAJiYmsLOzw4IFC3L0SU1NxYQJE1CxYkUYGxvD3d1dY3337t1Dx44dUb58eRgbG6N27drYu3ev7L51dHTErFmzpO06ODjgt99+wz///IPOnTvDxMQErq6uOH36tLTMkydP0KdPH1SqVAlGRkZwdXXFxo0bNdab3ylDX19fVK5cGUqlEvb29vj2229l+5Z1DEpE9EEyNDREWloagNcfTjNnzsSFCxewY8cOREdHSx/6b5owYQICAgJw7do1eHl5Ydy4cahduzYePXqER48eoVev3E9BLliwAKtXr8aqVavw559/4unTp9i+fbtGn6lTp2LNmjUIDg7GlStXMGbMGHz55ZeIiIiQfQ4DBgzApk2bsHjxYly7dg3Lly+HiYlJgZ7//v378eWXX+Lbb7/F1atXsWLFCoSEhGD27Nka/fz8/NCzZ09cvHgR7dq1Q79+/fD06VOo1Wps3boVAHDjxg08evQIixYtwqNHj9CnTx8MHjwY165dw9GjR9GtWzfZ3/T8+++/0a5dO3z00Ue4cOECgoODsWrVKsyaNatAzwMA+vXrh507d2oEnP379yMxMRHdu3eX2kJDQ6Grq4u//voLK1asAACUK1cOixcvxuXLlxEaGorDhw9jwoQJGutPSkrC/PnzsW7dOhw7dgwxMTEYP348AGD8+PHo2bOnFJ4ePXqEpk2b5lrnf/7zHxw5cgTbt2/HgQMHcPToUZw5c0ajz6BBg/DXX39h06ZNuHjxInr06IE2bdrg1q1bAIARI0YgJSUFx44dw6VLlzB37tx8X/OFCxeiWbNmOHfuHNq3b4/+/ftjwIAB+PLLL3H27FlUq1YNAwYMkF6j5ORkNGrUCLt378bly5fx9ddfo3///jh58mRBXg78+uuvWLhwIVasWIFbt25hx44dcHV1LdCyZRFPvRHRB+fUqVMICwvD559/DgAYPHiwNK9KlSpYvHgxGjdujJcvX2p8CM2YMUMaiQAAExMT6OrqQqVS5bm9oKAgTJ48WfrQXr58Ofbv3y/NT0xMRGBgIA4fPowmTZpIdfz5559YsWIFPDw8cqzz5s2b2Lx5M8LDw9GyZUtpmYKaPXs2Jk2ahIEDB0rLzpw5ExMmTMD06dOlft7e3ujTpw8AwN/fH0uWLMGpU6fQpk0b6fSLjY2NNFp1584dpKeno1u3bnBwcACAPD8kly1bBrVajaVLl0KhUKBGjRp4+PAhJk6ciB9++AHlyuX///nWrVvD2NgY27dvR//+/QEAYWFh6NixI8zMzKR+1apVw7x58zSWfXNUxMnJCTNnzsQ333yDZcuWSe1paWlYvnw5qlatCgAYOXIkZsyYAeD1e8DQ0BApKSl5vg9evnyJVatWYe3atdJ7KDQ0FJUqVZL63LlzBxs3bsSDBw9gb28P4HUQ27dvH9asWQN/f3/ExMSge/fu0j4tyGverl07DBs2DADwww8/IDg4GB999BF69OgBAJg4cSKaNGmCx48fQ6VSoWLFilIQBIBRo0Zh37592LJlC9zd3fPdXkxMDFQqFVq2bAk9PT1UrlwZjRs3zne5sopBiYg+CLt374aJiQnS09ORlpaGzp07Y8mSJQCAc+fOwdfXF+fPn8fTp0+RmZkJ4PUBv1atWtI63NzcCr3d+Ph4PHr0SApAwOsLyt3c3KT/wV+9ehXJyckaIQx4PdLVoEGDXNd7/vx56Ojo5BqiCuLMmTOIiorSGEHKyMhAcnIykpKSYGRkBACoW7euNN/Y2BimpqYapyWzq1evHj7//HO4urqidevW8PLywhdffIHy5cvn2v/atWto0qQJFAqF1NasWTO8fPkSDx48QOXKlfN9Lnp6eujRowc2bNiA/v37IzExEb/99hvCwsI0+uX2+h05cgT+/v64evUqEhISkJ6ejuTkZCQmJkoX+hsZGUkhCQDs7Ozy3Ae5uXPnDlJTUzXeB5aWlnBxcZGmz549CyEEqlevrrFsSkoKrKysAADffvstvvnmGxw4cAAtW7ZE9+7dNV6j3Lw539bWFoBmeM1qi4uLg0qlQkZGBubMmYNffvkFf//9N1JSUpCSklLgGx969OiBoKAgVKlSBW3atEG7du3QsWNH6Oq+m5Hj3ayaiKiQmjdvjuDgYOjp6cHe3l66YycxMRFeXl7w8vLC+vXrYW1tjZiYGLRu3Rqpqaka63ibO+TykhXM9uzZg4oVK2rMUyqVuS7zthdmZ2Zmws/PD926dcsxz8DAQPp39jubFAqFVG9udHR0EB4ejsjISBw4cABLlizBlClTcPLkSTg5OeXoL4TQCElZbVnbAl6fHst+6i7rtGmWfv36wcPDA3FxcQgPD4eBgQHatm2r0Sf763fv3j20a9cOw4cPx8yZM2FpaYk///wTX331lcb6c9sHcqcS5RSkf2ZmJnR0dHDmzBno6OhozMsa2RwyZAhat26NPXv24MCBAwgICMCCBQswatQo2fW+WX/WPs2tLet1XbBgARYuXIigoCDp+q3Ro0fn+HuQo1arcePGDYSHh+PgwYPw8fHBjz/+iIiIiHfyTjleo0REHwRjY2NUq1YNDg4OGgfr69ev499//8WcOXPw6aefokaNGgUeLdDX18/37jdzc3PY2dnhxIkTUlt6errGtSm1atWCUqlETEwMqlWrpvFQq9W5rtfV1RWZmZl5XsOUl4YNG+LGjRs5tletWrUCne4CIN01ln0fKBQKNGvWDH5+fjh37hz09fVzXJOVpVatWoiMjNQIEpGRkTA1NZVCo7W1tXTxNAAkJCQgOjpaYz1NmzaFWq3GL7/8gg0bNqBHjx753tV2+vRppKenY8GCBfj4449RvXp1PHz4sEDP/U0FeR9Uq1YNenp6Gu+DZ8+e4ebNm9J0gwYNkJGRgbi4uByvyZun9dRqNYYPH45t27Zh3LhxWLlyZaFrzssff/yBzp0748svv0S9evVQpUoV6RqpgjI0NESnTp2wePFiHD16FMePH8elS5eKtc7SwhElIvqgVa5cGfr6+liyZAmGDx+Oy5cvY+bMmQVa1tHREdHR0Th//jwqVaoEU1PTXEeAvvvuO8yZMwfOzs6oWbMmAgMDpS+CBABTU1OMHz8eY8aMQWZmJj755BMkJCQgMjISJiYm0nVE2bc9cOBADB48GIsXL0a9evVw7949xMXFoWfPnvnW/sMPP6BDhw5Qq9Xo0aMHypUrh4sXL+LSpUsFvpDawcEBCoUCu3fvRrt27WBoaIgrV67g0KFD8PLygo2NDU6ePIl//vkHNWvWzHUdPj4+CAoKwqhRozBy5EjcuHED06dPx9ixY6XA1qJFC4SEhEh3e02bNi3HiItCoUDfvn2xfPly3Lx5E0eOHMm3/qpVqyI9PR1LlixBx44d8ddff2H58uUFeu5vcnR0xP79+3Hjxg1YWVnB3Nw8x8iJiYkJvvrqK/znP/+BlZUVbG1tMWXKFI1QWr16dfTr1w8DBgzAggUL0KBBA/z77784fPgwXF1d0a5dO4wePRpt27ZF9erV8ezZMxw+fFh23xZVtWrVsHXrVkRGRqJ8+fIIDAxEbGxsgbcTEhKCjIwMuLu7w8jICOvWrYOhoaF0zdq7hiNKRPRBs7a2RkhICLZs2YJatWphzpw5mD9/foGW7d69O9q0aYPmzZvD2to6xy3UWcaNG4cBAwbA29sbTZo0gampKbp27arRZ+bMmfjhhx8QEBCAmjVronXr1ti1a1eup6uyBAcH44svvoCPjw9q1KiBoUOH5nkb/ptat26N3bt3Izw8HB999BE+/vhjBAYGFurDrGLFivDz88OkSZNga2uLkSNHwszMDMeOHUO7du1QvXp1TJ06FQsWLMhxGuzNdezduxenTp1CvXr1MHz4cHz11VeYOnWq1Gfy5Mn47LPP0KFDB7Rr1w5dunTRuGYoS79+/XD16lVUrFgRzZo1y7f++vXrIzAwEHPnzkWdOnWwYcMGBAQEFPj5Zxk6dChcXFzg5uYGa2tr/PXXX7n2+/HHH/HZZ5+hU6dOaNmyJT755BM0atRIo8+aNWswYMAAjBs3Di4uLujUqRNOnjwpjSxmZGRgxIgRqFmzJtq0aQMXFxeNC8+Lw7Rp09CwYUO0bt0anp6eUKlUhfoWeQsLC6xcuRLNmjVD3bp1cejQIezatUu6zupdoxCFPdH6jklISIC5uTni4+M17n4gKhNK+xut85PHN14nJycjOjoaTk5OGtewEBEVVV7HlbLy+c0RJSIiIiIZDEpEREREMngxNxERFY8nd7RdgSarnNcxERUWR5SIiIiIZDAoEVGhvOf3fxBRKXoXjicMSkRUIFnfC5OUlKTlSojofZF1PCnL39jNa5SIqEB0dHRgYWEhfWu1kZFRjp+eoA9cat7fTl3qkpO1XQHJEEIgKSkJcXFxsLCwyPEFomUJgxIRFVjWzygU9gdB6QOR+I+2K9D0vIwFN8rBwsJC4+dZyiIGJSIqMIVCATs7O9jY2OT4UVIi7F6s7Qo0dVio7QooD3p6emV6JCkLgxIRFZqOjs47cYCjUpb6VNsVaOI3yFMx4MXcRERERDIYlIiIiIhkMCgRERERyWBQIiIiIpLBoEREREQkg0GJiIiISAaDEhEREZEMBiUiIiIiGQxKRERERDIYlIiIiIhkaD0o/f333/jyyy9hZWUFIyMj1K9fH2fOnJHmCyHg6+sLe3t7GBoawtPTE1euXNFixURERPSh0GpQevbsGZo1awY9PT38/vvvuHr1KhYsWAALCwupz7x58xAYGIilS5ciKioKKpUKrVq1wosXL7RXOBEREX0QtPqjuHPnzoVarcaaNWukNkdHR+nfQggEBQVhypQp6NatGwAgNDQUtra2CAsLw7Bhw0q7ZCIiIvqAaHVEaefOnXBzc0OPHj1gY2ODBg0aYOXKldL86OhoxMbGwsvLS2pTKpXw8PBAZGSkNkomIiKiD4hWg9L//vc/BAcHw9nZGfv378fw4cPx7bffYu3atQCA2NhYAICtra3Gcra2ttK87FJSUpCQkKDxICIiIioKrZ56y8zMhJubG/z9/QEADRo0wJUrVxAcHIwBAwZI/RQKhcZyQogcbVkCAgLg5+dXckUTERHRB0OrI0p2dnaoVauWRlvNmjURExMDAFCpVACQY/QoLi4uxyhTlsmTJyM+Pl563L9/vwQqJyIiog+BVoNSs2bNcOPGDY22mzdvwsHBAQDg5OQElUqF8PBwaX5qaioiIiLQtGnTXNepVCphZmam8SAiIiIqCq2eehszZgyaNm0Kf39/9OzZE6dOncJPP/2En376CcDrU26jR4+Gv78/nJ2d4ezsDH9/fxgZGaFv377aLJ2IiIg+AFoNSh999BG2b9+OyZMnY8aMGXByckJQUBD69esn9ZkwYQJevXoFHx8fPHv2DO7u7jhw4ABMTU21WDkRERF9CBRCCKHtIkpSQkICzM3NER8fz9NwVPaE9dJ2BZr6/qLtCuhdxvczFaOy8vmt9Z8wISIiIiqrGJSIiIiIZDAoEREREclgUCIiIiKSwaBEREREJINBiYiIiEgGgxIRERGRDAYlIiIiIhla/WZuIiIiKiR+sWep4ogSERERkQwGJSIiIiIZDEpEREREMhiUiIiIiGQwKBERERHJYFAiIiIiksGgRERERCSDQYmIiIhIBoMSERERkQwGJSIiIiIZDEpEREREMhiUiIiIiGQwKBERERHJYFAiIiIiksGgRERERCSDQYmIiIhIBoMSERERkQwGJSIiIiIZDEpEREREMhiUiIiIiGQwKBERERHJYFAiIiIikqGr7QKIiEpcWC9tV6Cp7y/aroCICogjSkREREQyGJSIiIiIZDAoEREREclgUCIiIiKSwaBEREREJINBiYiIiEgGgxIRERGRDK0GJV9fXygUCo2HSqWS5gsh4OvrC3t7exgaGsLT0xNXrlzRYsVERET0IdH6iFLt2rXx6NEj6XHp0iVp3rx58xAYGIilS5ciKioKKpUKrVq1wosXL7RYMREREX0otB6UdHV1oVKppIe1tTWA16NJQUFBmDJlCrp164Y6deogNDQUSUlJCAsL03LVRERE9CHQelC6desW7O3t4eTkhN69e+N///sfACA6OhqxsbHw8vKS+iqVSnh4eCAyMlJ2fSkpKUhISNB4EBERERWFVoOSu7s71q5di/3792PlypWIjY1F06ZN8eTJE8TGxgIAbG1tNZaxtbWV5uUmICAA5ubm0kOtVpfocyAiIqL3l1aDUtu2bdG9e3e4urqiZcuW2LNnDwAgNDRU6qNQKDSWEULkaHvT5MmTER8fLz3u379fMsUTERHRe0/rp97eZGxsDFdXV9y6dUu6+y376FFcXFyOUaY3KZVKmJmZaTyIiIiIiqJMBaWUlBRcu3YNdnZ2cHJygkqlQnh4uDQ/NTUVERERaNq0qRarJCIiog+FrjY3Pn78eHTs2BGVK1dGXFwcZs2ahYSEBAwcOBAKhQKjR4+Gv78/nJ2d4ezsDH9/fxgZGaFv377aLJuIiIg+EFoNSg8ePECfPn3w77//wtraGh9//DFOnDgBBwcHAMCECRPw6tUr+Pj44NmzZ3B3d8eBAwdgamqqzbKJiIjoA6HVoLRp06Y85ysUCvj6+sLX17d0CiIiIiJ6Q5m6RomIiIioLGFQIiIiIpLBoEREREQkg0GJiIiISAaDEhEREZEMBiUiIiIiGQxKRERERDIYlIiIiIhkMCgRERERyWBQIiIiIpLBoEREREQkg0GJiIiISAaDEhEREZEMBiUiIiIiGQxKRERERDIYlIiIiIhkMCgRERERyWBQIiIiIpLBoEREREQkg0GJiIiISAaDEhEREZEMBiUiIiIiGQxKRERERDIYlIiIiIhkMCgRERERyWBQIiIiIpLBoEREREQkg0GJiIiISAaDEhEREZEM3aIumJaWhtjYWCQlJcHa2hqWlpbFWRcRERGR1hVqROnly5dYsWIFPD09YW5uDkdHR9SqVQvW1tZwcHDA0KFDERUVVVK1EhEREZWqAgelhQsXwtHREStXrkSLFi2wbds2nD9/Hjdu3MDx48cxffp0pKeno1WrVmjTpg1u3bpVknUTERERlbgCn3qLjIzEkSNH4Orqmuv8xo0bY/DgwVi+fDlWrVqFiIgIODs7F1uhRERERKWtwEFpy5YtBeqnVCrh4+NT5IKIiIiIyooiX8ydJS0tDTdv3kRGRgZcXFygVCqLoy4iIiIirXurrwf4448/4OjoiObNm8PT0xNqtRr79u0rrtqIiIiItKpQQUkIoTE9evRobNiwAXFxcXj69ClmzZqFb775plgLJCIiItKWQgWlxo0b4+zZs9J0amoqKleuLE1XrlwZycnJxVcdERERkRYV6hqlpUuXYsiQIfDw8MCsWbMwffp0NGrUCC4uLkhLS8P169exZMmSkqqViIiIqFQVakTJ3d0dp06dgrW1NRo1agR9fX3cuHEDU6ZMwbRp03Dr1i0MHjy4SIUEBARAoVBg9OjRUpsQAr6+vrC3t4ehoSE8PT1x5cqVIq2fiIiIqLAKfTG3rq4uvv/+e+zevRtLlizBN998g0aNGqFLly6wt7cvUhFRUVH46aefULduXY32efPmITAwEEuXLkVUVBRUKhVatWqFFy9eFGk7RERERIVR6KB09epVbN26FZmZmQgPD0fHjh3x6aefYtmyZUUq4OXLl+jXrx9WrlyJ8uXLS+1CCAQFBWHKlCno1q0b6tSpg9DQUCQlJSEsLKxI2yIiIiIqjEIFpaCgILi5ueHHH39EkyZNsHLlSnh7e+PkyZM4fvw4mjRpgkuXLhWqgBEjRqB9+/Zo2bKlRnt0dDRiY2Ph5eUltSmVSnh4eCAyMlJ2fSkpKUhISNB4EBERERVFoYLS3LlzsWfPHpw4cQJnz55FYGAgAKBChQpYt24dZsyYgZ49exZ4fZs2bcLZs2cREBCQY15sbCwAwNbWVqPd1tZWmpebgIAAmJubSw+1Wl3geoiIiIjeVOjvUSpX7vUiOjo6Ob5XqVWrVjh37lyB1nX//n189913WL9+PQwMDGT7KRSKHDVkb3vT5MmTER8fLz3u379foHqIiIiIsivU1wOMHz8e7dq1Q7169XDz5k34+/vn6JNX6HnTmTNnEBcXh0aNGkltGRkZOHbsGJYuXYobN24AeD2yZGdnJ/WJi4vLMcr0JqVSyZ9RISIiomJR6KDUpk0bXLt2Da6urqhRo0aRN/z555/nuJ5p0KBBqFGjBiZOnIgqVapApVIhPDwcDRo0APD6Cy4jIiIwd+7cIm+XCiisl7Yr0NT3F21XQEREH6BC/yhunTp1UKdOnbfesKmpaY71GBsbw8rKSmofPXo0/P394ezsDGdnZ/j7+8PIyAh9+/Z96+0TERER5afA1yjNmTMHiYmJBep78uRJ7Nmzp8hFZZkwYQJGjx4NHx8fuLm54e+//8aBAwdgamr61usmIiIiyk+BR5SuXr0KBwcH9OjRA506dYKbmxusra0BAOnp6bh69Sr+/PNPrF+/Ho8ePcLatWsLXczRo0c1phUKBXx9feHr61vodRERERG9rQIHpbVr1+LixYv473//i379+iE+Ph46OjpQKpVISkoCADRo0ABff/01Bg4cyAuqiYiI6J1XqGuU6tatixUrVmD58uW4ePEi7t69i1evXqFChQqoX78+KlSoUFJ1EhEREZW6Ql/MDbw+JVavXj3Uq1evuOshIiIiKjMK/VtvRERERB+KIo0oEZW2r0KitF1CiRj1+HmxrKe+2qJY1kNERJo4okREREQkg0GJiIiISEaRgtLjx49l5128eLHIxRARERGVJUUKSq6urti5c2eO9vnz58Pd3f2tiyIiIiIqC4oUlCZOnIhevXph+PDhePXqFf7++2+0aNECP/74I375hT9eSkRERO+HIgWlcePG4cSJE/jrr79Qt25d1K1bF4aGhrh48SI6depU3DUSERERaUWRL+auUqUKateujbt37yIhIQE9e/aEra1tcdZGREREpFVFCkpZI0m3b9/GxYsXERwcjFGjRqFnz5549uxZcddIREREpBVFCkotWrRAr169cPz4cdSsWRNDhgzBuXPn8ODBA7i6uhZ3jURERERaUaRv5j5w4AA8PDw02qpWrYo///wTs2fPLpbCiIiIiLStSCNK2UOStLJy5TBt2rS3KoiIiIiorCjSiNKMGTPynP/DDz8UqRgiIiKisqRIQWn79u0a02lpaYiOjoauri6qVq3KoERERETvhSIFpXPnzuVoS0hIgLe3N7p27frWRRERERGVBcX2o7hmZmaYMWMGr1EiIiKi90axBSUAeP78OeLj44tzlURERERaU6RTb4sXL9aYFkLg0aNHWLduHdq0aVMshRERERFpW5GC0sKFCzWmy5UrB2trawwcOBCTJ08u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REREMhiU3jHHjh1Dx44dYW9vD4VCgR07dmjMF0LA19cX9vb2MDQ0hKenJ65cuaKdYt9x+e3rbdu2oXXr1qhQoQIUCgXOnz+vlTrfdXnt57S0NEycOBGurq4wNjaGvb09BgwYgIcPH2qv4HdUfu9nX19f1KhRA8bGxihfvjxatmyJkydPaqfYd1h++/lNw4YNg0KhQFBQUKnVR4XHoPSOSUxMRL169bB06dJc58+bNw+BgYFYunQpoqKioFKp0KpVK7x48aKUK3335bevExMT0axZM8yZM6eUK3u/5LWfk5KScPbsWUybNg1nz57Ftm3bcPPmTXTq1EkLlb7b8ns/V69eHUuXLsWlS5fw559/wtHREV5eXvjnn39KudJ3W377OcuOHTtw8uRJrf88BxWAoHcWALF9+3ZpOjMzU6hUKjFnzhypLTk5WZibm4vly5drocL3R/Z9/abo6GgBQJw7d65Ua3of5bWfs5w6dUoAEPfu3Sudot5DBdnP8fHxAoA4ePBg6RT1HpLbzw8ePBAVK1YUly9fFg4ODmLhwoWlXhsVHEeU3iPR0dGIjY2Fl5eX1KZUKuHh4YHIyEgtVkZUfOLj46FQKD6433AsTampqfjpp59gbm6OevXqabuc90pmZib69++P//znP6hdu7a2y6ECeCe+mZsKJjY2FgBga2ur0W5ra4t79+5poySiYpWcnIxJkyahb9++/GHRErB792707t0bSUlJsLOzQ3h4OCpUqKDtst4rc+fOha6uLr799lttl0IFxBGl95BCodCYFkLkaCN616SlpaF3797IzMzEsmXLtF3Oe6l58+Y4f/48IiMj0aZNG/Ts2RNxcXHaLuu9cebMGSxatAghISE8Jr9DGJTeIyqVCsD/jSxliYuLyzHKRPQuSUtLQ8+ePREdHY3w8HCOJpUQY2NjVKtWDR9//DFWrVoFXV1drFq1SttlvTf++OMPxMXFoXLlytDV1YWuri7u3buHcePGwdHRUdvlkQwGpfeIk5MTVCoVwsPDpbbU1FRERESgadOmWqyMqOiyQtKtW7dw8OBBWFlZabukD4YQAikpKdou473Rv39/XLx4EefPn5ce9vb2+M9//oP9+/druzySwWuU3jEvX77E7du3peno6GicP38elpaWqFy5MkaPHg1/f384OzvD2dkZ/v7+MDIyQt++fbVY9bspv3399OlTxMTESN/pc+PGDQCvR/ayRvcof3ntZ3t7e3zxxRc4e/Ysdu/ejYyMDGnE1NLSEvr6+toq+52T1362srLC7Nmz0alTJ9jZ2eHJkydYtmwZHjx4gB49emix6ndPfseN7EFfT08PKpUKLi4upV0qFZS2b7ujwjly5IgAkOMxcOBAIcTrrwiYPn26UKlUQqlUis8++0xcunRJu0W/o/Lb12vWrMl1/vTp07Va97smr/2c9dULuT2OHDmi7dLfKXnt51evXomuXbsKe3t7oa+vL+zs7ESnTp3EqVOntF32Oye/40Z2/HqAsk8hhBAlG8WIiIiI3k28RomIiIhIBoMSERERkQwGJSIiIiIZDEpEREREMhiUiIiIiGQwKBERERHJYFAiIiIiksGgRERUCI6OjggKCtJ2GURUShiUiKjAYmNjMWrUKFSpUgVKpRJqtRodO3bEoUOHtF1aqYmKisLXX3+t7TKIqJTwm7mJqEDu3r2LZs2awcLCAn5+fqhbty7S0tKwf/9+/PTTT7h+/bq2SyQiKnYcUSKiAvHx8YFCocCpU6fwxRdfoHr16qhduzbGjh2LEydOAABiYmLQuXNnmJiYwMzMDD179sTjx4+ldfj6+qJ+/fpYvXo1KleuDBMTE3zzzTfIyMjAvHnzoFKpYGNjg9mzZ2tsW6FQIDg4GG3btoWhoSGcnJywZcsWjT4TJ05E9erVYWRkhCpVqmDatGlIS0vT6DNr1izY2NjA1NQUQ4YMwaRJk1C/fn1pvre3N7p06YL58+fDzs4OVlZWGDFihMZ6sp96i4+Px9dffw0bGxuYmZmhRYsWuHDhwtvubiIqIxiUiChfT58+xb59+zBixAgYGxvnmG9hYQEhBLp06YKnT58iIiIC4eHhuHPnDnr16qXR986dO/j999+xb98+bNy4EatXr0b79u3x4MEDREREYO7cuZg6daoUvrJMmzYN3bt3x4ULF/Dll1+iT58+uHbtmjTf1NQUISEhuHr1KhYtWoSVK1di4cKF0vwNGzZg9uzZmDt3Ls6cOYPKlSsjODg4x3M5cuQI7ty5gyNHjiA0NBQhISEICQnJdb8IIdC+fXvExsZi7969OHPmDBo2bIjPP/8cT58+LcwuJqKySpu/yEtE74aTJ08KAGLbtm2yfQ4cOCB0dHRETEyM1HblyhUBQPoV+unTpwsjIyORkJAg9WndurVwdHQUGRkZUpuLi4sICAiQpgGI4cOHa2zP3d1dfPPNN7L1zJs3TzRq1Eij/4gRIzT6NGvWTNSrV0+aHjhwoHBwcBDp6elSW48ePUSvXr2k6Td/7f3QoUPCzMxMJCcna6y3atWqYsWKFbK1EdG7gyNKRJQv8f8vZVQoFLJ9rl27BrVaDbVaLbXVqlULFhYWGiM/jo6OMDU1laZtbW1Rq1YtlCtXTqMtLi5OY/1NmjTJMf3men/99Vd88sknUKlUMDExwbRp0xATEyPNv3HjBho3bqyxjuzTAFC7dm3o6OhI03Z2djlqyXLmzBm8fPkSVlZWMDExkR7R0dG4c+dOrssQ0btFV9sFEFHZ5+zsDIVCgWvXrqFLly659hFC5Bqksrfr6elpzFcoFLm2ZWZm5ltX1npPnDiB3r17w8/PD61bt4a5uTk2bdqEBQsW5Nr/zdqyK0wtmZmZsLOzw9GjR3PMs7CwyLd+Iir7OKJERPmytLRE69at8d///heJiYk55j9//hy1atVCTEwM7t+/L7VfvXoV8fHxqFmz5lvXkP2apRMnTqBGjRoAgL/++gsODg6YMmUK3Nzc4OzsjHv37mn0d3FxwalTpzTaTp8+/VY1NWzYELGxsdDV1UW1atU0HhUqVHirdRNR2cCgREQFsmzZMmRkZKBx48bYunUrbt26hWvXrmHx4sVo0qQJWrZsibp166Jfv344e/YsTp06hQEDBsDDwwNubm5vvf0tW7Zg9erVuHnzJqZPn45Tp05h5MiRAIBq1aohJiYGmzZtwp07d7B48WJs375dY/lRo0Zh1apVCA0Nxa1btzBr1ixcvHgxz9OJ+WnZsiWaNGmCLl26YP/+/bh79y4iIyMxderUtw5hRFQ2MCgRUYE4OTnh7NmzaN68OcaNG4c6deqgVatWOHToEIKDg6FQKLBjxw6UL18en332GVq2bIkqVargl19+KZbt+/n5YdOmTahbty5CQ0OxYcMG1KpVCwDQuXNnjBkzBiNHjkT9+vURGRmJadOmaSzfr18/TJ48GePHj0fDhg0RHR0Nb29vGBgYFLkmhUKBvXv34rPPPsPgwYNRvXp19O7dG3fv3oWtre1bPV8iKhv4hZNEVOYpFAps375d9vqoomrVqhVUKhXWrVtXrOslovcHL+Ymog9CUlISli9fjtatW0NHRwcbN27EwYMHER4eru3SiKgMY1Aiog9C1mmyWbNmISUlBS4uLti6dStatmyp7dKIqAzjqTciIiIiGbyYm4iIiEgGgxIRERGRDAYlIiIiIhkMSkREREQyGJSIiIiIZDAoEREREclgUCIiIiKSwaBEREREJINBiYiIiEjG/wOz+5ZH72XvagAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# création d'un barplot permettant de visualiser les 2 indicateurs sur le même graphique\n",
"\n",
"# Création du premier barplot\n",
"plt.bar(company_campaigns_stats[\"number_compagny\"], 100 * company_campaigns_stats[\"ratio_campaigns_opened\"],\n",
" label = \"taux d'ouverture\", alpha = 0.7)\n",
"\n",
"# Création du deuxième barplot à côté du premier\n",
"bar_width = 0.4 # Largeur des barres\n",
"indices2 = company_campaigns_stats[\"number_compagny\"] + bar_width\n",
"plt.bar(indices2, 100 * (1 - company_lazy_customers[\"no_campaign_opened\"]), \n",
" label='Part de clients ouvrant des mails', alpha=0.7, width=bar_width)\n",
"\n",
"# Ajout des étiquettes et de la légende\n",
"plt.xlabel('Compagnie')\n",
"plt.ylabel('Taux (%)')\n",
"plt.title('Lien entre taux d ouverture des mails et nombre de clients actifs')\n",
"plt.legend()\n",
"\n",
"# Affichage du graphique\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "783f6fb2-5f26-42a9-a22d-f4ece44bfaf2",
"metadata": {},
"source": [
"### 3. products_purchased_reduced"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "74534ded-8121-43fb-8cf8-af353bed2c77",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Nombre de lignes de la table : 764880\n"
]
},
{
"data": {
"text/plain": [
"customer_id 0\n",
"nb_tickets 0\n",
"nb_purchases 0\n",
"total_amount 0\n",
"nb_suppliers 0\n",
"vente_internet_max 0\n",
"purchase_date_min 0\n",
"purchase_date_max 0\n",
"time_between_purchase 0\n",
"nb_tickets_internet 0\n",
"number_compagny 0\n",
"dtype: int64"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# nombre de nan\n",
"print(\"Nombre de lignes de la table : \",products_purchased_reduced_spectacle.shape[0])\n",
"products_purchased_reduced_spectacle.isna().sum()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "d64979ba-fccf-45f2-8a15-40ef1b49c74f",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_430/3239820253.py:6: DtypeWarning: Columns (39) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" dataset_train = pd.read_csv(file_in, sep=\",\")\n"
]
}
],
"source": [
"#base d'entrainement\n",
"\n",
"#FILE_PATH_S3='projet-bdc2324-team1/Generalization/musique/Train_test/dataset_train14.csv'\n",
"\n",
"#with fs.open(FILE_PATH_S3, mode=\"rb\") as file_in:\n",
" #dataset_train = pd.read_csv(file_in, sep=\",\")"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "635d60cd-2dbc-49da-b0f4-94e16667882f",
"metadata": {},
"outputs": [],
"source": [
"#Creation de la variable dependante fictive: 1 si l'individu a effectué un achat au cours de la periode de train et 0 sinon\n",
"\n",
"#dataset_train_modif=dataset_train\n",
"\n",
"#dataset_train_modif[\"y_purchase_fictive\"]=np.random.randint(2, size=dataset_train_modif.shape[0])"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "ea63e5d6-70f9-4685-8b08-673a47108954",
"metadata": {},
"outputs": [],
"source": [
"#dataset_train_modif[\"y_purchase_fictive\"].value_counts(normalize=True)"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "98f7645f-ffe6-4d7b-8032-15e65f36af87",
"metadata": {},
"outputs": [],
"source": [
"\n",
"#dataset_train_modif[\"y_purchase_fictive\"]=dataset_train_modif[\"y_purchase_fictive\"].replace([0,1],[\"Purchase_train\",\"no_purchase_train\"])"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "6db089d5-5517-4aee-a5fd-53f20ae3f0d7",
"metadata": {},
"outputs": [],
"source": [
"#importation librairies\n",
"import warnings\n",
"warnings.simplefilter(\"ignore\")\n",
"import pandas as pd\n",
"import numpy as np\n",
"import statsmodels\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"from scipy.stats import shapiro\n",
"from numpy.random import randn\n",
"import scipy.stats as st\n",
"%matplotlib inline\n",
"\n",
"#col_purchase=[\"nb_tickets\",\"nb_purchases\",\"total_amount\",\"nb_suppliers\",\"time_between_purchase\",\"nb_tickets_internet\"]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c532f884-3f44-4ce7-8924-9b4542bc3c10",
"metadata": {},
"outputs": [],
"source": [
"#histogrames des variable quantitatives\n",
"col_purchase=[\"nb_tickets\",\"nb_purchases\",\"total_amount\",\"nb_suppliers\",\"time_between_purchase\",\"nb_tickets_internet\"]\n",
"for col in col_purchase:\n",
" plt.figure()\n",
" sns.histplot(products_purchased_reduced_spectacle[col], kde=True, color='red')"
]
},
{
"cell_type": "code",
"execution_count": 73,
"id": "eb6355e0-3f8c-47d9-a5ee-d349040dcf51",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, \"Boite à moustache du chiffre d'affaire selon les compagnies de spectacles\")"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAoUAAAHGCAYAAAACDfGLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABS9ElEQVR4nO3dd3hUZd7G8XvSJj2QAAnBJNRQBAKKIkUTpIkUxXURcRGwIIIoAqsiAkEFrAgLi26UpoKou8BiJ0hRDCgIKEVAFBMQIhgwFEkhed4/eDPLpJBkmGRSvh+vuXDOPHPO75Q5c+c5ZSzGGCMAAABUa26uLgAAAACuRygEAAAAoRAAAACEQgAAAIhQCAAAABEKAQAAIEIhAAAARCgEAACACIUAAAAQodBmx44dCgoK0j/+8Q9XlwIAAFDunBIKFy1aJIvFYveoXbu24uLi9OGHHzo83vr162vo0KG250eOHFF8fLx27Nhx+UXn06ZNG61YsUITJ07Upk2bnD7+imj69OlauXJlmU/HYrHooYceKvPpXGr68fHx5TrNoUOHyt/fv0RtC6vv888/V7t27eTn5yeLxWJbT++++66uvPJK+fj4yGKxlMlnoThDhw5V/fr17YZZLBYtWrTIofFt375dsbGxCgoKksVi0axZsyQVvQxK4pdffrmsmlwlb1/6yy+/lPu04+LiFBcXV+7TRem4chvJLz4+XhaLxdVllIulS5fa9k1lqbD9a3nycObIFi5cqGbNmskYo9TUVM2dO1d9+/bVqlWr1Ldv31KPb8WKFQoMDLQ9P3LkiKZOnar69eurTZs2Tqz8ghtvvFGvv/66Bg4cqK1bt6p27dpOn0ZFMn36dN1+++269dZbXV1KtbZp0yZdccUVtufGGA0YMEDR0dFatWqV/Pz81LRpUx0/flyDBw/WTTfdpHnz5slqtSo6OtqFlTvHPffco7Nnz2rZsmWqWbOm6tevX+QyKKm6detq06ZNatSoURlWDpS/3r17a9OmTapbt66rS6lWli5dql27dmnMmDGuLqVMOTUUtmzZUu3atbM9v+mmm1SzZk298847DoXCtm3bOrO8Ehk4cKAGDhxY7tNF9XXdddfZPT9y5IhOnDih/v37q2vXrrbhX331lbKzs/W3v/1NsbGxlxznn3/+KV9f3zKp19l27dql+++/X7169bIN+/XXXwtdBiVltVoLLNfCVKblBEhS7dq1q3yHBVynTM8p9Pb2lpeXlzw9Pe2GnzhxQiNHjlS9evXk5eWlhg0bauLEicrMzLRrd/Hh4/Xr1+uaa66RJA0bNsx2mPriw25bt25Vv379FBwcLG9vb7Vt21bvvfdeiWqdOnWq2rdvr+DgYAUGBuqqq67S/PnzZYwp9r15hwr37t2rnj17ys/PT3Xr1tVzzz0nSdq8ebM6d+4sPz8/RUdHa/HixQXGsWvXLt1yyy2qWbOmvL291aZNmwLtijpssH79elksFq1fv942bPv27erTp4/q1Kkjq9Wq8PBw9e7dW4cPH5Z04XDf2bNntXjxYtuyzDt0dPz4cY0cOVItWrSQv7+/6tSpoxtvvFFffvllgbozMzP19NNPq3nz5vL29lZISIi6dOmipKSkAm3feustNW/eXL6+voqJiSn01IIff/xRgwYNstXdvHlz/fOf/7zk8s9z6tQp3X///QoJCZG/v79uuukm7d+/v0C7orrnS3Mo5NNPP1XXrl0VFBQkX19fNW/eXDNmzCjQ7sCBA7r55pvl7++viIgIjRs3rsB2fvF2HB8fb+s1fPzxx2WxWGyfg86dO0uS7rjjDrv1lbf97dy5Uz169FBAQIAtSGVlZenZZ59Vs2bNZLVaVbt2bQ0bNkzHjx8v0XwuWrRITZs2ta2LN998s0TvO3DggIYNG6YmTZrI19dX9erVU9++fbVz5067cVssFp0/f16vvvqq3We6sGVQ0vFKhR8+zlu/27Zt0+23366aNWvaehKNMZo3b57atGkjHx8f1axZU7fffrt+/vnnYuf1+PHjGj58uCIiImzLuFOnTlqzZo1duzVr1qhr164KDAyUr6+vOnXqpM8//7xEy3PBggWKiYmRt7e3goOD1b9/f/3www92bfK2g5JscyVV0u1n7dq1iouLU0hIiHx8fBQZGam//OUv+vPPP4udxtKlS9WhQwf5+/vL399fbdq00fz58x2ef0f3w3nbY2JiooYNG6bg4GD5+fmpb9++BbaDxMRE3XLLLbriiivk7e2txo0b64EHHtDvv/9eYP7++9//qnXr1rJarWrYsKFmz55d6L4m7zSb4vaTRX0PlGT7Kum2WpiPPvpIbdq0kdVqVYMGDfTSSy8V2q6sP0txcXFq2bKlvvzyS1133XXy8fFRvXr1NGnSJOXk5NiNrzT7v0tth3Fxcfroo4+UnJxsd5pcntLkh5Js744u0+K+90vEOMHChQuNJLN582aTnZ1tsrKyzKFDh8zDDz9s3NzczKeffmpre+7cOdO6dWvj5+dnXnrpJbN69WozadIk4+HhYW6++Wa78UZFRZkhQ4YYY4xJT0+3Teepp54ymzZtMps2bTKHDh0yxhizdu1a4+XlZa6//nrz7rvvmk8//dQMHTrUSDILFy4sdh6GDh1q5s+fbxITE01iYqJ55plnjI+Pj5k6dWqx7x0yZIjx8vIyzZs3N7NnzzaJiYlm2LBhRpKZMGGCiY6ONvPnzzefffaZ6dOnj5Fktm7danv/3r17TUBAgGnUqJF58803zUcffWTuvPNOI8k8//zzBZbzwYMH7aa/bt06I8msW7fOGGPMmTNnTEhIiGnXrp157733zIYNG8y7775rRowYYfbs2WOMMWbTpk3Gx8fH3HzzzbZluXv3bls9Dz74oFm2bJlZv369+fDDD829995r3NzcbNMwxpjs7GzTpUsX4+HhYcaPH28+/vhjs2rVKvPkk0+ad955x9ZOkqlfv7659tprzXvvvWc+/vhjExcXZzw8PMxPP/1ka7d7924TFBRkWrVqZd58802zevVqM27cOOPm5mbi4+MvuQ5yc3NNly5djNVqNdOmTTOrV682U6ZMMQ0bNjSSzJQpU+zWV1RUVIFxTJkyxZTkI/HGG28Yi8Vi4uLizNKlS82aNWvMvHnzzMiRI+2mkbdNvPTSS2bNmjVm8uTJxmKxFNimLq7v0KFDZvny5UaSGT16tNm0aZPZtm2bOXDggPnnP/9pJJnp06fbra8hQ4YYT09PU79+fTNjxgzz+eefm88++8zk5OSYm266yfj5+ZmpU6eaxMRE88Ybb5h69eqZFi1amD///POS85m3vd1yyy3mgw8+MG+//bZp3LixiYiIKHT5XWzDhg1m3Lhx5t///rfZsGGDWbFihbn11luNj4+P2bt3rzHGmGPHjplNmzYZSeb222+3+0wXtgxKOl5jjDl48GCBz37e+o2KijKPP/64SUxMNCtXrjTGGHP//fcbT09PM27cOPPpp5+apUuXmmbNmpnQ0FCTmpp6yXnt2bOnqV27tklISDDr1683K1euNJMnTzbLli2ztXnrrbeMxWIxt956q1m+fLn54IMPTJ8+fYy7u7tZs2ZNgWV+8Wd8+vTpRpK58847zUcffWTefPNN07BhQxMUFGT2799va1eaba4wsbGxJjY21va8pNvPwYMHjbe3t+nevbtZuXKlWb9+vVmyZIkZPHiwOXny5CWnOWnSJCPJ3Hbbbeb99983q1evNjNnzjSTJk26rPl3ZD+ct+wjIiLMPffcYz755BOTkJBg6tSpYyIiIuzm5dVXXzUzZswwq1atMhs2bDCLFy82MTExpmnTpiYrK8vW7pNPPjFubm4mLi7OrFixwrz//vumffv2pn79+gX2NSXdTxa2jZR0+yrJtlqYNWvWGHd3d9O5c2ezfPly8/7775trrrnGREZGFpiPsv4sxcbGmpCQEBMeHm7+8Y9/mM8++8w8/PDDRpIZNWqUrV1p9n/FbYe7d+82nTp1MmFhYbb91KZNm2zvL2l+KMn2Xtj3U0mWaUm+90vCqaEw/8NqtZp58+bZtX3ttdeMJPPee+/ZDX/++eeNJLN69WrbsItDoTHGbNmypciQ16xZM9O2bVuTnZ1tN7xPnz6mbt26Jicnp8Tzk5OTY7Kzs83TTz9tQkJCTG5u7iXbDxkyxEgy//nPf2zDsrOzTe3atY0k2xeaMcakpaUZd3d3M3bsWNuwgQMHGqvValJSUuzG26tXL+Pr62v++OMPY0zJQ+HWrVuNJNsXXlH8/Pzslm9Rzp8/b7Kzs03Xrl1N//79bcPffPNNI8m8/vrrl3y/JBMaGmpOnTplG5aammrc3NzMjBkzbMN69uxprrjiCpOenm73/oceesh4e3ubEydOFDmNTz75xEgys2fPths+bdo0p4bC06dPm8DAQNO5c+dLbhd520T+7fzmm282TZs2tRuWv768QPPiiy/atctbz++//36h01qwYIHd8HfeeafAdmnM/z5H+T+bF8vJyTHh4eHmqquuspvPX375xXh6ehYbCvM7f/68ycrKMk2aNDGPPvqo3Wv5d+bGFL0MSjreS4XCyZMn240jL5i+/PLLdsMPHTpkfHx8zGOPPXbJGvz9/c2YMWOKfP3s2bMmODjY9O3b1254Tk6OiYmJMddee61tWP7P+MmTJ21/vF0sJSXFWK1WM2jQINuw0mxzhckfCku6/fz73/82ksyOHTuKncbFfv75Z+Pu7m7uuuuuIts4Mv+O7ofzlv3F+zhjjPnqq6+MJPPss88WWmNubq7Jzs42ycnJRpL573//a3vtmmuuMRERESYzM9M27PTp0yYkJKTQUFiS/WT+baQ021dx22pR2rdvb8LDw825c+dsw06dOmWCg4Pt5qOsP0vGXNhO8y9nYy4EJzc3N5OcnGyMKfn2W5Lt0BhjevfuXaL9XlH5oaTTyf/9VNJlWtLv/eI49fDxm2++qS1btmjLli365JNPNGTIEI0aNUpz5861tVm7dq38/Px0++2327037zBxSQ+nXOzAgQPau3ev7rrrLknS+fPnbY+bb75ZR48e1b59+y45jrVr16pbt24KCgqSu7u7PD09NXnyZKWlpenYsWPF1mCxWHTzzTfbnnt4eKhx48aqW7eu3bmRwcHBqlOnjpKTk+2m3bVrV0VERNiNc+jQofrzzz9LfTV048aNVbNmTT3++ON67bXXtGfPnlK9X5Jee+01XXXVVfL29paHh4c8PT31+eef2x2y+eSTT+Tt7a177rmn2PF16dJFAQEBtuehoaF2yyEjI0Off/65+vfvL19f3wLrMCMjQ5s3by5y/OvWrZMk2zaQZ9CgQaWa7+IkJSXp1KlTGjlyZLGHmi0WS4FzaVu3bm237p3pL3/5i93zDz/8UDVq1FDfvn3tlmebNm0UFhZmd7pBfvv27dORI0c0aNAgu/mMiopSx44di63l/Pnzmj59ulq0aCEvLy95eHjIy8tLP/74Y4HDfqXhjPEWtpwsFov+9re/2S2nsLAwxcTEXHI5SdK1116rRYsW6dlnn9XmzZuVnZ1t93pSUpJOnDihIUOG2I0/NzdXN910k7Zs2aKzZ88WOu5Nmzbp3LlzdndhkKSIiAjdeOONBfaXztzmSrr9tGnTRl5eXho+fLgWL15cosOE0oVDsDk5ORo1alSRbRyZf0f3w3ny70M6duyoqKgo2z5Gko4dO6YRI0YoIiLCtn+MioqSJNt2ePbsWW3dulW33nqrvLy8bO/19/cv8hz74vaThSnN9lXctlqYs2fPasuWLbrtttvk7e1tGx4QEFBgPsr6s3TxtPv162c3bNCgQcrNzdUXX3xhq6Uk229JtsPilCQ/ODqdki5TZ3zvS04+p7B58+Zq166d2rVrp5tuukn/+te/1KNHDz322GP6448/JElpaWkKCwsr8IVap04deXh4KC0trdTT/e233yRJ48ePl6enp91j5MiRklTouR55vvnmG/Xo0UOS9Prrr+urr77Sli1bNHHiREnSuXPniq3B19fX7gMjSV5eXgoODi7Q1svLSxkZGbbnaWlphV5JFh4ebnu9NIKCgrRhwwa1adNGTz75pK688kqFh4drypQpJdoJzJw5Uw8++KDat2+v//znP9q8ebO2bNmim266yW5ZHD9+XOHh4XJzK34zCgkJKTDMarXaxpeWlqbz589rzpw5BdZh3k7+UuswLS1NHh4eBaYTFhZWbG2lkXcuysVXCxelsG3CarXarXtn8fX1tbtSX7rwufjjjz9s5/Ve/EhNTS12eUqFL7+SLNOxY8dq0qRJuvXWW/XBBx/o66+/1pYtWxQTE1Oiz1NZjjf/Z+23336TMUahoaEFltPmzZsvuZykC7cJGjJkiN544w116NBBwcHBuvvuu5WammobvyTdfvvtBcb//PPPyxijEydOFDruvPVQ1P4h/77BmdtcSbefRo0aac2aNapTp45GjRqlRo0aqVGjRpo9e/Ylx1+Sz5Iz5r+k++E8RW3zedPKzc1Vjx49tHz5cj322GP6/PPP9c0339j+aM3bDk+ePGnbrvIrbJhU/H6yMKXZvorbVgtz8uRJ5ebmlmhfUNafpTyFLb+8WvLWU0m339Ls0wtT0vzg6HRKukwv93s/j1OvPi5M69at9dlnn2n//v269tprFRISoq+//lrGGLtgeOzYMZ0/f161atUq9TTy3jNhwgTddttthba51O0sli1bJk9PT3344Yd2O5TyuIefdGFHcPTo0QLDjxw5Iul/85dXW/6Txgv7oLVq1UrLli2TMUbff/+9Fi1apKefflo+Pj564oknLlnP22+/rbi4OL366qt2w0+fPm33vHbt2tq4caNyc3NLFAwvpWbNmnJ3d9fgwYOL/EuqQYMGRb4/JCRE58+fV1pamt2OtbCdnbe3d6En3he3w5Jku+qvVCfuloPCei1r1aqlkJAQffrpp4W+5+IeifzylmFhy+9SXyB53n77bd19992aPn263fDff/9dNWrUKPb9ZTne/MuqVq1aslgs+vLLL2W1Wgu0L2xY/vfPmjVLs2bNUkpKilatWqUnnnhCx44d06effmr7/M6ZM6fIK6KLCwlF7R8c2V+WVGm2n+uvv17XX3+9cnJytHXrVs2ZM0djxoxRaGhokXdzuPizlP8oSR5XzH9R23zjxo0lXbgo8LvvvtOiRYs0ZMgQW5sDBw7YvadmzZqyWCy20FbcNBxVmu2ruG21MHnzUZJ9QVl/lvJcapnmbTMl3X5Lsh1eSknzg6PTKc0yvZzv/Txl/osmeTfXzVsgXbt21ZkzZwossLyrGi91+4m8mc//V1PTpk3VpEkTfffdd7aeyvyPS30BWiwWeXh4yN3d3Tbs3Llzeuutt0o8n5eja9euWrt2rS0E5nnzzTfl6+tr+6DnXYH5/fff27VbtWpVkeO2WCyKiYnRK6+8oho1amjbtm2214r6C9RisRTY+L7//vsCh7F79eqljIwMp9wg2NfXV126dNH27dvVunXrQtdhYX9F5+nSpYskacmSJXbDly5dWqBt/fr1dezYMbsdS1ZWlj777LNi6+zYsaOCgoL02muvlejKdFfq06eP0tLSlJOTU+jyvNQfSk2bNlXdunX1zjvv2M1ncnJyoVeW51fYNvTRRx/p119/dXyGymi8ffr0kTFGv/76a6HLqVWrViUeV2RkpB566CF1797d9lnr1KmTatSooT179hS5f7r48OLFOnToIB8fH7399tt2ww8fPmw77aSsOLL9uLu7q3379rY7Bly8v8mvR48ecnd3L/DH58VcMf/59yFJSUlKTk62Xe2f90dF/u3wX//6l91zPz8/tWvXTitXrlRWVpZt+JkzZy7rRx3yc3T7KmxbLYyfn5+uvfZaLV++3K5n9fTp0/rggw/s2pb1Z+niaef/3lu6dKnc3Nx0ww032GopyfZbku1QuvT3ZUnyQ0mnk58jy/RS3/vFcWpP4a5du3T+/HlJF7pwly9frsTERPXv39/Wy3P33Xfrn//8p4YMGaJffvlFrVq10saNGzV9+nTdfPPN6tatW5Hjb9SokXx8fLRkyRI1b95c/v7+Cg8PV3h4uP71r3+pV69e6tmzp4YOHap69erpxIkT+uGHH7Rt2za9//77RY63d+/emjlzpgYNGqThw4crLS1NL730UrF/1TjLlClT9OGHH6pLly6aPHmygoODtWTJEn300Ud64YUXFBQUJEm65ppr1LRpU40fP17nz59XzZo1tWLFCm3cuNFufB9++KHmzZunW2+9VQ0bNpQxRsuXL9cff/yh7t2729q1atVK69ev1wcffKC6desqICBATZs2VZ8+ffTMM89oypQpio2N1b59+/T000+rQYMGtvUrSXfeeacWLlyoESNGaN++ferS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VXSpdZF3S6DCHuvWrXN16VXSpdbHuXPnTP/+/U14eLjx8vIydevWNf369TPffPONq8uukorbT+XHLWmqFosxxpRt7AQAAEBFxzmFAAAAIBQCAACAUAgAAAARCgEAACBCIQAAAEQoBAAAgAiFAAAAEKEQQAUQFxenMWPGuLoMAKjWCIUAAAAgFAKomnJycpSbm+vqMgCg0iAUArCJi4vTww8/rMcee0zBwcEKCwtTfHy8JOmXX36RxWLRjh07bO3/+OMPWSwWrV+/XpK0fv16WSwWffbZZ2rbtq18fHx044036tixY/rkk0/UvHlzBQYG6s4779Sff/5pN+3z58/roYceUo0aNRQSEqKnnnpKF/8KZ1ZWlh577DHVq1dPfn5+at++vW26krRo0SLVqFFDH374oVq0aCGr1ark5ORi53nBggW68sorZbVaVbduXT300EO211JSUnTLLbfI399fgYGBGjBggH777Tfb6/Hx8WrTpo0WLFigyMhI+fv768EHH1ROTo5eeOEFhYWFqU6dOpo2bZrdNC0Wi1599VX16tVLPj4+atCggd5//327No8//riio6Pl6+urhg0batKkScrOzrZr8+yzz6pOnToKCAjQfffdpyeeeEJt2rSxvT506FDdeuuteumll1S3bl2FhIRo1KhRtvE8/fTTatWqVYFlcvXVV2vy5MnFLjsAVYyLf3sZQAUSGxtrAgMDTXx8vNm/f79ZvHixsVgsZvXq1ebgwYNGktm+fbut/cmTJ40ks27dOmOMMevWrTOSzHXXXWc2btxotm3bZho3bmxiY2NNjx49zLZt28wXX3xhQkJCzHPPPWc3XX9/f/PII4+YvXv3mrffftv4+vqahIQEW5tBgwaZjh07mi+++MIcOHDAvPjii8ZqtZr9+/cbY4xZuHCh8fT0NB07djRfffWV2bt3rzlz5swl53fevHnG29vbzJo1y+zbt89888035pVXXjHGGJObm2vatm1rOnfubLZu3Wo2b95srrrqKhMbG2t7/5QpU4y/v7+5/fbbze7du82qVauMl5eX6dmzpxk9erTZu3evWbBggZFkNm3aZHufJBMSEmJef/11s2/fPvPUU08Zd3d3s2fPHlubZ555xnz11Vfm4MGDZtWqVSY0NNQ8//zzttfffvtt4+3tbRYsWGD27dtnpk6dagIDA01MTIytzZAhQ0xgYKAZMWKE+eGHH8wHH3xgt1wPHTpk3NzczDfffGN7z3fffWcsFov56aefLrnsAFQ9hEIANrGxsaZz5852w6655hrz+OOPlyoUrlmzxtZmxowZRpJdyHjggQdMz5497abbvHlzk5ubaxv2+OOPm+bNmxtjjDlw4ICxWCzm119/tauta9euZsKECcaYC6FQktmxY0eJ5zc8PNxMnDix0NdWr15t3N3dTUpKim3Y7t27jSRbiJoyZYrx9fU1p06dsrXp2bOnqV+/vsnJybENa9q0qZkxY4btuSQzYsQIu+m1b9/ePPjgg0XW+sILL5irr77arv2oUaPs2nTq1KlAKIyKijLnz5+3DfvrX/9q7rjjDtvzXr162U13zJgxJi4ursg6AFRdHD4GYKd169Z2z+vWratjx445PI7Q0FDbIdCLh+Uf53XXXSeLxWJ73qFDB/3444/KycnRtm3bZIxRdHS0/P39bY8NGzbop59+sr3Hy8urQP1FOXbsmI4cOaKuXbsW+voPP/ygiIgIRURE2Ia1aNFCNWrU0A8//GAbVr9+fQUEBNjNW4sWLeTm5mY3LP/8dujQocDzi8f773//W507d1ZYWJj8/f01adIkpaSk2F7ft2+frr32Wrtx5H8uSVdeeaXc3d1tz/Ovz/vvv1/vvPOOMjIylJ2drSVLluiee+4pdJkAqNo8XF0AgIrF09PT7rnFYlFubq4t5JiLzvPLf45bYeOwWCxFjrOkcnNz5e7urm+//dYu4EiSv7+/7f99fHzsguWl+Pj4XPJ1Y0yh48o/vLB5c3R+88a7efNmDRw4UFOnTlXPnj0VFBSkZcuW6eWXXy60/cW15VdcLX379pXVatWKFStktVqVmZmpv/zlL8XWCqDqoacQQInUrl1bknT06FHbsIsvOrlcmzdvLvC8SZMmcnd3V9u2bZWTk6Njx46pcePGdo+wsDCHphcQEKD69evr888/L/T1Fi1aKCUlRYcOHbIN27Nnj9LT09W8eXOHpnmxwua3WbNmkqSvvvpKUVFRmjhxotq1a6cmTZoUuGimadOm+uabb+yGbd26tdR1eHh4aMiQIVq4cKEWLlyogQMHytfXt9TjAVD50VMIoER8fHx03XXX6bnnnlP9+vX1+++/66mnnnLa+A8dOqSxY8fqgQce0LZt2zRnzhxbz1h0dLTuuusu3X333Xr55ZfVtm1b/f7771q7dq1atWqlm2++2aFpxsfHa8SIEapTp4569eql06dP66uvvtLo0aPVrVs3tW7dWnfddZdmzZql8+fPa+TIkYqNjVW7du0ue37ff/99tWvXTp07d9aSJUv0zTffaP78+ZKkxo0bKyUlRcuWLdM111yjjz76SCtWrLB7/+jRo3X//ferXbt26tixo9599119//33dofpS+q+++6zBd2vvvrqsucNQOVETyGAEluwYIGys7PVrl07PfLII3r22WedNu67775b586d07XXXqtRo0Zp9OjRGj58uO31hQsX6u6779a4cePUtGlT9evXT19//bXdOX+lNWTIEM2aNUvz5s3TlVdeqT59+ujHH3+UdOEw68qVK1WzZk3dcMMN6tatmxo2bKh33333sudVkqZOnaply5apdevWWrx4sZYsWaIWLVpIkm655RY9+uijeuihh9SmTRslJSVp0qRJdu+/6667NGHCBI0fP15XXXWVDh48qKFDh8rb27vUtTRp0kQdO3ZU06ZN1b59e6fMH4DKx2IKOwkFAFBmLBaLVqxYoVtvvdWp4+3evbvCwsL01ltvlep9xhg1a9ZMDzzwgMaOHevUmgBUHhw+BoBK6M8//9Rrr72mnj17yt3dXe+8847WrFmjxMTEUo3n2LFjeuutt/Trr79q2LBhZVQtgMqAUAigyrr4yuT8PvnkE11//fXlWI1zWSwWffzxx3r22WeVmZmppk2b6j//+Y+6detWqvGEhoaqVq1aSkhIUM2aNcuoWgCVAYePAVRZBw4cKPK1evXqFXtbGgCoTgiFAAAA4OpjAAAAEAoBAAAgQiEAAABEKAQAAIAIhQAAABChEAAAACIUAgAAQIRCAAAASPo/oy+gltdg7lcAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#repartition Chiffre d'affaire selon les compagnie de spectacle\n",
"\n",
"sns.boxplot(data=products_purchased_reduced_spectacle, y=\"total_amount\",x=\"number_compagny\",showfliers=False,showmeans=True)\n",
"plt.title(\"Boite à moustache du chiffre d'affaire selon les compagnies de spectacles\")"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "76e08ece-0b58-4b3a-abca-53e30ccc907b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Statistique F : 0.6726212699019267\n",
"Valeur de p : 0.6108808380730608\n",
"Nombre de degrés de liberté entre les groupes : 4\n",
"Nombre de degrés de liberté à l'intérieur des groupes : 764875\n",
"Il n'y a pas de différences significatives entre les entreprises .\n"
]
}
],
"source": [
"#test d'anova pour voir si la difference de chiffre d'affaire est statistiquement significative\n",
"\n",
"from scipy.stats import f_oneway\n",
"\n",
"# Créez une liste pour stocker les données de chaque groupe\n",
"groupes = []\n",
"\n",
"# Parcourez chaque modalité de la variable catégorielle et divisez les données en groupes\n",
"for modalite in products_purchased_reduced_spectacle['number_compagny'].unique():\n",
" groupe = products_purchased_reduced_spectacle[products_purchased_reduced_spectacle['number_compagny'] == modalite]['total_amount']\n",
" groupes.append(groupe)\n",
"\n",
"# Effectuez le test ANOVA\n",
"f_statistic, p_value = f_oneway(*groupes)\n",
"\n",
"# Nombre total d'observations\n",
"N = sum(len(groupe) for groupe in groupes)\n",
"\n",
"# Nombre de groupes ou de catégories\n",
"k = len(groupes)\n",
"\n",
"# Degrés de liberté entre les groupes\n",
"df_between = k - 1\n",
"\n",
"# Degrés de liberté à l'intérieur des groupes\n",
"df_within = N - k\n",
"\n",
"# Affichez les résultats\n",
"print(\"Statistique F :\", f_statistic)\n",
"print(\"Valeur de p :\", p_value)\n",
"\n",
"print(\"Nombre de degrés de liberté entre les groupes :\", df_between)\n",
"print(\"Nombre de degrés de liberté à l'intérieur des groupes :\", df_within)\n",
"\n",
"if p_value < 0.05:\n",
" print(\"Il y a des différences significatives entre au moins une des entrepries .\")\n",
"else:\n",
" print(\"Il n'y a pas de différences significatives entre les entreprises .\")"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "aacf2c34-f7ea-4d6e-935b-c5db01f03bbe",
"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>number_compagny</th>\n",
" <th>nb_tickets</th>\n",
" <th>nb_tickets_internet</th>\n",
" <th>Taux_ticket_internet</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10</td>\n",
" <td>492314</td>\n",
" <td>126262.0</td>\n",
" <td>25.646640</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>11</td>\n",
" <td>318969</td>\n",
" <td>16348.0</td>\n",
" <td>5.125263</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>12</td>\n",
" <td>591028</td>\n",
" <td>42045.0</td>\n",
" <td>7.113876</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>13</td>\n",
" <td>7024227</td>\n",
" <td>1247482.0</td>\n",
" <td>17.759705</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>14</td>\n",
" <td>335741</td>\n",
" <td>125638.0</td>\n",
" <td>37.421107</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" number_compagny nb_tickets nb_tickets_internet Taux_ticket_internet\n",
"0 10 492314 126262.0 25.646640\n",
"1 11 318969 16348.0 5.125263\n",
"2 12 591028 42045.0 7.113876\n",
"3 13 7024227 1247482.0 17.759705\n",
"4 14 335741 125638.0 37.421107"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Taux de ticket payé par internet selon les compagnies\n",
"\n",
"purchase_spectacle = products_purchased_reduced_spectacle.groupby(\"number_compagny\")[[\"nb_tickets\", \"nb_tickets_internet\"]].sum().reset_index()\n",
"purchase_spectacle[\"Taux_ticket_internet\"] = purchase_spectacle[\"nb_tickets_internet\"]*100 / purchase_spectacle[\"nb_tickets\"]\n",
"purchase_spectacle"
]
},
{
"cell_type": "code",
"execution_count": 57,
"id": "f71bb53d-724b-454d-8743-305d20eec2b0",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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8+dISEjAkydPsH37dvz73/9GdHS0ssB63f379+Hs7IwtW7aga9euhc4vOztbpfhKS0uDk5MTUlNTYWVlpbX1ICKi94fL2H26jqA3bs1sr5X5pqWlQaFQ6OXfb51ecwW8ukA974J2Hx8fnD17FosWLcLPP/9cYFoHBwc4Ozvjxo0bRc5PLpdDLpdrLS8RERHRm+j8tGB+QogiT/slJyfjzp07cHBwKOFUREREROrR6ZGr8ePHIzAwEE5OTkhPT8eWLVtw9OhRhIeH4+nTpwgJCUG3bt3g4OCAW7duYfz48bC1tUWXLl10GZuIiIioSDotrh48eIC+ffvi/v37UCgU8Pb2Rnh4OFq3bo3MzExcvHgR69evx5MnT+Dg4AB/f39s3boVlpaWuoxNREREVCSdFlerVq0qcpypqSkiIiJKMA0RERHRuyt111wRERER6TMWV0REREQSYnFFREREJCEWV0REREQSYnFFREREJCEWV0REREQSYnFFREREJCEWV0REREQSYnFFREREJCEWV0REREQSYnFFREREJCEWV0REREQSYnFFREREJCEWV0REREQSYnFFREREJCHD4rzpxYsXSExMxLNnz1C+fHlYW1tLnYuIiIhIL6l95Orp06f4+eef4efnB4VCARcXF3h5eaF8+fJwdnbGgAEDcPbsWW1mJSIiIir11CquFixYABcXF6xcuRItWrTAjh07EBsbi2vXruHkyZOYPHkyXr58idatW6Nt27a4ceOGtnMTERERlUpqnRY8ceIEjhw5glq1ahU6vkGDBujXrx+WL1+OVatWITo6Gu7u7pIGJSIiItIHahVX27ZtU2tmcrkcgwcPfqdARERERPqsWBe053nx4gWuX7+OnJwcVKtWDXK5XKpcRERERHqp2I9i+P333+Hi4gJ/f3/4+fnByckJ4eHhUmYjIiIi0jtqF1dCCJXh4cOHY+PGjUhKSkJKSgqmTZuGQYMGSR6QiIiISJ+oXVw1aNAA58+fVw4/f/4clStXVg5XrlwZWVlZ0qYjIiIi0jNqX3O1ZMkS9O/fH82bN8e0adMwefJk1KtXD9WqVcOLFy9w9epV/Pjjj9rMSkRERFTqqV1c+fr64syZM5g9ezbq1auH2bNn49q1azh9+jRycnLQoEEDODo6ajMrERERUamn0d2ChoaGGD9+PHr27IlBgwZh3bp1+PHH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WrUKhoaGWLVqla5jvbd+//13JCUloXLlyjA0NIShoSFu376NUaNGwcXFRdfx6P+xuHoPubq6wt7eHlFRUcq258+fIzo6Go0bN9ZhMiLtyCusbty4gYMHD8LGxkbXkT5YQghkZ2frOsZ7q2/fvoiLi0NsbKzy5ejoiO+++w4RERG6jkf/j9dc6amnT5/i5s2byuH4+HjExsbC2toalStXxvDhwzFjxgy4u7vD3d0dM2bMgJmZGfr06aPD1Prvbf2ekpKChIQE5TOWrl27BuDV0cS8I4qkuTf1u6OjI7p3747z589j7969yMnJUR61tba2hrGxsa5i67039buNjQ2mT5+OTp06wcHBAcnJyVi6dCnu3r2LHj166DC1/nvbfib/Pw9GRkawt7dHtWrVSjoqFUXXtytS8Rw5ckQAKPAKCgoSQrx6HMPkyZOFvb29kMvlolmzZuLixYu6Df0eeFu/r1mzptDxkydP1mluffemfs977EVhryNHjug6ul57U79nZmaKLl26CEdHR2FsbCwcHBxEp06dxJkzZ3QdW++9bT+THx/FUPrIhBBCu+UbERER0YeD11wRERERSYjFFREREZGEWFwRERERSYjFFREREZGEWFwRERERSYjFFREREZGEWFwRERERSYjFFREREZGEWFwRkSQSExPx7bffws3NDXK5HE5OTujYsSMOHTqk62hERCWK3y1IRO/s1q1baNKkCcqWLYvZs2fD29sbL168QEREBIYMGYKrV6/qOiIRUYnhkSsiemeDBw+GTCbDmTNn0L17d3h4eKBGjRoYOXIkTp06BQBISEjAJ598AgsLC1hZWaFnz5548OCBch4hISGoU6cOVq9ejcqVK8PCwgKDBg1CTk4OZs+eDXt7e1SoUAHTp09XWbZMJsOyZcsQGBgIU1NTuLq6Ytu2bSrTfP/99/Dw8ICZmRnc3NwwceJEvHjxosCyN2zYABcXFygUCnz66adIT08HAKxfvx42NjbIzs5WmW+3bt3wxRdfSNqXRKT/WFwR0TtJSUlBeHg4hgwZAnNz8wLjy5YtCyEEOnfujJSUFERHRyMqKgp//fUXevXqpTLtX3/9hQMHDiA8PBybN2/G6tWr0b59e9y9exfR0dGYNWsWfvjhB2XBlmfixIno1q0bLly4gM8//xy9e/fGlStXlOMtLS2xdu1aXL58GYsWLcLKlSuxYMGCAsvetWsX9u7di7179yI6OhozZ84EAPTo0QM5OTnYvXu3cvpHjx5h7969+PLLL9+5D4noPaPjL44mIj13+vRpAUDs2LGjyGkiIyOFgYGBSEhIULZdunRJABBnzpwRQggxefJkYWZmJtLS0pTTtGnTRri4uIicnBxlW7Vq1URYWJhyGID45ptvVJbn6+srBg0aVGSe2bNni3r16imHC1v2d999J3x9fZXDgwYNEoGBgcrhhQsXCjc3N5Gbm1vkcojow8RrrojonQghALw6PVeUK1euwMnJCU5OTso2Ly8vlC1bFleuXEH9+vUBAC4uLrC0tFROY2dnBwMDA5QpU0alLSkpSWX+jRo1KjAcGxurHP7Pf/6DhQsX4ubNm3j69ClevnwJKysrlffkX7aDg4PKcgYMGID69evj3r17qFixItasWYPg4OA3rjcRfZh4WpCI3om7uztkMpnKabj8hBCFFiH5242MjFTGy2SyQttyc3PfmitvvqdOncKnn36KwMBA7N27FzExMZgwYQKeP3+uMv3bllO3bl3Url0b69evx/nz53Hx4kUEBwe/NQcRfXhYXBHRO7G2tkabNm3w008/ISMjo8D4J0+ewMvLCwkJCbhz546y/fLly0hNTUX16tXfOUP+a7BOnToFT09PAMDx48fh7OyMCRMmwMfHB+7u7rh9+3axltO/f3+sWbMGq1evRqtWrVSOxBER5WFxRUTvbOnSpcjJyUGDBg2wfft23LhxA1euXMHixYvRqFEjtGrVCt7e3vjss89w/vx5nDlzBl988QWaN28OHx+fd17+tm3bsHr1aly/fh2TJ0/GmTNnMHToUABA1apVkZCQgC1btuCvv/7C4sWLsXPnzmIt57PPPsO9e/ewcuVK9OvX751zE9H7icUVEb0zV1dXnD9/Hv7+/hg1ahRq1qyJ1q1b49ChQ1i2bBlkMhl27dqFcuXKoVmzZmjVqhXc3NywdetWSZYfGhqKLVu2wNvbG+vWrcPGjRvh5eUFAPjkk08wYsQIDB06FHXq1MGJEycwceLEYi3HysoK3bp1g4WFBTp37ixJdiJ6/8hE3tWoRER6SCaTYefOnSVW7LRu3RrVq1fH4sWLS2R5RKR/eLcgEZEaUlJSEBkZicOHD2PJkiW6jkNEpRiLKyIiNXz00Ud4/PgxZs2ahWrVquk6DhGVYjwtSERERCQhXtBOREREJCEWV0REREQSYnFFREREJCEWV0REREQSYnFFREREJCEWV0REREQSYnFFREREJCEWV0REREQSYnFFREREJKH/A6+rRUjgp74hAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Création du barplot\n",
"plt.bar(purchase_spectacle[\"number_compagny\"], purchase_spectacle[\"Taux_ticket_internet\"])\n",
"\n",
"# Ajout de titres et d'étiquettes\n",
"plt.xlabel('Company')\n",
"plt.ylabel(\"Taux d'achat de tickets en ligne (%)\")\n",
"plt.title(\"Taux d'achat des tickets en ligne selon les compagnies de spectacle\")\n",
"\n",
"# Affichage du barplot\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 66,
"id": "59a95248-0261-4970-9e91-e43d50cf4d69",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Boite à moustache du temps ecoulés entre le premier et le dernier achat selon les compagnies de spectacles')"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA6UAAAHGCAYAAACM3i2bAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABvz0lEQVR4nO3dd3gUVfv/8c+SnhAWkpCGSei9g9JUQGpoYkNAKYJgRRGw8KACPhRFaV9QEaUJEbAAKiBIVwggVYqIoFQhBCkJoYSQnN8f/rIPSxJIINmhvF/XtRfMmTMz95Sd2Ttn5ozNGGMEAAAAAIAF8lkdAAAAAADgzkVSCgAAAACwDEkpAAAAAMAyJKUAAAAAAMuQlAIAAAAALENSCgAAAACwDEkpAAAAAMAyJKUAAAAAAMuQlAIAAAAALHPHJaVbt26V3W7X//3f/1kdCoBckJqaqvr16+vee+/VhQsXrA4HAAAAOZSjpHTq1Kmy2WxOn8KFC6tBgwaaP3/+dQdRtGhRde3a1TF85MgRDRo0SFu3br3ueWalatWqmjt3rgYMGKC1a9fm+vxvRsOGDdO8efPyfDk2m00vvvhini/nassfNGhQrs3viy++0JgxY3Jtfrg+V54frjRgwADFx8fru+++k7e3t+sCy4G8PKdlZdCgQbLZbC5b3s2ma9euKlq0qNVhOPntt980aNAg7d+/P1v106+52a1/vVauXCmbzaaVK1fm6XJu1uXfiKJFi6pVq1a5Nr9z585p0KBBlmyL/fv3y2azaerUqS5f9p1+vrpVWHmMXOlWPm/kVGxsrAYNGqTTp0/n6XJcdc3JynW1lE6ZMkVr165VbGysJk6cKDc3N7Vu3Vrff//9dQUxd+5cvfXWW47hI0eOaPDgwXn2A+6BBx7Qp59+qvbt2+v48eN5soybiauS0tsNSenNb8GCBZo+fboWLVqkgIAAq8PJUl6f05DRW2+9pblz51odhpPffvtNgwcPtuyCf7OqXr261q5dq+rVq1sdiuXOnTunwYMH3xE/tHHrCQsL09q1a9WyZUurQ7mjxMbGavDgwXmelFrN/XomqlixomrWrOkYbt68uQoVKqSZM2eqdevWOZ5ftWrVrieMG9K+fXu1b9/e5csFkHtatmypv//+2+owct25c+fk6+trdRi5ytXrVKJEiVyd3+24T/JKTrdVgQIFVLt27Vxb/vnz5+Xt7U3LG5DLvLy8cvW7ClwuV54p9fb2lqenpzw8PJzKT548qeeff15FihSRp6enihcvrgEDBig5Odmp3uW3561cuVJ33323JOmpp55y3CZ8+W2ZGzduVJs2bRQQECBvb29Vq1ZNX375ZbZiHTx4sGrVqqWAgAAVKFBA1atX16RJk2SMuea0Xbt2Vf78+fX777+rWbNm8vPzU1hYmN59911J0rp163TvvffKz89PpUuX1rRp0zLMY8eOHXrwwQdVqFAheXt7q2rVqhnqZdV8ntmtClu2bFGrVq0UHBwsLy8vhYeHq2XLljp8+LCkf29pPXv2rKZNm+bYlg0aNJAkHT9+XM8//7zKly+v/PnzKzg4WA888IB+/vnnDHEnJyfrnXfeUbly5eTt7a3AwEA1bNhQsbGxGepOnz5d5cqVk6+vr6pUqZLprd179uxRx44dHXGXK1dOH3744VW3f7rExET16NFDgYGByp8/v5o3b64//vgjQ72sbt/Lzm1CDRo00IIFC3TgwAGn29XTXbx4UUOGDFHZsmXl5eWlwoUL66mnnsrQ8p5+a9f8+fNVrVo1+fj4qFy5co5tMnXqVJUrV05+fn665557tHHjxgzrkD9/fu3cuVONGjWSn5+fChcurBdffFHnzp1zqvvVV1+pVq1astvt8vX1VfHixdWtW7errqckGWP00UcfqWrVqvLx8VGhQoX06KOP6q+//spQd9GiRWrUqJFjGeXKldPw4cOd6nz33XeqU6eOfH195e/vryZNmmS4Vf5G9o307zHQr18/FStWTJ6enipSpIh69+6ts2fPunSbNGjQQBUrVtSGDRt03333OZbx7rvvKi0tTdK1z2np+3j79u1q2rSp/P391ahRI0nZP85yYvbs2apTp478/PyUP39+NWvWTFu2bLnmdOnnpSVLluipp55SQECA/Pz81Lp16yy3y08//aS6devK19fXsd2zu+/SHweYMmWKypQpIx8fH9WsWVPr1q2TMUbvv/++ihUrpvz58+uBBx7Q3r17nabP7BjL6X7NLP6sXOu6NHXqVD322GOSpIYNGzqOg+u5DW7p0qVq1KiRChQoIF9fX9WrV0/Lli3L1rS///67mjdvLl9fXwUFBenZZ5/VmTNnrns56d/ZzZs369FHH1WhQoUcfxBIP/8tWrRI1atXl4+Pj8qWLavJkyc7zSOr2/Cyc61PPy5//PFHdevWTYULF5avr2+G3xnpLly4oL59+6pq1aqy2+0KCAhQnTp19O2332aom5aWpnHjxjmOl4IFC6p27dr67rvvMtS91jpm53q7f/9+FS5cWNK/v1XSj5GrPb6QlpamIUOGOL4jBQsWVOXKlTV27FinejdyzV29erUaNWokf39/+fr6qm7dulqwYIFTnfT9sGLFCj333HMKCgpSYGCgHn74YR05ciRby8lMds5Xf/31l9q3b6/w8HB5eXkpJCREjRo1ytadKevXr1fr1q0VGBgob29vlShRQr17977u9V++fLnj90mBAgXUuXNnnT17VnFxcWrXrp0KFiyosLAw9evXTykpKY7p02+LHTFihIYOHarIyEh5e3urZs2aGb5ze/fu1VNPPaVSpUrJ19dXRYoUUevWrbV9+/YM67dz5041bdpUvr6+Kly4sF544QUtWLAgw/ctO9eyy+O88ryVneMru8dqZnL7vJWZ7MSXfr7bsmWLHn74YRUoUEB2u11PPvlkptfl7F5vr3YcDho0SK+++qokqVixYo7zQvr+mz17tpo2baqwsDDHb8w33ngjwzX1Wsu5muxs0+PHj6tnz56KiIhw/F6pV6+eli5des35O5gcmDJlipFk1q1bZ1JSUszFixfNoUOHzEsvvWTy5ctnFi1a5Kh7/vx5U7lyZePn52c++OAD8+OPP5q33nrLuLu7mxYtWjjNNyoqynTp0sUYY0xCQoJjOW+++aZZu3atWbt2rTl06JAxxpjly5cbT09Pc99995nZs2ebRYsWma5duxpJZsqUKddch65du5pJkyaZJUuWmCVLlpj//ve/xsfHxwwePPia03bp0sV4enqacuXKmbFjx5olS5aYp556ykgy/fv3N6VLlzaTJk0yixcvNq1atTKSzMaNGx3T//7778bf39+UKFHCfP7552bBggWmQ4cORpJ57733Mmznffv2OS1/xYoVRpJZsWKFMcaYpKQkExgYaGrWrGm+/PJLs2rVKjN79mzz7LPPmt9++80YY8zatWuNj4+PadGihWNb7ty50xHPc889Z2bNmmVWrlxp5s+fb7p3727y5cvnWIYxxqSkpJiGDRsad3d3069fP7Nw4ULz3Xffmf/85z9m5syZjnqSTNGiRc0999xjvvzyS7Nw4ULToEED4+7ubv78809HvZ07dxq73W4qVapkPv/8c/Pjjz+avn37mnz58plBgwZddR+kpaWZhg0bGi8vLzN06FDz448/moEDB5rixYsbSWbgwIFO+ysqKirDPAYOHGiudejv3LnT1KtXz4SGhjq229q1a40xxqSmpprmzZsbPz8/M3jwYLNkyRLz2WefmSJFipjy5cubc+fOOeYTFRVl7rrrLlOxYkUzc+ZMs3DhQlOrVi3j4eFh3n77bVOvXj0zZ84cM3fuXFO6dGkTEhLiNH36MRcZGelY30GDBhl3d3fTqlUrR73Y2Fhjs9lM+/btzcKFC83y5cvNlClTTKdOna66nsYY06NHD+Ph4WH69u1rFi1aZL744gtTtmxZExISYuLi4hz1PvvsM2Oz2UyDBg3MF198YZYuXWo++ugj8/zzzzvqxMTEGEmmadOmZt68eWb27NmmRo0axtPT0/z888/XtW8uPz8YY8zZs2dN1apVTVBQkBk1apRZunSpGTt2rLHb7eaBBx4waWlpLtsm9evXN4GBgaZUqVJmwoQJZsmSJeb55583ksy0adOMMdc+p3Xp0sV4eHiYokWLmuHDh5tly5aZxYsX5+g4y0xm23Lo0KHGZrOZbt26mfnz55s5c+aYOnXqGD8/P8d5ISvp6xAREWG6detmfvjhBzNx4kQTHBxsIiIizKlTp5y2S0BAgImIiDDjxo0zK1asMKtWrcr2vjPm3/NJVFSUqVu3rtN3JCAgwLzyyivmwQcfNPPnzzcxMTEmJCTEVK5c2Wn6zI6xnOzXzOLPSnauS/Hx8WbYsGFGkvnwww8dx0F8fPw1t/nl14Lp06cbm81m2rZta+bMmWO+//5706pVK+Pm5maWLl161X0YFxdngoODTZEiRcyUKVPMwoULzRNPPGEiIyOdri05WU76cRYVFWVef/11s2TJEjNv3jxjzP/Of+XLlzeff/65Wbx4sXnssceMJKfteeW1Lbvb9PJtVKRIEdOzZ0/zww8/mK+//tpcunQp021w+vRp07VrVzN9+nSzfPlys2jRItOvXz+TL18+x3c2XadOnYzNZjNPP/20+fbbb80PP/xghg4dasaOHeuok911zM719sKFC2bRokVGkunevbvjGNm7d2+W+3T48OHGzc3NDBw40CxbtswsWrTIjBkzxulamt1r7r59+zJs35UrVxoPDw9To0YNM3v2bDNv3jzTtGlTY7PZzKxZszLsh+LFi5tevXqZxYsXm88++8wUKlTINGzYMMv4093I+apMmTKmZMmSZvr06WbVqlXmm2++MX379nU6njKzaNEi4+HhYSpXrmymTp1qli9fbiZPnmzat29/3etfrFgx07dvX/Pjjz+a9957z7i5uZkOHTqY6tWrmyFDhpglS5aY119/3UgyI0eOzLDtIyIizL333mu++eYb89VXX5m7777beHh4mNjYWEfdVatWmb59+5qvv/7arFq1ysydO9e0bdvW+Pj4mN9//91R78iRIyYwMNBERkaaqVOnmoULF5pOnTqZokWLZvi+Zedadnmclx8j2T2+snOsZiYvzluZyU58l5/vXn31VbN48WIzatQo4+fnZ6pVq2YuXrzoqJvd4/dax+GhQ4dMr169jCQzZ84cx3khISHBGGPMf//7XzN69GizYMECs3LlSjNhwgRTrFixDN+77BzvN3LNadasmSlcuLCZOHGiWblypZk3b555++23nb4n13JdSemVHy8vL/PRRx851Z0wYYKRZL788kun8vfee89IMj/++KOj7MofnRs2bMgyySxbtqypVq2aSUlJcSpv1aqVCQsLM6mpqdlen9TUVJOSkmLeeecdExgY6PSDJjNdunQxksw333zjKEtJSTGFCxc2kszmzZsd5SdOnDBubm6mT58+jrL27dsbLy8vc/DgQaf5RkdHG19fX3P69GljTPaT0o0bNxpJjh8AWfHz83Pavlm5dOmSSUlJMY0aNTIPPfSQo/zzzz83ksynn3561eklmZCQEJOYmOgoi4uLM/ny5TPDhw93lDVr1szcddddji9UuhdffNF4e3ubkydPZrmMH374wUhy+lFgzL9f/txMSo0xpmXLlplOP3PmzAzHgTH/O24v/y5ERUUZHx8fc/jwYUfZ1q1bjSQTFhZmzp496yifN2+ekWS+++47p3W42vquXr3aGGPMBx98YCQ5jqHsWrt2bYaLozH/ngR9fHzMa6+9Zowx5syZM6ZAgQLm3nvvzfJ7kpqaasLDw02lSpWcvodnzpwxwcHBpm7duk7rdb1J6fDhw02+fPnMhg0bnOp9/fXXRpJZuHChMSbvt4kx/17IJZn169c71S1fvrxp1qyZY/hq57T0fTx58mSn8pwcZ5m5clsePHjQuLu7m169ejnVO3PmjAkNDTXt2rW76vzSz0uXnxuMMWbNmjVGkhkyZIijLH27LFu2zKludvedMf+eT0JDQ01SUpKjLP07UrVqVafjcMyYMUaS2bZtm6PsymPsevbrlfFnJbvXpa+++irDj6irufJacPbsWRMQEGBat27tVC81NdVUqVLF3HPPPVed3+uvv25sNpvZunWrU3mTJk2c4srJctKPs7fffjvD8qKiooy3t7c5cOCAo+z8+fMmICDAPPPMM46yzJLS7G7T9G3UuXPnq657VtKve927dzfVqlVzlP/0009GkhkwYMBVp8/uOma13Cuvt8ePH89wLbuaVq1amapVq161TnavuZklHLVr1zbBwcHmzJkzTrFXrFjR3HXXXY7vYfp+uPyPlMYYM2LECCPJHD169KoxXu/56p9//jGSzJgxY646/8yUKFHClChRwpw/fz7LOjld/yvjbdu2rZFkRo0a5VRetWpVU716dcdw+rYPDw93iicxMdEEBASYxo0bZxnjpUuXzMWLF02pUqXMK6+84ih/9dVXjc1my/AHx2bNmmWalGbnWpbZMZLd4ys7x2pm8uK8lZnsxJd+nF6+nY353x/kZ8yYYYzJ2fU2O8fh+++/n2lecKW0tDSTkpJiVq1aZSSZX3/9NUfLuZFrTv78+U3v3r2vGt+1XNftu59//rk2bNigDRs26IcfflCXLl30wgsvaPz48Y46y5cvl5+fnx599FGnadNvQ8nurUaX27t3r37//Xc98cQTkqRLly45Pi1atNDRo0e1e/fuq85j+fLlaty4sex2u9zc3OTh4aG3335bJ06cUHx8/DVjsNlsatGihWPY3d1dJUuWVFhYmNOzsQEBAQoODtaBAweclt2oUSNFREQ4zbNr1646d+5cjnsDLlmypAoVKqTXX39dEyZM0G+//Zaj6SVpwoQJql69ury9veXu7i4PDw8tW7ZMu3btctT54Ycf5O3tna3bHhs2bCh/f3/HcEhIiNN2uHDhgpYtW6aHHnpIvr6+GfbhhQsXtG7duiznv2LFCklyHAPpOnbsmKP1vhHz589XwYIF1bp1a6f4q1atqtDQ0Ay3oFWtWlVFihRxDJcrV07Sv7fLXP7cVXr55cdMuqzWN317pN8e2q5dO3355ZfZfs5y/vz5stlsevLJJ53WJTQ0VFWqVHGsS2xsrBITE/X8889neXvt7t27deTIEXXq1En58v3v1JI/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atWqpR9//FH+/v6OaUaPHi13d3e1a9dO58+fV6NGjTR16lS5ubk56sTExOill15y9NLbpk2bLN+NCgAAACBnbCY7L4QEcknVqlVVunRpDR48WGFhYRk6C7Lb7RZFlrcSExNlt9uVkJBwyz5f+scff6hnz56aOHGiSpcubXU4AADkudvh+g3cCmgphUvt2bNHX3/9tUqWLGl1KAAAAABuAnR0BJeqVauW03OgAAAAAO5stJTCpXr16qW+ffsqLi5OlSpVkoeHh9P4ypUrWxQZAAAAACuQlMKlHnnkEUlSt27dHGU2m03GmBx3dAQAAADg1kdSCpfat2+f1SEAAAAAuImQlMKloqKirA4BAAAAwE2Ejo7gctOnT1e9evUUHh6uAwcOSJLGjBmjb7/91uLIAAAAALgaSSlc6uOPP1afPn3UokULnT592vEMacGCBTVmzBhrgwMAAADgciSlcKlx48bp008/1YABA+Tm5uYor1mzprZv325hZAAAAACsQFIKl9q3b5+qVauWodzLy0tnz561ICIAAAAAViIphUsVK1ZMW7duzVD+ww8/qHz58q4PCAAAAICl6H0XLvXqq6/qhRde0IULF2SM0S+//KKZM2dq+PDh+uyzz6wODwAAAICLkZTCpZ566ildunRJr732ms6dO6eOHTuqSJEiGjt2rNq3b291eAAAAABcjKQULtejRw/16NFD//zzj9LS0hQcHGx1SAAAAAAswjOlcLlLly5p6dKl+uabb+Tj4yNJOnLkiJKSkiyODAAAAICr0VIKlzpw4ICaN2+ugwcPKjk5WU2aNJG/v79GjBihCxcuaMKECVaHCAAAAMCFaCmFS7388suqWbOmTp065WgllaSHHnpIy5YtszAyAAAAAFagpRQutXr1aq1Zs0aenp5O5VFRUfr7778tigoAAACAVWgphUulpaUpNTU1Q/nhw4fl7+9vQUQAAAAArERSCpdq0qSJxowZ4xi22WxKSkrSwIED1aJFC+sCAwAAAGAJbt+FS40ePVoNGzZU+fLldeHCBXXs2FF79uxRUFCQZs6caXV4AAAAAFyMpBQuFR4erq1bt2rmzJnavHmz0tLS1L17dz3xxBNOHR8BAAAAuDOQlMLlfHx81K1bN3Xr1s3qUAAAAABYjGdK4VLh4eHq2LGjJk6cqD/++MPqcAAAAABYjKQULjVy5EgV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XgcPHtShQ4ccZb/99psSEhJUrly561rm5TJb37Jly0qS1qxZo6ioKA0YMEA1a9ZUqVKlMnTaVKZMGf3yyy9OZRs3bsxxHO7u7urSpYumTJmiKVOmqH379vL19c3xfAAASEdLKQAgT/j4+Kh27dp69913VbRoUf3zzz968803c23+hw4dUp8+ffTMM89o8+bNGjdunKNlsHTp0nriiSfUuXNnjRw5UtWqVdM///yj5cuXq1KlSmrRosV1LXPQoEF69tlnFRwcrOjoaJ05c0Zr1qxRr1691LhxY1WuXFlPPPGExowZo0uXLun5559X/fr1VbNmzRte36+++ko1a9bUvffeq5iYGP3yyy+aNGmSJKlkyZI6ePCgZs2apbvvvlsLFizQ3Llznabv1auXevTooZo1a6pu3bqaPXu2tm3b5nSbdHY9/fTTjkR7zZo1N7xuAIA7Gy2lAIA8M3nyZKWkpKhmzZp6+eWXNWTIkFybd+fOnXX+/Hndc889euGFF9SrVy/17NnTMX7KlCnq3Lmz+vbtqzJlyqhNmzZav3690zOfOdWlSxeNGTNGH330kSpUqKBWrVo5evO12WyaN2+eChUqpPvvv1+NGzdW8eLFNXv27BteV0kaPHiwZs2apcqVK2vatGmKiYlR+fLlJUkPPvigXnnlFb344ouqWrWqYmNj9dZbbzlN/8QTT6h///7q16+fqlevrn379qlr167y9vbOcSylSpVS3bp1VaZMGdWqVStX1g8AcOeymcweKAEAADcNm82muXPnqm3btrk63yZNmig0NFTTp0/P0XTGGJUtW1bPPPOM+vTpk6sxAQDuPNy+CwDAHeDcuXOaMGGCmjVrJjc3N82cOVNLly7N8Ttl4+PjNX36dP3999966qmn8ihaAMCdhKQUAID/7/Keea/0ww8/6L777nNhNLnLZrNp4cKFGjJkiJKTk1WmTBl98803aty4cY7mExISoqCgIE2cOFGFChXKo2gBAHcSbt8FAOD/27t3b5bjihQpcs3XwgAAgJwjKQUAAAAAWIbedwEAAAAAliEpBQAAAABYhqQUAAAAAGAZklIAAAAAgGVISgEAAAAAliEpBQAAAABYhqQUAAAAAGAZklIAAAAAgGX+HzsIOzI+/OG6AAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#repartition Chiffre d'affaire selon le numero de la compagnie\n",
"\n",
"sns.boxplot(data=products_purchased_reduced_spectacle, y=\"time_between_purchase\",x=\"number_compagny\",showfliers=False,showmeans=True)\n",
"plt.title(\"Boite à moustache du temps ecoulés entre le premier et le dernier achat selon les compagnies de spectacles\")"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "e2c51e28-6197-48f0-ab6d-9fc7b3b0de74",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Statistique F : 7956.05932109542\n",
"Valeur de p : 0.0\n",
"Nombre de degrés de liberté entre les groupes : 4\n",
"Nombre de degrés de liberté à l'intérieur des groupes : 764875\n",
"Il y a des différences significatives entre au moins une des entrepries .\n"
]
}
],
"source": [
"#test d'anova pour voir si la difference de temps entre le premier et le dernier achat est statistiquement significative\n",
"\n",
"from scipy.stats import f_oneway\n",
"\n",
"# Créez une liste pour stocker les données de chaque groupe\n",
"groupes = []\n",
"\n",
"# Parcourez chaque modalité de la variable catégorielle et divisez les données en groupes\n",
"for modalite in products_purchased_reduced_spectacle['number_compagny'].unique():\n",
" groupe = products_purchased_reduced_spectacle[products_purchased_reduced_spectacle['number_compagny'] == modalite]['time_between_purchase']\n",
" groupes.append(groupe)\n",
"\n",
"# Effectuez le test ANOVA\n",
"f_statistic, p_value = f_oneway(*groupes)\n",
"\n",
"# Nombre total d'observations\n",
"N = sum(len(groupe) for groupe in groupes)\n",
"\n",
"# Nombre de groupes ou de catégories\n",
"k = len(groupes)\n",
"\n",
"# Degrés de liberté entre les groupes\n",
"df_between = k - 1\n",
"\n",
"# Degrés de liberté à l'intérieur des groupes\n",
"df_within = N - k\n",
"\n",
"# Affichez les résultats\n",
"print(\"Statistique F :\", f_statistic)\n",
"print(\"Valeur de p :\", p_value)\n",
"\n",
"print(\"Nombre de degrés de liberté entre les groupes :\", df_between)\n",
"print(\"Nombre de degrés de liberté à l'intérieur des groupes :\", df_within)\n",
"\n",
"if p_value < 0.05:\n",
" print(\"Il y a des différences significatives entre au moins une des entrepries .\")\n",
"else:\n",
" print(\"Il n'y a pas de différences significatives entre les entreprises .\")"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "74f06e96-3c25-4eca-8190-25b0a4ab0d75",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"customer_id int64\n",
"nb_tickets int64\n",
"nb_purchases int64\n",
"total_amount float64\n",
"nb_suppliers int64\n",
"vente_internet_max int64\n",
"purchase_date_min float64\n",
"purchase_date_max float64\n",
"time_between_purchase float64\n",
"nb_tickets_internet float64\n",
"number_compagny int64\n",
"dtype: object"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"products_purchased_reduced_spectacle.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "20a70ec0-38f6-470e-a442-7884a150613a",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAArMAAAIhCAYAAABdSTJTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABSMUlEQVR4nO3deXwNZ///8feRPUgQJKIRQe1ro4uoBrW3aG8tym0pelNK0YXcrQalKV3u9Naquu2tqmrRUkXUVkurtmotXRRRErG0Yg1Jrt8ffjlfR04ih8QxvJ6Px3k8zDXXzHzmzJzkbXLNHJsxxggAAACwoELuLgAAAAC4VoRZAAAAWBZhFgAAAJZFmAUAAIBlEWYBAABgWYRZAAAAWBZhFgAAAJZFmAUAAIBlEWYBAABgWYRZuN2MGTNks9nk6+urAwcOZJvfuHFj1axZ0w2VST179lSRIkXcsm0417hxYzVu3NjdZdw2bDabRo4c6e4yrtuuXbs0cuRI7d+/392lWMKGDRs0cuRI/f333+4uJUcjR46UzWZzdxm4CRBmcdNIS0vTyy+/7O4yANyCdu3apVGjRhFm82jDhg0aNWrUTR1m+/Tpo40bN7q7DNwECLO4abRq1Uoff/yxfvzxR3eXki+MMTp37py7ywBwCzh37pyMMe4uI0c38mfd2bNnJUl33HGH7rvvvhu2Xdy8CLO4abz44osKCgrSsGHDrtr3/PnziomJUUREhLy9vVW2bFkNGDAg21WE8uXL6+GHH9bixYtVr149+fn5qVq1alq8eLGkS0McqlWrpsKFC+uee+7R5s2bnW5v586devDBB1W4cGGVKlVKzzzzjP0HahabzaZnnnlGkyZNUrVq1eTj46OZM2dKkn777Td16dJFpUuXlo+Pj6pVq6b33nsvT+9L1nqnT5+uKlWqyM/PT/Xr19d3330nY4zeeOMNRUREqEiRImratKl+//33bOuYNm2a6tSpI19fX5UoUUKPPvqodu/ebZ//4YcfymazOb3KMXr0aHl5eenw4cP2thUrVujBBx9UQECA/P391bBhQ33zzTcOy2X9CXDnzp164oknFBgYqODgYPXq1UsnT5686n4bYzR+/HiFh4fL19dXd911l77++munfVNTU/X88887nA+DBw/WmTNnrrodSVq6dKkefPBBBQYGyt/fX9WqVVNcXJx9/ubNm9W5c2eVL19efn5+Kl++vJ544olsw2KyhsysWrVKTz/9tEqWLKmgoCD94x//cHj/JGnu3Llq0aKFypQpYz8vhw8fnq3mnIZV9OzZU+XLl7dPv/766ypUqJAWLVqUrZ+/v79++umnXN+D1NRUPfXUUwoKClKRIkXUqlUr/frrr077Xuv5XK9ePTVq1Chbe0ZGhsqWLat//OMf9rYLFy5ozJgxqlq1qnx8fFSqVCk9+eSTOnr0qMOyWZ/xpUuX6q677pKfn5+qVq2qadOm2fvMmDFDjz/+uCSpSZMmstlsstlsmjFjhr1PXs5pZ1avXi2bzaaPPvpIQ4cOVUhIiPz8/BQdHa1t27Y59HX1PFq+fLl69eqlUqVKyd/fX2lpaTnWkdfPQNbPkw8//FDVqlWTv7+/6tSpY/+ZKF367L7wwguSpIiICPv7tXr1aof3fP78+apXr558fX01atQoSVJycrL69u2rO+64Q97e3oqIiNCoUaOUnp5uX//+/ftls9k0fvx4jR07VuXKlZOvr6/q16+f48+RrVu36rHHHlPx4sVVsWJFh3mXW7lypRo3bqygoCD5+fmpXLly6tChg8PP67yeW7AQA7jZ9OnTjSTzww8/mHfeecdIMt988419fnR0tKlRo4Z9OjMz07Rs2dJ4enqaESNGmOXLl5s333zTFC5c2NSrV8+cP3/e3jc8PNzccccdpmbNmmbOnDlmyZIl5t577zVeXl7mlVdeMQ0bNjTz5883CxYsMJUrVzbBwcHm7Nmz9uV79OhhvL29Tbly5czYsWPN8uXLzciRI42np6d5+OGHHfZDkilbtqypXbu2+fjjj83KlSvNzz//bHbu3GkCAwNNrVq1zKxZs8zy5cvNc889ZwoVKmRGjhx51fdHkgkPDzdRUVEOtZYoUcIMGTLEtG/f3ixevNjMnj3bBAcHm9q1a5vMzEz78q+99pqRZJ544gnz1VdfmVmzZpkKFSqYwMBA8+uvvxpjjElLSzMhISGma9euDtu+ePGiCQ0NNY8//ri97cMPPzQ2m8088sgjZv78+WbRokXm4YcfNh4eHmbFihX2frGxsUaSqVKlinnllVdMQkKCefvtt42Pj4958sknr7rfWcv37t3bfP3112by5MmmbNmyJiQkxERHR9v7nTlzxtStW9eULFnSvP3222bFihXmnXfeMYGBgaZp06YO74UzU6ZMMTabzTRu3Nh8/PHHZsWKFWbixImmf//+9j7z5s0zr7zyilmwYIFZs2aN+eSTT0x0dLQpVaqUOXr0qL1f1rlcoUIFM3DgQLNs2TIzZcoUU7x4cdOkSROH7b766qvmP//5j/nqq6/M6tWrzaRJk0xERES2ftHR0Q77m6VHjx4mPDzcPp2ZmWnatGljihcvbvbv32+MMWbatGlGkpkyZUqu70FmZqZp0qSJ8fHxsZ/nsbGxpkKFCkaSiY2Ntfe9nvM56/Oddd5lWbJkiZFkvvzyS2OMMRkZGaZVq1amcOHCZtSoUSYhIcFMmTLFlC1b1lSvXt3hM5r1Ga9evbqZNWuWWbZsmXn88ceNJLNmzRpjjDEpKSn2z8F7771nNm7caDZu3GhSUlKMMXk/p51ZtWqVkWTCwsJM+/btzaJFi8xHH31kKlWqZAICAszevXvtfV09j8qWLWv+9a9/ma+//tp89tlnJj093WkNrnwGJJny5cube+65x3z66admyZIlpnHjxsbT09Ne68GDB83AgQONJDN//nz7+3Xy5En7e16mTBlToUIFM23aNLNq1SqzadMmk5SUZMLCwkx4eLj54IMPzIoVK8yrr75qfHx8TM+ePe017Nu3z/6e3X///ebzzz838+bNM3fffbfx8vIyGzZssPfN+jkQHh5uhg0bZhISEszChQsd5l2+Xl9fX9O8eXOzcOFCs3r1ajN79mzTrVs389dff7l8bsE6CLNwu8vDbFpamqlQoYKpX7++/QfwlWF26dKlRpIZP368w3rmzp1rJJnJkyfb28LDw42fn5/5888/7W3bt283kkyZMmXMmTNn7O0LFy50+IVqzKXAIMm88847DtsaO3askWTWrVtnb5NkAgMDzYkTJxz6tmzZ0txxxx32XwRZnnnmGePr65ut/5UkmZCQEHP69OlstdatW9fhF1V8fLyRZHbs2GGMMeavv/4yfn5+pk2bNg7rTExMND4+PqZLly72ttjYWOPt7W2OHDlib8t6T7NCwZkzZ0yJEiVM27ZtHdaXkZFh6tSpY+655x6H9Tk7Tv379ze+vr65hsy//vrL+Pr6mkcffdShff369UaSQ7iLi4szhQoVMj/88IND388++8xIMkuWLMlxO6dOnTIBAQHm/vvvv2rovVx6ero5ffq0KVy4sMO5kXUuXx6EjTFm/PjxRpJJSkpyur7MzExz8eJFs2bNGiPJ/Pjjj/Z5eQ2zxhhz7Ngxc8cdd5h77rnHbN261fj7+5t//vOfV92fr7/+Otfz/PIwez3n87Fjx4y3t7f597//7dDesWNHExwcbC5evGiMMWbOnDlGkvn8888d+v3www9Gkpk4caK9LTw83Pj6+poDBw7Y286dO2dKlChh+vbta2+bN2+ekWRWrVrlsE5XzmlnssLsXXfd5XAO7d+/33h5eZk+ffrkuOzVzqPu3bvnuu0srnwGJJng4GCTmppqb0tOTjaFChUycXFx9rY33njDSDL79u3Ltr3w8HDj4eFhfvnlF4f2vn37miJFijgcC2OMefPNN40ks3PnTmPM/4XZ0NBQc+7cOXu/1NRUU6JECdOsWTN7W9bPkVdeeSVbHVeG2az93b59u9P3yRjXzi1YB8MMcFPx9vbWmDFjtHnzZn366adO+6xcuVLSpT+fXu7xxx9X4cKFs/2Zqm7duipbtqx9ulq1apIu/fnW398/W7uzJyp07drVYbpLly6SpFWrVjm0N23aVMWLF7dPnz9/Xt98840effRR+fv7Kz093f5q06aNzp8/r++++87pfl6uSZMmKly4cLZaW7du7fBntiv3YePGjTp37ly29yosLExNmzZ1eK+efvppSdL//vc/e9u7776rWrVq6YEHHpB06aaQEydOqEePHg77kpmZqVatWumHH37I9mfNdu3aOUzXrl1b58+fV0pKSo77u3HjRp0/fz7b+x4VFaXw8HCHtsWLF6tmzZqqW7euQ00tW7Z0+NOoMxs2bFBqaqr69++f613Rp0+f1rBhw1SpUiV5enrK09NTRYoU0ZkzZxyGa+S2z5LjufXHH3+oS5cuCgkJkYeHh7y8vBQdHS1JTteZF0FBQZo7d662bt2qqKgolStXTpMmTbrqclnncU7neZbrPZ+DgoLUtm1bzZw5U5mZmZKkv/76S1988YW6d+8uT09PSZeOabFixdS2bVuHbdStW1chISHZjmndunVVrlw5+7Svr68qV67s9LN8pWs5p53p0qWLwzkUHh6uqKgoh58Rrp5HHTp0uOp2Jdc/A02aNFHRokXt08HBwSpdunSe3q8stWvXVuXKlbPV0aRJE4WGhjrU0bp1a0nSmjVrHPr/4x//kK+vr326aNGiatu2rdauXauMjAyHvnl5L+rWrStvb2/961//0syZM/XHH39k6+PquQVrIMziptO5c2fdddddeumll3Tx4sVs848fPy5PT0+VKlXKod1msykkJETHjx93aC9RooTDtLe3d67t58+fd2j39PRUUFCQQ1tISIi9lsuVKVMmW63p6emaMGGCvLy8HF5t2rSRJB07dizbPl7pWvchq74r65Kk0NBQh/qDg4PVqVMnffDBB8rIyNCOHTv07bff6plnnrH3OXLkiCTpsccey7Y/48aNkzFGJ06ccNjOle+dj4+PpNxvGMmqK+t9vtyVbUeOHNGOHTuy1VO0aFEZY3J9f7PGyN1xxx059pEuBZV3331Xffr00bJly7Rp0yb98MMPKlWqlNP9uNo+nz59Wo0aNdL333+vMWPGaPXq1frhhx80f/58h37X4t5771WNGjV0/vx5Pf300w7/CcpJ1mcqp/P88n7Xez736tVLhw4dUkJCgiRpzpw5SktLc/gP15EjR/T333/L29s723aSk5OzbePKuqVL73le3sdrOaedyelcvfwz5up55Oxzm9M+uPIZuJ73K7fajhw5okWLFmWro0aNGpKynxs5vWcXLlzQ6dOnr7q9K1WsWFErVqxQ6dKlNWDAAFWsWFEVK1bUO++841CjK+cWrMHT3QUAV7LZbBo3bpyaN2+uyZMnZ5sfFBSk9PR0HT161CHQGmOUnJysu+++O1/rSU9P1/Hjxx1+ASQnJ9trubL2yxUvXlweHh7q1q2bBgwY4HT9ERER+Vrv5bLqS0pKyjbv8OHDKlmypEPbs88+qw8//FBffPGFli5dqmLFijlcrcvqP2HChBzvIg4ODs63urPe58slJyc73PhUsmRJ+fn5Odzwc7kr9/FyWefPn3/+mWOfkydPavHixYqNjdXw4cPt7WlpaXkKOc6sXLlShw8f1urVq+1XYyU5fQySr6+v0xvmcvqlGxsbq59++kmRkZF65ZVX9PDDD6tChQq51pP1mcrpPM+SH+dzy5YtFRoaqunTp6tly5aaPn267r33XlWvXt3eJ+vGuaVLlzpdx+VXFa9Xfp3TOZ2rWe/ntZxHeX2G6vV8Bq6Vs9pKliyp2rVra+zYsU6XCQ0NdZjO6T3z9vbO9nzvvL4XjRo1UqNGjZSRkaHNmzdrwoQJGjx4sIKDg9W5c+cbem7hxiHM4qbUrFkzNW/eXKNHj1ZYWJjDvAcffFDjx4/XRx99pCFDhtjbP//8c505c0YPPvhgvtcze/ZsDRo0yD798ccfS9JVH97v7++vJk2aaNu2bapdu7b9yumN0qBBA/n5+emjjz6y380tXQpvK1eu1GOPPebQPzIyUlFRURo3bpx+/vln/etf/3K4stewYUMVK1ZMu3btcrhim9/uu+8++fr6avbs2Q5/XtywYYMOHDjgEGYffvhhvfbaawoKCnL5PwZRUVEKDAzUpEmT1LlzZ6e/MG02m4wx9qurWaZMmZLtT6F5lbWdK9f5wQcfZOtbvnx5zZs3T2lpafb+x48f14YNGxQQEODQNyEhQXFxcXr55Zc1ePBg1a1bV506ddL69etzPfeaNGmi8ePH53ieZ8mP8zkrDMfHx+vbb7/V5s2bs+33ww8/rE8++UQZGRm69957Xd6GMzn9RSC/zuk5c+Zo6NCh9mN74MABbdiwQd27d5dUMOdRluv5DOQkL39BcVbHkiVLVLFiRYfhVjmZP3++3njjDftQg1OnTmnRokVq1KiRPDw8rq3w/8/Dw0P33nuvqlatqtmzZ2vr1q3q3LlzgZxbcD/CLG5a48aNU2RkpFJSUux/ppKk5s2bq2XLlho2bJhSU1PVsGFD7dixQ7GxsapXr566deuWr3V4e3vrrbfe0unTp3X33Xdrw4YNGjNmjFq3bq3777//qsu/8847uv/++9WoUSM9/fTTKl++vE6dOqXff/9dixYtso8BLgjFihXTiBEj9O9//1vdu3fXE088oePHj2vUqFHy9fVVbGxstmWeffZZderUSTabTf3793eYV6RIEU2YMEE9evTQiRMn9Nhjj6l06dI6evSofvzxRx09elTvv//+ddddvHhxPf/88xozZoz69Omjxx9/XAcPHtTIkSOz/Wly8ODB+vzzz/XAAw9oyJAhql27tjIzM5WYmKjly5frueeey/GXVpEiRfTWW2+pT58+atasmZ566ikFBwfr999/148//qh3331XAQEBeuCBB/TGG2+oZMmSKl++vNasWaOpU6eqWLFi17R/UVFRKl68uPr166fY2Fh5eXlp9uzZTp+x3K1bN33wwQf65z//qaeeekrHjx/X+PHjswXZpKQk/fOf/1R0dLRiY2NVqFAhzZ07Vw888IBefPFFxcfH51hPixYt7P3OnDmj+vXra/369frwww+z9c2P87lXr14aN26cunTpIj8/P3Xq1MlhfufOnTV79my1adNGzz77rO655x55eXnpzz//1KpVq9S+fXs9+uijV93O5bK+RXDy5MkqWrSofH19FRERoaCgoHw5p1NSUvToo4/qqaee0smTJxUbGytfX1/FxMRIUoGcR1mu5zOQk1q1akm6dLx79OghLy8vValSJdcrl6NHj1ZCQoKioqI0aNAgValSRefPn9f+/fu1ZMkSTZo0yWFIj4eHh5o3b66hQ4cqMzNT48aNU2pqqv0xX66aNGmSVq5cqYceekjlypXT+fPn7VermzVrJqlgzi3cBNx48xlgjHF8msGVunTpYiQ5PM3AmEt3Kw8bNsyEh4cbLy8vU6ZMGfP000/bH7+SJTw83Dz00EPZ1ivJDBgwwKEt6w7bN954w97Wo0cPU7hwYbNjxw7TuHFj4+fnZ0qUKGGefvpph6cL5LTOy9fdq1cvU7ZsWePl5WVKlSploqKizJgxY3J9b1yp1Zj/u7N63rx5Du1TpkwxtWvXNt7e3iYwMNC0b9/efmfxldLS0oyPj49p1apVjjWtWbPGPPTQQ6ZEiRLGy8vLlC1b1jz00EMO28260/jyRw4Z83/H29ld0pfLzMw0cXFxJiwszHh7e5vatWubRYsWOb27//Tp0+bll182VapUse9jrVq1zJAhQ0xycnKu2zHm0qOhoqOjTeHChY2/v7+pXr26GTdunH3+n3/+aTp06GCKFy9uihYtalq1amV+/vlnEx4ebnr06JFt3648l7OOy+V30m/YsME0aNDA+Pv7m1KlSpk+ffqYrVu3Gklm+vTpDsvPnDnTVKtWzfj6+prq1aubuXPnOjzNID093URHR5vg4OBsT0zIuit9wYIFub4Hf//9t+nVq5cpVqyY8ff3N82bNzd79uzJ9jQDY67vfM4SFRVlJGV7HFyWixcvmjfffNPUqVPH+Pr6miJFipiqVauavn37mt9++83eL6fPuLPzJD4+3kRERBgPD49s73Nezmlnso7thx9+aAYNGmRKlSplfHx8TKNGjczmzZsd+l7veZSbvH4Gcvo5dWUNxhgTExNjQkNDTaFChRzO35zec2OMOXr0qBk0aJCJiIgwXl5epkSJEiYyMtK89NJL9p+ZWT+/xo0bZ0aNGmXuuOMO4+3tberVq2eWLVvmsL6cfo5cPi/Lxo0bzaOPPmrCw8ONj4+PCQoKMtHR0Q5PqDEm7+cWrMNmzE38lSIAbrhFixapXbt2+uqrr+w39QBwbvXq1WrSpInmzZuXbdgOnNu/f78iIiL0xhtv6Pnnn3d3ObgFMMwAgKRL311/4MABPffcc6pbt679cToAANzMeDQXAElS//791a5dOxUvXlxz5szJ893DAAC4E8MMAAAAYFlcmQUAAIBlEWYBAABgWYRZAAAAWNZt9zSDzMxMHT58WEWLFuUGFwAAgJuQMUanTp1SaGioChXK/drrbRdmDx8+nO3rUQEAAHDzOXjwoMM3xzlz24XZrK/iO3jwYLavgwQAAID7paamKiwsLNevUM5y24XZrKEFAQEBhFkAAICbWF6GhHIDGAAAACyLMAsAAADLIswCAADAsgizAAAAsCzCLAAAACyLMAsAAADLIswCAADAsgizAAAAsCzCLAAAACyLMAsAAADLIswCAADAsgizAAAAsCzCLAAAACyLMAsAAADLIswCAADAsgizAAAAsCzCLAAAACyLMAsAAADLIswCAADAsjzdXYBVRL4wy90l4P/b8kZ3d5cAAABuElyZBQAAgGURZgEAAGBZhFkAAABYFmEWAAAAlkWYBQAAgGURZgEAAGBZhFkAAABYFmEWAAAAlkWYBQAAgGURZgEAAGBZhFkAAABYFmEWAAAAlkWYBQAAgGW5NcyuXbtWbdu2VWhoqGw2mxYuXJhr//nz56t58+YqVaqUAgIC1KBBAy1btuzGFAsAAICbjlvD7JkzZ1SnTh29++67eeq/du1aNW/eXEuWLNGWLVvUpEkTtW3bVtu2bSvgSgEAAHAz8nTnxlu3bq3WrVvnuX98fLzD9GuvvaYvvvhCixYtUr169fK5OgAAANzs3Bpmr1dmZqZOnTqlEiVK5NgnLS1NaWlp9unU1NQbURoAAABuAEvfAPbWW2/pzJkz6tixY4594uLiFBgYaH+FhYXdwAoBAABQkCwbZufMmaORI0dq7ty5Kl26dI79YmJidPLkSfvr4MGDN7BKAAAAFCRLDjOYO3euevfurXnz5qlZs2a59vXx8ZGPj88NqgwAAAA3kuWuzM6ZM0c9e/bUxx9/rIceesjd5QAAAMCN3Hpl9vTp0/r999/t0/v27dP27dtVokQJlStXTjExMTp06JBmzZol6VKQ7d69u9555x3dd999Sk5OliT5+fkpMDDQLfsAAAAA93HrldnNmzerXr169sdqDR06VPXq1dMrr7wiSUpKSlJiYqK9/wcffKD09HQNGDBAZcqUsb+effZZt9QPAAAA93LrldnGjRvLGJPj/BkzZjhMr169umALAgAAgKVYbswsAAAAkIUwCwAAAMsizAIAAMCyCLMAAACwLMIsAAAALIswCwAAAMsizAIAAMCyCLMAAACwLMIsAAAALIswCwAAAMsizAIAAMCyCLMAAACwLMIsAAAALIswCwAAAMsizAIAAMCyCLMAAACwLMIsAAAALIswCwAAAMsizAIAAMCyCLMAAACwLMIsAAAALIswCwAAAMsizAIAAMCyPN1dAHAzinxhlrtLwP+35Y3u7i4BAHAT48osAAAALIswCwAAAMsizAIAAMCyCLMAAACwLMIsAAAALIswCwAAAMsizAIAAMCyCLMAAACwLMIsAAAALIswCwAAAMsizAIAAMCyCLMAAACwLMIsAAAALIswCwAAAMsizAIAAMCyCLMAAACwLE93FwAAAFBQIl+Y5e4S8P9teaN7gayXK7MAAACwLMIsAAAALIswCwAAAMsizAIAAMCyCLMAAACwLMIsAAAALIswCwAAAMsizAIAAMCyCLMAAACwLMIsAAAALIswCwAAAMsizAIAAMCyCLMAAACwLMIsAAAALIswCwAAAMvydHcBAADcSJEvzHJ3Cfj/trzR3d0l4BbAlVkAAABYFmEWAAAAlkWYBQAAgGW5NcyuXbtWbdu2VWhoqGw2mxYuXHjVZdasWaPIyEj5+vqqQoUKmjRpUsEXCgAAgJuSW8PsmTNnVKdOHb377rt56r9v3z61adNGjRo10rZt2/Tvf/9bgwYN0ueff17AlQIAAOBm5NanGbRu3VqtW7fOc/9JkyapXLlyio+PlyRVq1ZNmzdv1ptvvqkOHTo4XSYtLU1paWn26dTU1OuqGQAAADcPS42Z3bhxo1q0aOHQ1rJlS23evFkXL150ukxcXJwCAwPtr7CwsBtRKgAAAG4AS4XZ5ORkBQcHO7QFBwcrPT1dx44dc7pMTEyMTp48aX8dPHjwRpQKAACAG8ByX5pgs9kcpo0xTtuz+Pj4yMfHp8DrAgAAwI1nqSuzISEhSk5OdmhLSUmRp6engoKC3FQVAAAA3MVSYbZBgwZKSEhwaFu+fLnq168vLy8vN1UFAAAAd3FrmD19+rS2b9+u7du3S7r06K3t27crMTFR0qXxrt27/9/3Nvfr108HDhzQ0KFDtXv3bk2bNk1Tp07V888/747yAQAA4GZuHTO7efNmNWnSxD49dOhQSVKPHj00Y8YMJSUl2YOtJEVERGjJkiUaMmSI3nvvPYWGhuq///1vjo/lAgAAwK3NrWG2cePG9hu4nJkxY0a2tujoaG3durUAqwIAAIBVWGrMLAAAAHA5wiwAAAAsizALAAAAyyLMAgAAwLIIswAAALAswiwAAAAsizALAAAAyyLMAgAAwLIIswAAALAswiwAAAAsizALAAAAyyLMAgAAwLIIswAAALAswiwAAAAsizALAAAAyyLMAgAAwLIIswAAALAswiwAAAAsizALAAAAyyLMAgAAwLIIswAAALAsl8Ps1KlTnbanp6crJibmugsCAAAA8srlMPvcc8+pQ4cOOnHihL1tz549uueee/Tpp5/ma3EAAABAblwOs9u2bdORI0dUq1YtJSQk6L333tNdd92lmjVravv27QVQIgAAAOCcp6sLREREaO3atRoyZIhatWolDw8PzZo1S507dy6I+gAAAIAcXdMNYIsXL9acOXMUFRWlYsWK6X//+58OHz6c37UBAAAAuXI5zPbt21cdO3bUiy++qLVr12rHjh3y8fFRrVq1GDMLAACAG8rlYQbr16/X999/rzp16kiSQkJCtGTJEr333nvq1auXOnbsmO9FAgAAAM64HGa3bNkiHx+fbO0DBgxQs2bN8qUoAAAAIC9cHmbgLMhmqVKlynUVAwAAALjimp5mYLPZcpz/xx9/XFdBAAAAQF65HGYHDx7sMH3x4kVt27ZNS5cu1QsvvJBfdQEAAABX5XKYffbZZ522v/fee9q8efN1FwQAAADk1TU9Z9aZ1q1b6/PPP8+v1QEAAABXlW9h9rPPPlOJEiXya3UAAADAVbk8zKBevXoON4AZY5ScnKyjR49q4sSJ+VocAAAAkBuXw+wjjzziMF2oUCGVKlVKjRs3VtWqVfOrLgAAAOCqXA6zsbGxBVEHAAAA4DKXw+zlzp07p4sXLzq0BQQEXFdBAAAAQF65fAPYmTNn9Mwzz6h06dIqUqSIihcv7vACAAAAbhSXw+yLL76olStXauLEifLx8dGUKVM0atQohYaGatasWQVRIwAAAOCUy8MMFi1apFmzZqlx48bq1auXGjVqpEqVKik8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6dJFw4YNU3Jysmw2mzIzM7V+/Xo9//zz6t69e0HUCAAAADjlcpgdO3asypUrp7Jly+r06dOqXr26HnjgAUVFRenll18uiBoBAAAAp1x+zqyXl5dmz56t0aNHa9u2bcrMzFS9evV05513FkR9AAAAQI5cDrOrV69W48aNVbFiRVWsWLEgagIAAADyxOVhBq1atVLFihU1ZswY/fnnnwVREwAAAJAnLofZw4cP69lnn9X8+fNVvnx5tWzZUp9++qkuXLhQEPUBAAAAOXI5zJYoUUKDBg3S1q1btXnzZlWpUkUDBgxQmTJlNGjQIP34448FUScAAACQjcth9nJ169bV8OHDNWDAAJ05c0bTpk1TZGSkGjVqpJ07d+ZXjQAAAIBT1xRmL168qM8++0xt2rRReHi4li1bpnfffVdHjhzRvn37FBYWpscffzy/awUAAAAcuBxmBw4cqDJlyqhfv36qXLmytm3bpo0bN6pPnz4qXLiwwsLC9Prrr2vPnj15Wt/EiRMVEREhX19fRUZG6ttvv821f1paml566SWFh4fLx8dHFStW1LRp01zdDQAAANwCXH40165duzRhwgR16NBB3t7eTvuEhoZq1apVV13X3LlzNXjwYE2cOFENGzbUBx98oNatW2vXrl0qV66c02U6duyoI0eOaOrUqapUqZJSUlKUnp7u6m4AAADgFuBymP3mm2+uvlJPT0VHR1+139tvv63evXurT58+kqT4+HgtW7ZM77//vuLi4rL1X7p0qdasWaM//vhDJUqUkCSVL1/etR0AAADALeOaxszu3btXAwcOVLNmzdS8eXMNGjRIe/fudWkdFy5c0JYtW9SiRQuH9hYtWmjDhg1Ol/nyyy9Vv359jR8/XmXLllXlypX1/PPP69y5czluJy0tTampqQ4vAAAA3BpcDrPLli1T9erVtWnTJtWuXVs1a9bU999/rxo1aighISHP6zl27JgyMjIUHBzs0B4cHKzk5GSny/zxxx9at26dfv75Zy1YsEDx8fH67LPPNGDAgBy3ExcXp8DAQPsrLCwszzUCAADg5ubyMIPhw4dryJAhev3117O1Dxs2TM2bN3dpfTabzWHaGJOtLUtmZqZsNptmz56twMBASZeGKjz22GN677335Ofnl22ZmJgYDR061D6dmppKoAUAALhFuHxldvfu3erdu3e29l69emnX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k50uk5yc7LR/enq6jh07pjJlymRbJi4uTqNGjcrWHhYWdh3Vw50CJ/Rzdwm4gTjetxeO9+2F4317uZbjferUKQUGBubax21hNovNZnOYNsZka7taf2ftWWJiYjR06FD7dGZmpk6cOKGgoKBct3OrSU1NVVhYmA4ePKiAgAB3l4MCxvG+vXC8by8c79vL7Xq8jTE6deqUQkNDr9rXbWG2ZMmS8vDwyHYVNiUlJdvV1ywhISFO+3t6eiooKMjpMj4+PvLx8XFoK1as2LUXbnEBAQG31Yfhdsfxvr1wvG8vHO/by+14vK92RTaL224A8/b2VmRkpBISEhzaExISFBUV5XSZBg0aZOu/fPly1a9f3+l4WQAAANza3Po0g6FDh2rKlCmaNm2adu/erSFDhigxMVH9+l0aUxETE6Pu3bvb+/fr108HDhzQ0KFDtXv3bk2bNk1Tp07V888/765dAAAAgBu5dcxsp06ddPz4cY0ePVpJSUmqWbOmlixZovDwcElSUlKSwzNnIyIitGTJEg0ZMkTvvfeeQkND9d///lcdOnRw1y5Yho+Pj2JjY7MNucCtieN9e+F431443rcXjvfV2UxennkAAAAA3ITc/nW2AAAAwLUizAIAAMCyCLMAAACwLMIsAAAALIswe4tZu3at2rZtq9DQUNlsNi1cuNBhvjFGI0eOVGhoqPz8/NS4cWPt3LnTPcXiul3teM+fP18tW7ZUyZIlZbPZtH37drfUifyR2/G+ePGihg0bplq1aqlw4cIKDQ1V9+7ddfjwYfcVjOtytc/3yJEjVbVqVRUuXFjFixdXs2bN9P3337unWFy3qx3vy/Xt21c2m03x8fE3rL6bGWH2FnPmzBnVqVNH7777rtP548eP19tvv613331XP/zwg0JCQtS8eXOdOnXqBleK/HC1433mzBk1bNhQr7/++g2uDAUht+N99uxZbd26VSNGjNDWrVs1f/58/frrr2rXrp0bKkV+uNrnu3Llynr33Xf1008/ad26dSpfvrxatGiho0eP3uBKkR+udryzLFy4UN9//32evub1tmFwy5JkFixYYJ/OzMw0ISEh5vXXX7e3nT9/3gQGBppJkya5oULkpyuP9+X27dtnJJlt27bd0JpQcHI73lk2bdpkJJkDBw7cmKJQYPJyvE+ePGkkmRUrVtyYolBgcjref/75pylbtqz5+eefTXh4uPnPf/5zw2u7GXFl9jayb98+JScnq0WLFvY2Hx8fRUdHa8OGDW6sDEBBOHnypGw2m4oVK+buUlDALly4oMmTJyswMFB16tRxdzkoAJmZmerWrZteeOEF1ahRw93l3FTc+g1guLGSk5MlScHBwQ7twcHBOnDggDtKAlBAzp8/r+HDh6tLly4KCAhwdzkoIIsXL1bnzp119uxZlSlTRgkJCSpZsqS7y0IBGDdunDw9PTVo0CB3l3LT4crsbchmszlMG2OytQGwrosXL6pz587KzMzUxIkT3V0OClCTJk20fft2bdiwQa1atVLHjh2VkpLi7rKQz7Zs2aJ33nlHM2bM4Pe1E4TZ20hISIik/7tCmyUlJSXb1VoA1nTx4kV17NhR+/btU0JCAldlb3GFCxdWpUqVdN9992nq1Kny9PTU1KlT3V0W8tm3336rlJQUlStXTp6envL09NSBAwf03HPPqXz58u4uz+0Is7eRiIgIhYSEKCEhwd524cIFrVmzRlFRUW6sDEB+yAqyv/32m1asWKGgoCB3l4QbzBijtLQ0d5eBfNatWzft2LFD27dvt79CQ0P1wgsvaNmyZe4uz+0YM3uLOX36tH7//Xf79L59+7R9+3aVKFFC5cqV0+DBg/Xaa6/pzjvv1J133qnXXntN/v7+6tKlixurxrW62vE+ceKEEhMT7c8a/eWXXyRdukqfdaUe1pHb8Q4NDdVjjz2mrVu3avHixcrIyLD/FaZEiRLy9vZ2V9m4Rrkd76CgII0dO1bt2rVTmTJldPz4cU2cOFF//vmnHn/8cTdWjWt1tZ/nV/7n1MvLSyEhIapSpcqNLvXm4+7HKSB/rVq1ykjK9urRo4cx5tLjuWJjY01ISIjx8fExDzzwgPnpp5/cWzSu2dWO9/Tp053Oj42NdWvduDa5He+sx685e61atcrdpeMa5Ha8z507Zx599FETGhpqvL29TZkyZUy7du3Mpk2b3F02rtHVfp5fiUdz/R+bMcYUbFwGAAAACgZjZgEAAGBZhFkAAABYFmEWAAAAlkWYBQAAgGURZgEAAGBZhFkAAABYFmEWAAAAlkWYBQAAgGURZgHgGjVu3FiDBw92dxkAcFsjzAIAAMCyCLMAcBPJyMhQZmamu8sAAMsgzAKwvMaNG2vQoEF68cUXVaJECYWEhGjkyJGSpP3798tms2n79u32/n///bdsNptWr14tSVq9erVsNpuWLVumevXqyc/PT02bNlVKSoq+/vprVatWTQEBAXriiSd09uxZh22np6frmWeeUbFixRQUFKSXX35Zxhj7/AsXLujFF19U2bJlVbhwYd1777327UrSjBkzVKxYMS1evFjVq1eXj4+PDhw4cNV9njZtmmrUqCEfHx+VKVNGzzzzjH1eYmKi2rdvryJFiiggIEAdO3bUkSNH7PNHjhypunXratq0aSpXrpyKFCmip59+WhkZGRo/frxCQkJUunRpjR071mGbNptN77//vlq3bi0/Pz9FRERo3rx5Dn2GDRumypUry9/fXxUqVNCIESN08eJFhz5jxoxR6dKlVbRoUfXp00fDhw9X3bp17fN79uypRx55RG+++abKlCmjoKAgDRgwwL6e0aNHq1atWtnek8jISL3yyitXfe8A3GIMAFhcdHS0CQgIMCNHjjS//vqrmTlzprHZbGb58uVm3759RpLZtm2bvf9ff/1lJJlVq1YZY4xZtWqVkWTuu+8+s27dOrN161ZTqVIlEx0dbVq0aGG2bt1q1q5da4KCgszrr7/usN0iRYqYZ5991uzZs8d89NFHxt/f30yePNnep0uXLiYqKsqsXbvW/P777+aNN94wPj4+5tdffzXGGDN9+nTj5eVloqKizPr1682ePXvM6dOnc93fiRMnGl9fXxMfH29++eUXs2nTJvOf//zHGGNMZmamqVevnrn//vvN5s2bzXfffWfuuusuEx0dbV8+NjbWFClSxDz22GNm586d5ssvvzTe3t6mZcuWZuDAgWbPnj1m2rRpRpLZuHGjfTlJJigoyPzvf/8zv/zyi3n55ZeNh4eH2bVrl73Pq6++atavX2/27dtnvvzySxMcHGzGjRtnn//RRx8ZX19fM23aNPPLL7+YUaNGmYCAAFOnTh17nx49epiAgADTr18/s3v3brNo0SKH9/XgwYOmUKFCZtOmTfZlfvzxR2Oz2czevXtzfe8A3HoIswAsLzo62tx///0ObXfffbcZNmyYS2F2xYoV9j5xcXFGkkM46tu3r2nZsqXDdqtVq2YyMzPtbcOGDTPVqlUzxhjz+++/G5vNZg4dOuRQ24MPPmhiYmKMMZfCrCSzffv2PO9vaGioeemll5zOW758ufHw8DCJiYn2tp07dxpJ9vAXGxtr/P39TWpqqr1Py5YtTfny5U1GRoa9rUqVKiYuLs4+Lcn069fPYXv33nuvefrpp3Osdfz48SYyMtKh/4ABAxz6NGzYMFuYDQ8PN+np6fa2xx9/3HTq1Mk+3bp1a4ftDh482DRu3DjHOgDcuhhmAOCWULt2bYfpMmXKKCUl5ZrXERwcbP9T+eVtV67zvvvuk81ms083aNBAv/32mzIyMrR161YZY1S5cmUVKVLE/lqzZo327t1rX8bb2ztb/TlJSUnR4cOH9eCDDzqdv3v3boWFhSksLMzeVr16dRUrVky7d++2t5UvX15FixZ12Lfq1aurUKFCDm1X7m+DBg2yTV++3s8++0z333+/QkJCVKRIEY0YMUKJiYn2+b/88ovuueceh3VcOS1JNWrUkIeHh336yuP51FNPac6cOTp//rwuXryo2bNnq1evXk7fEwC3Nk93FwAA+cHLy8th2mazKTMz0x7OzGXjWK8cw+lsHTabLcd15lVmZqY8PDy0ZcsWh2AmSUWKFLH/28/PzyEQ58bPzy/X+cYYp+u6st3Zvl3r/mat97vvvlPnzp01atQotWzZUoGBgfrkk0/01ltvOe1/eW1Xulotbdu2lY+PjxYsWCAfHx+lpaWpQ4cOV60VwK2HK7MAbmmlSpWSJCUlJdnbLr8Z7Hp999132abvvPNOeXh4qF69esrIyFBKSooqVark8AoJCbmm7RUtWlTly5fXN99843R+9erVlZiYqIMHD9rbdu3apZMnT6patWrXtM3LOdvfqlWrSpLWr1+v8PBwvfTSS6pfv77uvPPObDezValSRZs2bXJo27x5s8t1eHp6qkePHpo+fbqmT5+uzp07y9/f3+X1ALA+rswCuKX5+fnpvvvu0+uvv67y5cvr2LFjevnll/Nt/QcPHtTQoUPVt29fbd26VRMmTLBfiaxcubK6du2q7t2766233lK9evV07NgxrVy5UrVq1VKbNm2uaZsjR45Uv379VLp0abVu3VqnTp3S+vXrNXDgQDVr1ky1a9dW165dFR8fr/T0dPXv31/R0dGqX7/+de/vvHnzVL9+fd1///2aPXu2Nm3apKlTp0qSKlWqpMTERH3yySe6++679dVXX2nBggUOyw8cOFBPPfWU6tevr6ioKM2dO1c7duxwGM6RV3369LEH9PXr11/3vgGwJq7MArjlTZs2TRcvXlT9+vX17LPPasyYMfm27u7du+vcuXO65557NGDAAA0cOFD/+te/7POnT5+u7t2767nnnlOVKlXUrl07ff/99w5jWl3Vo0cPxcfHa+LEiapRo4Yefvhh/fbbb5Iu/Tl+4cKFKl68uB544AE1a9ZMFSpU0Ny5c697XyVp1KhR+uSTT1S7dm3NnDlTs2fPVvXq1SVJ7du315AhQ/TMM8+obt262rBhg0aMGOGwfNeuXRUTE6Pnn39ed911l/bt26eePXvK19fX5VruvPNORUVFqUqVKrr33nvzZf8AWI/NOBusBADAFWw2mxYsWKBHHnkkX9fbvHlzhYSE6MMPP3RpOWOMqlatqr59+2ro0KH5WhMA62CYAQDghjl79qwmTZqkli1bysPDQ3PmzNGKFSuUkJDg0npSUlL04Ycf6tChQ3ryyScLqFoAVkCYBYCbzOVPOrjS119/rUaNGt3AavKXzWbTkiVLNGbMGKWlpalKlSr6/PPP1axZM5fWExwcrJIlS2ry5MkqXrx4AVULwAoYZgAAN5nff/89x3lly5a96uO5AOB2QpgFAACAZfE0AwAAAFgWYRYAAACWRZgFAACAZRFmAQAAYFmEWQAAAFgWYRYAAACWRZgFAACAZf0/+B7g2S7P1+wAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Repartition du nombre de canaux de vente selon les entreprise\n",
"plt.figure(figsize=(8, 6))\n",
"sns.barplot(x='number_compagny', y='nb_suppliers', data=products_purchased_reduced_spectacle, ci=None) # ci=None pour ne pas afficher les intervalles de confiance\n",
"plt.title('Nombre moyen de canaux de vente par entreprise')\n",
"plt.xlabel('number_compagny')\n",
"plt.ylabel('Nombre moyen de caneaux ')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "b9e84af4-a02b-4f83-81ae-b7a73475d060",
"metadata": {},
"source": [
"### 4. target_information"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "2867eceb-1f72-406c-adc2-adfedcaf60e6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Nombre de lignes de la table : 6240166\n"
]
},
{
"data": {
"text/plain": [
"id 0\n",
"customer_id 0\n",
"target_name 0\n",
"target_type_is_import 0\n",
"target_type_name 0\n",
"number_compagny 0\n",
"dtype: int64"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# nombre de nan\n",
"print(\"Nombre de lignes de la table : \",target_information_spectacle.shape[0])\n",
"target_information_spectacle.isna().sum()"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "561f361d-7d39-430a-9e27-a32f6c2f7b50",
"metadata": {},
"outputs": [],
"source": [
"# pas exploitable"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "904cbf32-77b6-49dd-a96c-9e7e5a0175c3",
"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",
"version": "3.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}