{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import re\nimport pandas as pd\nimport numpy as np\nimport matplotlib as plt\nimport seaborn as sns\nimport warnings\nfrom IPython.display import display, HTML\nwarnings.filterwarnings('ignore')\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-07-18T01:00:28.886928Z","iopub.execute_input":"2022-07-18T01:00:28.887378Z","iopub.status.idle":"2022-07-18T01:00:30.156736Z","shell.execute_reply.started":"2022-07-18T01:00:28.887284Z","shell.execute_reply":"2022-07-18T01:00:30.155386Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Importando o test dataset, criando um dataframe com o Pandas e apresentando um resumo dos dados\ntest_data = pd.read_csv('/kaggle/input/titanic/test.csv')\ntest_data.describe(include='all')","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:30.158895Z","iopub.execute_input":"2022-07-18T01:00:30.159285Z","iopub.status.idle":"2022-07-18T01:00:30.245434Z","shell.execute_reply.started":"2022-07-18T01:00:30.159254Z","shell.execute_reply":"2022-07-18T01:00:30.244208Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Importando o train dataset e criando um dataframe com Pandas\ntrain_data = pd.read_csv('/kaggle/input/titanic/train.csv')\ntrain_data.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:30.247548Z","iopub.execute_input":"2022-07-18T01:00:30.248008Z","iopub.status.idle":"2022-07-18T01:00:30.280590Z","shell.execute_reply.started":"2022-07-18T01:00:30.247966Z","shell.execute_reply":"2022-07-18T01:00:30.279357Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Descrição das variáveis (features):\n\nVariável(feature)&nbsp; |      Descrição <br>\nSurvived&emsp;&emsp;&emsp;&emsp;|&ensp;0&nbsp;=&nbsp;Não;&nbsp;1&nbsp;=&nbsp;Sim <br>\nPclass&emsp;&emsp;&emsp;&emsp;&emsp;|&nbsp;Classe do passageiro (1, 2 ou 3) <br>\nName&emsp;&emsp;&emsp;&emsp;&emsp;&nbsp;| Nome do passageiro <br>\nSex&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&nbsp;| Gênero do passageiro <br>\nAge&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&nbsp;| Idade <br>\nSibSp&emsp;&emsp;&emsp;&emsp;&emsp;&nbsp;| Número de irmãos ou cônjuge à bordo do Titanic <br>\nParch&emsp;&emsp;&emsp;&emsp;&emsp;&nbsp;| Número de pais ou filhos à bordo do Titanic <br>\nTicket&emsp;&emsp;&emsp;&emsp;&emsp;| Número do bilhete do passageiro <br>\nFare&emsp;&emsp;&emsp;&emsp;&emsp;&ensp;| Preço do bilhete <br>\nCabin&emsp;&emsp;&emsp;&emsp;&emsp;| Número da cabine <br>\nEmbarked&emsp;&emsp;&emsp;| Porto onde o passageiro embarcou (C = Cherbourg [FR], Queenstown [IR], Southampton [EN])","metadata":{}},{"cell_type":"code","source":"#Resumo estatístico dos dados brutos\ntrain_data.describe(include='all')","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:30.284047Z","iopub.execute_input":"2022-07-18T01:00:30.284994Z","iopub.status.idle":"2022-07-18T01:00:30.338128Z","shell.execute_reply.started":"2022-07-18T01:00:30.284941Z","shell.execute_reply":"2022-07-18T01:00:30.336947Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Identificando o tipo de dados em cada variável\ntrain_data.dtypes","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:30.340108Z","iopub.execute_input":"2022-07-18T01:00:30.340969Z","iopub.status.idle":"2022-07-18T01:00:30.351045Z","shell.execute_reply.started":"2022-07-18T01:00:30.340922Z","shell.execute_reply":"2022-07-18T01:00:30.349816Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**ANALISANDO A FEATURE 'SEX'**","metadata":{}},{"cell_type":"code","source":"sns.barplot(x='Sex', y='Survived', data=train_data)\n\nprint('Percentual de mulheres sobreviventes: ', train_data['Survived'][train_data['Sex'] == 'female'].value_counts(normalize=True)[1]*100)\nprint('Percentual de homens sobreviventes: ', train_data['Survived'][train_data['Sex'] == 'male'].value_counts(normalize=True)[1]*100)","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:30.353407Z","iopub.execute_input":"2022-07-18T01:00:30.354338Z","iopub.status.idle":"2022-07-18T01:00:30.669359Z","shell.execute_reply.started":"2022-07-18T01:00:30.354279Z","shell.execute_reply":"2022-07-18T01:00:30.668209Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Associando valores numéricos aos valores da variável 'Sex'\nsex_mapping = {\"female\": 0, \"male\": 1}\ntrain_data['Sex'] = train_data['Sex'].map(sex_mapping)\ntest_data['Sex'] = test_data['Sex'].map(sex_mapping)\n\ntrain_data.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:30.670609Z","iopub.execute_input":"2022-07-18T01:00:30.670939Z","iopub.status.idle":"2022-07-18T01:00:30.693286Z","shell.execute_reply.started":"2022-07-18T01:00:30.670908Z","shell.execute_reply":"2022-07-18T01:00:30.692125Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Os dados sobre sexo, conforme resumo dos dados apresentado anteriormente, está completo, ou seja, sem 'nulls'. <br>\nAté este ponto foi observada apenas a relação entre o sexo e a sobrevivência ao naufrágio. <br>\nParece razoável considerar que a priorização do preenchimento dos botes por mulheres e crianças favoreceu a sobrevivência de adultos do sexo feminino e prejudicou a de adultos do sexo masculino.","metadata":{}},{"cell_type":"markdown","source":"**ANALISANDO A VARIÁVEL 'PCLASS'**","metadata":{}},{"cell_type":"code","source":"#Identificando taxa de sobrevivência por classe de passageiro\nsns.barplot(x='Pclass', y='Survived', data=train_data)\n\nprint('Percentual de sobreviventes da 1ª Classe: ', train_data['Survived'][train_data['Pclass'] == 1].value_counts(normalize=True)[1]*100)\nprint('Percentual de sobreviventes da 2ª Classe: ', train_data['Survived'][train_data['Pclass'] == 2].value_counts(normalize=True)[1]*100)\nprint('Percentual de sobreviventes da 3ª Classe: ', train_data['Survived'][train_data['Pclass'] == 3].value_counts(normalize=True)[1]*100)","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:30.694992Z","iopub.execute_input":"2022-07-18T01:00:30.695675Z","iopub.status.idle":"2022-07-18T01:00:31.021728Z","shell.execute_reply.started":"2022-07-18T01:00:30.695611Z","shell.execute_reply":"2022-07-18T01:00:31.020948Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Cruzando taxa de sobrevivência por sexo e classe de passageiros\nsns.barplot(x='Pclass', y='Survived', hue='Sex', data=train_data)","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:31.022978Z","iopub.execute_input":"2022-07-18T01:00:31.023494Z","iopub.status.idle":"2022-07-18T01:00:31.447823Z","shell.execute_reply.started":"2022-07-18T01:00:31.023462Z","shell.execute_reply":"2022-07-18T01:00:31.446794Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Após comparar a sobrevivência por classe de passageiros e relacionar com o sexo, fooram obtidas duas informações dignas de nota: a primeira é que as chances de sobrevivência foram maiores em função da qualidade da classe, de forma que a primeira classe teve melhor chance que a segunda que, por sua vez, melhor que a terceira; em segundo lugar, a classe parece ter influenciado na sobrevivência de passageiros do sexo masculino, já que estes tiveram percentual de sobreviventes muito superior na primeira classe que nas demais. <br>","metadata":{}},{"cell_type":"markdown","source":"**ANALISANDO A VARIÁVEL 'AGE':**\n\nPara facilitar a análise da variável idade, foram criadas faixas etárias. \n\nNeste caso, foi aplicado o seguinte entendimento:\n\n0 - 14 : Criança <br>\n14 - 22 : Jovem Adulto <br>\n22 - 30 : Adulto <br>\n30 - 44 : Meia Idade <br>\n44 - 80 : Idoso <br>\n\nConforme resumo dos dados, esta variável contém muitos dados 'missing', de forma que dos 891 registros, 714 estão preenchidos. ","metadata":{}},{"cell_type":"code","source":"#Calculando quantidade de dados 'missing'.\ntrain_data.Age.isnull().sum()","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:31.452498Z","iopub.execute_input":"2022-07-18T01:00:31.453361Z","iopub.status.idle":"2022-07-18T01:00:31.463070Z","shell.execute_reply.started":"2022-07-18T01:00:31.453320Z","shell.execute_reply":"2022-07-18T01:00:31.461888Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Visualizando dados de idade nulos\ntrain_data.loc[lambda train_data: train_data.Age.isna(), :]","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:31.464404Z","iopub.execute_input":"2022-07-18T01:00:31.465133Z","iopub.status.idle":"2022-07-18T01:00:31.499208Z","shell.execute_reply.started":"2022-07-18T01:00:31.465072Z","shell.execute_reply":"2022-07-18T01:00:31.498049Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Criando as faixas de idades\nage = [0, 14, 22, 30, 44, 80]\nage_class = ['Criança', 'Jovem Adulto', 'Adulto', 'Meia Idade', 'Idoso']\n\npd.cut(x = train_data.Age, bins = age, labels = age_class, include_lowest = True)","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:31.500822Z","iopub.execute_input":"2022-07-18T01:00:31.501888Z","iopub.status.idle":"2022-07-18T01:00:31.518926Z","shell.execute_reply.started":"2022-07-18T01:00:31.501837Z","shell.execute_reply":"2022-07-18T01:00:31.517914Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Calculando a quantidade de passageiros por faixa etária.\nfrequency = pd.value_counts(pd.cut(x = train_data.Age, bins = age, labels = age_class, include_lowest = True)).sort_index()\nfrequency","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:31.521266Z","iopub.execute_input":"2022-07-18T01:00:31.522577Z","iopub.status.idle":"2022-07-18T01:00:31.545267Z","shell.execute_reply.started":"2022-07-18T01:00:31.522537Z","shell.execute_reply":"2022-07-18T01:00:31.540617Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Calculando o percentual de passageiros por faixa etária.\npercentage = pd.value_counts(pd.cut(x = train_data.Age, bins = age, labels = age_class, include_lowest = True), normalize=True).sort_index()*100\npercentage","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:31.546784Z","iopub.execute_input":"2022-07-18T01:00:31.550689Z","iopub.status.idle":"2022-07-18T01:00:31.572408Z","shell.execute_reply.started":"2022-07-18T01:00:31.550641Z","shell.execute_reply":"2022-07-18T01:00:31.569837Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Criando uma tabela de distribuição de frequência\nage_cut = pd.DataFrame({'Frequencia':frequency, 'Percentual':percentage})\nage_cut","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:31.576714Z","iopub.execute_input":"2022-07-18T01:00:31.577960Z","iopub.status.idle":"2022-07-18T01:00:31.596705Z","shell.execute_reply.started":"2022-07-18T01:00:31.577914Z","shell.execute_reply":"2022-07-18T01:00:31.594787Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"A escolha das faixas etárias levou em consideração a média de idade dos passageiros, desvio-padrão e questões culturais da época, com vistas a facilitar a dedução dos dados de idade faltantes. <br><br>\nA variável idade pode ter muita relevância para criar um modelo com melhor acurácia, especialmente porque espera-se prioridade para o salvamento de crianças e idosos nos botes. Além disso, por ser significativa a quantidade de registros com dados faltantes, torna-se importante para a qualidade do modelo preditivo que os registros não sejam excluídos do dataset.<br>","metadata":{}},{"cell_type":"code","source":"#Concatenando os datasets de treino e de test para criação de modelo para subsituição de valores missing\ndf1 = pd.concat([train_data, test_data])\ndf1.describe(include='all')","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:31.598251Z","iopub.execute_input":"2022-07-18T01:00:31.599384Z","iopub.status.idle":"2022-07-18T01:00:31.659324Z","shell.execute_reply.started":"2022-07-18T01:00:31.599338Z","shell.execute_reply":"2022-07-18T01:00:31.658227Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Criando nova coluna para evidenciar os títulos aplicados a cada passageiro\ndf1['Title'] = df1.Name.str.extract(' ([A-Za-z]+)\\.', expand=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:31.660670Z","iopub.execute_input":"2022-07-18T01:00:31.661551Z","iopub.status.idle":"2022-07-18T01:00:31.669348Z","shell.execute_reply.started":"2022-07-18T01:00:31.661520Z","shell.execute_reply":"2022-07-18T01:00:31.668298Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Identificando todos os valores aplicados à variável 'Title' e suas quantidades\ndf1.Title.value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:31.670444Z","iopub.execute_input":"2022-07-18T01:00:31.671038Z","iopub.status.idle":"2022-07-18T01:00:31.685282Z","shell.execute_reply.started":"2022-07-18T01:00:31.671003Z","shell.execute_reply":"2022-07-18T01:00:31.684148Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"O que significam os títulos? <br> <br>\nMr : masculino que não é criança; <br>\nMiss : feminino que não é casado; <br>\nMrs : feminino casado; <br>\nMaster : masculino com aparência de criança; <br>\nRev : masculino relacionado a função religiosa; <br>\nDr : normalmente médicos ou advogados; <br>\nCol : patente militar sênior; <br>\nMlle : feminino que não é casado; <br>\nMajor : patente militar sênior; <br>\nMs : feminino neutro quanto à situação de casamento; <br>\nLady : feminino relativo a posição social elevada; <br>\nSir : masculino relativo a posição social elevada; <br>\nMMe : feminino casado ou viúvo; <br>\nDon : masculino em área falante de espanhol; <br>\nCapt : patente militar com menor senioridade que as de Major e Col.; <br>\nCountess : título nobiliárquico feminino, relativo a condessa; <br>\nJonkheer : masculino, atribuído a baixa nobreza; <br>\nDona : feminino, equivalente a Don; <br> <br>","metadata":{}},{"cell_type":"code","source":"#Verificando sobreviventes por títulos\ndf1['Title'][df1['Survived'] == 1].value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:31.686644Z","iopub.execute_input":"2022-07-18T01:00:31.686956Z","iopub.status.idle":"2022-07-18T01:00:31.696391Z","shell.execute_reply.started":"2022-07-18T01:00:31.686928Z","shell.execute_reply":"2022-07-18T01:00:31.695591Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data2 = train_data\ntest_data2 = test_data\n\ntrain_data2['Title'] = train_data2.Name.str.extract(' ([A-Za-z]+)\\.', expand=False)\ntest_data2['Title'] = test_data2.Name.str.extract(' ([A-Za-z]+)\\.', expand=False)\n\ntrain_data2['Title'] = train_data2['Title'].replace(['Countess', 'Sir', 'Lady'], 'Noble')\ntrain_data2['Title'] = train_data2['Title'].replace(['Col', 'Major', 'Capt'], 'Military Officer')\ntrain_data2['Title'] = train_data2['Title'].replace(['Jonkheer', 'Don', 'Dr'], 'Mr')\ntrain_data2['Title'] = train_data2['Title'].replace(['Dona', 'Mme', 'Ms'], 'Mrs')\ntrain_data2['Title'] = train_data2['Title'].replace('Mlle', 'Miss')\n\ntest_data2['Title'] = test_data2['Title'].replace(['Countess', 'Sir', 'Lady'], 'Noble')\ntest_data2['Title'] = test_data2['Title'].replace(['Col', 'Major', 'Capt'], 'Military Officer')\ntest_data2['Title'] = test_data2['Title'].replace(['Jonkheer', 'Don', 'Dr'], 'Mr')\ntest_data2['Title'] = test_data2['Title'].replace(['Dona', 'Mme', 'Ms'], 'Mrs')\ntest_data2['Title'] = test_data2['Title'].replace('Mlle', 'Miss')\n\ntrain_data2[['Title', 'Survived']].groupby(['Title'], as_index=False).mean()","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:31.697501Z","iopub.execute_input":"2022-07-18T01:00:31.698356Z","iopub.status.idle":"2022-07-18T01:00:31.765702Z","shell.execute_reply.started":"2022-07-18T01:00:31.698322Z","shell.execute_reply":"2022-07-18T01:00:31.764203Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Substituindo cada título por um valor numérico\ntitle_mapping = {'Master': 1, 'Military Officer': 2, 'Miss': 3, 'Mr': 4, 'Mrs': 5, 'Noble': 6, 'Rev': 7}\n\ntrain_data2['Title'] = train_data2['Title'].map(title_mapping)\ntrain_data2['Title'] = train_data2['Title'].fillna(0)\n\ntest_data2['Title'] = test_data2['Title'].map(title_mapping)\ntest_data2['Title'] = test_data2['Title'].fillna(0)\n\ntrain_data2.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:31.767456Z","iopub.execute_input":"2022-07-18T01:00:31.768678Z","iopub.status.idle":"2022-07-18T01:00:31.802610Z","shell.execute_reply.started":"2022-07-18T01:00:31.768622Z","shell.execute_reply":"2022-07-18T01:00:31.801473Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Eliminando variável 'Name' por não ter mais utilidade\ntrain_data2 = train_data2.drop(['Name'], axis = 1)\ntest_data2 = test_data2.drop(['Name'], axis = 1)\n\ntrain_data2.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:31.804325Z","iopub.execute_input":"2022-07-18T01:00:31.804999Z","iopub.status.idle":"2022-07-18T01:00:31.832150Z","shell.execute_reply.started":"2022-07-18T01:00:31.804956Z","shell.execute_reply":"2022-07-18T01:00:31.830989Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Associando as idades às faixas etárias\ntrain_data2[\"Age\"] = train_data2[\"Age\"].fillna(-0.5)\ntest_data2[\"Age\"] = test_data2[\"Age\"].fillna(-0.5)\nages = [-1, 0, 14, 22, 30, 44, 80]\nage_group = ['Desconhecido', 'Criança', 'Jovem Adulto', 'Adulto', 'Meia Idade', 'Idoso']\ntrain_data2['AgeGroup'] = pd.cut(train_data2[\"Age\"], ages, labels = age_group)\ntest_data2['AgeGroup'] = pd.cut(test_data2[\"Age\"], ages, labels = age_group)\n\nsns.barplot(x=\"AgeGroup\", y=\"Survived\", data=train_data2)","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:31.834032Z","iopub.execute_input":"2022-07-18T01:00:31.834872Z","iopub.status.idle":"2022-07-18T01:00:32.315712Z","shell.execute_reply.started":"2022-07-18T01:00:31.834821Z","shell.execute_reply":"2022-07-18T01:00:32.314624Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data2.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:32.317184Z","iopub.execute_input":"2022-07-18T01:00:32.317525Z","iopub.status.idle":"2022-07-18T01:00:32.335760Z","shell.execute_reply.started":"2022-07-18T01:00:32.317493Z","shell.execute_reply":"2022-07-18T01:00:32.334467Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Substituindo as idades desconhecidas por grupos de idades conforme o título do passageiro no registro\nmaster_age = train_data2[train_data2[\"Title\"] == 1][\"AgeGroup\"].mode() #Criança\nmilitary_officer_age = train_data2[train_data2[\"Title\"] == 2][\"AgeGroup\"].mode() #Idoso\nmiss_age = train_data2[train_data2[\"Title\"] == 3][\"AgeGroup\"].mode() #Jovem Adulto\nmr_age = train_data2[train_data2[\"Title\"] == 4][\"AgeGroup\"].mode() #Adulto\nmrs_age = train_data2[train_data2[\"Title\"] == 5][\"AgeGroup\"].mode() #Meia Idade\nnoble_age = train_data2[train_data2[\"Title\"] == 6][\"AgeGroup\"].mode() #Adulto\nrev_age = train_data2[train_data2[\"Title\"] == 7][\"AgeGroup\"].mode() #Idoso\n\nage_title_mapping = {1: \"Criança\", 2: \"Jovem Adulto\", 3: \"Adulto\", 4: \"Meia Idade\", 5: \"Idoso\"}\n\nfor x in range(len(train_data2[\"AgeGroup\"])):\n    if train_data2[\"AgeGroup\"][x] == \"Desconhecido\":\n        train_data2[\"AgeGroup\"][x] = age_title_mapping[train_data2[\"Title\"][x]]\n        \nfor x in range(len(test_data2[\"AgeGroup\"])):\n    if test_data2[\"AgeGroup\"][x] == \"Desconhecido\":\n        test_data2[\"AgeGroup\"][x] = age_title_mapping[test_data2[\"Title\"][x]]","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:32.337733Z","iopub.execute_input":"2022-07-18T01:00:32.338888Z","iopub.status.idle":"2022-07-18T01:00:32.552506Z","shell.execute_reply.started":"2022-07-18T01:00:32.338839Z","shell.execute_reply":"2022-07-18T01:00:32.551220Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data2.AgeGroup.value_counts(normalize=True)*100","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:32.554107Z","iopub.execute_input":"2022-07-18T01:00:32.555644Z","iopub.status.idle":"2022-07-18T01:00:32.568203Z","shell.execute_reply.started":"2022-07-18T01:00:32.555597Z","shell.execute_reply":"2022-07-18T01:00:32.567007Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_data2.AgeGroup.value_counts(normalize=True)*100","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:32.569705Z","iopub.execute_input":"2022-07-18T01:00:32.570666Z","iopub.status.idle":"2022-07-18T01:00:32.583382Z","shell.execute_reply.started":"2022-07-18T01:00:32.570618Z","shell.execute_reply":"2022-07-18T01:00:32.582271Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Associando faixas etárias a valores numéricos\nage_mapping = {'Criança': 1, 'Jovem Adulto': 2, 'Adulto': 3, 'Meia Idade': 4, 'Idoso': 5}\ntrain_data2['AgeGroup'] = train_data2['AgeGroup'].map(age_mapping)\ntest_data2['AgeGroup'] = test_data2['AgeGroup'].map(age_mapping)\n\n#Eliminando variável 'Age', mas reservando o dataframe anterior caso faça sentido utilizar a variável posteriormente\ntrain_data3 = train_data2.drop(['Age'], axis = 1)\ntest_data3 = test_data2.drop(['Age'], axis = 1)","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:32.588738Z","iopub.execute_input":"2022-07-18T01:00:32.589343Z","iopub.status.idle":"2022-07-18T01:00:32.604196Z","shell.execute_reply.started":"2022-07-18T01:00:32.589308Z","shell.execute_reply":"2022-07-18T01:00:32.603351Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data3.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:32.605747Z","iopub.execute_input":"2022-07-18T01:00:32.606103Z","iopub.status.idle":"2022-07-18T01:00:32.629181Z","shell.execute_reply.started":"2022-07-18T01:00:32.606051Z","shell.execute_reply":"2022-07-18T01:00:32.627991Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data3.describe(include='all')","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:32.630608Z","iopub.execute_input":"2022-07-18T01:00:32.630992Z","iopub.status.idle":"2022-07-18T01:00:32.692907Z","shell.execute_reply.started":"2022-07-18T01:00:32.630957Z","shell.execute_reply":"2022-07-18T01:00:32.691685Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.barplot(x=\"AgeGroup\", y=\"Survived\", data=train_data3)","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:32.694473Z","iopub.execute_input":"2022-07-18T01:00:32.695453Z","iopub.status.idle":"2022-07-18T01:00:33.087276Z","shell.execute_reply.started":"2022-07-18T01:00:32.695404Z","shell.execute_reply":"2022-07-18T01:00:33.085851Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**ANALISANDO VARIÁVEL 'SIBSP'**","metadata":{}},{"cell_type":"code","source":"sns.barplot(x='SibSp', y='Survived', data=train_data)","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:33.088937Z","iopub.execute_input":"2022-07-18T01:00:33.089667Z","iopub.status.idle":"2022-07-18T01:00:33.519826Z","shell.execute_reply.started":"2022-07-18T01:00:33.089617Z","shell.execute_reply":"2022-07-18T01:00:33.519041Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**ANALISANDO VARIÁVEL 'PARCH'**","metadata":{}},{"cell_type":"code","source":"sns.barplot(x='SibSp', y='Survived', data=train_data)","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:33.521015Z","iopub.execute_input":"2022-07-18T01:00:33.521346Z","iopub.status.idle":"2022-07-18T01:00:33.964141Z","shell.execute_reply.started":"2022-07-18T01:00:33.521316Z","shell.execute_reply":"2022-07-18T01:00:33.963157Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**ANALISANDO VARIÁVEIS 'TICKET' E 'CABIN'**\n\n'Cabin' com a maioria dos valores faltando e 'Ticket' parece apenas representar códigos de bilhetes destinados à identificação/validação das passagens.\n\nNão serão aproveitadas no modelo.","metadata":{}},{"cell_type":"code","source":"train_data3 = train_data3.drop(['Ticket'], axis = 1)\ntest_data3 = test_data3.drop(['Ticket'], axis = 1)\ntrain_data3 = train_data3.drop(['Cabin'], axis = 1)\ntest_data3 = test_data3.drop(['Cabin'], axis = 1)\n\ntrain_data3.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:33.965490Z","iopub.execute_input":"2022-07-18T01:00:33.966139Z","iopub.status.idle":"2022-07-18T01:00:33.986389Z","shell.execute_reply.started":"2022-07-18T01:00:33.966078Z","shell.execute_reply":"2022-07-18T01:00:33.985058Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**ANALISE DA VARIÁVEL 'FARE'**","metadata":{}},{"cell_type":"code","source":"sns.barplot(x = 'Pclass', y = 'Fare', hue = 'Survived', data = train_data3)","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:33.987768Z","iopub.execute_input":"2022-07-18T01:00:33.988402Z","iopub.status.idle":"2022-07-18T01:00:34.398199Z","shell.execute_reply.started":"2022-07-18T01:00:33.988365Z","shell.execute_reply":"2022-07-18T01:00:34.397034Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data3['Fare'].isnull().sum()","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:34.399743Z","iopub.execute_input":"2022-07-18T01:00:34.401548Z","iopub.status.idle":"2022-07-18T01:00:34.409935Z","shell.execute_reply.started":"2022-07-18T01:00:34.401499Z","shell.execute_reply":"2022-07-18T01:00:34.409072Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Relação entre o valor da tarifa e a sobrevivência.","metadata":{}},{"cell_type":"markdown","source":"**ANALISE DA VARIÁVEL 'EMBARKED'**","metadata":{}},{"cell_type":"code","source":"sns.barplot(x = 'Embarked', y = 'Survived', hue = 'Pclass', data = train_data3)","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:34.412332Z","iopub.execute_input":"2022-07-18T01:00:34.413346Z","iopub.status.idle":"2022-07-18T01:00:34.921520Z","shell.execute_reply.started":"2022-07-18T01:00:34.413289Z","shell.execute_reply":"2022-07-18T01:00:34.920127Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data3[train_data3['Embarked'] == 'S'].count().Embarked","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:34.922812Z","iopub.execute_input":"2022-07-18T01:00:34.923171Z","iopub.status.idle":"2022-07-18T01:00:34.934404Z","shell.execute_reply.started":"2022-07-18T01:00:34.923140Z","shell.execute_reply":"2022-07-18T01:00:34.933127Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data3[train_data3['Embarked'] == 'C'].count().Embarked","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:34.935851Z","iopub.execute_input":"2022-07-18T01:00:34.936320Z","iopub.status.idle":"2022-07-18T01:00:34.947354Z","shell.execute_reply.started":"2022-07-18T01:00:34.936275Z","shell.execute_reply":"2022-07-18T01:00:34.946155Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data3[train_data3['Embarked'] == 'Q'].count().Embarked","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:34.948749Z","iopub.execute_input":"2022-07-18T01:00:34.949652Z","iopub.status.idle":"2022-07-18T01:00:34.964587Z","shell.execute_reply.started":"2022-07-18T01:00:34.949609Z","shell.execute_reply":"2022-07-18T01:00:34.963496Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Preenchendo valores desconhecidos (2) de local de embarque e associando valores numéricos\ntrain_data4 = train_data3.fillna({'Embarked':'S'})\ntest_data4 = test_data3.fillna({'Embarked':'S'})\n\nembarked_mapping = {'S': 1, 'C': 2, 'Q': 3}\ntrain_data4['Embarked'] = train_data4['Embarked'].map(embarked_mapping)\ntest_data4['Embarked'] = test_data4['Embarked'].map(embarked_mapping)\n\ntrain_data4","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:34.966223Z","iopub.execute_input":"2022-07-18T01:00:34.966579Z","iopub.status.idle":"2022-07-18T01:00:34.995751Z","shell.execute_reply.started":"2022-07-18T01:00:34.966547Z","shell.execute_reply":"2022-07-18T01:00:34.994660Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Substituindo os valores desconhecidos de tarifa com base na média da tarifa para a classe \nfor x in range(len(test_data4[\"Fare\"])):\n    if pd.isnull(test_data4[\"Fare\"][x]):\n        pclass = test_data4[\"Pclass\"][x] \n        test_data4[\"Fare\"][x] = round(train_data4[train_data4[\"Pclass\"] == pclass][\"Fare\"].mean(), 4)\n        \n#Associando grupos de tarifas a valores numéricos\ntrain_data4['FareBand'] = pd.qcut(train_data['Fare'], 4, labels = [1, 2, 3, 4])\ntest_data4['FareBand'] = pd.qcut(test_data['Fare'], 4, labels = [1, 2, 3, 4])\n\n#Eliminando coluna 'Fare'\ntrain_data5 = train_data4.drop(['Fare'], axis = 1)\ntest_data5 = test_data4.drop(['Fare'], axis = 1)\n\ntrain_data5","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:00:34.997211Z","iopub.execute_input":"2022-07-18T01:00:34.997538Z","iopub.status.idle":"2022-07-18T01:00:35.037025Z","shell.execute_reply.started":"2022-07-18T01:00:34.997509Z","shell.execute_reply":"2022-07-18T01:00:35.036155Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.ensemble import RandomForestClassifier\n\ny = train_data5['Survived']\n\nfeatures = ['Pclass', 'Sex', 'Parch', 'SibSp', 'FareBand']\n\nX = pd.get_dummies(train_data5[features])\nX_test = pd.get_dummies(test_data5[features])\n\nmodel = RandomForestClassifier(random_state=1)\nmodel.fit(X, y)\npredictions = model.predict(X_test)\n\noutput = pd.DataFrame({'PassengerId': test_data5.PassengerId, 'Survived': predictions})\noutput.to_csv('submission.csv', index=False)\nprint(\"Your submission was successfully saved!\")","metadata":{"execution":{"iopub.status.busy":"2022-07-18T01:16:09.236063Z","iopub.execute_input":"2022-07-18T01:16:09.236467Z","iopub.status.idle":"2022-07-18T01:16:09.481080Z","shell.execute_reply.started":"2022-07-18T01:16:09.236436Z","shell.execute_reply":"2022-07-18T01:16:09.479830Z"},"trusted":true},"execution_count":null,"outputs":[]}]}