From 75664a33d7ee4ada8f813e3cde9a1a895f53036b Mon Sep 17 00:00:00 2001 From: frodrigue-ensae Date: Sun, 10 Mar 2024 16:41:43 +0000 Subject: [PATCH] stat --- Spectacle/Exploration_spectacle.ipynb | 362 +-------------------- Spectacle/Stat_desc.ipynb | 436 +++++++++++++++++--------- 2 files changed, 294 insertions(+), 504 deletions(-) diff --git a/Spectacle/Exploration_spectacle.ipynb b/Spectacle/Exploration_spectacle.ipynb index 6494cdd..c8d6a0f 100644 --- a/Spectacle/Exploration_spectacle.ipynb +++ b/Spectacle/Exploration_spectacle.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 106, + "execution_count": 1, "id": "0eefb67b-5399-44fa-9c1c-7724ec1c7cd2", "metadata": {}, "outputs": [], @@ -17,19 +17,19 @@ }, { "cell_type": "code", - "execution_count": 107, + "execution_count": 7, "id": "37977b4e-42e7-4d8e-8b9a-6843292fd128", "metadata": {}, "outputs": [], "source": [ "# Import KPI construction functions\n", - "exec(open('0_KPI_functions.py').read())\n", - "# exec(open('../0_KPI_functions.py').read())\n" + "#exec(open('0_KPI_functions.py').read())\n", + "exec(open('../0_KPI_functions.py').read())\n" ] }, { "cell_type": "code", - "execution_count": 108, + "execution_count": 8, "id": "cca62d72-f809-41a9-bb06-1be7d6b09307", "metadata": {}, "outputs": [ @@ -42,7 +42,7 @@ " 'projet-bdc2324-team1/0_Input/Company_10/target_information.csv']" ] }, - "execution_count": 108, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -58,345 +58,7 @@ }, { "cell_type": "code", - "execution_count": 109, - "id": "68fb54f3-8eb3-4cd0-966b-000876912fb5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
ticket_idcustomer_idpurchase_idevent_type_idsupplier_namepurchase_dateamountis_full_pricename_event_typesname_facilitiesname_categoriesname_eventsname_seasonsstart_date_timeend_date_timeopen
01799177369844096132guichet2016-04-28 17:58:26+02:009.0Falsedansele grand tabo t gourmand jeunearinga rossatest 2016/20172016-09-27 00:00:00+02:001901-01-01 00:09:21+00:09True
11799178369844096133guichet2016-04-28 17:58:26+02:009.0Falsecirquele grand tabo t gourmand jeune5èmes hurlantstest 2016/20172016-11-18 00:00:00+01:001901-01-01 00:09:21+00:09True
21799179369844096131guichet2016-04-28 17:58:26+02:009.0Falsethéâtrele grand tabo t gourmand jeunedom juantest 2016/20172016-12-07 00:00:00+01:001901-01-01 00:09:21+00:09True
31799180369844096131guichet2016-04-28 17:58:26+02:009.0Falsethéâtrele grand tabo t gourmand jeunevanishing pointtest 2016/20172017-01-04 00:00:00+01:001901-01-01 00:09:21+00:09True
41799181369844096133guichet2016-04-28 17:58:26+02:0012.0Falsecirquela cite des congresabo t gourmand jeunea o lang photest 2016/20172017-01-03 00:00:00+01:001901-01-01 00:09:21+00:09True
...................................................
49230932522326217167100621guichet2023-03-09 12:08:45+01:007.0Falsethéâtrecap norttarif sco co 1 seance scolairesur moi, le temps2022/20232023-03-13 14:00:00+01:001901-01-01 00:09:21+00:09True
49231032522336217167100621guichet2023-03-09 12:08:45+01:007.0Falsethéâtrecap norttarif sco co 1 seance scolairesur moi, le temps2022/20232023-03-13 14:00:00+01:001901-01-01 00:09:21+00:09True
49231132522346217167100621guichet2023-03-09 12:08:45+01:007.0Falsethéâtrecap norttarif sco co 1 seance scolairesur moi, le temps2022/20232023-03-13 14:00:00+01:001901-01-01 00:09:21+00:09True
49231232522356217167100621guichet2023-03-09 12:08:45+01:007.0Falsethéâtrecap norttarif sco co 1 seance scolairesur moi, le temps2022/20232023-03-13 14:00:00+01:001901-01-01 00:09:21+00:09True
49231332522366217167100621guichet2023-03-09 12:08:45+01:007.0Falsethéâtrecap norttarif sco co 1 seance scolairesur moi, le temps2022/20232023-03-13 14:00:00+01:001901-01-01 00:09:21+00:09True
\n", - "

492314 rows × 16 columns

\n", - "
" - ], - "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": 109, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "products_purchased_reduced" - ] - }, - { - "cell_type": "code", - "execution_count": 56, + "execution_count": 10, "id": "0e1ce56c-2e50-456c-ba97-ed4a699cc8d4", "metadata": {}, "outputs": [], @@ -412,7 +74,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 11, "id": "bcdba447-90f7-450c-b4a3-6da656e38493", "metadata": {}, "outputs": [ @@ -420,7 +82,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_438/3710670046.py:6: 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", + "/tmp/ipykernel_491/3710670046.py:6: 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", " purchases = pd.read_csv(file_in, sep=\",\", parse_dates = ['purchase_date'], date_parser=custom_date_parser)\n" ] } @@ -437,7 +99,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 12, "id": "637aa400-f49a-4d8d-802a-868b241f8a9d", "metadata": {}, "outputs": [], @@ -452,7 +114,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 13, "id": "e60529b5-986f-4685-91e1-782c2b022e09", "metadata": {}, "outputs": [ @@ -608,7 +270,7 @@ "[69258 rows x 5 columns]" ] }, - "execution_count": 45, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } diff --git a/Spectacle/Stat_desc.ipynb b/Spectacle/Stat_desc.ipynb index 52df725..dc88552 100644 --- a/Spectacle/Stat_desc.ipynb +++ b/Spectacle/Stat_desc.ipynb @@ -76,7 +76,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "id": "a35dc2f6-2017-4b21-abd2-2c4c112c96b2", "metadata": {}, "outputs": [], @@ -92,7 +92,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "id": "40b705eb-fd18-436b-b150-61611a3c6a84", "metadata": {}, "outputs": [], @@ -112,20 +112,165 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "id": "c56decc3-de19-4786-82a4-1386c72a6bfb", "metadata": {}, "outputs": [ { - "ename": "NameError", - "evalue": "name 'target_information' 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[5], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mtarget_information\u001b[49m\n", - "\u001b[0;31mNameError\u001b[0m: name 'target_information' is not defined" - ] + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idcustomer_idtarget_nametarget_type_is_importtarget_type_name
01165098618562Newsletter mensuelleFalsemanual_static_filter
11165100618559Newsletter mensuelleFalsemanual_static_filter
21165101618561Newsletter mensuelleFalsemanual_static_filter
31165102618560Newsletter mensuelleFalsemanual_static_filter
41165103618558Newsletter mensuelleFalsemanual_static_filter
..................
69253169815818580Newsletter mensuelleFalsemanual_static_filter
69254169815918569Newsletter mensuelleFalsemanual_static_filter
6925516981602962Newsletter mensuelleFalsemanual_static_filter
6925616981613825Newsletter mensuelleFalsemanual_static_filter
6925716981625731Newsletter mensuelleFalsemanual_static_filter
\n", + "

69258 rows × 5 columns

\n", + "
" + ], + "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": 6, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -134,7 +279,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "id": "c825d64b-356c-4b71-aa3c-90e0dd7ca092", "metadata": {}, "outputs": [ @@ -461,7 +606,7 @@ "[492314 rows x 16 columns]" ] }, - "execution_count": 9, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -472,7 +617,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "id": "afd044b8-ac83-4a35-b959-700cae0b3b41", "metadata": {}, "outputs": [ @@ -487,7 +632,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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" ] }, @@ -502,7 +647,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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" ] }, @@ -517,7 +662,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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" ] }, @@ -532,7 +677,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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", ":28: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", @@ -552,7 +697,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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" ] }, @@ -567,7 +712,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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" ] }, @@ -582,7 +727,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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" ] }, @@ -597,7 +742,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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", ":28: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", @@ -617,7 +762,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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" ] }, @@ -632,7 +777,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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" ] }, @@ -647,9 +792,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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_437/3170175140.py:10: DtypeWarning: Columns (4,8,10) have mixed types. Specify dtype option on import or set low_memory=False.\n", + "/tmp/ipykernel_427/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" ] }, @@ -664,7 +809,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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", ":28: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", @@ -684,7 +829,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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" ] }, @@ -699,7 +844,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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" ] }, @@ -714,7 +859,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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" ] }, @@ -729,7 +874,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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", ":28: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", @@ -749,7 +894,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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" ] }, @@ -764,7 +909,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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" ] }, @@ -779,9 +924,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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_437/3170175140.py:10: DtypeWarning: Columns (8,9) have mixed types. Specify dtype option on import or set low_memory=False.\n", + "/tmp/ipykernel_427/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" ] }, @@ -796,7 +941,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/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", + "/tmp/ipykernel_427/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", ":28: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", @@ -1067,14 +1212,6 @@ "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, @@ -1098,7 +1235,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "id": "3a1fdd6b-ac43-4e90-9a31-4f522bcc44bb", "metadata": {}, "outputs": [ @@ -1106,7 +1243,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_437/3450421856.py:9: DtypeWarning: Columns (38) have mixed types. Specify dtype option on import or set low_memory=False.\n", + "/tmp/ipykernel_427/3450421856.py:9: DtypeWarning: Columns (38) have mixed types. Specify dtype option on import or set low_memory=False.\n", " train_set_spectacle = pd.read_csv(file_in, sep=\",\")\n" ] } @@ -1125,7 +1262,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 12, "id": "3a4c1ff4-2861-4e86-99df-26eea0370dc3", "metadata": {}, "outputs": [ @@ -1196,7 +1333,7 @@ " 12.0\n", " 3.0\n", " 0 days 05:47:26.333333333\n", - " NaN\n", + " 0.0\n", " \n", " \n", " 1\n", @@ -1244,7 +1381,7 @@ " 0.0\n", " 0.0\n", " NaN\n", - " NaN\n", + " 0.0\n", " \n", " \n", " 3\n", @@ -1268,7 +1405,7 @@ " 11.0\n", " 10.0\n", " 1 days 00:45:54\n", - " NaN\n", + " 0.0\n", " \n", " \n", " 4\n", @@ -1292,7 +1429,7 @@ " 0.0\n", " 0.0\n", " NaN\n", - " NaN\n", + " 0.0\n", " \n", " \n", "\n", @@ -1329,16 +1466,16 @@ "4 0 0 1 NaN 0.0 \n", "\n", " nb_campaigns_opened time_to_open y_has_purchased \n", - "0 3.0 0 days 05:47:26.333333333 NaN \n", + "0 3.0 0 days 05:47:26.333333333 0.0 \n", "1 1.0 0 days 05:13:51 1.0 \n", - "2 0.0 NaN NaN \n", - "3 10.0 1 days 00:45:54 NaN \n", - "4 0.0 NaN NaN \n", + "2 0.0 NaN 0.0 \n", + "3 10.0 1 days 00:45:54 0.0 \n", + "4 0.0 NaN 0.0 \n", "\n", "[5 rows x 40 columns]" ] }, - "execution_count": 8, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -1349,7 +1486,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 11, "id": "4632384d-2a06-445d-9fdb-b0c91b37ebaf", "metadata": {}, "outputs": [ @@ -1359,7 +1496,7 @@ "array([0., 1.])" ] }, - "execution_count": 13, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -1372,7 +1509,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "id": "5fd56696-b479-46c7-8a59-fb8137db5fb5", "metadata": {}, "outputs": [ @@ -1382,7 +1519,7 @@ "array([10, 11, 12, 13, 14])" ] }, - "execution_count": 14, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -1396,7 +1533,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "id": "91c6e047-43d2-456c-81f1-087026eef4f0", "metadata": {}, "outputs": [ @@ -1616,7 +1753,7 @@ "[5 rows x 41 columns]" ] }, - "execution_count": 15, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -5013,7 +5150,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 15, "id": "d06ab865-4832-4fe9-918b-e5ff72bebee4", "metadata": {}, "outputs": [ @@ -5024,7 +5161,7 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[43], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Création du barplot\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m plt\u001b[38;5;241m.\u001b[39mbar(\u001b[43mcompany_campaigns_stats\u001b[49m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnumber_compagny\u001b[39m\u001b[38;5;124m\"\u001b[39m], \u001b[38;5;241m100\u001b[39m \u001b[38;5;241m*\u001b[39m company_campaigns_stats[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mratio_campaigns_opened\u001b[39m\u001b[38;5;124m\"\u001b[39m])\n\u001b[1;32m 4\u001b[0m \u001b[38;5;66;03m# Ajout de titres et d'étiquettes\u001b[39;00m\n\u001b[1;32m 5\u001b[0m plt\u001b[38;5;241m.\u001b[39mxlabel(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mCompany\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", + "Cell \u001b[0;32mIn[15], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Création du barplot\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m plt\u001b[38;5;241m.\u001b[39mbar(\u001b[43mcompany_campaigns_stats\u001b[49m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnumber_compagny\u001b[39m\u001b[38;5;124m\"\u001b[39m], \u001b[38;5;241m100\u001b[39m \u001b[38;5;241m*\u001b[39m company_campaigns_stats[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mratio_campaigns_opened\u001b[39m\u001b[38;5;124m\"\u001b[39m])\n\u001b[1;32m 4\u001b[0m \u001b[38;5;66;03m# Ajout de titres et d'étiquettes\u001b[39;00m\n\u001b[1;32m 5\u001b[0m plt\u001b[38;5;241m.\u001b[39mxlabel(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mCompany\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", "\u001b[0;31mNameError\u001b[0m: name 'company_campaigns_stats' is not defined" ] } @@ -6304,7 +6441,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 16, "id": "74534ded-8121-43fb-8cf8-af353bed2c77", "metadata": {}, "outputs": [ @@ -6332,7 +6469,7 @@ "dtype: int64" ] }, - "execution_count": 47, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -6345,66 +6482,7 @@ }, { "cell_type": "code", - "execution_count": 22, - "id": "d64979ba-fccf-45f2-8a15-40ef1b49c74f", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_430/3239820253.py:6: DtypeWarning: Columns (39) have mixed types. Specify dtype option on import or set low_memory=False.\n", - " dataset_train = pd.read_csv(file_in, sep=\",\")\n" - ] - } - ], - "source": [ - "#base d'entrainement\n", - "\n", - "#FILE_PATH_S3='projet-bdc2324-team1/Generalization/musique/Train_test/dataset_train14.csv'\n", - "\n", - "#with fs.open(FILE_PATH_S3, mode=\"rb\") as file_in:\n", - " #dataset_train = pd.read_csv(file_in, sep=\",\")" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "635d60cd-2dbc-49da-b0f4-94e16667882f", - "metadata": {}, - "outputs": [], - "source": [ - "#Creation de la variable dependante fictive: 1 si l'individu a effectué un achat au cours de la periode de train et 0 sinon\n", - "\n", - "#dataset_train_modif=dataset_train\n", - "\n", - "#dataset_train_modif[\"y_purchase_fictive\"]=np.random.randint(2, size=dataset_train_modif.shape[0])" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "ea63e5d6-70f9-4685-8b08-673a47108954", - "metadata": {}, - "outputs": [], - "source": [ - "#dataset_train_modif[\"y_purchase_fictive\"].value_counts(normalize=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "98f7645f-ffe6-4d7b-8032-15e65f36af87", - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "#dataset_train_modif[\"y_purchase_fictive\"]=dataset_train_modif[\"y_purchase_fictive\"].replace([0,1],[\"Purchase_train\",\"no_purchase_train\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 35, + "execution_count": 21, "id": "6db089d5-5517-4aee-a5fd-53f20ae3f0d7", "metadata": {}, "outputs": [], @@ -6427,10 +6505,51 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "c532f884-3f44-4ce7-8924-9b4542bc3c10", + "execution_count": 39, + "id": "943b8088-9ca2-40a4-b658-2cfae1589fac", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "30.0\n", + "62.0\n", + "120.0\n", + "90.0\n", + "Moustache inferieure -105.0\n", + "Moustache superieure 255.0\n" + ] + } + ], + "source": [ + "#identification des valeur manquantes\n", + "#calcule des quartile de la variable valeur(taille de la population)\n", + "Q1=np.percentile(products_purchased_reduced_spectacle[\"total_amount\"], 25) # Q1\n", + "Q2=np.percentile(products_purchased_reduced_spectacle[\"total_amount\"], 50) # Q2\n", + "Q3=np.percentile(products_purchased_reduced_spectacle[\"total_amount\"], 75) # Q3\n", + "print(Q1)\n", + "print(Q2)\n", + "print(Q3)\n", + "\n", + "#intervale interquartile de la variable Valeur\n", + "\n", + "IQ=Q3-Q1\n", + "print(IQ)\n", + "\n", + "#la valeur minimale des moustache de la variable Valeur\n", + "\n", + "M_inf=Q1-1.5*IQ\n", + "M_sup=Q3+1.5*IQ\n", + "\n", + "print(\"Moustache inferieure\",M_inf)#moustache inferieur\n", + "print(\"Moustache superieure\",M_sup)#moustache sup\n" + ] + }, + { + "cell_type": "markdown", + "id": "a63e6d13-429b-4b01-ad11-27e5eea68cbd", "metadata": {}, - "outputs": [], "source": [ "#histogrames des variable quantitatives\n", "col_purchase=[\"nb_tickets\",\"nb_purchases\",\"total_amount\",\"nb_suppliers\",\"time_between_purchase\",\"nb_tickets_internet\"]\n", @@ -6441,23 +6560,13 @@ }, { "cell_type": "code", - "execution_count": 73, - "id": "eb6355e0-3f8c-47d9-a5ee-d349040dcf51", + "execution_count": 46, + "id": "5a08b5a5-7d56-4543-945a-38f6219d831d", "metadata": {}, "outputs": [ { "data": { - "text/plain": [ - "Text(0.5, 1.0, \"Boite à moustache du chiffre d'affaire selon les compagnies de spectacles\")" - ] - }, - "execution_count": 73, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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Bw7YvadmzZqyWCy20FbcNBxVmu2ruG21MHnzUZJ9QVl/lvJcapnmbTMl3X5Lsh1eSknzg6PTKc0yvZzv/Txl/osmeTfXzVsgXbt21ZkzZwossLyrGi91+4m8mc//V1PTpk3VpEkTfffdd7aeyvyPS30BWiwWeXh4yN3d3Tbs3Llzeuutt0o8n5eja9euWrt2rS0E5nnzzTfl6+tr+6DnXYH5/fff27VbtWpVkeO2WCyKiYnRK6+8oho1amjbtm2214r6C9RisRTY+L7//vsCh7F79eqljIwMp9wg2NfXV126dNH27dvVunXrQtdhYX9F5+nSpYskacmSJXbDly5dWqBt/fr1dezYMbsdS1ZWlj777LNi6+zYsaOCgoL02muvlejKdFfq06eP0tLSlJOTU+jyvNQfSk2bNlXdunX1zjvv2M1ncnJyoVeW51fYNvTRRx/p119/dXyGymi8ffr0kTFGv/76a6HLqVWrViUeV2RkpB566CF1797d9lnr1KmTatSooT179hS5f7r48OLFOnToIB8fH7399tt2ww8fPmw77aSsOLL9uLu7q3379rY7Bly8v8mvR48ecnd3L/DH58VcMf/59yFJSUlKTk62Xe2f90dF/u3wX//6l91zPz8/tWvXTitXrlRWVpZt+JkzZy7rRx3yc3T7KmxbLYyfn5+uvfZaLV++3K5n9fTp0/rggw/s2pb1Z+niaef/3lu6dKnc3Nx0ww032GopyfZbku1QuvT3ZUnyQ0mnk58jy/RS3/vFcWpP4a5du3T+/HlJF7pwly9frsTERPXv39/Wy3P33Xfrn//8p4YMGaJffvlFrVq10saNGzV9+nTdfPPN6tatW5Hjb9SokXx8fLRkyRI1b95c/v7+Cg8PV3h4uP71r3+pV69e6tmzp4YOHap69erpxIkT+uGHH7Rt2za9//77RY63d+/emjlzpgYNGqThw4crLS1NL730UrF/1TjLlClT9OGHH6pLly6aPHmygoODtWTJEn300Ud64YUXFBQUJEm65ppr1LRpU40fP17nz59XzZo1tWLFCm3cuNFufB9++KHmzZunW2+9VQ0bNpQxRsuXL9cff/yh7t2729q1atVK69ev1wcffKC6desqICBATZs2VZ8+ffTMM89oypQpio2N1b59+/T000+rQYMGtvUrSXfeeacWLlyoESNGaN++ferS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VXSpdZF3S6DCHuvWrXN16VXSpdbHuXPnTP/+/U14eLjx8vIydevWNf369TPffPONq8uukorbT+XHLWmqFosxxpRt7AQAAEBFxzmFAAAAIBQCAACAUAgAAAARCgEAACBCIQAAAEQoBAAAgAiFAAAAEKEQQAUQFxenMWPGuLoMAKjWCIUAAAAgFAKomnJycpSbm+vqMgCg0iAUArCJi4vTww8/rMcee0zBwcEKCwtTfHy8JOmXX36RxWLRjh07bO3/+OMPWSwWrV+/XpK0fv16WSwWffbZZ2rbtq18fHx044036tixY/rkk0/UvHlzBQYG6s4779Sff/5pN+3z58/roYceUo0aNRQSEqKnnnpKF/8KZ1ZWlh577DHVq1dPfn5+at++vW26krRo0SLVqFFDH374oVq0aCGr1ark5ORi53nBggW68sorZbVaVbduXT300EO211JSUnTLLbfI399fgYGBGjBggH777Tfb6/Hx8WrTpo0WLFigyMhI+fv768EHH1ROTo5eeOEFhYWFqU6dOpo2bZrdNC0Wi1599VX16tVLPj4+atCggd5//327No8//riio6Pl6+urhg0batKkScrOzrZr8+yzz6pOnToKCAjQfffdpyeeeEJt2rSxvT506FDdeuuteumll1S3bl2FhIRo1KhRtvE8/fTTatWqVYFlcvXVV2vy5MnFLjsAVYyLf3sZQAUSGxtrAgMDTXx8vNm/f79ZvHixsVgsZvXq1ebgwYNGktm+fbut/cmTJ40ks27dOmOMMevWrTOSzHXXXWc2btxotm3bZho3bmxiY2NNjx49zLZt28wXX3xhQkJCzHPPPWc3XX9/f/PII4+YvXv3mrffftv4+vqahIQEW5tBgwaZjh07mi+++MIcOHDAvPjii8ZqtZr9+/cbY4xZuHCh8fT0NB07djRfffWV2bt3rzlz5swl53fevHnG29vbzJo1y+zbt89888035pVXXjHGGJObm2vatm1rOnfubLZu3Wo2b95srrrqKhMbG2t7/5QpU4y/v7+5/fbbze7du82qVauMl5eX6dmzpxk9erTZu3evWbBggZFkNm3aZHufJBMSEmJef/11s2/fPvPUU08Zd3d3s2fPHlubZ555xnz11Vfm4MGDZtWqVSY0NNQ8//zzttfffvtt4+3tbRYsWGD27dtnpk6dagIDA01MTIytzZAhQ0xgYKAZMWKE+eGHH8wHH3xgt1wPHTpk3NzczDfffGN7z3fffWcsFov56aefLrnsAFQ9hEIANrGxsaZz5852w6655hrz+OOPlyoUrlmzxtZmxowZRpJdyHjggQdMz5497abbvHlzk5ubaxv2+OOPm+bNmxtjjDlw4ICxWCzm119/tauta9euZsKECcaYC6FQktmxY0eJ5zc8PNxMnDix0NdWr15t3N3dTUpKim3Y7t27jSRbiJoyZYrx9fU1p06dsrXp2bOnqV+/vsnJybENa9q0qZkxY4btuSQzYsQIu+m1b9/ePPjgg0XW+sILL5irr77arv2oUaPs2nTq1KlAKIyKijLnz5+3DfvrX/9q7rjjDtvzXr162U13zJgxJi4ursg6AFRdHD4GYKd169Z2z+vWratjx445PI7Q0FDbIdCLh+Uf53XXXSeLxWJ73qFDB/3444/KycnRtm3bZIxRdHS0/P39bY8NGzbop59+sr3Hy8urQP1FOXbsmI4cOaKuXbsW+voPP/ygiIgIRURE2Ia1aNFCNWrU0A8//GAbVr9+fQUEBNjNW4sWLeTm5mY3LP/8dujQocDzi8f773//W507d1ZYWJj8/f01adIkpaSk2F7ft2+frr32Wrtx5H8uSVdeeaXc3d1tz/Ovz/vvv1/vvPOOMjIylJ2drSVLluiee+4pdJkAqNo8XF0AgIrF09PT7rnFYlFubq4t5JiLzvPLf45bYeOwWCxFjrOkcnNz5e7urm+//dYu4EiSv7+/7f99fHzsguWl+Pj4XPJ1Y0yh48o/vLB5c3R+88a7efNmDRw4UFOnTlXPnj0VFBSkZcuW6eWXXy60/cW15VdcLX379pXVatWKFStktVqVmZmpv/zlL8XWCqDqoacQQInUrl1bknT06FHbsIsvOrlcmzdvLvC8SZMmcnd3V9u2bZWTk6Njx46pcePGdo+wsDCHphcQEKD69evr888/L/T1Fi1aKCUlRYcOHbIN27Nnj9LT09W8eXOHpnmxwua3WbNmkqSvvvpKUVFRmjhxotq1a6cmTZoUuGimadOm+uabb+yGbd26tdR1eHh4aMiQIVq4cKEWLlyogQMHytfXt9TjAVD50VMIoER8fHx03XXX6bnnnlP9+vX1+++/66mnnnLa+A8dOqSxY8fqgQce0LZt2zRnzhxbz1h0dLTuuusu3X333Xr55ZfVtm1b/f7771q7dq1atWqlm2++2aFpxsfHa8SIEapTp4569eql06dP66uvvtLo0aPVrVs3tW7dWnfddZdmzZql8+fPa+TIkYqNjVW7du0ue37ff/99tWvXTp07d9aSJUv0zTffaP78+ZKkxo0bKyUlRcuWLdM111yjjz76SCtWrLB7/+jRo3X//ferXbt26tixo9599119//33dofpS+q+++6zBd2vvvrqsucNQOVETyGAEluwYIGys7PVrl07PfLII3r22WedNu67775b586d07XXXqtRo0Zp9OjRGj58uO31hQsX6u6779a4cePUtGlT9evXT19//bXdOX+lNWTIEM2aNUvz5s3TlVdeqT59+ujHH3+UdOEw68qVK1WzZk3dcMMN6tatmxo2bKh33333sudVkqZOnaply5apdevWWrx4sZYsWaIWLVpIkm655RY9+uijeuihh9SmTRslJSVp0qRJdu+/6667NGHCBI0fP15XXXWVDh48qKFDh8rb27vUtTRp0kQdO3ZU06ZN1b59e6fMH4DKx2IKOwkFAFBmLBaLVqxYoVtvvdWp4+3evbvCwsL01ltvlep9xhg1a9ZMDzzwgMaOHevUmgBUHhw+BoBK6M8//9Rrr72mnj17yt3dXe+8847WrFmjxMTEUo3n2LFjeuutt/Trr79q2LBhZVQtgMqAUAigyrr4yuT8PvnkE11//fXlWI1zWSwWffzxx3r22WeVmZmppk2b6j//+Y+6detWqvGEhoaqVq1aSkhIUM2aNcuoWgCVAYePAVRZBw4cKPK1evXqFXtbGgCoTgiFAAAA4OpjAAAAEAoBAAAgQiEAAABEKAQAAIAIhQAAABChEAAAACIUAgAAQIRCAAAASPo/oy+gltdg7lcAAAAASUVORK5CYII=", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAn8AAAHGCAYAAAAFY+3bAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABPdUlEQVR4nO3deZyNdeP/8feZ7cxqmMEsmhn7zqgUoZA9S8gt6S6kRaSEW8mNUZZSSTepW1mTVPeNmzZGlrIVoZJSSoaYRmMZ6xgzn98f/eZ8ndnNnHFm5no9H4/z4FzXdT6fz7We93yu5diMMUYAAACwBA93NwAAAADXDuEPAADAQgh/AAAAFkL4AwAAsBDCHwAAgIUQ/gAAACyE8AcAAGAhhD8AAAALIfwBAABYiOXC3549exQcHKx//etf7m4KAADANXdV4W/hwoWy2WxOr0qVKqlNmzb68MMPC92IqlWrauDAgY73R48eVVxcnPbs2VPoMnPTpEkTrVixQuPGjdO2bdtcXn5JNHXqVK1cubLY67HZbHrssceKvZ686o+Li7umdQ4cOFCBgYEFmjan9n322Wdq2rSpAgICZLPZHOvpvffeU4MGDeTn5yebzVYs+0J+Bg4cqKpVqzoNs9lsWrhwYaHK2717t1q3bq3g4GDZbDbNnDlTUu7LoCB+++23IrXJXTKPpb/99ts1r7tNmzZq06bNNa8XV8ed20hWcXFxstls7m7GNbF06VLHsak45XR8vZa8CvOhBQsWqG7dujLGKDExUbNnz1b37t21atUqde/e/arLW7FihcqVK+d4f/ToUU2aNElVq1ZVkyZNCtPEPN1+++1688031a9fP+3cuVOVKlVyeR0lydSpU9WnTx/17NnT3U2xtG3btum6665zvDfGqG/fvqpdu7ZWrVqlgIAA1alTR8ePH9d9992nzp07a86cObLb7apdu7YbW+4aDzzwgM6dO6dly5apQoUKqlq1aq7LoKAiIiK0bds21ahRoxhbDlx7Xbt21bZt2xQREeHupljK0qVLtXfvXo0YMcLdTSlWhQp/DRs2VNOmTR3vO3furAoVKujdd98tVPi7/vrrC9OMIunXr5/69et3zeuFdTVv3tzp/dGjR3XixAn16tVL7dq1cwzfsmWL0tLS9Pe//12tW7fOs8zz58/L39+/WNrranv37tVDDz2kLl26OIb9/vvvOS6DgrLb7dmWa05K03ICJKlSpUplvmMC7uOSa/58fX3l4+Mjb29vp+EnTpzQ0KFDVaVKFfn4+Kh69eoaN26cUlNTnaa78rTvxo0bddNNN0mSBg0a5Di9fOXpsp07d6pHjx4KCQmRr6+vrr/+er3//vsFauukSZPUrFkzhYSEqFy5crrhhhs0b948GWPy/WzmKb4ff/xRnTp1UkBAgCIiIvT8889LkrZv365WrVopICBAtWvX1qJFi7KVsXfvXt15552qUKGCfH191aRJk2zT5dbdv3HjRtlsNm3cuNExbPfu3erWrZsqV64su92uyMhIde3aVUeOHJH012m6c+fOadGiRY5lmXnK5/jx4xo6dKjq16+vwMBAVa5cWbfffru++OKLbO1OTU3Vs88+q3r16snX11ehoaFq27attm7dmm3at99+W/Xq1ZO/v79iY2NzvCTg559/Vv/+/R3trlevnl577bU8l3+mlJQUPfTQQwoNDVVgYKA6d+6sn376Kdt0uXWrX80pjE8//VTt2rVTcHCw/P39Va9ePU2bNi3bdAcOHNAdd9yhwMBARUVFadSoUdm28yu347i4OEcv4FNPPSWbzebYD1q1aiVJuvvuu53WV+b2991336ljx44KCgpyBKZLly5p8uTJqlu3rux2uypVqqRBgwbp+PHjBZrPhQsXqk6dOo51sXjx4gJ97sCBAxo0aJBq1aolf39/ValSRd27d9d3333nVLbNZtPly5f1+uuvO+3TOS2DgpYr5XzaN3P97tq1S3369FGFChUcPYPGGM2ZM0dNmjSRn5+fKlSooD59+ujXX3/Nd16PHz+uhx9+WFFRUY5l3LJlS61bt85punXr1qldu3YqV66c/P391bJlS3322WcFWp7z589XbGysfH19FRISol69eumHH35wmiZzOyjINldQBd1+1q9frzZt2ig0NFR+fn6Kjo7WXXfdpfPnz+dbx9KlS3XLLbcoMDBQgYGBatKkiebNm1fo+S/scThze4yPj9egQYMUEhKigIAAde/ePdt2EB8frzvvvFPXXXedfH19VbNmTT3yyCP6888/s83f//73PzVu3Fh2u13Vq1fXq6++muOxJvPymPyOk7l9DxRk+yrotpqTjz76SE2aNJHdble1atX00ksv5Thdce9Lbdq0UcOGDfXFF1+oefPm8vPzU5UqVTR+/Hilp6c7lXc1x7+8tsM2bdroo48+0qFDh5wub8t0NfmhINt7YZdpft/7BWKuwoIFC4wks337dpOWlmYuXbpkDh8+bB5//HHj4eFhPv30U8e0Fy5cMI0bNzYBAQHmpZdeMmvXrjXjx483Xl5e5o477nAqNyYmxgwYMMAYY8zp06cd9fzzn/8027ZtM9u2bTOHDx82xhizfv164+PjY2699Vbz3nvvmU8//dQMHDjQSDILFizIdx4GDhxo5s2bZ+Lj4018fLx57rnnjJ+fn5k0aVK+nx0wYIDx8fEx9erVM6+++qqJj483gwYNMpLM2LFjTe3atc28efPMmjVrTLdu3Ywks3PnTsfnf/zxRxMUFGRq1KhhFi9ebD766CNzzz33GEnmhRdeyLacDx486FT/hg0bjCSzYcMGY4wxZ8+eNaGhoaZp06bm/fffN5s2bTLvvfeeGTJkiNm3b58xxpht27YZPz8/c8cddziW5ffff+9oz6OPPmqWLVtmNm7caD788EMzePBg4+Hh4ajDGGPS0tJM27ZtjZeXlxk9erT5+OOPzapVq8wzzzxj3n33Xcd0kkzVqlXNzTffbN5//33z8ccfmzZt2hgvLy/zyy+/OKb7/vvvTXBwsGnUqJFZvHixWbt2rRk1apTx8PAwcXFxea6DjIwM07ZtW2O3282UKVPM2rVrzcSJE0316tWNJDNx4kSn9RUTE5OtjIkTJ5qCbPpvvfWWsdlspk2bNmbp0qVm3bp1Zs6cOWbo0KFOdWRuEy+99JJZt26dmTBhgrHZbNm2qSvbd/jwYbN8+XIjyQwfPtxs27bN7Nq1yxw4cMC89tprRpKZOnWq0/oaMGCA8fb2NlWrVjXTpk0zn332mVmzZo1JT083nTt3NgEBAWbSpEkmPj7evPXWW6ZKlSqmfv365vz583nOZ+b2duedd5rVq1ebJUuWmJo1a5qoqKgcl9+VNm3aZEaNGmX+85//mE2bNpkVK1aYnj17Gj8/P/Pjjz8aY4xJSkoy27ZtM5JMnz59nPbpnJZBQcs1xpiDBw9m2/cz129MTIx56qmnTHx8vFm5cqUxxpiHHnrIeHt7m1GjRplPP/3ULF261NStW9eEhYWZxMTEPOe1U6dOplKlSmbu3Llm48aNZuXKlWbChAlm2bJljmnefvttY7PZTM+ePc3y5cvN6tWrTbdu3Yynp6dZt25dtmV+5T4+depUI8ncc8895qOPPjKLFy821atXN8HBweann35yTHc121xOWrdubVq3bu14X9Dt5+DBg8bX19d06NDBrFy50mzcuNG888475r777jMnT57Ms87x48cbSaZ3797mgw8+MGvXrjUzZsww48ePL9L8F+Y4nLnso6KizAMPPGA++eQTM3fuXFO5cmUTFRXlNC+vv/66mTZtmlm1apXZtGmTWbRokYmNjTV16tQxly5dckz3ySefGA8PD9OmTRuzYsUK88EHH5hmzZqZqlWrZjvWFPQ4mdM2UtDtqyDbak7WrVtnPD09TatWrczy5cvNBx98YG666SYTHR2dbT6Ke19q3bq1CQ0NNZGRkeZf//qXWbNmjXn88ceNJDNs2DDHdFdz/MtvO/z+++9Ny5YtTXh4uOM4tW3bNsfnC5ofCrK95/T9VJBlWpDv/YIoVPjL+rLb7WbOnDlO077xxhtGknn//fedhr/wwgtGklm7dq1j2JXhzxhjduzYkWuYq1u3rrn++utNWlqa0/Bu3bqZiIgIk56eXuD5SU9PN2lpaebZZ581oaGhJiMjI8/pBwwYYCSZ//73v45haWlpplKlSkaS44vLGGOSk5ONp6enGTlypGNYv379jN1uNwkJCU7ldunSxfj7+5tTp04ZYwoe/nbu3GkkOb7YchMQEOC0fHNz+fJlk5aWZtq1a2d69erlGL548WIjybz55pt5fl6SCQsLMykpKY5hiYmJxsPDw0ybNs0xrFOnTua6664zp0+fdvr8Y489Znx9fc2JEydyreOTTz4xksyrr77qNHzKlCkuDX9nzpwx5cqVM61atcpzu8jcJrJu53fccYepU6eO07Cs7csMLi+++KLTdJnr+YMPPsixrvnz5zsNf/fdd7Ntl8b8336Udd+8Unp6uomMjDQ33HCD03z+9ttvxtvbO9/wl9Xly5fNpUuXTK1atcyTTz7pNC7rQduY3JdBQcvNK/xNmDDBqYzMAPryyy87DT98+LDx8/MzY8aMybMNgYGBZsSIEbmOP3funAkJCTHdu3d3Gp6enm5iY2PNzTff7BiWdR8/efKk44+0KyUkJBi73W769+/vGHY121xOsoa/gm4///nPf4wks2fPnnzruNKvv/5qPD09zb333pvrNIWZ/8IehzOX/ZXHOGOM2bJli5FkJk+enGMbMzIyTFpa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AwcOOH2mQoUKstlsjnCWXx2FdTXbV37bak4y56Mgx4Li3pcy5bVMM7eZgm6/BdkO81LQ/FDYeq5mmRblez+Ty37hI/MhtJkz3q5dO509ezbbgsm8izCvxzpkzmTWv4Lq1KmjWrVq6ZtvvnH0PGZ95fVFZ7PZ5OXlJU9PT8ewCxcu6O233y7wfBZFu3bttH79ekfYy7R48WL5+/s7dujMOx6//fZbp+lWrVqVa9k2m02xsbF65ZVXVL58ee3atcsxLre/KG02W7aN7Ntvv812+rlLly66ePGiSx6k6+/vr7Zt22r37t1q3Lhxjuswp7+KM7Vt21aS9M477zgNX7p0abZpq1atqqSkJKcDyKVLl7RmzZp829miRQsFBwfrjTfeKNCd4O7UrVs3JScnKz09PcflmdcfRHXq1FFERITeffddp/k8dOhQjndyZ5XTNvTRRx/p999/L/wMFVO53bp1kzFGv//+e47LqVGjRgUuKzo6Wo899pg6dOjg2Ndatmyp8uXLa9++fbken648LXilW265RX5+flqyZInT8CNHjjguFykuhdl+PD091axZM8cd+lceb7Lq2LGjPD09s/2ReSV3zH/WY8jWrVt16NAhx931mX88ZN0O//3vfzu9DwgIUNOmTbVy5UpdunTJMfzs2bNF+vGDrAq7feW0reYkICBAN998s5YvX+7UU3rmzBmtXr3aadri3peurDvr997SpUvl4eGh2267zdGWgmy/BdkOpby/LwuSHwpaT1aFWaZ5fe/np1A9f3v37tXly5cl/dX1unz5csXHx6tXr16OXpv7779fr732mgYMGKDffvtNjRo10ubNmzV16lTdcccdat++fa7l16hRQ35+fnrnnXdUr149BQYGKjIyUpGRkfr3v/+tLl26qFOnTho4cKCqVKmiEydO6IcfftCuXbv0wQcf5Fpu165dNWPGDPXv318PP/ywkpOT9dJLL+X7V4qrTJw4UR9++KHatm2rCRMmKCQkRO+8844++ugjTZ8+XcHBwZKkm266SXXq1NHo0aN1+fJlVahQQStWrNDmzZudyvvwww81Z84c9ezZU9WrV5cxRsuXL9epU6fUoUMHx3SNGjXSxo0btXr1akVERCgoKEh16tRRt27d9Nxzz2nixIlq3bq19u/fr2effVbVqlVzrF9Juueee7RgwQINGTJE+/fvV9u2bZWRkaEvv/xS9erVu+rnJb766qtq1aqVbr31Vj366KOqWrWqzpw5owMHDmj16tVav359rp/t2LGjbrvtNo0ZM0bnzp1T06ZNtWXLlhwD/N13360JEyaoX79++sc//qGLFy/qX//6V7bHBOQkMDBQL7/8sh588EG1b99eDz30kMLCwnTgwAF98803Tte3ulu/fv30zjvv6I477tATTzyhm2++Wd7e3jpy5Ig2bNigO++8U7169crxsx4eHnruuef04IMPqlevXnrooYd06tQpxcXFFei0b7du3bRw4ULVrVtXjRs31tdff60XX3yx0KdWirPcli1b6uGHH9agQYO0c+dO3XbbbQoICNCxY8e0efNmNWrUSI8++miOnz19+rTatm2r/v37q27dugoKCtKOHTv06aefOs5CBAYGatasWRowYIBOnDihPn36qHLlyjp+/Li++eYbHT9+PNcvhPLly2v8+PF65plndP/99+uee+5RcnKyJk2aJF9fX02cOLHQ852fgm4/b7zxhtavX6+uXbsqOjpaFy9e1Pz58yUpz+N51apV9cwzz+i5557ThQsXdM899yg4OFj79u3Tn3/+qUmTJrll/nfu3KkHH3xQf/vb33T48GGNGzdOVapUcVxCVLduXdWoUUNPP/20jDEKCQnR6tWrFR8fn62sZ599Vl27dlWnTp30xBNPKD09XS+++KICAwNzPdV/tQq6fRVkW83Nc889p86dO6tDhw4aNWqU0tPT9cILLyggIMBpPop7X8oUGhqqRx99VAkJCapdu7Y+/vhjvfnmm3r00UcVHR0tqeDbb0G2Q+mv78vly5fr9ddf14033igPDw81bdq0wPmhoPVkVdBlWtDv/Xxdzd0hOd3tGxwcbJo0aWJmzJhhLl686DR9cnKyGTJkiImIiDBeXl4mJibGjB07Ntt0We/2NeavO3jq1q1rvL29s90l+c0335i+ffuaypUrG29vbxMeHm5uv/1288Ybb+Q7D/Pnzzd16tQxdrvdVK9e3UybNs3Mmzcvx7trsxowYIAJCAjINrx169amQYMG2YbHxMSYrl27Og377rvvTPfu3U1wcLDx8fExsbGxOd7V/NNPP5mOHTuacuXKmUqVKpnhw4ebjz76yOlu3x9//NHcc889pkaNGsbPz88EBwebm2++2SxcuNCprD179piWLVsaf39/I8lx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sq6//nr9+eefWr9+vRo1aqQ77rijUHXGxcVpyJAhqly5srp06aIzZ85oy5YtGj58uNq3b6/GjRvr3nvv1cyZM3X58mUNHTpUrVu3VtOmTYs8vx988IGaNm2qVq1a6Z133tFXX32lefPmSZJq1qyphIQELVu2TDfddJM++ugjrVixwunzw4cP10MPPaSmTZuqRYsWeu+99/Ttt986nV4vqAcffNARaLds2VLkeQNQOtHzByCb+fPnKy0tTU2bNtUTTzyhyZMnu6zs+++/XxcuXNDNN9+sYcOGafjw4Xr44Ycd4xcsWKD7779fo0aNUp06ddSjRw99+eWXTtfkXa0BAwZo5syZmjNnjho0aKBu3brp559/lvTX6dGVK1eqQoUKuu2229S+fXtVr15d7733XpHnVZImTZqkZcuWqXHjxlq0aJHeeecd1a9fX5J055136sknn9Rjjz2mJk2aaOvWrRo/frzT5++9916NHTtWo0eP1g033KCDBw9q4MCB8vX1veq21KpVSy1atFCdOnXUrFkzl8wfgNLHZnK6eAQAUGQ2m00rVqxQz549XVpuhw4dFB4errfffvuqPmeMUd26dfXII49o5MiRLm0TgNKD074AUIKdP39eb7zxhjp16iRPT0+9++67WrduneLj46+qnKSkJL399tv6/fffNWjQoGJqLYDSgPAHoNS78k7grD755BPdeuut17A1rmWz2fTxxx9r8uTJSk1NVZ06dfTf//5X7du3v6pywsLCVLFiRc2dO1cVKlQoptYCKA047Qug1Dtw4ECu46pUqZLv414AwEoIfwAAABbC3b4AAAAWQvgDAACwEMIfAACAhRD+AAAALITwBwAAYCGEPwAAAAsh/AEAAFgI4Q8AAMBC/h9soRb3SDv+HAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -6469,13 +6578,32 @@ "source": [ "#repartition Chiffre d'affaire selon les compagnie de spectacle\n", "\n", - "sns.boxplot(data=products_purchased_reduced_spectacle, y=\"total_amount\",x=\"number_compagny\",showfliers=False,showmeans=True)\n", - "plt.title(\"Boite à moustache du chiffre d'affaire selon les compagnies de spectacles\")" + "# Filtrer les données pour inclure uniquement les valeurs positives de total_amount et exclusion des valeur aberrantes\n", + "filtered_products_purchased_reduced_spectacle = products_purchased_reduced_spectacle[(products_purchased_reduced_spectacle['total_amount'] > 0) & (products_purchased_reduced_spectacle['total_amount'] <= 255)]\n", + "\n", + "# Créer le graphique en utilisant les données filtrées\n", + "sns.boxplot(data=filtered_products_purchased_reduced_spectacle, y=\"total_amount\", x=\"number_compagny\", showfliers=False, showmeans=True)\n", + "\n", + "# Titre du graphique\n", + "plt.title(\"Boite à moustache du chiffre d'affaire selon les compagnies de spectacles\")\n", + "\n", + "# Afficher le graphique\n", + "plt.show()\n" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, + "id": "20ce4a40-8f0d-40e8-91d3-b923670326cb", + "metadata": {}, + "outputs": [], + "source": [ + "#reprise du graphe de la repartition Chiffre d'affaire selon les compagnie de spectacle sur la base de train\n" + ] + }, + { + "cell_type": "code", + "execution_count": 44, "id": "76e08ece-0b58-4b3a-abca-53e30ccc907b", "metadata": {}, "outputs": [ @@ -6483,11 +6611,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "Statistique F : 0.6726212699019267\n", - "Valeur de p : 0.6108808380730608\n", + "Statistique F : 317.1792172580724\n", + "Valeur de p : 3.665389608154993e-273\n", "Nombre de degrés de liberté entre les groupes : 4\n", - "Nombre de degrés de liberté à l'intérieur des groupes : 764875\n", - "Il n'y a pas de différences significatives entre les entreprises .\n" + "Nombre de degrés de liberté à l'intérieur des groupes : 670581\n", + "Il y a des différences significatives entre au moins une des entrepries .\n" ] } ], @@ -6500,8 +6628,8 @@ "groupes = []\n", "\n", "# Parcourez chaque modalité de la variable catégorielle et divisez les données en groupes\n", - "for modalite in products_purchased_reduced_spectacle['number_compagny'].unique():\n", - " groupe = products_purchased_reduced_spectacle[products_purchased_reduced_spectacle['number_compagny'] == modalite]['total_amount']\n", + "for modalite in filtered_products_purchased_reduced_spectacle['number_compagny'].unique():\n", + " groupe = filtered_products_purchased_reduced_spectacle[filtered_products_purchased_reduced_spectacle['number_compagny'] == modalite]['total_amount']\n", " groupes.append(groupe)\n", "\n", "# Effectuez le test ANOVA\n", @@ -6534,7 +6662,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 45, "id": "aacf2c34-f7ea-4d6e-935b-c5db01f03bbe", "metadata": {}, "outputs": [ @@ -6614,7 +6742,7 @@ "4 14 335741 125638.0 37.421107" ] }, - "execution_count": 54, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" }