"
],
"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",
":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",
":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",
":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",
":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",
":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": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
customer_id
\n",
"
street_id
\n",
"
structure_id
\n",
"
mcp_contact_id
\n",
"
fidelity
\n",
"
tenant_id
\n",
"
is_partner
\n",
"
deleted_at
\n",
"
gender
\n",
"
is_email_true
\n",
"
...
\n",
"
purchase_count
\n",
"
first_buying_date
\n",
"
country
\n",
"
gender_label
\n",
"
gender_female
\n",
"
gender_male
\n",
"
gender_other
\n",
"
country_fr
\n",
"
has_tags
\n",
"
number_compagny
\n",
"
\n",
" \n",
" \n",
"
\n",
"
17
\n",
"
2
\n",
"
139
\n",
"
NaN
\n",
"
NaN
\n",
"
0
\n",
"
875
\n",
"
False
\n",
"
NaN
\n",
"
2
\n",
"
False
\n",
"
...
\n",
"
3
\n",
"
NaN
\n",
"
NaN
\n",
"
other
\n",
"
0
\n",
"
0
\n",
"
1
\n",
"
NaN
\n",
"
0
\n",
"
10
\n",
"
\n",
"
\n",
"
18031
\n",
"
2
\n",
"
319517
\n",
"
NaN
\n",
"
NaN
\n",
"
0
\n",
"
1556
\n",
"
False
\n",
"
NaN
\n",
"
0
\n",
"
True
\n",
"
...
\n",
"
2
\n",
"
2020-01-01 14:06:52+00:00
\n",
"
fr
\n",
"
female
\n",
"
1
\n",
"
0
\n",
"
0
\n",
"
1.0
\n",
"
0
\n",
"
11
\n",
"
\n",
"
\n",
"
291642
\n",
"
2
\n",
"
757541
\n",
"
303.0
\n",
"
5.0
\n",
"
1
\n",
"
862
\n",
"
False
\n",
"
NaN
\n",
"
1
\n",
"
True
\n",
"
...
\n",
"
3
\n",
"
2016-09-08 14:50:00+00:00
\n",
"
fr
\n",
"
male
\n",
"
0
\n",
"
1
\n",
"
0
\n",
"
1.0
\n",
"
1
\n",
"
14
\n",
"
\n",
" \n",
"
\n",
"
3 rows × 29 columns
\n",
"
"
],
"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": [
"
"
]
},
"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/DDz8UqRgiIiKisqRIQWn79u0a02lpaYiOjoauri6qVq3KoERERETvhSIFpXPnzuVoS0hIgLe3N7p27frWRRERERGVBcX2o7hmZmaYMWMGr1EiIiKi90axBSUAeP78OeLj44tzlURERERaU6RTb4sXL9aYFkLg0aNHWLduHdq0aVMshRERERFpW5GC0sKFCzWmy5UrB2trawwcOBCTJ08u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REREMhiU3jHHjh1Dx44dYW9vD4VCgR07dmjMF0LA19cX9vb2MDQ0hKenJ65cuaKdYt9x+e3rbdu2oXXr1qhQoQIUCgXOnz+vlTrfdXnt57S0NEycOBGurq4wNjaGvb09BgwYgIcPH2qv4HdUfu9nX19f1KhRA8bGxihfvjxatmyJkydPaqfYd1h++/lNw4YNg0KhQFBQUKnVR4XHoPSOSUxMRL169bB06dJc58+bNw+BgYFYunQpoqKioFKp0KpVK7x48aKUK3335bevExMT0axZM8yZM6eUK3u/5LWfk5KScPbsWUybNg1nz57Ftm3bcPPmTXTq1EkLlb7b8ns/V69eHUuXLsWlS5fw559/wtHREV5eXvjnn39KudJ3W377OcuOHTtw8uRJrf88BxWAoHcWALF9+3ZpOjMzU6hUKjFnzhypLTk5WZibm4vly5drocL3R/Z9/abo6GgBQJw7d65Ua3of5bWfs5w6dUoAEPfu3Sudot5DBdnP8fHxAoA4ePBg6RT1HpLbzw8ePBAVK1YUly9fFg4ODmLhwoWlXhsVHEeU3iPR0dGIjY2Fl5eX1KZUKuHh4YHIyEgtVkZUfOLj46FQKD6433AsTampqfjpp59gbm6OevXqabuc90pmZib69++P//znP6hdu7a2y6ECeCe+mZsKJjY2FgBga2ur0W5ra4t79+5poySiYpWcnIxJkyahb9++/GHRErB792707t0bSUlJsLOzQ3h4OCpUqKDtst4rc+fOha6uLr799lttl0IFxBGl95BCodCYFkLkaCN616SlpaF3797IzMzEsmXLtF3Oe6l58+Y4f/48IiMj0aZNG/Ts2RNxcXHaLuu9cebMGSxatAghISE8Jr9DGJTeIyqVCsD/jSxliYuLyzHKRPQuSUtLQ8+ePREdHY3w8HCOJpUQY2NjVKtWDR9//DFWrVoFXV1drFq1SttlvTf++OMPxMXFoXLlytDV1YWuri7u3buHcePGwdHRUdvlkQwGpfeIk5MTVCoVwsPDpbbU1FRERESgadOmWqyMqOiyQtKtW7dw8OBBWFlZabukD4YQAikpKdou473Rv39/XLx4EefPn5ce9vb2+M9//oP9+/druzySwWuU3jEvX77E7du3peno6GicP38elpaWqFy5MkaPHg1/f384OzvD2dkZ/v7+MDIyQt++fbVY9bspv339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",
"text/plain": [
"
"
]
},
"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": 48,
"id": "643e75f7-5ff2-45e8-b6b9-808d2c8d40c4",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Création du barplot\n",
"plt.bar(purchase_spectacle[\"number_compagny\"], purchase_spectacle[\"Taux_ticket_internet\"])\n",
"\n",
"# Ajout de titres et d'étiquettes\n",
"plt.xlabel('Company')\n",
"plt.ylabel(\"Taux d'achat de tickets en ligne (%)\")\n",
"plt.title(\"Taux d'achat des tickets en ligne selon les compagnies de spectacle\")\n",
"\n",
"# Affichage du barplot\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 65,
"id": "254875ac-95e4-44fa-9f02-6cec144e4bde",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"la p-value associé à la stat de fisher est superieure à 5% donc il n y a pas de lien entre les entreprise et le taux de ticket acheté en ligne\n"
]
}
],
"source": [
"#test anova entre les entreprise de spectacle et taux d'achat de ticket en ligne\n",
"import statsmodels.api as sm\n",
"from statsmodels.formula.api import ols\n",
"model = ols('Taux_ticket_internet ~ number_compagny', data=purchase_spectacle).fit()\n",
"anova_table = sm.stats.anova_lm(model, typ=2)\n",
"print(\"la p-value associé à la stat de fisher est superieure à 5% donc il n y a pas de lien entre les entreprise et le taux de ticket acheté en ligne\")\n"
]
},
{
"cell_type": "code",
"execution_count": 66,
"id": "59a95248-0261-4970-9e91-e43d50cf4d69",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Boite à moustache du temps ecoulés entre le premier et le dernier achat selon les compagnies de spectacles')"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA6UAAAHGCAYAAACM3i2bAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABvz0lEQVR4nO3dd3gUVfv/8c+SnhAWkpCGSei9g9JUQGpoYkNAKYJgRRGw8KACPhRFaV9QEaUJEbAAKiBIVwggVYqIoFQhBCkJoYSQnN8f/rIPSxJIINmhvF/XtRfMmTMz95Sd2Ttn5ozNGGMEAAAAAIAF8lkdAAAAAADgzkVSCgAAAACwDEkpAAAAAMAyJKUAAAAAAMuQlAIAAAAALENSCgAAAACwDEkpAAAAAMAyJKUAAAAAAMuQlAIAAAAALHPHJaVbt26V3W7X//3f/1kdCoBckJqaqvr16+vee+/VhQsXrA4HAAAAOZSjpHTq1Kmy2WxOn8KFC6tBgwaaP3/+dQdRtGhRde3a1TF85MgRDRo0SFu3br3ueWalatWqmjt3rgYMGKC1a9fm+vxvRsOGDdO8efPyfDk2m00vvvhini/nassfNGhQrs3viy++0JgxY3Jtfrg+V54frjRgwADFx8fru+++k7e3t+sCy4G8PKdlZdCgQbLZbC5b3s2ma9euKlq0qNVhOPntt980aNAg7d+/P1v106+52a1/vVauXCmbzaaVK1fm6XJu1uXfiKJFi6pVq1a5Nr9z585p0KBBlmyL/fv3y2azaerUqS5f9p1+vrpVWHmMXOlWPm/kVGxsrAYNGqTTp0/n6XJcdc3JynW1lE6ZMkVr165VbGysJk6cKDc3N7Vu3Vrff//9dQUxd+5cvfXWW47hI0eOaPDgwXn2A+6BBx7Qp59+qvbt2+v48eN5soybiauS0tsNSenNb8GCBZo+fboWLVqkgIAAq8PJUl6f05DRW2+9pblz51odhpPffvtNgwcPtuyCf7OqXr261q5dq+rVq1sdiuXOnTunwYMH3xE/tHHrCQsL09q1a9WyZUurQ7mjxMbGavDgwXmelFrN/XomqlixomrWrOkYbt68uQoVKqSZM2eqdevWOZ5ftWrVrieMG9K+fXu1b9/e5csFkHtatmypv//+2+owct25c+fk6+trdRi5ytXrVKJEiVyd3+24T/JKTrdVgQIFVLt27Vxb/vnz5+Xt7U3LG5DLvLy8cvW7ClwuV54p9fb2lqenpzw8PJzKT548qeeff15FihSRp6enihcvrgEDBig5Odmp3uW3561cuVJ33323JOmpp55y3CZ8+W2ZGzduVJs2bRQQECBvb29Vq1ZNX375ZbZiHTx4sGrVqqWAgAAVKFBA1atX16RJk2SMuea0Xbt2Vf78+fX777+rWbNm8vPzU1hYmN59911J0rp163TvvffKz89PpUuX1rRp0zLMY8eOHXrwwQdVqFAheXt7q2rVqhnqZdV8ntmtClu2bFGrVq0UHBwsLy8vhYeHq2XLljp8+LCkf29pPXv2rKZNm+bYlg0aNJAkHT9+XM8//7zKly+v/PnzKzg4WA888IB+/vnnDHEnJyfrnXfeUbly5eTt7a3AwEA1bNhQsbGxGepOnz5d5cqVk6+vr6pUqZLprd179uxRx44dHXGXK1dOH3744VW3f7rExET16NFDgYGByp8/v5o3b64//vgjQ72sbt/Lzm1CDRo00IIFC3TgwAGn29XTXbx4UUOGDFHZsmXl5eWlwoUL66mnnsrQ8p5+a9f8+fNVrVo1+fj4qFy5co5tMnXqVJUrV05+fn665557tHHjxgzrkD9/fu3cuVONGjWSn5+fChcurBdffFHnzp1zqvvVV1+pVq1astvt8vX1VfHixdWtW7errqckGWP00UcfqWrVqvLx8VGhQoX06KOP6q+//spQd9GiRWrUqJFjGeXKldPw4cOd6nz33XeqU6eOfH195e/vryZNmmS4Vf5G9o307zHQr18/FStWTJ6enipSpIh69+6ts2fPunSbNGjQQBUrVtSGDRt03333OZbx7rvvKi0tTdK1z2np+3j79u1q2rSp/P391ahRI0nZP85yYvbs2apTp478/PyUP39+NWvWTFu2bLnmdOnnpSVLluipp55SQECA/Pz81Lp16yy3y08//aS6devK19fXsd2zu+/SHweYMmWKypQpIx8fH9WsWVPr1q2TMUbvv/++ihUrpvz58+uBBx7Q3r17nabP7BjL6X7NLP6sXOu6NHXqVD322GOSpIYNGzqOg+u5DW7p0qVq1KiRChQoIF9fX9WrV0/Lli3L1rS///67mjdvLl9fXwUFBenZZ5/VmTNnrns56d/ZzZs369FHH1WhQoUcfxBIP/8tWrRI1atXl4+Pj8qWLavJkyc7zSOr2/Cyc61PPy5//PFHdevWTYULF5avr2+G3xnpLly4oL59+6pq1aqy2+0KCAhQnTp19O2332aom5aWpnHjxjmOl4IFC6p27dr67rvvMtS91jpm53q7f/9+FS5cWNK/v1XSj5GrPb6QlpamIUOGOL4jBQsWVOXKlTV27FinejdyzV29erUaNWokf39/+fr6qm7dulqwYIFTnfT9sGLFCj333HMKCgpSYGCgHn74YR05ciRby8lMds5Xf/31l9q3b6/w8HB5eXkpJCREjRo1ytadKevXr1fr1q0VGBgob29vlShRQr17977u9V++fLnj90mBAgXUuXNnnT17VnFxcWrXrp0KFiyosLAw9evXTykpKY7p02+LHTFihIYOHarIyEh5e3urZs2aGb5ze/fu1VNPPaVSpUrJ19dXRYoUUevWrbV9+/YM67dz5041bdpUvr6+Kly4sF544QUtWLAgw/ctO9eyy+O88ryVneMru8dqZnL7vJWZ7MSXfr7bsmWLHn74YRUoUEB2u11PPvlkptfl7F5vr3YcDho0SK+++qokqVixYo7zQvr+mz17tpo2baqwsDDHb8w33ngjwzX1Wsu5muxs0+PHj6tnz56KiIhw/F6pV6+eli5des35O5gcmDJlipFk1q1bZ1JSUszFixfNoUOHzEsvvWTy5ctnFi1a5Kh7/vx5U7lyZePn52c++OAD8+OPP5q33nrLuLu7mxYtWjjNNyoqynTp0sUYY0xCQoJjOW+++aZZu3atWbt2rTl06JAxxpjly5cbT09Pc99995nZs2ebRYsWma5duxpJZsqUKddch65du5pJkyaZJUuWmCVLlpj//ve/xsfHxwwePPia03bp0sV4enqacuXKmbFjx5olS5aYp556ykgy/fv3N6VLlzaTJk0yixcvNq1atTKSzMaNGx3T//7778bf39+UKFHCfP7552bBggWmQ4cORpJ57733Mmznffv2OS1/xYoVRpJZsWKFMcaYpKQkExgYaGrWrGm+/PJLs2rVKjN79mzz7LPPmt9++80YY8zatWuNj4+PadGihWNb7ty50xHPc889Z2bNmmVWrlxp5s+fb7p3727y5cvnWIYxxqSkpJiGDRsad3d3069fP7Nw4ULz3Xffmf/85z9m5syZjnqSTNGiRc0999xjvvzyS7Nw4ULToEED4+7ubv78809HvZ07dxq73W4qVapkPv/8c/Pjjz+avn37mnz58plBgwZddR+kpaWZhg0bGi8vLzN06FDz448/moEDB5rixYsbSWbgwIFO+ysqKirDPAYOHGiudejv3LnT1KtXz4SGhjq229q1a40xxqSmpprmzZsbPz8/M3jwYLNkyRLz2WefmSJFipjy5cubc+fOOeYTFRVl7rrrLlOxYkUzc+ZMs3DhQlOrVi3j4eFh3n77bVOvXj0zZ84cM3fuXFO6dGkTEhLiNH36MRcZGelY30GDBhl3d3fTqlUrR73Y2Fhjs9lM+/btzcKFC83y5cvNlClTTKdOna66nsYY06NHD+Ph4WH69u1rFi1aZL744gtTtmxZExISYuLi4hz1PvvsM2Oz2UyDBg3MF198YZYuXWo++ugj8/zzzzvqxMTEGEmmadOmZt68eWb27NmmRo0axtPT0/z888/XtW8uPz8YY8zZs2dN1apVTVBQkBk1apRZunSpGTt2rLHb7eaBBx4waWlpLtsm9evXN4GBgaZUqVJmwoQJZsmSJeb55583ksy0adOMMdc+p3Xp0sV4eHiYokWLmuHDh5tly5aZxYsX5+g4y0xm23Lo0KHGZrOZbt26mfnz55s5c+aYOnXqGD8/P8d5ISvp6xAREWG6detmfvjhBzNx4kQTHBxsIiIizKlTp5y2S0BAgImIiDDjxo0zK1asMKtWrcr2vjPm3/NJVFSUqVu3rtN3JCAgwLzyyivmwQcfNPPnzzcxMTEmJCTEVK5c2Wn6zI6xnOzXzOLPSnauS/Hx8WbYsGFGkvnwww8dx0F8fPw1t/nl14Lp06cbm81m2rZta+bMmWO+//5706pVK+Pm5maWLl161X0YFxdngoODTZEiRcyUKVPMwoULzRNPPGEiIyOdri05WU76cRYVFWVef/11s2TJEjNv3jxjzP/Of+XLlzeff/65Wbx4sXnssceMJKfteeW1Lbvb9PJtVKRIEdOzZ0/zww8/mK+//tpcunQp021w+vRp07VrVzN9+nSzfPlys2jRItOvXz+TL18+x3c2XadOnYzNZjNPP/20+fbbb80PP/xghg4dasaOHeuok911zM719sKFC2bRokVGkunevbvjGNm7d2+W+3T48OHGzc3NDBw40CxbtswsWrTIjBkzxulamt1r7r59+zJs35UrVxoPDw9To0YNM3v2bDNv3jzTtGlTY7PZzKxZszLsh+LFi5tevXqZxYsXm88++8wUKlTINGzYMMv4093I+apMmTKmZMmSZvr06WbVqlXmm2++MX379nU6njKzaNEi4+HhYSpXrmymTp1qli9fbiZPnmzat29/3etfrFgx07dvX/Pjjz+a9957z7i5uZkOHTqY6tWrmyFDhpglS5aY119/3UgyI0eOzLDtIyIizL333mu++eYb89VXX5m7777beHh4mNjYWEfdVatWmb59+5qvv/7arFq1ysydO9e0bdvW+Pj4mN9//91R78iRIyYwMNBERkaaqVOnmoULF5pOnTqZokWLZvi+Zedadnmclx8j2T2+snOsZiYvzluZyU58l5/vXn31VbN48WIzatQo4+fnZ6pVq2YuXrzoqJvd4/dax+GhQ4dMr169jCQzZ84cx3khISHBGGPMf//7XzN69GizYMECs3LlSjNhwgRTrFixDN+77BzvN3LNadasmSlcuLCZOHGiWblypZk3b555++23nb4n13JdSemVHy8vL/PRRx851Z0wYYKRZL788kun8vfee89IMj/++KOj7MofnRs2bMgyySxbtqypVq2aSUlJcSpv1aqVCQsLM6mpqdlen9TUVJOSkmLeeecdExgY6PSDJjNdunQxksw333zjKEtJSTGFCxc2kszmzZsd5SdOnDBubm6mT58+jrL27dsbLy8vc/DgQaf5RkdHG19fX3P69GljTPaT0o0bNxpJjh8AWfHz83Pavlm5dOmSSUlJMY0aNTIPPfSQo/zzzz83ksynn3561eklmZCQEJOYmOgoi4uLM/ny5TPDhw93lDVr1szcddddji9UuhdffNF4e3ubkydPZrmMH374wUhy+lFgzL9f/txMSo0xpmXLlplOP3PmzAzHgTH/O24v/y5ERUUZHx8fc/jwYUfZ1q1bjSQTFhZmzp496yifN2+ekWS+++47p3W42vquXr3aGGPMBx98YCQ5jqHsWrt2bYaLozH/ngR9fHzMa6+9Zowx5syZM6ZAgQLm3nvvzfJ7kpqaasLDw02lSpWcvodnzpwxwcHBpm7duk7rdb1J6fDhw02+fPnMhg0bnOp9/fXXRpJZuHChMSbvt4kx/17IJZn169c71S1fvrxp1qyZY/hq57T0fTx58mSn8pwcZ5m5clsePHjQuLu7m169ejnVO3PmjAkNDTXt2rW76vzSz0uXnxuMMWbNmjVGkhkyZIijLH27LFu2zKludvedMf+eT0JDQ01SUpKjLP07UrVqVafjcMyYMUaS2bZtm6PsymPsevbrlfFnJbvXpa+++irDj6irufJacPbsWRMQEGBat27tVC81NdVUqVLF3HPPPVed3+uvv25sNpvZunWrU3mTJk2c4srJctKPs7fffjvD8qKiooy3t7c5cOCAo+z8+fMmICDAPPPMM46yzJLS7G7T9G3UuXPnq657VtKve927dzfVqlVzlP/0009GkhkwYMBVp8/uOma13Cuvt8ePH89wLbuaVq1amapVq161TnavuZklHLVr1zbBwcHmzJkzTrFXrFjR3HXXXY7vYfp+uPyPlMYYM2LECCPJHD169KoxXu/56p9//jGSzJgxY646/8yUKFHClChRwpw/fz7LOjld/yvjbdu2rZFkRo0a5VRetWpVU716dcdw+rYPDw93iicxMdEEBASYxo0bZxnjpUuXzMWLF02pUqXMK6+84ih/9dVXjc1my/AHx2bNmmWalGbnWpbZMZLd4ys7x2pm8uK8lZnsxJd+nF6+nY353x/kZ8yYYYzJ2fU2O8fh+++/n2lecKW0tDSTkpJiVq1aZSSZX3/9NUfLuZFrTv78+U3v3r2vGt+1XNftu59//rk2bNigDRs26IcfflCXLl30wgsvaPz48Y46y5cvl5+fnx599FGnadNvQ8nurUaX27t3r37//Xc98cQTkqRLly45Pi1atNDRo0e1e/fuq85j+fLlaty4sex2u9zc3OTh4aG3335bJ06cUHx8/DVjsNlsatGihWPY3d1dJUuWVFhYmNOzsQEBAQoODtaBAweclt2oUSNFREQ4zbNr1646d+5cjnsDLlmypAoVKqTXX39dEyZM0G+//Zaj6SVpwoQJql69ury9veXu7i4PDw8tW7ZMu3btctT54Ycf5O3tna3bHhs2bCh/f3/HcEhIiNN2uHDhgpYtW6aHHnpIvr6+GfbhhQsXtG7duiznv2LFCklyHAPpOnbsmKP1vhHz589XwYIF1bp1a6f4q1atqtDQ0Ay3oFWtWlVFihRxDJcrV07Sv7fLXP7cVXr55cdMuqzWN317pN8e2q5dO3355ZfZfs5y/vz5stlsevLJJ53WJTQ0VFWqVHGsS2xsrBITE/X8889neXvt7t27deTIEXXq1En58v3v1JI/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atWqpR9//FH+/v6OaUaPHi13d3e1a9dO58+fV6NGjTR16lS5ubk56sTExOill15y9NLbpk2bLN+NCgAAACBnbCY7L4QEcknVqlVVunRpDR48WGFhYRk6C7Lb7RZFlrcSExNlt9uVkJBwyz5f+scff6hnz56aOHGiSpcubXU4AADkudvh+g3cCmgphUvt2bNHX3/9tUqWLGl1KAAAAABuAnR0BJeqVauW03OgAAAAAO5stJTCpXr16qW+ffsqLi5OlSpVkoeHh9P4ypUrWxQZAAAAACuQlMKlHnnkEUlSt27dHGU2m03GmBx3dAQAAADg1kdSCpfat2+f1SEAAAAAuImQlMKloqKirA4BAAAAwE2Ejo7gctOnT1e9evUUHh6uAwcOSJLGjBmjb7/91uLIAAAAALgaSSlc6uOPP1afPn3UokULnT592vEMacGCBTVmzBhrgwMAAADgciSlcKlx48bp008/1YABA+Tm5uYor1mzprZv325hZAAAAACsQFIKl9q3b5+qVauWodzLy0tnz561ICIAAAAAViIphUsVK1ZMW7duzVD+ww8/qHz58q4PCAAAAICl6H0XLvXqq6/qhRde0IULF2SM0S+//KKZM2dq+PDh+uyzz6wODwAAAICLkZTCpZ566ildunRJr732ms6dO6eOHTuqSJEiGjt2rNq3b291eAAAAABcjKQULtejRw/16NFD//zzj9LS0hQcHGx1SAAAAAAswjOlcLlLly5p6dKl+uabb+Tj4yNJOnLkiJKSkiyODAAAAICr0VIKlzpw4ICaN2+ugwcPKjk5WU2aNJG/v79GjBihCxcuaMKECVaHCAAAAMCFaCmFS7388suqWbOmTp065WgllaSHHnpIy5YtszAyAAAAAFagpRQutXr1aq1Zs0aenp5O5VFRUfr7778tigoAAACAVWgphUulpaUpNTU1Q/nhw4fl7+9vQUQAAAAArERSCpdq0qSJxowZ4xi22WxKSkrSwIED1aJFC+sCAwAAAGAJbt+FS40ePVoNGzZU+fLldeHCBXXs2FF79uxRUFCQZs6caXV4AAAAAFyMpBQuFR4erq1bt2rmzJnavHmz0tLS1L17dz3xxBNOHR8BAAAAuDOQlMLlfHx81K1bN3Xr1s3qUAAAAABYjGdK4VLh4eHq2LGjJk6cqD/++MPqcAAAAABYjKQULjVy5EgV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XgcPHtShQ4ccZb/99psSEhJUrly561rm5TJb37Jly0qS1qxZo6ioKA0YMEA1a9ZUqVKlMnTaVKZMGf3yyy9OZRs3bsxxHO7u7urSpYumTJmiKVOmqH379vL19c3xfAAASEdLKQAgT/j4+Kh27dp69913VbRoUf3zzz968803c23+hw4dUp8+ffTMM89o8+bNGjdunKNlsHTp0nriiSfUuXNnjRw5UtWqVdM///yj5cuXq1KlSmrRosV1LXPQoEF69tlnFRwcrOjoaJ05c0Zr1qxRr1691LhxY1WuXFlPPPGExowZo0uXLun5559X/fr1VbNmzRte36+++ko1a9bUvffeq5iYGP3yyy+aNGmSJKlkyZI6ePCgZs2apbvvvlsLFizQ3Llznabv1auXevTooZo1a6pu3bqaPXu2tm3b5nSbdHY9/fTTjkR7zZo1N7xuAIA7Gy2lAIA8M3nyZKWkpKhmzZp6+eWXNWTIkFybd+fOnXX+/Hndc889euGFF9SrVy/17NnTMX7KlCnq3Lmz+vbtqzJlyqhNmzZav3690zOfOdWlSxeNGTNGH330kSpUqKBWrVo5evO12WyaN2+eChUqpPvvv1+NGzdW8eLFNXv27BteV0kaPHiwZs2apcqVK2vatGmKiYlR+fLlJUkPPvigXnnlFb344ouqWrWqYmNj9dZbbzlN/8QTT6h///7q16+fqlevrn379qlr167y9vbOcSylSpVS3bp1VaZMGdWqVStX1g8AcOeymcweKAEAADcNm82muXPnqm3btrk63yZNmig0NFTTp0/P0XTGGJUtW1bPPPOM+vTpk6sxAQDuPNy+CwDAHeDcuXOaMGGCmjVrJjc3N82cOVNLly7N8Ttl4+PjNX36dP3999966qmn8ihaAMCdhKQUAID/7/Keea/0ww8/6L777nNhNLnLZrNp4cKFGjJkiJKTk1WmTBl98803aty4cY7mExISoqCgIE2cOFGFChXKo2gBAHcSbt8FAOD/27t3b5bjihQpcs3XwgAAgJwjKQUAAAAAWIbedwEAAAAAliEpBQAAAABYhqQUAAAAAGAZklIAAAAAgGVISgEAAAAAliEpBQAAAABYhqQUAAAAAGAZklIAAAAAgGX+HzsIOzI+/OG6AAAAAElFTkSuQmCC",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#repartion Chiffre d'affaire selon le numero de la compagnie\n",
"\n",
"sns.boxplot(data=products_purchased_reduced_spectacle, y=\"time_between_purchase\",x=\"number_compagny\",showfliers=False,showmeans=True)\n",
"plt.title(\"Boite à moustache du temps ecoulés entre le premier et le dernier achat selon les compagnies de spectacles\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "58cbe8a5-3899-4aa3-91ab-48bed9124fbd",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 72,
"id": "58f49748-e55f-4d1b-b58b-102d02a9e0eb",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" sum_sq df F PR(>F)\n",
"number_compagny 4.108441e+09 1.0 23548.336165 0.0\n",
"Residual 1.334471e+11 764878.0 NaN NaN la p-value associé à la stat de fisher est inferieure à 5% donc il y a un lien entre les entreprise et le temps écoulés entre le premier et le dernier achat\n"
]
}
],
"source": [
"#test anova entre les entreprise de spectacle et taux d'achat de ticket en ligne\n",
"import statsmodels.api as sm\n",
"from statsmodels.formula.api import ols\n",
"model = ols('time_between_purchase ~ number_compagny', data=products_purchased_reduced_spectacle).fit()\n",
"anova_table = sm.stats.anova_lm(model, typ=2)\n",
"anova_table\n",
"print(anova_table,\"la p-value associé à la stat de fisher est inferieure à 5% donc il y a un lien entre les entreprise et le temps écoulés entre le premier et le dernier achat\" )\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "33ef5773-a09d-4b8c-918f-1b64a9790422",
"metadata": {},
"outputs": [],
"source": []
},
{
"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": [
"