diff --git "a/Customer churing.ipynb" "b/Customer churing.ipynb" new file mode 100644--- /dev/null +++ "b/Customer churing.ipynb" @@ -0,0 +1,12986 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "2781fb16-5654-4747-b8e7-53a0187f0f77", + "metadata": {}, + "source": [ + "### Problem Statement:\n", + "Using the provided customer churn dataset, the goal is to develop a predictive model to identify factors that influence customer churn and to predict which customers are likely to churn in the future. This involves exploring the data, identifying relevant features, and employing machine learning techniques to build a model that can accurately predict churn.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "a3d097ef-bf25-4b5d-9781-4ddf519421a8", + "metadata": {}, + "source": [ + "### Importing Dependencies" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "66c52684", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: numpy in c:\\programdata\\anaconda3\\lib\\site-packages (1.26.4)\n", + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (2.2.2)\n", + "Requirement already satisfied: numpy>=1.26.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.26.4)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in c:\\users\\india\\appdata\\roaming\\python\\python312\\site-packages (from pandas) (2.9.0.post0)\n", + "Requirement already satisfied: pytz>=2020.1 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2024.1)\n", + "Requirement already satisfied: tzdata>=2022.7 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2023.3)\n", + "Requirement already satisfied: six>=1.5 in c:\\users\\india\\appdata\\roaming\\python\\python312\\site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\n", + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: seaborn in c:\\programdata\\anaconda3\\lib\\site-packages (0.13.2)\n", + "Requirement already satisfied: numpy!=1.24.0,>=1.20 in c:\\programdata\\anaconda3\\lib\\site-packages (from seaborn) (1.26.4)\n", + "Requirement already satisfied: pandas>=1.2 in c:\\programdata\\anaconda3\\lib\\site-packages (from seaborn) (2.2.2)\n", + "Requirement already satisfied: matplotlib!=3.6.1,>=3.4 in c:\\programdata\\anaconda3\\lib\\site-packages (from seaborn) (3.8.4)\n", + "Requirement already satisfied: contourpy>=1.0.1 in c:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.2.0)\n", + "Requirement already satisfied: cycler>=0.10 in c:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (0.11.0)\n", + "Requirement already satisfied: fonttools>=4.22.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (4.51.0)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in c:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.4.4)\n", + "Requirement already satisfied: packaging>=20.0 in c:\\users\\india\\appdata\\roaming\\python\\python312\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (24.1)\n", + "Requirement already satisfied: pillow>=8 in c:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (10.3.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in c:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (3.0.9)\n", + "Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\india\\appdata\\roaming\\python\\python312\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (2.9.0.post0)\n", + "Requirement already satisfied: pytz>=2020.1 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas>=1.2->seaborn) (2024.1)\n", + "Requirement already satisfied: tzdata>=2022.7 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas>=1.2->seaborn) (2023.3)\n", + "Requirement already satisfied: six>=1.5 in c:\\users\\india\\appdata\\roaming\\python\\python312\\site-packages (from python-dateutil>=2.7->matplotlib!=3.6.1,>=3.4->seaborn) (1.16.0)\n", + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: matplotlib in c:\\programdata\\anaconda3\\lib\\site-packages (3.8.4)\n", + "Requirement already satisfied: contourpy>=1.0.1 in c:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib) (1.2.0)\n", + "Requirement already satisfied: cycler>=0.10 in c:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib) (0.11.0)\n", + "Requirement already satisfied: fonttools>=4.22.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib) (4.51.0)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in c:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib) (1.4.4)\n", + "Requirement already satisfied: numpy>=1.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib) (1.26.4)\n", + "Requirement already satisfied: packaging>=20.0 in c:\\users\\india\\appdata\\roaming\\python\\python312\\site-packages (from matplotlib) (24.1)\n", + "Requirement already satisfied: pillow>=8 in c:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib) (10.3.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in c:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib) (3.0.9)\n", + "Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\india\\appdata\\roaming\\python\\python312\\site-packages (from matplotlib) (2.9.0.post0)\n", + "Requirement already satisfied: six>=1.5 in c:\\users\\india\\appdata\\roaming\\python\\python312\\site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n" + ] + } + ], + "source": [ + "! pip install numpy\n", + "! pip install pandas\n", + "! pip install seaborn\n", + "! pip install matplotlib" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "20dd8afa-1fae-4a2d-9bd2-f9cf7ebe2eea", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "2c01f71e-4588-45c7-8de8-e8e87f00d2f2", + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('WA_Fn-UseC_-Telco-Customer-Churn.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "01c37644-cdcf-4342-bec7-700d1192d63f", + "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", + "
customerIDgenderSeniorCitizenPartnerDependentstenurePhoneServiceMultipleLinesInternetServiceOnlineSecurity...DeviceProtectionTechSupportStreamingTVStreamingMoviesContractPaperlessBillingPaymentMethodMonthlyChargesTotalChargesChurn
07590-VHVEGFemale0YesNo1NoNo phone serviceDSLNo...NoNoNoNoMonth-to-monthYesElectronic check29.8529.85No
15575-GNVDEMale0NoNo34YesNoDSLYes...YesNoNoNoOne yearNoMailed check56.951889.5No
23668-QPYBKMale0NoNo2YesNoDSLYes...NoNoNoNoMonth-to-monthYesMailed check53.85108.15Yes
37795-CFOCWMale0NoNo45NoNo phone serviceDSLYes...YesYesNoNoOne yearNoBank transfer (automatic)42.301840.75No
49237-HQITUFemale0NoNo2YesNoFiber opticNo...NoNoNoNoMonth-to-monthYesElectronic check70.70151.65Yes
\n", + "

5 rows × 21 columns

\n", + "
" + ], + "text/plain": [ + " customerID gender SeniorCitizen Partner Dependents tenure PhoneService \\\n", + "0 7590-VHVEG Female 0 Yes No 1 No \n", + "1 5575-GNVDE Male 0 No No 34 Yes \n", + "2 3668-QPYBK Male 0 No No 2 Yes \n", + "3 7795-CFOCW Male 0 No No 45 No \n", + "4 9237-HQITU Female 0 No No 2 Yes \n", + "\n", + " MultipleLines InternetService OnlineSecurity ... DeviceProtection \\\n", + "0 No phone service DSL No ... No \n", + "1 No DSL Yes ... Yes \n", + "2 No DSL Yes ... No \n", + "3 No phone service DSL Yes ... Yes \n", + "4 No Fiber optic No ... No \n", + "\n", + " TechSupport StreamingTV StreamingMovies Contract PaperlessBilling \\\n", + "0 No No No Month-to-month Yes \n", + "1 No No No One year No \n", + "2 No No No Month-to-month Yes \n", + "3 Yes No No One year No \n", + "4 No No No Month-to-month Yes \n", + "\n", + " PaymentMethod MonthlyCharges TotalCharges Churn \n", + "0 Electronic check 29.85 29.85 No \n", + "1 Mailed check 56.95 1889.5 No \n", + "2 Mailed check 53.85 108.15 Yes \n", + "3 Bank transfer (automatic) 42.30 1840.75 No \n", + "4 Electronic check 70.70 151.65 Yes \n", + "\n", + "[5 rows x 21 columns]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "markdown", + "id": "ffe72793-f77c-452b-9c4a-f9060b2f72c3", + "metadata": {}, + "source": [ + "### Exploratry Data Analysis" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "6bf63d8c-e4d8-4609-a4e9-d66ac85022d4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 7043 entries, 0 to 7042\n", + "Data columns (total 21 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 customerID 7043 non-null object \n", + " 1 gender 7043 non-null object \n", + " 2 SeniorCitizen 7043 non-null int64 \n", + " 3 Partner 7043 non-null object \n", + " 4 Dependents 7043 non-null object \n", + " 5 tenure 7043 non-null int64 \n", + " 6 PhoneService 7043 non-null object \n", + " 7 MultipleLines 7043 non-null object \n", + " 8 InternetService 7043 non-null object \n", + " 9 OnlineSecurity 7043 non-null object \n", + " 10 OnlineBackup 7043 non-null object \n", + " 11 DeviceProtection 7043 non-null object \n", + " 12 TechSupport 7043 non-null object \n", + " 13 StreamingTV 7043 non-null object \n", + " 14 StreamingMovies 7043 non-null object \n", + " 15 Contract 7043 non-null object \n", + " 16 PaperlessBilling 7043 non-null object \n", + " 17 PaymentMethod 7043 non-null object \n", + " 18 MonthlyCharges 7043 non-null float64\n", + " 19 TotalCharges 7043 non-null object \n", + " 20 Churn 7043 non-null object \n", + "dtypes: float64(1), int64(2), object(18)\n", + "memory usage: 1.1+ MB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "5609c0be-fc1b-4a18-ac36-ff95fcfb43cb", + "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", + "
SeniorCitizentenureMonthlyCharges
count7043.0000007043.0000007043.000000
mean0.16214732.37114964.761692
std0.36861224.55948130.090047
min0.0000000.00000018.250000
25%0.0000009.00000035.500000
50%0.00000029.00000070.350000
75%0.00000055.00000089.850000
max1.00000072.000000118.750000
\n", + "
" + ], + "text/plain": [ + " SeniorCitizen tenure MonthlyCharges\n", + "count 7043.000000 7043.000000 7043.000000\n", + "mean 0.162147 32.371149 64.761692\n", + "std 0.368612 24.559481 30.090047\n", + "min 0.000000 0.000000 18.250000\n", + "25% 0.000000 9.000000 35.500000\n", + "50% 0.000000 29.000000 70.350000\n", + "75% 0.000000 55.000000 89.850000\n", + "max 1.000000 72.000000 118.750000" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "e9805aed-f4e4-4c6c-b8bb-0081c8601df7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(7043, 21)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "b337d290-09c0-4abf-bfb8-894a87cf311c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['customerID', 'gender', 'SeniorCitizen', 'Partner', 'Dependents',\n", + " 'tenure', 'PhoneService', 'MultipleLines', 'InternetService',\n", + " 'OnlineSecurity', 'OnlineBackup', 'DeviceProtection', 'TechSupport',\n", + " 'StreamingTV', 'StreamingMovies', 'Contract', 'PaperlessBilling',\n", + " 'PaymentMethod', 'MonthlyCharges', 'TotalCharges', 'Churn'],\n", + " dtype='object')" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "3a91e639-04a6-4d9c-8b06-62b84161357b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "customerID 0\n", + "gender 0\n", + "SeniorCitizen 0\n", + "Partner 0\n", + "Dependents 0\n", + "tenure 0\n", + "PhoneService 0\n", + "MultipleLines 0\n", + "InternetService 0\n", + "OnlineSecurity 0\n", + "OnlineBackup 0\n", + "DeviceProtection 0\n", + "TechSupport 0\n", + "StreamingTV 0\n", + "StreamingMovies 0\n", + "Contract 0\n", + "PaperlessBilling 0\n", + "PaymentMethod 0\n", + "MonthlyCharges 0\n", + "TotalCharges 0\n", + "Churn 0\n", + "dtype: int64" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "ed6c8bbf-67ad-4c12-95c1-c98fb1ed69a5", + "metadata": {}, + "outputs": [], + "source": [ + "df['TotalCharges'] = pd.to_numeric(df.TotalCharges, errors='coerce')" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "eb77d4d0-4ba6-4929-83a2-60c8941d1b57", + "metadata": { + "scrolled": true + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
customerIDgenderSeniorCitizenPartnerDependentstenurePhoneServiceMultipleLinesInternetServiceOnlineSecurity...DeviceProtectionTechSupportStreamingTVStreamingMoviesContractPaperlessBillingPaymentMethodMonthlyChargesTotalChargesChurn
4884472-LVYGIFemale0YesYes0NoNo phone serviceDSLYes...YesYesYesNoTwo yearYesBank transfer (automatic)52.55NaNNo
7533115-CZMZDMale0NoYes0YesNoNoNo internet service...No internet serviceNo internet serviceNo internet serviceNo internet serviceTwo yearNoMailed check20.25NaNNo
9365709-LVOEQFemale0YesYes0YesNoDSLYes...YesNoYesYesTwo yearNoMailed check80.85NaNNo
10824367-NUYAOMale0YesYes0YesYesNoNo internet service...No internet serviceNo internet serviceNo internet serviceNo internet serviceTwo yearNoMailed check25.75NaNNo
13401371-DWPAZFemale0YesYes0NoNo phone serviceDSLYes...YesYesYesNoTwo yearNoCredit card (automatic)56.05NaNNo
33317644-OMVMYMale0YesYes0YesNoNoNo internet service...No internet serviceNo internet serviceNo internet serviceNo internet serviceTwo yearNoMailed check19.85NaNNo
38263213-VVOLGMale0YesYes0YesYesNoNo internet service...No internet serviceNo internet serviceNo internet serviceNo internet serviceTwo yearNoMailed check25.35NaNNo
43802520-SGTTAFemale0YesYes0YesNoNoNo internet service...No internet serviceNo internet serviceNo internet serviceNo internet serviceTwo yearNoMailed check20.00NaNNo
52182923-ARZLGMale0YesYes0YesNoNoNo internet service...No internet serviceNo internet serviceNo internet serviceNo internet serviceOne yearYesMailed check19.70NaNNo
66704075-WKNIUFemale0YesYes0YesYesDSLNo...YesYesYesNoTwo yearNoMailed check73.35NaNNo
67542775-SEFEEMale0NoYes0YesYesDSLYes...NoYesNoNoTwo yearYesBank transfer (automatic)61.90NaNNo
\n", + "

11 rows × 21 columns

\n", + "
" + ], + "text/plain": [ + " customerID gender SeniorCitizen Partner Dependents tenure \\\n", + "488 4472-LVYGI Female 0 Yes Yes 0 \n", + "753 3115-CZMZD Male 0 No Yes 0 \n", + "936 5709-LVOEQ Female 0 Yes Yes 0 \n", + "1082 4367-NUYAO Male 0 Yes Yes 0 \n", + "1340 1371-DWPAZ Female 0 Yes Yes 0 \n", + "3331 7644-OMVMY Male 0 Yes Yes 0 \n", + "3826 3213-VVOLG Male 0 Yes Yes 0 \n", + "4380 2520-SGTTA Female 0 Yes Yes 0 \n", + "5218 2923-ARZLG Male 0 Yes Yes 0 \n", + "6670 4075-WKNIU Female 0 Yes Yes 0 \n", + "6754 2775-SEFEE Male 0 No Yes 0 \n", + "\n", + " PhoneService MultipleLines InternetService OnlineSecurity ... \\\n", + "488 No No phone service DSL Yes ... \n", + "753 Yes No No No internet service ... \n", + "936 Yes No DSL Yes ... \n", + "1082 Yes Yes No No internet service ... \n", + "1340 No No phone service DSL Yes ... \n", + "3331 Yes No No No internet service ... \n", + "3826 Yes Yes No No internet service ... \n", + "4380 Yes No No No internet service ... \n", + "5218 Yes No No No internet service ... \n", + "6670 Yes Yes DSL No ... \n", + "6754 Yes Yes DSL Yes ... \n", + "\n", + " DeviceProtection TechSupport StreamingTV \\\n", + "488 Yes Yes Yes \n", + "753 No internet service No internet service No internet service \n", + "936 Yes No Yes \n", + "1082 No internet service No internet service No internet service \n", + "1340 Yes Yes Yes \n", + "3331 No internet service No internet service No internet service \n", + "3826 No internet service No internet service No internet service \n", + "4380 No internet service No internet service No internet service \n", + "5218 No internet service No internet service No internet service \n", + "6670 Yes Yes Yes \n", + "6754 No Yes No \n", + "\n", + " StreamingMovies Contract PaperlessBilling \\\n", + "488 No Two year Yes \n", + "753 No internet service Two year No \n", + "936 Yes Two year No \n", + "1082 No internet service Two year No \n", + "1340 No Two year No \n", + "3331 No internet service Two year No \n", + "3826 No internet service Two year No \n", + "4380 No internet service Two year No \n", + "5218 No internet service One year Yes \n", + "6670 No Two year No \n", + "6754 No Two year Yes \n", + "\n", + " PaymentMethod MonthlyCharges TotalCharges Churn \n", + "488 Bank transfer (automatic) 52.55 NaN No \n", + "753 Mailed check 20.25 NaN No \n", + "936 Mailed check 80.85 NaN No \n", + "1082 Mailed check 25.75 NaN No \n", + "1340 Credit card (automatic) 56.05 NaN No \n", + "3331 Mailed check 19.85 NaN No \n", + "3826 Mailed check 25.35 NaN No \n", + "4380 Mailed check 20.00 NaN No \n", + "5218 Mailed check 19.70 NaN No \n", + "6670 Mailed check 73.35 NaN No \n", + "6754 Bank transfer (automatic) 61.90 NaN No \n", + "\n", + "[11 rows x 21 columns]" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[np.isnan(df['TotalCharges'])]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6031b81c-883d-46fe-804b-a44d1b823497", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "84869696-9d91-482b-b021-483e6804f389", + "metadata": {}, + "outputs": [], + "source": [ + "df = df.fillna(df['TotalCharges'].mean())#replace with mean" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "f36d5e6c-7cb2-418a-b372-04508702c688", + "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", + "
customerIDgenderSeniorCitizenPartnerDependentstenurePhoneServiceMultipleLinesInternetServiceOnlineSecurity...DeviceProtectionTechSupportStreamingTVStreamingMoviesContractPaperlessBillingPaymentMethodMonthlyChargesTotalChargesChurn
07590-VHVEGFemale0YesNo1NoNo phone serviceDSLNo...NoNoNoNoMonth-to-monthYesElectronic check29.8529.85No
15575-GNVDEMale0NoNo34YesNoDSLYes...YesNoNoNoOne yearNoMailed check56.951889.50No
23668-QPYBKMale0NoNo2YesNoDSLYes...NoNoNoNoMonth-to-monthYesMailed check53.85108.15Yes
37795-CFOCWMale0NoNo45NoNo phone serviceDSLYes...YesYesNoNoOne yearNoBank transfer (automatic)42.301840.75No
49237-HQITUFemale0NoNo2YesNoFiber opticNo...NoNoNoNoMonth-to-monthYesElectronic check70.70151.65Yes
\n", + "

5 rows × 21 columns

\n", + "
" + ], + "text/plain": [ + " customerID gender SeniorCitizen Partner Dependents tenure PhoneService \\\n", + "0 7590-VHVEG Female 0 Yes No 1 No \n", + "1 5575-GNVDE Male 0 No No 34 Yes \n", + "2 3668-QPYBK Male 0 No No 2 Yes \n", + "3 7795-CFOCW Male 0 No No 45 No \n", + "4 9237-HQITU Female 0 No No 2 Yes \n", + "\n", + " MultipleLines InternetService OnlineSecurity ... DeviceProtection \\\n", + "0 No phone service DSL No ... No \n", + "1 No DSL Yes ... Yes \n", + "2 No DSL Yes ... No \n", + "3 No phone service DSL Yes ... Yes \n", + "4 No Fiber optic No ... No \n", + "\n", + " TechSupport StreamingTV StreamingMovies Contract PaperlessBilling \\\n", + "0 No No No Month-to-month Yes \n", + "1 No No No One year No \n", + "2 No No No Month-to-month Yes \n", + "3 Yes No No One year No \n", + "4 No No No Month-to-month Yes \n", + "\n", + " PaymentMethod MonthlyCharges TotalCharges Churn \n", + "0 Electronic check 29.85 29.85 No \n", + "1 Mailed check 56.95 1889.50 No \n", + "2 Mailed check 53.85 108.15 Yes \n", + "3 Bank transfer (automatic) 42.30 1840.75 No \n", + "4 Electronic check 70.70 151.65 Yes \n", + "\n", + "[5 rows x 21 columns]" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "9ef59db6-2fd5-4d76-95ee-4bbed304e715", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "customerID 0\n", + "gender 0\n", + "SeniorCitizen 0\n", + "Partner 0\n", + "Dependents 0\n", + "tenure 0\n", + "PhoneService 0\n", + "MultipleLines 0\n", + "InternetService 0\n", + "OnlineSecurity 0\n", + "OnlineBackup 0\n", + "DeviceProtection 0\n", + "TechSupport 0\n", + "StreamingTV 0\n", + "StreamingMovies 0\n", + "Contract 0\n", + "PaperlessBilling 0\n", + "PaymentMethod 0\n", + "MonthlyCharges 0\n", + "TotalCharges 0\n", + "Churn 0\n", + "dtype: int64" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "7c2bd4a3-f1c8-4d6f-968d-4d21590f35c5", + "metadata": {}, + "outputs": [], + "source": [ + "df.drop(columns='customerID',inplace=True)#Drop useless feature" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "a80c9faa-0b8e-41aa-9453-8c3d992c81c9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index([488, 753, 936, 1082, 1340, 3331, 3826, 4380, 5218, 6670, 6754], dtype='int64')" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[df['tenure'] == 0 ].index" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "b1a95d4f-81f2-4830-9624-022c6e5d63c1", + "metadata": {}, + "outputs": [], + "source": [ + "df.drop(labels=df[df['tenure'] == 0 ].index,axis=0,inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "5f3d9557-408b-4659-b8d7-ea0bf9464974", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index([], dtype='int64')" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[df['tenure'] == 0 ].index" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "899da648-cf50-4c07-9681-c79616ad0892", + "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", + "
genderSeniorCitizenPartnerDependentstenurePhoneServiceMultipleLinesInternetServiceOnlineSecurityOnlineBackupDeviceProtectionTechSupportStreamingTVStreamingMoviesContractPaperlessBillingPaymentMethodMonthlyChargesTotalChargesChurn
0Female0YesNo1NoNo phone serviceDSLNoYesNoNoNoNoMonth-to-monthYesElectronic check29.8529.85No
1Male0NoNo34YesNoDSLYesNoYesNoNoNoOne yearNoMailed check56.951889.50No
2Male0NoNo2YesNoDSLYesYesNoNoNoNoMonth-to-monthYesMailed check53.85108.15Yes
3Male0NoNo45NoNo phone serviceDSLYesNoYesYesNoNoOne yearNoBank transfer (automatic)42.301840.75No
4Female0NoNo2YesNoFiber opticNoNoNoNoNoNoMonth-to-monthYesElectronic check70.70151.65Yes
\n", + "
" + ], + "text/plain": [ + " gender SeniorCitizen Partner Dependents tenure PhoneService \\\n", + "0 Female 0 Yes No 1 No \n", + "1 Male 0 No No 34 Yes \n", + "2 Male 0 No No 2 Yes \n", + "3 Male 0 No No 45 No \n", + "4 Female 0 No No 2 Yes \n", + "\n", + " MultipleLines InternetService OnlineSecurity OnlineBackup \\\n", + "0 No phone service DSL No Yes \n", + "1 No DSL Yes No \n", + "2 No DSL Yes Yes \n", + "3 No phone service DSL Yes No \n", + "4 No Fiber optic No No \n", + "\n", + " DeviceProtection TechSupport StreamingTV StreamingMovies Contract \\\n", + "0 No No No No Month-to-month \n", + "1 Yes No No No One year \n", + "2 No No No No Month-to-month \n", + "3 Yes Yes No No One year \n", + "4 No No No No Month-to-month \n", + "\n", + " PaperlessBilling PaymentMethod MonthlyCharges TotalCharges \\\n", + "0 Yes Electronic check 29.85 29.85 \n", + "1 No Mailed check 56.95 1889.50 \n", + "2 Yes Mailed check 53.85 108.15 \n", + "3 No Bank transfer (automatic) 42.30 1840.75 \n", + "4 Yes Electronic check 70.70 151.65 \n", + "\n", + " Churn \n", + "0 No \n", + "1 No \n", + "2 Yes \n", + "3 No \n", + "4 Yes " + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "740c969c-d3fc-4c03-8705-01b3d6d5c7c3", + "metadata": {}, + "outputs": [], + "source": [ + "df['SeniorCitizen']=df['SeniorCitizen'].map({0: \"NO\",1: 'Yes'})#mapping values" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "c936cd8c-86b3-4787-acf4-ebbc2ae19eeb", + "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", + "
genderSeniorCitizenPartnerDependentstenurePhoneServiceMultipleLinesInternetServiceOnlineSecurityOnlineBackupDeviceProtectionTechSupportStreamingTVStreamingMoviesContractPaperlessBillingPaymentMethodMonthlyChargesTotalChargesChurn
0FemaleNOYesNo1NoNo phone serviceDSLNoYesNoNoNoNoMonth-to-monthYesElectronic check29.8529.85No
1MaleNONoNo34YesNoDSLYesNoYesNoNoNoOne yearNoMailed check56.951889.50No
2MaleNONoNo2YesNoDSLYesYesNoNoNoNoMonth-to-monthYesMailed check53.85108.15Yes
3MaleNONoNo45NoNo phone serviceDSLYesNoYesYesNoNoOne yearNoBank transfer (automatic)42.301840.75No
4FemaleNONoNo2YesNoFiber opticNoNoNoNoNoNoMonth-to-monthYesElectronic check70.70151.65Yes
\n", + "
" + ], + "text/plain": [ + " gender SeniorCitizen Partner Dependents tenure PhoneService \\\n", + "0 Female NO Yes No 1 No \n", + "1 Male NO No No 34 Yes \n", + "2 Male NO No No 2 Yes \n", + "3 Male NO No No 45 No \n", + "4 Female NO No No 2 Yes \n", + "\n", + " MultipleLines InternetService OnlineSecurity OnlineBackup \\\n", + "0 No phone service DSL No Yes \n", + "1 No DSL Yes No \n", + "2 No DSL Yes Yes \n", + "3 No phone service DSL Yes No \n", + "4 No Fiber optic No No \n", + "\n", + " DeviceProtection TechSupport StreamingTV StreamingMovies Contract \\\n", + "0 No No No No Month-to-month \n", + "1 Yes No No No One year \n", + "2 No No No No Month-to-month \n", + "3 Yes Yes No No One year \n", + "4 No No No No Month-to-month \n", + "\n", + " PaperlessBilling PaymentMethod MonthlyCharges TotalCharges \\\n", + "0 Yes Electronic check 29.85 29.85 \n", + "1 No Mailed check 56.95 1889.50 \n", + "2 Yes Mailed check 53.85 108.15 \n", + "3 No Bank transfer (automatic) 42.30 1840.75 \n", + "4 Yes Electronic check 70.70 151.65 \n", + "\n", + " Churn \n", + "0 No \n", + "1 No \n", + "2 Yes \n", + "3 No \n", + "4 Yes " + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "ab20b945-9c29-4af9-a100-3a459d628500", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Churn\n", + "No 5163\n", + "Yes 1869\n", + "Name: count, dtype: int64" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['Churn'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "03472054-3840-408e-aa02-a652617b9f94", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "gender\n", + "Female 3483\n", + "Male 3549\n", + "Name: Churn, dtype: int64" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['Churn'].groupby(by=df['gender']).count()#Checking Count using Groupby" + ] + }, + { + "cell_type": "markdown", + "id": "37e9db54-bd2b-4e32-8eec-b78acb9f78da", + "metadata": {}, + "source": [ + "### Visualizations " + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "f1b02154-787a-4649-a2dc-8177fffa12c3", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "domain": { + "x": [ + 0, + 0.45 + ], + "y": [ + 0, + 1 + ] + }, + "hole": 0.4, + "hoverinfo": "label+percent+name", + "labels": [ + "Male", + "Female" + ], + "name": "Gender", + "textfont": { + "size": 16 + }, + "type": "pie", + "values": [ + 3549, + 3483 + ] + }, + { + "domain": { + "x": [ + 0.55, + 1 + ], + "y": [ + 0, + 1 + ] + }, + "hole": 0.4, + "hoverinfo": "label+percent+name", + "labels": [ + "No", + "Yes" + ], + "name": "Churn", + "textfont": { + "size": 16 + }, + "type": "pie", + "values": [ + 5163, + 1869 + ] + } + ], + "layout": { + "annotations": [ + { + "font": { + "size": 20 + }, + "showarrow": false, + "text": "Gender", + "x": 0.16, + "y": 0.5 + }, + { + "font": { + "size": 20 + }, + "showarrow": false, + "text": "Churn", + "x": 0.84, + "y": 0.5 + } + ], + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Gender and Churn Distributions" + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from plotly.subplots import make_subplots\n", + "import plotly.graph_objects as go\n", + "g_labels = ['Male', 'Female']\n", + "c_labels = ['No', 'Yes']\n", + "# Create subplots: use 'domain' type for Pie subplot\n", + "fig = make_subplots(rows=1, cols=2, specs=[[{'type':'domain'}, {'type':'domain'}]])\n", + "fig.add_trace(go.Pie(labels=g_labels, values=df['gender'].value_counts(), name=\"Gender\"),\n", + " 1, 1)\n", + "fig.add_trace(go.Pie(labels=c_labels, values=df['Churn'].value_counts(), name=\"Churn\"),\n", + " 1, 2)\n", + "\n", + "# Use `hole` to create a donut-like pie chart\n", + "fig.update_traces(hole=.4, hoverinfo=\"label+percent+name\", textfont_size=16)\n", + "\n", + "fig.update_layout(\n", + " title_text=\"Gender and Churn Distributions\",\n", + " # Add annotations in the center of the donut pies.\n", + " annotations=[dict(text='Gender', x=0.16, y=0.5, font_size=20, showarrow=False),\n", + " dict(text='Churn', x=0.84, y=0.5, font_size=20, showarrow=False)])\n", + "fig.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "171091b7-106c-4689-a5f0-6754a98913c4", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hole": 0.3, + "labels": [ + "Electronic check", + "Mailed check", + "Bank transfer (automatic)", + "Credit card (automatic)" + ], + "type": "pie", + "values": [ + 2365, + 1604, + 1542, + 1521 + ] + } + ], + "layout": { + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Payment Method Distribution" + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "labels = df['PaymentMethod'].unique()\n", + "values = df['PaymentMethod'].value_counts()\n", + "\n", + "fig = go.Figure(data=[go.Pie(labels=labels, values=values, hole=.3)])\n", + "fig.update_layout(title_text=\"Payment Method Distribution\")\n", + "fig.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "9cff3b20-9ff4-4278-94f1-e84788b76492", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "alignmentgroup": "True", + "bingroup": "x", + "hovertemplate": "SeniorCitizen=NO
Churn=%{x}
count=%{y}", + "legendgroup": "NO", + "marker": { + "color": "#00cc96", + "pattern": { + "shape": "" + } + }, + "name": "NO", + "offsetgroup": "NO", + "orientation": "v", + "showlegend": true, + "type": "histogram", + "x": [ + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No" + ], + "xaxis": "x", + "yaxis": "y" + }, + { + "alignmentgroup": "True", + "bingroup": "x", + "hovertemplate": "SeniorCitizen=Yes
Churn=%{x}
count=%{y}", + "legendgroup": "Yes", + "marker": { + "color": "#00CC96", + "pattern": { + "shape": "" + } + }, + "name": "Yes", + "offsetgroup": "Yes", + "orientation": "v", + "showlegend": true, + "type": "histogram", + "x": [ + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "Yes", + "No", + "Yes", + "No", + "No", + "Yes", + "No", + "Yes", + "Yes", + "Yes", + "Yes", + "No", + "Yes", + "No", + "Yes", + "No", + "Yes", + "Yes", + "No", + "No", + "No", + "No", + "Yes", + "Yes" + ], + "xaxis": "x", + "yaxis": "y" + } + ], + "layout": { + "bargap": 0.1, + "barmode": "relative", + "height": 500, + "legend": { + "title": { + "text": "SeniorCitizen" + }, + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Chrun distribution w.r.t. Senior Citizen" + }, + "width": 700, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Churn" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "count" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import plotly.express as px\n", + "color_map = {\"Yes\": '#00CC96', \"No\": '#B6E880'}\n", + "fig = px.histogram(df, x=\"Churn\", color=\"SeniorCitizen\", title=\"Chrun distribution w.r.t. Senior Citizen\", color_discrete_map=color_map)\n", + "fig.update_layout(width=700, height=500, bargap=0.1)\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "id": "774c012e-6bd3-4bb7-8837-dc86b045556d", + "metadata": {}, + "source": [ + "### Data preprocessing" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "f740a0ea-3928-48c7-ba95-3a0b487d642b", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import LabelEncoder" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "e144a9fc-b0c5-48b8-a466-97075f33635b", + "metadata": {}, + "outputs": [], + "source": [ + "Le = LabelEncoder()#using this code for more point-to-point so that understand how encoder work\n", + "df['gender'] = Le.fit_transform(df['gender'])\n", + "df['SeniorCitizen'] = Le.fit_transform(df['SeniorCitizen'])\n", + "df['Partner'] = Le.fit_transform(df['Partner'])\n", + "df['Dependents'] = Le.fit_transform(df['Dependents'])\n", + "df['PhoneService'] = Le.fit_transform(df['PhoneService'])\n", + "df['MultipleLines'] = Le.fit_transform(df['MultipleLines'])\n", + "df['InternetService'] = Le.fit_transform(df['InternetService'])\n", + "df['OnlineSecurity'] = Le.fit_transform(df['OnlineSecurity'])\n", + "df['OnlineBackup'] = Le.fit_transform(df['OnlineBackup'])\n", + "df['TechSupport'] = Le.fit_transform(df['TechSupport'])\n", + "df['StreamingTV'] = Le.fit_transform(df['StreamingTV'])\n", + "df['StreamingMovies'] = Le.fit_transform(df['StreamingMovies'])\n", + "df['Contract'] = Le.fit_transform(df['Contract'])\n", + "df['PaymentMethod'] = Le.fit_transform(df['PaymentMethod'])\n", + "df['PaperlessBilling'] = Le.fit_transform(df['PaperlessBilling'])\n", + "df['Churn'] = Le.fit_transform(df['Churn'])\n", + "df['DeviceProtection'] = Le.fit_transform(df['DeviceProtection'])" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "07c8b78f-ac8f-456f-b984-079eeef115c1", + "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", + "
genderSeniorCitizenPartnerDependentstenurePhoneServiceMultipleLinesInternetServiceOnlineSecurityOnlineBackupDeviceProtectionTechSupportStreamingTVStreamingMoviesContractPaperlessBillingPaymentMethodMonthlyChargesTotalChargesChurn
00010101002000001229.8529.850
110003410020200010356.951889.500
21000210022000001353.85108.151
310004501020220010042.301840.750
40000210100000001270.70151.651
\n", + "
" + ], + "text/plain": [ + " gender SeniorCitizen Partner Dependents tenure PhoneService \\\n", + "0 0 0 1 0 1 0 \n", + "1 1 0 0 0 34 1 \n", + "2 1 0 0 0 2 1 \n", + "3 1 0 0 0 45 0 \n", + "4 0 0 0 0 2 1 \n", + "\n", + " MultipleLines InternetService OnlineSecurity OnlineBackup \\\n", + "0 1 0 0 2 \n", + "1 0 0 2 0 \n", + "2 0 0 2 2 \n", + "3 1 0 2 0 \n", + "4 0 1 0 0 \n", + "\n", + " DeviceProtection TechSupport StreamingTV StreamingMovies Contract \\\n", + "0 0 0 0 0 0 \n", + "1 2 0 0 0 1 \n", + "2 0 0 0 0 0 \n", + "3 2 2 0 0 1 \n", + "4 0 0 0 0 0 \n", + "\n", + " PaperlessBilling PaymentMethod MonthlyCharges TotalCharges Churn \n", + "0 1 2 29.85 29.85 0 \n", + "1 0 3 56.95 1889.50 0 \n", + "2 1 3 53.85 108.15 1 \n", + "3 0 0 42.30 1840.75 0 \n", + "4 1 2 70.70 151.65 1 " + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "91b7fd32-9c8f-4295-a98c-5c6c9067d4fa", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "0e056aeb-3db9-4f8b-bfac-e5914acc5c53", + "metadata": {}, + "outputs": [], + "source": [ + "X = df.drop(columns=['Churn'])\n", + "y = df['Churn']" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "8c4632ed-5c48-4e14-a4ca-bd0f0bb67b89", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
genderSeniorCitizenPartnerDependentstenurePhoneServiceMultipleLinesInternetServiceOnlineSecurityOnlineBackupDeviceProtectionTechSupportStreamingTVStreamingMoviesContractPaperlessBillingPaymentMethodMonthlyChargesTotalCharges
00010101002000001229.8529.85
110003410020200010356.951889.50
21000210022000001353.85108.15
310004501020220010042.301840.75
40000210100000001270.70151.65
............................................................
703810112412020222211384.801990.50
7039001172121022022111103.207362.90
704000111101020000001229.60346.45
70411110412100000001374.40306.60
7042100066101202222210105.656844.50
\n", + "

7032 rows × 19 columns

\n", + "
" + ], + "text/plain": [ + " gender SeniorCitizen Partner Dependents tenure PhoneService \\\n", + "0 0 0 1 0 1 0 \n", + "1 1 0 0 0 34 1 \n", + "2 1 0 0 0 2 1 \n", + "3 1 0 0 0 45 0 \n", + "4 0 0 0 0 2 1 \n", + "... ... ... ... ... ... ... \n", + "7038 1 0 1 1 24 1 \n", + "7039 0 0 1 1 72 1 \n", + "7040 0 0 1 1 11 0 \n", + "7041 1 1 1 0 4 1 \n", + "7042 1 0 0 0 66 1 \n", + "\n", + " MultipleLines InternetService OnlineSecurity OnlineBackup \\\n", + "0 1 0 0 2 \n", + "1 0 0 2 0 \n", + "2 0 0 2 2 \n", + "3 1 0 2 0 \n", + "4 0 1 0 0 \n", + "... ... ... ... ... \n", + "7038 2 0 2 0 \n", + "7039 2 1 0 2 \n", + "7040 1 0 2 0 \n", + "7041 2 1 0 0 \n", + "7042 0 1 2 0 \n", + "\n", + " DeviceProtection TechSupport StreamingTV StreamingMovies Contract \\\n", + "0 0 0 0 0 0 \n", + "1 2 0 0 0 1 \n", + "2 0 0 0 0 0 \n", + "3 2 2 0 0 1 \n", + "4 0 0 0 0 0 \n", + "... ... ... ... ... ... \n", + "7038 2 2 2 2 1 \n", + "7039 2 0 2 2 1 \n", + "7040 0 0 0 0 0 \n", + "7041 0 0 0 0 0 \n", + "7042 2 2 2 2 2 \n", + "\n", + " PaperlessBilling PaymentMethod MonthlyCharges TotalCharges \n", + "0 1 2 29.85 29.85 \n", + "1 0 3 56.95 1889.50 \n", + "2 1 3 53.85 108.15 \n", + "3 0 0 42.30 1840.75 \n", + "4 1 2 70.70 151.65 \n", + "... ... ... ... ... \n", + "7038 1 3 84.80 1990.50 \n", + "7039 1 1 103.20 7362.90 \n", + "7040 1 2 29.60 346.45 \n", + "7041 1 3 74.40 306.60 \n", + "7042 1 0 105.65 6844.50 \n", + "\n", + "[7032 rows x 19 columns]" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "faf59880-2e21-45f9-8467-4a1cb980b3fb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 0\n", + "1 0\n", + "2 1\n", + "3 0\n", + "4 1\n", + " ..\n", + "7038 0\n", + "7039 0\n", + "7040 0\n", + "7041 1\n", + "7042 0\n", + "Name: Churn, Length: 7032, dtype: int32" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y" + ] + }, + { + "cell_type": "markdown", + "id": "1cf2caab-ab4f-42f2-bc88-43230d0b4d6b", + "metadata": {}, + "source": [ + "### Splitting the data into train and test" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "631e96ec-877d-41f8-bc7a-3513e0e13963", + "metadata": {}, + "outputs": [], + "source": [ + "X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=42)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "650b1223-1892-4aa9-8bb8-d0470468f6e1", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import StandardScaler" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "8c1e151c-5c77-4211-a72f-2b56c3367745", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
StandardScaler()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "StandardScaler()" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "SD = StandardScaler()\n", + "SD.fit_transform(X_train,y_train)\n", + "SD.fit(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "2fec5e40-df16-4b47-9ea2-f0ff198185d1", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.linear_model import LogisticRegression" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "7a176fbc-2049-4121-abf2-d99b19ce45bf", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\ProgramData\\anaconda3\\Lib\\site-packages\\sklearn\\linear_model\\_logistic.py:469: ConvergenceWarning:\n", + "\n", + "lbfgs failed to converge (status=1):\n", + "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", + "\n", + "Increase the number of iterations (max_iter) or scale the data as shown in:\n", + " https://scikit-learn.org/stable/modules/preprocessing.html\n", + "Please also refer to the documentation for alternative solver options:\n", + " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "0.7933649289099526" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "LR = LogisticRegression()#Model 1\n", + "LR.fit(X_train,y_train)\n", + "pred = LR.predict(X_test)\n", + "from sklearn.metrics import accuracy_score,classification_report,confusion_matrix\n", + "accuracy_score(y_test,pred)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "42812670-a89d-4818-87db-32cc59d63f0a", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.neighbors import KNeighborsClassifier" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "5f3ccdc0-d1ff-4573-93b3-46581da45a5a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.7819905213270142" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kn = KNeighborsClassifier(n_neighbors = 11) #model 2\n", + "kn.fit(X_train,y_train)\n", + "pred1 = kn.predict(X_test)\n", + "accuracy_score(y_test,pred1)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "69bb29a4-84b2-4569-90c9-0b90e666a88f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.84 0.88 0.86 1549\n", + " 1 0.63 0.55 0.59 561\n", + "\n", + " accuracy 0.79 2110\n", + " macro avg 0.74 0.72 0.72 2110\n", + "weighted avg 0.79 0.79 0.79 2110\n", + "\n" + ] + } + ], + "source": [ + "print(classification_report(y_test, pred))" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "4ec1d6b2-fe61-457d-839a-098569f72098", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.81 0.92 0.86 1549\n", + " 1 0.64 0.41 0.50 561\n", + "\n", + " accuracy 0.78 2110\n", + " macro avg 0.73 0.66 0.68 2110\n", + "weighted avg 0.77 0.78 0.76 2110\n", + "\n" + ] + } + ], + "source": [ + "print(classification_report(y_test, pred1))" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "53bc3c1a-7d0a-423f-b95d-44dbc9ab4d32", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.ensemble import RandomForestClassifier" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "dc1a1fa3-eddb-4628-89ed-c6b7f2b5e7e3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.7838862559241706" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Rand = RandomForestClassifier(criterion='entropy') #model 3\n", + "Rand.fit(X_train,y_train)\n", + "pred2 = Rand.predict(X_test)\n", + "accuracy_score(y_test,pred2)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "1f968396-2b73-4604-999a-67dde83678e0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.83 0.89 0.86 1549\n", + " 1 0.62 0.48 0.54 561\n", + "\n", + " accuracy 0.78 2110\n", + " macro avg 0.72 0.69 0.70 2110\n", + "weighted avg 0.77 0.78 0.77 2110\n", + "\n" + ] + } + ], + "source": [ + "print(classification_report(y_test, pred2))" + ] + }, + { + "cell_type": "markdown", + "id": "e70659d1-d7f4-43e8-b46b-1f20dbaf1716", + "metadata": {}, + "source": [ + "In conclusion, the customer churn project highlights actionable insights leveraging data analytics to reduce attrition rates and enhance customer retention strategies." + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "14079885", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Random Forest model saved as 'random_forest_model.pkl'\n" + ] + } + ], + "source": [ + "import joblib\n", + "import numpy as np\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.metrics import accuracy_score\n", + "\n", + "# # Assuming the RandomForestClassifier (Rand) is already trained on X_train, y_train\n", + "# Rand = RandomForestClassifier(criterion='entropy')\n", + "# Rand.fit(X_train, y_train)\n", + "# pred2 = Rand.predict(X_test)\n", + "\n", + "# Saving the Random Forest model\n", + "joblib.dump(Rand, 'random_forest_model.pkl')\n", + "print(\"Random Forest model saved as 'random_forest_model.pkl'\")\n", + "\n", + "# To test the saved model\n", + "def test_model(model_path, test_features, true_labels):\n", + " # Load the model\n", + " loaded_model = joblib.load(model_path)\n", + " print(\"Model loaded successfully.\")\n", + "\n", + " # Perform predictions\n", + " predictions = loaded_model.predict(test_features)\n", + " accuracy = accuracy_score(true_labels, predictions)\n", + " print(\"Accuracy:\", accuracy)\n", + " return predictions, accuracy\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "d130d7e8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model loaded successfully.\n", + "Accuracy: 0.7739336492890996\n", + "Predictions: [0 0 1 ... 0 0 0]\n" + ] + } + ], + "source": [ + "# Example: Load and test on X_test\n", + "model_path = 'random_forest_model.pkl'\n", + "predictions, accuracy = test_model(model_path, X_test, y_test)\n", + "print(\"Predictions:\", predictions)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}