4271 lines
400 KiB
Plaintext
4271 lines
400 KiB
Plaintext
{
|
||
"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": 2,
|
||
"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"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"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": 4,
|
||
"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": 4,
|
||
"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": 5,
|
||
"id": "a35dc2f6-2017-4b21-abd2-2c4c112c96b2",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"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": 6,
|
||
"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": 10,
|
||
"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": 10,
|
||
"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": 7,
|
||
"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": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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"
|
||
]
|
||
},
|
||
{
|
||
"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": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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"
|
||
]
|
||
},
|
||
{
|
||
"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_430/3170175140.py:10: 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"
|
||
]
|
||
},
|
||
{
|
||
"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": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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",
|
||
"<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": [
|
||
"File path : projet-bdc2324-team1/0_Input/Company_11/customerplus_cleaned.csv\n",
|
||
"File path : projet-bdc2324-team1/0_Input/Company_11/campaigns_information.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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",
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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"
|
||
]
|
||
},
|
||
{
|
||
"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": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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"
|
||
]
|
||
},
|
||
{
|
||
"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": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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",
|
||
"<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": [
|
||
"File path : projet-bdc2324-team1/0_Input/Company_12/customerplus_cleaned.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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"
|
||
]
|
||
},
|
||
{
|
||
"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": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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"
|
||
]
|
||
},
|
||
{
|
||
"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": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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",
|
||
"/tmp/ipykernel_430/3170175140.py:10: DtypeWarning: Columns (4,8,10) have mixed types. Specify dtype option on import or set low_memory=False.\n",
|
||
" df = pd.read_csv(file_in, sep=\",\", parse_dates = datetime_col, date_parser=custom_date_parser)\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": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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",
|
||
"<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": [
|
||
"File path : projet-bdc2324-team1/0_Input/Company_13/customerplus_cleaned.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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"
|
||
]
|
||
},
|
||
{
|
||
"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": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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"
|
||
]
|
||
},
|
||
{
|
||
"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": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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"
|
||
]
|
||
},
|
||
{
|
||
"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": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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",
|
||
"<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": [
|
||
"File path : projet-bdc2324-team1/0_Input/Company_14/customerplus_cleaned.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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"
|
||
]
|
||
},
|
||
{
|
||
"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": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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"
|
||
]
|
||
},
|
||
{
|
||
"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": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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",
|
||
"/tmp/ipykernel_430/3170175140.py:10: DtypeWarning: Columns (8,9) have mixed types. Specify dtype option on import or set low_memory=False.\n",
|
||
" df = pd.read_csv(file_in, sep=\",\", parse_dates = datetime_col, date_parser=custom_date_parser)\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": [
|
||
"/tmp/ipykernel_430/3170175140.py:10: 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",
|
||
"<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"
|
||
]
|
||
}
|
||
],
|
||
"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"
|
||
]
|
||
},
|
||
{
|
||
"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": "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_detection(directory_path=\"10\")"
|
||
]
|
||
},
|
||
{
|
||
"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+/e73J2zQ0RERKRPDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRoDDtERESkaAw7REREpGgMO0RERKRo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vh2HDx+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": 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": 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": 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": "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+URERESkFZNGIiIiItKKSSMRERERacWkkYiIiIi0YtJIRERERFoxaSQiIiIirZg0EhEREZFWTBqJiIiISCsmjURERESkFZNGIiIiItKKSSMRERERacWkkYiIiIi0YtJIRERERFoxaSQiIiIirSpM0rh06VK4ubnBxMQEjRs3xuHDhzXOn52djalTp8LFxQXGxsZ46623sHr16lKKloiIiKh8MZA6gJIQGxuLMWPGYOnSpWjZsiVWrFiBgIAAnD9/HjVq1FC7TK9evXDnzh2sWrUKtWrVQnp6Ol68eFHKkavnOukXqUMoV27MC5Q6BCIiogpPJoQQUgfxqpo1a4ZGjRph2bJlijJPT0907doVUVFRKvP/9ttv6NOnD65duwYbG5titZmVlQVra2s8fPgQVlZWxY5dHSaNRcOkkYiIdPU6f78runJ/ejonJwenT59Gp06dlMo7deqEI0eOqF1m586daNKkCRYsWIBq1arB3d0dEyZMwLNnzwptJzs7G1lZWUovIiIiojdFuT89fe/ePcjlctjb2yuV29vbIy0tTe0y165dw59//gkTExNs374d9+7dw/Dhw5GZmVnodY1RUVGIiIgo8fiJiIiIyoNy39OYTyaTKb0XQqiU5cvLy4NMJsOGDRvw9ttvo3Pnzli0aBFiYmIK7W2cPHkyHj58qHilpKSU+DoQERERlVXlvqexSpUq0NfXV+lVTE9PV+l9zOfo6Ihq1arB2tpaUebp6QkhBG7evInatWurLGNsbAxjY+OSDZ6IiIionCj3PY1GRkZo3Lgx4uLilMrj4uLQokULtcu0bNkSt2/fxuPHjxVlly5dgp6eHqpXr/5a4yUiIiIqj8p90ggA48aNw3fffYfVq1fjwoULGDt2LJKTkxEeHg7g5anl0NBQxfwhISGwtbVFWFgYzp8/j0OHDuGTTz7BoEGDYGpqKtVqEBEREZVZ5f70NAD07t0bGRkZiIyMRGpqKry8vLB79264uLgAAFJTU5GcnKyY38LCAnFxcRg5ciSaNGkCW1tb9OrVC3PmzJFqFYiIiIjKtApxn0Yp8D6NZQfv00hERLrifRqLr0KcniYiIiKi14tJIxERERFpxaSRiIiIiLRi0khEREREWjFpJCIiIiKtmDQSERERkVZMGomIiIhIKyaNRERERKQVk0YiIiIi0opJIxERERFpxaSRiIiIiLRi0khEREREWjFpJCIiIiKtmDQSERERkVZMGomIiIhIK4PSamjnzp06zxsUFPQaIyEiIiKioiq1pLFr1646zSeTySCXy19vMERERERUJKWWNObl5ZVWU0RERERUwnhNIxERERFpVWo9jUuWLMFHH30EExMTLFmyROO8o0aNKqWoiIiIiEgXpZY0Ll68GH379oWJiQkWL15c6HwymYxJIxEREVEZU2pJ4/Xr19X+TURERERlH69pJCIiIiKtSq2nsaCbN29i586dSE5ORk5OjtK0RYsWSRQVEREREakjSdK4d+9eBAUFwc3NDRcvXoSXlxdu3LgBIQQaNWokRUhEREREpIEkp6cnT56M8ePH4++//4aJiQm2bt2KlJQU+Pn54f3335ciJCIiIiLSQJKk8cKFCxgwYAAAwMDAAM+ePYOFhQUiIyMxf/58KUIiIiIiIg0kSRrNzc2RnZ0NAHBycsLVq1cV0+7duydFSERERESkgSTXNDZv3hx//fUX6tati8DAQIwfPx7nzp3Dtm3b0Lx5cylCIiIiIiINJEkaFy1ahMePHwMAZs2ahcePHyM2Nha1atXSeONvIiIiIpKGJEljzZo1FX+bmZlh6dKlUoRBRERERDqS7D6N+R4/foy8vDylMisrK4miISIiIiJ1JBkIc/36dQQGBsLc3BzW1taoXLkyKleujEqVKqFy5cpShEREREREGkjS09i3b18AwOrVq2Fvbw+ZTCZFGERERESkI0mSxrNnz+L06dPw8PCQonkiIiIiKiJJTk83bdoUKSkpUjRNRERERMUgSU/jd999h/DwcNy6dQteXl4wNDRUmu7j4yNFWERERERUCEmSxrt37+Lq1asICwtTlMlkMgghIJPJIJfLpQiLiIiIiAohSdI4aNAgNGzYEJs2beJAGCIiIqJyQJKkMSkpCTt37kStWrWkaJ6IiIiIikiSgTDt2rXDmTNnpGiaiIiIiIpBkp7GLl26YOzYsTh37hy8vb1VBsIEBQVJERYRERERFUKSpDE8PBwAEBkZqTKNA2GIiIiIyh5JksaCz5omIiIiorJNkmsaiYiIiKh8YdJIRERERFoxaSQiIiIirSpM0rh06VK4ubnBxMQEjRs3xuHDhwud98CBA5DJZCqvf//9txQjJiIiIio/KkTSGBsbizFjxmDq1KlISEhAq1atEBAQgOTkZI3LXbx4EampqYpX7dq1SyliIiIiovJFktHTwMsR1FeuXEF6errKaOrWrVsXqa5FixZh8ODBGDJkCAAgOjoav//+O5YtW4aoqKhCl7Ozs0OlSpWKHDsRERHRm0aSpPHYsWMICQlBUlIShBBK04p6n8acnBycPn0akyZNUirv1KkTjhw5onHZhg0b4vnz56hbty6mTZuGtm3bFjpvdnY2srOzFe+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": 213,
|
||
"id": "d06ab865-4832-4fe9-918b-e5ff72bebee4",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAApYAAAHFCAYAAABIALnOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABO10lEQVR4nO3dd3gU5f7+8XuBZBMgCSSQhpCAAkoJiCACSgClSS+CoFL1SLHQDs2DBKT7FYEDgkq34UEBPSC9KdKCVAUVkBJKQFpCDZA8vz882V82jYADuyHv13XtdTHPzM585tmZ2TtTFpsxxggAAAD4m3K5ugAAAADcHwiWAAAAsATBEgAAAJYgWAIAAMASBEsAAABYgmAJAAAASxAsAQAAYAmCJQAAACxBsAQAAIAlshwsbTZbll7r1q27i+X+fYcPH5bNZtPs2bMdbVFRUQoPD3dZTVbbu3evoqKidPjwYVeXkmXr1q3LFtsPXKdWrVqqVauWq8u4bekdc2bPni2bzZat9lErsJ9nH+Hh4erUqZOry5D0V/6IiopydRl33YkTJxQVFaWdO3fe1eWkd0yyUp6sTrhp0yan4XfeeUdr167VmjVrnNrLlCljTWW4Y3v37tWwYcNUq1at+yowA9lRSEiINm3apAcffNDVpQBZtnDhQvn6+rq6jBzlxIkTGjZsmMLDw1WxYkVXl3PHshwsn3jiCafhwoULK1euXGna4To3btyQzWa76/PPkyfLmw2Q49nt9hx1nLxy5Yry5s3r6jLwNz366KOuLgHZlKX3WE6ZMkU1a9ZUYGCg8uXLp/Lly2vcuHG6ceOG03QZnWJPfamrW7du8vLy0k8//eRoS0pK0tNPP62goCCdPHky03pOnDihNm3ayMfHR35+fmrbtq1iY2OztC7Xrl3ToEGDVLx4cXl6eqpIkSLq2bOnLly44DRdRqfoU67jrl27ZLPZNGPGjDTTLV26VDabTd9++62jbf/+/Wrfvr0CAwNlt9v1yCOPaMqUKU7vS76k9Mknn6hv374qUqSI7Ha7pk+frueee06SVLt2bcctCsmnvLPa9xnN/8CBA5KkVatW6emnn5avr6/y5s2rGjVqaPXq1bfo1b/8+uuvatCggfLmzatChQqpW7duunjxYrrTZmU5f/75p/7xj3+oaNGistvtKly4sGrUqKFVq1ZlqZZ27dopKChIdrtdxYoVU4cOHZSQkOCYd48ePVSmTBnlz59fgYGBqlOnjn744Qen+SRfWnj33Xc1duxYhYeHy9vbW7Vq1dLvv/+uGzduaODAgQoNDZWfn59atGih06dPO80jPDxcjRs31sKFCxURESEvLy+VKFFCkyZNcpru2rVr6tu3rypWrCg/Pz/5+/urWrVq+uabb9Ks34ULF9S1a1f5+/srf/78atSokf744480221UVJRsNpt++eUXtWvXTn5+fgoKClKXLl0UFxfnNE9jjD744ANVrFhR3t7eKliwoFq3bq0//vjDabodO3aocePGju04NDRUjRo10rFjxzL9TIwxGjdunMLCwuTl5aVKlSpp6dKl6U4bHx+vfv36Oe2nvXr10uXLlzNdhvTXNl+uXDlt2rRJ1atXl7e3t8LDwzVr1ixJ0pIlS1SpUiXlzZtX5cuX17Jly5zef+DAAXXu3FklS5ZU3rx5VaRIETVp0kR79uxxmi6rl53utL+S1+OHH37QE088IW9vbxUpUkRDhgxRYmKi07Tnzp1Tjx49VKRIEXl6eqpEiRJ66623HNv7rerNaLvZvn27WrdurYIFC97Rmdlt27apadOm8vf3l5eXlx599FH95z//cZrmypUrjs/ay8tL/v7+qly5sr744otbzv/48eOOY4Snp6dCQ0PVunVrnTp1yjHN0aNH9eKLLzodd9977z0lJSWl6ZucsJ+n912R1f1t/vz5qlq1qvz8/JQ3b16VKFFCXbp0ueXnFB8fr1deeUUBAQHKnz+/GjRooN9//z3dabPyPZmRW9WX/P336aefqk+fPgoODpa3t7ciIyO1Y8eONPPLyvYrZb4drlu3TlWqVJEkde7c2fHdnfz5bdu2Tc8//7xjmwsPD1e7du105MiR21pOZv5On6Zk6amngwcPqn379o6NbteuXRo5cqR+/fVXzZw587bnN2HCBG3ZskVt2rTRTz/9pAIFCmjYsGFat26dli1bppCQkAzfe/XqVT3zzDM6ceKERo8erVKlSmnJkiVq27ZtmmmjoqKcdj5jjJo3b67Vq1dr0KBBeuqpp7R7924NHTpUmzZt0qZNm2S327O8HhUqVNCjjz6qWbNmqWvXrk7jZs+ercDAQD377LOS/rqMXb16dRUrVkzvvfeegoODtXz5cr3xxhs6c+aMhg4d6vT+QYMGqVq1apo2bZpy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mVpW68voc0qu73a236xshxmJi4vT4sWLNXToUKdjQfJ9uCndyXKs6NOULDtjmbzhp/xiMcbo448/TjNteHi4du/e7dT2+++/O04ZpzR9+nR9+umnmjx5sr799ltduHDBcek4M7Vr19bFixfT3DT9+eef3/K9yQ+FfPrpp07tX3/9tS5fvuz0cEp667JmzRpdunQpzXzr1aunIkWKaNasWZo1a5a8vLycLlfkzZtXtWvX1o4dOxQREaHKlSuneaX+ay49mf31eTt9n54aNWqoQIEC2rt3b7r1Va5c2fFXenpq166tX375Rbt27XJqT/253OlyihUrptdee01169Z1uqSUWvITfvPnz8/0LzGbzZYmQO3evTvN77paJaO+8fHxcTyIZbPZ5Onp6fRlExsbm+Zp0cjISEl/ndFNad68eXdcX+PGjWWM0fHjx9P9TMqXL5/mPTabTRUqVND777+vAgUKZPq5PPHEE/Ly8tJnn33m1L5x48Y0Tz82btxYBw8eVEBAQLq13O3fcE1v21iyZEmWL/1lNt+s9leyjI51uXLlUs2aNSX9dVy7dOmSFi1a5DTd3LlzHeOlv/5g8/LySnOcSO9p5L+rdOnSKlmypHbt2pXhfu7j45PmfUFBQerUqZPatWun3377TVeuXMlwGQ0bNtTatWszPcY9/fTT2rt3b5q+njt3rmw2m2rXrn3nK5kOd9/P03Mn+5vdbldkZKTGjh0rSek+UZ0suY9T7/upvxus+p7MSn1ffPGFjDGO4SNHjmjjxo2OhzZvZ/vNynaY0Xe3zWaTMSbN8Wb69OlpfvkhK8tJzco+lSw8Y1m3bl15enqqXbt26t+/v65du6apU6fq/PnzaaZ96aWX9OKLL6pHjx5q1aqVjhw5onHjxqW59Lxnzx698cYb6tixoyNMzpgxQ61bt9aECRPUq1evDOvp0KGD3n//fXXo0EEjR45UyZIl9d1332n58uVZWpf69etrwIABio+PV40aNRxPhT/66KN66aWXnNZlyJAhevvttxUZGam9e/dq8uTJ8vPzSzPf3Llzq0OHDho/frx8fX3VsmXLNNNNnDhRTz75pJ566il1795d4eHhunjxog4cOKD//ve/t3yyTpLKlSsnSfroo4/k4+MjLy8vFS9eXAEBAVnu+4zkz59f//73v9WxY0edO3dOrVu3VmBgoP7880/t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9OhRxcTEONr37t2ruLg4PfLII3+7htT3XG7evFkPP/ywJOnHH39UWFiY3nrrLVWuXFklS5bUkSNH7mg5L7/8smbNmqWZM2fqmWeecToDCwDujGAJINv44IMPlJiYqMcff1xff/219u/fr3379mnSpEmqVq2annnmGUVEROiFF17Q9u3btXXrVnXo0EGRkZGqXLny317+/PnzNXPmTP3+++8aOnSotm7dqtdee02S9NBDD+no0aOaN2+eDh48qEmTJmnhwoV3tJwXXnhBx48f18cff6wuXbr87boB4F4hWALINooXL67t27erdu3a6tu3r8qVK6e6detq9erVmjp1qmw2mxYtWqSCBQuqZs2aeuaZZ1SiRAl9+eWXlix/2LBhmjdvniIiIjRnzhx99tlnKlOmjCSpWbNm6t27t1577TVVrFhRGzdu1JAhQ+5oOb6+vmrVqpXy58+v5s2bW1I7ANwLNpN8RzwAIEM2m00LFy68Z0Gvbt26euSRRzRp0qR7sjwAsAJPhQOAGzl37pxWrFihNWvWaPLkya4uBwBuC8ESANxIpUqVdP78eY0dO1alS5d2dTkAcFu4FA4AAABL8PAOAAAALEGwBAAAgCUIlgAAALAEwRIAAACWIFgCAADAEgRLAAAAWIJgCQAAAEsQLAEAAGAJgiUAAAAs8f8AB+iZCxGA9GcAAAAASUVORK5CYII=",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"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": "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rqhRo0aRN/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/DDz8UqRgiIiKisqRIQWn79u0a02lpaYiOjoauri6qVq3KoERERETvhSIFpXPnzuVoS0hIgLe3N7p27frWRRERERGVBcX2o7hmZmaYMWMGr1EiIiKi90axBSUAeP78OeLj44tzlURERERaU6RTb4sXL9aYFkLg0aNHWLduHdq0aVMshRERERFpW5GC0sKFCzWmy5UrB2trawwcOBCTJ08ulsKIiIiItK1IQSk6Orq46yAiIiIqc4r1GiUiIiKi90mRRpQAICoqClu2bEFMTAxSU1M15m3btu2tCyMiIiLStiKNKG3atAnNmjXD1atXsX37dqSlpeHq1as4fPgwzM3Ni7tGIiIiIq0oUlDy9/fHwoULsXv3bujr62PRokW4du0aevbsicqVKxd3jURERERaUaSgdOfOHbRv3x4AoFQqkZiYCIVCgTFjxuCnn34q1gKJiIiItKVIQcnS0hIvXrwAAFSsWBGXL18G8PoLJ5OSkoqvOiIiIiItKlRQGjx4MF68eIFPP/0U4eHhAICePXviu+++w9ChQ9GnTx98/vnnJVIoERERUWkr1F1voaGhmDNnDpYuXYrk5GQAwOTJk6Gnp4c///wT3bp142+9ERER0XujUEFJCAHg9am3LOXKlcOECRMwYcKE4q2MiIiISMsKfY2SQqEoiTqIiIiIypxCf+Fk9erV8w1LT58+LXJBRERERGVFoYOSn58fv1SSiIiIPgiFDkq9e/eGjY1NSdRCREREVKYU6holXp9EREREH5JCBaWsu96IiIiIPgSFCkqZmZnFetotODgYdevWhZmZGczMzNCkSRP8/vvv0nwhBHx9fWFvbw9DQ0N4enriypUrxbZ9IiIiorwU6SdMikulSpUwZ84cnD59GqdPn0aLFi3QuXNnKQzNmzcPgYGBWLp0KaKioqBSqdCqVSvp51OIiIiISpJWg1LHjh3Rrl07VK9eHdWrV8fs2bNhYmKCEydOQAiBoKAgTJkyBd26dUOdOnUQGhqKpKQkhIWFabNsIiIi+kBoNSi9KSMjA5s2bUJiYiKaNGmC6OhoxMbGwsvLS+qjVCrh4eGByMhI2fWkpKQgISFB40FERERUFFoPSpcuXYKJiQmUSiWGDx+O7du3o1atWoiNjQUA2NraavS3tbWV5uUmICAA5ubm0kOtVpdo/URERPT+KvT3KBU3FxcXnD9/Hs+fP8fWrVsxcOBARERESPOzfyWBECLPrymYPHkyxo4dK00nJCQwLBERfYC+ConSdgklYtTj58Wynvpqi2JZz/tO60FJX18f1apVAwC4ubkhKioKixYtwsSJEwEAsbGxsLOzk/rHxcXlGGV6k1KphFKpLNmiiYiI6IOg9VNv2QkhkJKSAicnJ6hUKoSHh0vzUlNTERERgaZNm2qxQiIiIvpQaHVE6fvvv0fbtm2hVqvx4sULbNq0CUePHsW+ffugUCgwevRo+Pv7w9nZGc7OzvD394eRkRH69u2rzbKJiIjoA6HVoPT48WP0798fjx49grm5OerWrYt9+/ahVatWAIAJEybg1atX8PHxwbNnz+Du7o4DBw7A1NRUm2UTERHRB0KrQWnVqlV5zlcoFPD19YWvr2/pFERERET0hjJ3jRIRERFRWcGgRERERCSDQYmIiIhIBoMSERERkQwGJSIiIiIZDEpEREREMhiUiIiIiGQwKBERERHJYFAiIiIiksGgRERERCSDQYmIiIhIBoMSERERkQwGJSIiIiIZDEpEREREMhiUiIiIiGToarsAIio7vgqJ0nYJJWLU4+fFsp76aotiWQ8RvTs4okREREQkg0GJiIiISAaDEhEREZEMBiUiIiIiGbyYm4iolPGi+bzxonkqSziiRERERCSDQYmIiIhIBoMSERERkQwGJSIiIiIZDEpEREREMhiUiIiIiGQwKBERERHJYFAiIiIiksGgRERERCSDQYmIiIhIBoMSERERkQwGJSIiIiIZDEpEREREMhiUiIiIiGQwKBERERHJYFAiIiIiksGgRERERCSDQYmIiIhIhlaDUkBAAD766COYmprCxsYGXbp0wY0bNzT6CCHg6+sLe3t7GBoawtPTE1euXNFSxURERPQh0WpQioiIwIgRI3DixAmEh4cjPT0dXl5eSExMlPrMmzcPgYGBWLp0KaKioqBSqdCqVSu8ePFCi5UTERHRh0BXmxvft2+fxvSaNWtgY2ODM2fO4LPPPoMQAkFBQZgyZQq6desGAAgNDYWtrS3CwsIwbNgwbZRNREREH4gydY1SfHw8AMDS0hIAEB0djdjYWHh5eUl9lEolPDw8EBkZmes6UlJSkJCQoPEgIiIiKooyE5SEEBg7diw++eQT1KlTBwAQGxsLALC1tdXoa2trK83LLiAgAObm5tJDrVaXbOFERET03iozQWnkyJG4ePEiNm7cmGOeQqHQmBZC5GjLMnnyZMTHx0uP+/fvl0i9RERE9P7T6jVKWUaNGoWdO3fi2LFjqFSpktSuUqkAvB5ZsrOzk9rj4uJyjDJlUSqVUCqVJVswERERfRC0OqIkhMDIkSOxbds2HD58GE5OThrznZycoFKpEB4eLrWlpqYiIiICTZs2Le1yiYiI6AOj1RGlESNGICwsDL/99htMTU2l647Mzc1haGgIhUKB0aNHw9/fH87OznB2doa/vz+MjIzQt29fbZZOREREHwCtBqXg4GAAgKenp0b7mjVr4O3tDQCYMGECXr16BR8fHzx79gzu7u44cOAATE1NS7laIiIi+tBoNSgJIfLto1Ao4OvrC19f35IviIiIiOgNZeauNyIiIqKyhkGJiIiISAaDEhEREZEMBiUiIiIiGQxKRERERDIYlIiIiIhkMCgRERERySgTv/X2LvsqJErbJZSIUY+fF8t66qstimU9RERE2sARJSIiIiIZDEpEREREMhiUiIiIiGQwKBERERHJYFAiIiIiksGgRERERCSDQYmIiIhIBoMSERERkQwGJSIiIiIZDEpEREREMhiUiIiIiGQwKBERERHJYFAiIiIiksGgRERERCSDQYmIiIhIBoMSERERkQwGJSIiIiIZDEpEREREMhiUiIiIiGQwKBERERHJYFAiIiIiksGgRERERCSDQYmIiIhIBoMSERERkQwGJSIiIiIZDEpEREREMhiUiIiIiGQwKBERERHJYFAiIiIiksGgRERERCSDQYmIiIhIhlaD0rFjx9CxY0fY29tDoVBgx44dGvOFEPD19YW9vT0MDQ3h6emJK1euaKdYIiIi+uBoNSglJiaiXr16WLp0aa7z582bh8DAQCxduhRRUVFQqVRo1aoVXrx4UcqVEhER0YdIV5sbb9u2Ldq2bZvrPCEEgoKCMGXKFHTr1g0AEBoaCltbW4SFhWHYsGGlWSoRERF9gMrsNUrR0dGIjY2Fl5eX1KZUKuHh4YHIyEjZ5VJSUpCQkKDxICIiIiqKMhuUYmNjAQC2trYa7ba2ttK83AQEBMDc3Fx6qNXqEq2TiIiI3l9lNihlUSgUGtNCiBxtb5o8eTLi4+Olx/3790u6RCIiInpPafUapbyoVCoAr0eW7OzspPa4uLgco0xvUiqVUCqVJV4fERERvf/K7IiSk5MTVCoVwsPDpbbU1FRERESgadOmWqyMiIiIPhRaHVF6+fIlbt++LU1HR0fj/PnzsLS0ROXKlTF69Gj4+/vD2dkZzs7O8Pf3h5GREfr27avFqomIiOhDodWgdPr0aTRv3lyaHjt2LABg4MCBCAkJwYQJE/Dq1Sv4+Pjg2bNncHd3x4EDB2BqaqqtkomIiOgDotWg5OnpCSGE7HyFQgFfX1/4+vqWXlFERERE/1+ZvUaJiIiISNsYlIiIiIhkMCgRERERyWBQIiIiIpLBoEREREQkg0GJiIiISAaDEhEREZEMBiUiIiIiGQxKRERERDIYlIiIiIhkMCgRERERyWBQIiIiIpLBoEREREQkg0GJiIiISAaDEhEREZEMBiUiIiIiGQxKRERERDIYlIiIiIhkMCgRERERyWBQIiIiIpLBoEREREQkg0GJiIiISAaDEhEREZEMBiUiIiIiGQxKRERERDIYlIiIiIhkMCgRERERyWBQIiIiIpLBoEREREQkg0GJiIiISAaDEhEREZEMBiUiIiIiGQxKRERERDIYlIiIiIhkMCgRERERyWBQIiIiIpLBoEREREQkg0GJiIiISMY7EZSWLVsGJycnGBgYoFGjRvjjjz+0XRIRERF9AMp8UPrll18wevRoTJkyBefOncOnn36Ktm3bIiYmRtulERER0XuuzAelwMBAfPXVVxgyZAhq1qyJoKAgqNVqBAcHa7s0IiIies+V6aCUmpqKM2fOwMvLS6Pdy8sLkZGRWqqKiIiIPhS62i4gL//++y8yMjJga2ur0W5ra4vY2Nhcl0lJSUFKSoo0HR8fDwBISEgokRpTX70skfVq28vk9GJZT0JSWrGsJzWN+zkv3M95434uHdzPpaOs7WeU0Odr1ue2EKJE1l9QZTooZVEoFBrTQogcbVkCAgLg5+eXo12tVpdIbe+r9douIIft2i6gRHA/lw7u59LB/Vw6ytx+Hlqy+/nFixcwNzcv0W3kpUwHpQoVKkBHRyfH6FFcXFyOUaYskydPxtixY6XpzMxMPH36FFZWVrLh6n2RkJAAtVqN+/fvw8zMTNvlvLe4n0sH93Pp4H4uHdzPhSeEwIsXL2Bvb6/VOsp0UNLX10ejRo0QHh6Orl27Su3h4eHo3LlzrssolUoolUqNNgsLi5Iss8wxMzPjH2Ip4H4uHdzPpYP7uXRwPxeONkeSspTpoAQAY8eORf/+/eHm5oYmTZrgp59+QkxMDIYPH67t0oiIiOg9V+aDUq9evfDkyRPMmDEDjx49Qp06dbB37144ODhouzQiIiJ6z5X5oAQAPj4+8PHx0XYZZZ5SqcT06dNznHqk4sX9XDq4n0sH93Pp4H5+dymEtu+7IyIiIiqjyvQXThIRERFpE4MSERERkQwGJSIiIiIZDEpEREREMhiU3jHHjh1Dx44dYW9vD4VCgR07dmjMF0LA19cX9vb2MDQ0hKenJ65cuaKdYt9x+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": 8,
|
||
"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": 8,
|
||
"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": 229,
|
||
"id": "4c02ae98-9184-41d9-a9ea-ed9eaf719bd3",
|
||
"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>number_compagny</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>19482</td>\n",
|
||
" <td>88</td>\n",
|
||
" <td>29</td>\n",
|
||
" <td>872.0</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>2643.092500</td>\n",
|
||
" <td>718.149398</td>\n",
|
||
" <td>1924.943102</td>\n",
|
||
" <td>8.0</td>\n",
|
||
" <td>10</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>19484</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>62.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1745.021736</td>\n",
|
||
" <td>1743.045035</td>\n",
|
||
" <td>1.976701</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>10</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>19485</td>\n",
|
||
" <td>131</td>\n",
|
||
" <td>21</td>\n",
|
||
" <td>1878.0</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>2649.044745</td>\n",
|
||
" <td>85.240845</td>\n",
|
||
" <td>2563.803900</td>\n",
|
||
" <td>84.0</td>\n",
|
||
" <td>10</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>19486</td>\n",
|
||
" <td>10</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>96.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1944.077604</td>\n",
|
||
" <td>1742.794225</td>\n",
|
||
" <td>201.283380</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>10</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>19487</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>33.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1742.877766</td>\n",
|
||
" <td>1742.877766</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>10</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" customer_id nb_tickets nb_purchases total_amount nb_suppliers \\\n",
|
||
"0 19482 88 29 872.0 2 \n",
|
||
"1 19484 3 2 62.0 1 \n",
|
||
"2 19485 131 21 1878.0 2 \n",
|
||
"3 19486 10 4 96.0 1 \n",
|
||
"4 19487 2 1 33.0 1 \n",
|
||
"\n",
|
||
" vente_internet_max purchase_date_min purchase_date_max \\\n",
|
||
"0 1 2643.092500 718.149398 \n",
|
||
"1 0 1745.021736 1743.045035 \n",
|
||
"2 1 2649.044745 85.240845 \n",
|
||
"3 0 1944.077604 1742.794225 \n",
|
||
"4 0 1742.877766 1742.877766 \n",
|
||
"\n",
|
||
" time_between_purchase nb_tickets_internet number_compagny \n",
|
||
"0 1924.943102 8.0 10 \n",
|
||
"1 1.976701 0.0 10 \n",
|
||
"2 2563.803900 84.0 10 \n",
|
||
"3 201.283380 0.0 10 \n",
|
||
"4 0.000000 0.0 10 "
|
||
]
|
||
},
|
||
"execution_count": 229,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"products_purchased_reduced_spectacle.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "e1a95b8f-6539-48bd-b09d-6f8f63d25fb2",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#nombre de ticket par compagnie\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": "markdown",
|
||
"id": "b9e84af4-a02b-4f83-81ae-b7a73475d060",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 4. target_information"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 222,
|
||
"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": 222,
|
||
"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": 11,
|
||
"id": "985b6403-3c75-420e-a4a4-d3045213e9ef",
|
||
"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",
|
||
" <th>number_compagny</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",
|
||
" <td>10</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",
|
||
" <td>10</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",
|
||
" <td>10</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",
|
||
" <td>10</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",
|
||
" <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",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>779653</th>\n",
|
||
" <td>4207082</td>\n",
|
||
" <td>6764876</td>\n",
|
||
" <td>INSCRIPTION NL VOYAGES HUMA</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>manual_static_filter</td>\n",
|
||
" <td>14</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>779654</th>\n",
|
||
" <td>4207083</td>\n",
|
||
" <td>6764877</td>\n",
|
||
" <td>Inscriptions newsletters (depuis 2019)</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>manual_static_filter</td>\n",
|
||
" <td>14</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>779655</th>\n",
|
||
" <td>4207084</td>\n",
|
||
" <td>6801322</td>\n",
|
||
" <td>Inscriptions newsletters (depuis 2019)</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>manual_static_filter</td>\n",
|
||
" <td>14</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>779656</th>\n",
|
||
" <td>4207085</td>\n",
|
||
" <td>6837768</td>\n",
|
||
" <td>Inscriptions newsletters (depuis 2019)</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>manual_static_filter</td>\n",
|
||
" <td>14</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>779657</th>\n",
|
||
" <td>4207086</td>\n",
|
||
" <td>6837769</td>\n",
|
||
" <td>Inscriptions newsletters (depuis 2019)</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>manual_static_filter</td>\n",
|
||
" <td>14</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>6240166 rows × 6 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" id customer_id target_name \\\n",
|
||
"0 1165098 618562 Newsletter mensuelle \n",
|
||
"1 1165100 618559 Newsletter mensuelle \n",
|
||
"2 1165101 618561 Newsletter mensuelle \n",
|
||
"3 1165102 618560 Newsletter mensuelle \n",
|
||
"4 1165103 618558 Newsletter mensuelle \n",
|
||
"... ... ... ... \n",
|
||
"779653 4207082 6764876 INSCRIPTION NL VOYAGES HUMA \n",
|
||
"779654 4207083 6764877 Inscriptions newsletters (depuis 2019) \n",
|
||
"779655 4207084 6801322 Inscriptions newsletters (depuis 2019) \n",
|
||
"779656 4207085 6837768 Inscriptions newsletters (depuis 2019) \n",
|
||
"779657 4207086 6837769 Inscriptions newsletters (depuis 2019) \n",
|
||
"\n",
|
||
" target_type_is_import target_type_name number_compagny \n",
|
||
"0 False manual_static_filter 10 \n",
|
||
"1 False manual_static_filter 10 \n",
|
||
"2 False manual_static_filter 10 \n",
|
||
"3 False manual_static_filter 10 \n",
|
||
"4 False manual_static_filter 10 \n",
|
||
"... ... ... ... \n",
|
||
"779653 False manual_static_filter 14 \n",
|
||
"779654 False manual_static_filter 14 \n",
|
||
"779655 False manual_static_filter 14 \n",
|
||
"779656 False manual_static_filter 14 \n",
|
||
"779657 False manual_static_filter 14 \n",
|
||
"\n",
|
||
"[6240166 rows x 6 columns]"
|
||
]
|
||
},
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"target_information_spectacle"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "0a180f0a-c6de-4e66-9ae8-fdbfdf8837c9",
|
||
"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
|
||
}
|