diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4da1a8c --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.venv/ +requirements.txt \ No newline at end of file diff --git a/data/lab-01/Titanic-Dataset.csv b/data/lab-01/Titanic-Dataset.csv new file mode 100644 index 0000000..5cc466e --- /dev/null +++ b/data/lab-01/Titanic-Dataset.csv @@ -0,0 +1,892 @@ +PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked +1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S +2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C +3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S +4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35,1,0,113803,53.1,C123,S +5,0,3,"Allen, Mr. William Henry",male,35,0,0,373450,8.05,,S +6,0,3,"Moran, Mr. James",male,,0,0,330877,8.4583,,Q +7,0,1,"McCarthy, Mr. Timothy J",male,54,0,0,17463,51.8625,E46,S +8,0,3,"Palsson, Master. Gosta Leonard",male,2,3,1,349909,21.075,,S +9,1,3,"Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)",female,27,0,2,347742,11.1333,,S +10,1,2,"Nasser, Mrs. Nicholas (Adele Achem)",female,14,1,0,237736,30.0708,,C +11,1,3,"Sandstrom, Miss. Marguerite Rut",female,4,1,1,PP 9549,16.7,G6,S +12,1,1,"Bonnell, Miss. Elizabeth",female,58,0,0,113783,26.55,C103,S +13,0,3,"Saundercock, Mr. William Henry",male,20,0,0,A/5. 2151,8.05,,S +14,0,3,"Andersson, Mr. Anders Johan",male,39,1,5,347082,31.275,,S +15,0,3,"Vestrom, Miss. Hulda Amanda Adolfina",female,14,0,0,350406,7.8542,,S +16,1,2,"Hewlett, Mrs. (Mary D Kingcome) ",female,55,0,0,248706,16,,S +17,0,3,"Rice, Master. Eugene",male,2,4,1,382652,29.125,,Q +18,1,2,"Williams, Mr. Charles Eugene",male,,0,0,244373,13,,S +19,0,3,"Vander Planke, Mrs. Julius (Emelia Maria Vandemoortele)",female,31,1,0,345763,18,,S +20,1,3,"Masselmani, Mrs. Fatima",female,,0,0,2649,7.225,,C +21,0,2,"Fynney, Mr. Joseph J",male,35,0,0,239865,26,,S +22,1,2,"Beesley, Mr. Lawrence",male,34,0,0,248698,13,D56,S +23,1,3,"McGowan, Miss. Anna ""Annie""",female,15,0,0,330923,8.0292,,Q +24,1,1,"Sloper, Mr. William Thompson",male,28,0,0,113788,35.5,A6,S +25,0,3,"Palsson, Miss. Torborg Danira",female,8,3,1,349909,21.075,,S +26,1,3,"Asplund, Mrs. Carl Oscar (Selma Augusta Emilia Johansson)",female,38,1,5,347077,31.3875,,S +27,0,3,"Emir, Mr. Farred Chehab",male,,0,0,2631,7.225,,C +28,0,1,"Fortune, Mr. Charles Alexander",male,19,3,2,19950,263,C23 C25 C27,S +29,1,3,"O'Dwyer, Miss. Ellen ""Nellie""",female,,0,0,330959,7.8792,,Q +30,0,3,"Todoroff, Mr. Lalio",male,,0,0,349216,7.8958,,S +31,0,1,"Uruchurtu, Don. Manuel E",male,40,0,0,PC 17601,27.7208,,C +32,1,1,"Spencer, Mrs. William Augustus (Marie Eugenie)",female,,1,0,PC 17569,146.5208,B78,C +33,1,3,"Glynn, Miss. Mary Agatha",female,,0,0,335677,7.75,,Q +34,0,2,"Wheadon, Mr. Edward H",male,66,0,0,C.A. 24579,10.5,,S +35,0,1,"Meyer, Mr. Edgar Joseph",male,28,1,0,PC 17604,82.1708,,C +36,0,1,"Holverson, Mr. Alexander Oskar",male,42,1,0,113789,52,,S +37,1,3,"Mamee, Mr. Hanna",male,,0,0,2677,7.2292,,C +38,0,3,"Cann, Mr. Ernest Charles",male,21,0,0,A./5. 2152,8.05,,S +39,0,3,"Vander Planke, Miss. Augusta Maria",female,18,2,0,345764,18,,S +40,1,3,"Nicola-Yarred, Miss. Jamila",female,14,1,0,2651,11.2417,,C +41,0,3,"Ahlin, Mrs. Johan (Johanna Persdotter Larsson)",female,40,1,0,7546,9.475,,S +42,0,2,"Turpin, Mrs. William John Robert (Dorothy Ann Wonnacott)",female,27,1,0,11668,21,,S +43,0,3,"Kraeff, Mr. Theodor",male,,0,0,349253,7.8958,,C +44,1,2,"Laroche, Miss. Simonne Marie Anne Andree",female,3,1,2,SC/Paris 2123,41.5792,,C +45,1,3,"Devaney, Miss. Margaret Delia",female,19,0,0,330958,7.8792,,Q +46,0,3,"Rogers, Mr. William John",male,,0,0,S.C./A.4. 23567,8.05,,S +47,0,3,"Lennon, Mr. Denis",male,,1,0,370371,15.5,,Q +48,1,3,"O'Driscoll, Miss. Bridget",female,,0,0,14311,7.75,,Q +49,0,3,"Samaan, Mr. Youssef",male,,2,0,2662,21.6792,,C +50,0,3,"Arnold-Franchi, Mrs. Josef (Josefine Franchi)",female,18,1,0,349237,17.8,,S +51,0,3,"Panula, Master. Juha Niilo",male,7,4,1,3101295,39.6875,,S +52,0,3,"Nosworthy, Mr. Richard Cater",male,21,0,0,A/4. 39886,7.8,,S +53,1,1,"Harper, Mrs. Henry Sleeper (Myna Haxtun)",female,49,1,0,PC 17572,76.7292,D33,C +54,1,2,"Faunthorpe, Mrs. Lizzie (Elizabeth Anne Wilkinson)",female,29,1,0,2926,26,,S +55,0,1,"Ostby, Mr. Engelhart Cornelius",male,65,0,1,113509,61.9792,B30,C +56,1,1,"Woolner, Mr. Hugh",male,,0,0,19947,35.5,C52,S +57,1,2,"Rugg, Miss. Emily",female,21,0,0,C.A. 31026,10.5,,S +58,0,3,"Novel, Mr. Mansouer",male,28.5,0,0,2697,7.2292,,C +59,1,2,"West, Miss. Constance Mirium",female,5,1,2,C.A. 34651,27.75,,S +60,0,3,"Goodwin, Master. William Frederick",male,11,5,2,CA 2144,46.9,,S +61,0,3,"Sirayanian, Mr. Orsen",male,22,0,0,2669,7.2292,,C +62,1,1,"Icard, Miss. Amelie",female,38,0,0,113572,80,B28, +63,0,1,"Harris, Mr. Henry Birkhardt",male,45,1,0,36973,83.475,C83,S +64,0,3,"Skoog, Master. Harald",male,4,3,2,347088,27.9,,S +65,0,1,"Stewart, Mr. Albert A",male,,0,0,PC 17605,27.7208,,C +66,1,3,"Moubarek, Master. Gerios",male,,1,1,2661,15.2458,,C +67,1,2,"Nye, Mrs. (Elizabeth Ramell)",female,29,0,0,C.A. 29395,10.5,F33,S +68,0,3,"Crease, Mr. Ernest James",male,19,0,0,S.P. 3464,8.1583,,S +69,1,3,"Andersson, Miss. Erna Alexandra",female,17,4,2,3101281,7.925,,S +70,0,3,"Kink, Mr. Vincenz",male,26,2,0,315151,8.6625,,S +71,0,2,"Jenkin, Mr. Stephen Curnow",male,32,0,0,C.A. 33111,10.5,,S +72,0,3,"Goodwin, Miss. Lillian Amy",female,16,5,2,CA 2144,46.9,,S +73,0,2,"Hood, Mr. Ambrose Jr",male,21,0,0,S.O.C. 14879,73.5,,S +74,0,3,"Chronopoulos, Mr. Apostolos",male,26,1,0,2680,14.4542,,C +75,1,3,"Bing, Mr. Lee",male,32,0,0,1601,56.4958,,S +76,0,3,"Moen, Mr. Sigurd Hansen",male,25,0,0,348123,7.65,F G73,S +77,0,3,"Staneff, Mr. Ivan",male,,0,0,349208,7.8958,,S +78,0,3,"Moutal, Mr. Rahamin Haim",male,,0,0,374746,8.05,,S +79,1,2,"Caldwell, Master. Alden Gates",male,0.83,0,2,248738,29,,S +80,1,3,"Dowdell, Miss. Elizabeth",female,30,0,0,364516,12.475,,S +81,0,3,"Waelens, Mr. Achille",male,22,0,0,345767,9,,S +82,1,3,"Sheerlinck, Mr. Jan Baptist",male,29,0,0,345779,9.5,,S +83,1,3,"McDermott, Miss. Brigdet Delia",female,,0,0,330932,7.7875,,Q +84,0,1,"Carrau, Mr. Francisco M",male,28,0,0,113059,47.1,,S +85,1,2,"Ilett, Miss. Bertha",female,17,0,0,SO/C 14885,10.5,,S +86,1,3,"Backstrom, Mrs. Karl Alfred (Maria Mathilda Gustafsson)",female,33,3,0,3101278,15.85,,S +87,0,3,"Ford, Mr. William Neal",male,16,1,3,W./C. 6608,34.375,,S +88,0,3,"Slocovski, Mr. Selman Francis",male,,0,0,SOTON/OQ 392086,8.05,,S +89,1,1,"Fortune, Miss. Mabel Helen",female,23,3,2,19950,263,C23 C25 C27,S +90,0,3,"Celotti, Mr. Francesco",male,24,0,0,343275,8.05,,S +91,0,3,"Christmann, Mr. Emil",male,29,0,0,343276,8.05,,S +92,0,3,"Andreasson, Mr. Paul Edvin",male,20,0,0,347466,7.8542,,S +93,0,1,"Chaffee, Mr. Herbert Fuller",male,46,1,0,W.E.P. 5734,61.175,E31,S +94,0,3,"Dean, Mr. Bertram Frank",male,26,1,2,C.A. 2315,20.575,,S +95,0,3,"Coxon, Mr. Daniel",male,59,0,0,364500,7.25,,S +96,0,3,"Shorney, Mr. Charles Joseph",male,,0,0,374910,8.05,,S +97,0,1,"Goldschmidt, Mr. George B",male,71,0,0,PC 17754,34.6542,A5,C +98,1,1,"Greenfield, Mr. William Bertram",male,23,0,1,PC 17759,63.3583,D10 D12,C +99,1,2,"Doling, Mrs. John T (Ada Julia Bone)",female,34,0,1,231919,23,,S +100,0,2,"Kantor, Mr. Sinai",male,34,1,0,244367,26,,S +101,0,3,"Petranec, Miss. Matilda",female,28,0,0,349245,7.8958,,S +102,0,3,"Petroff, Mr. Pastcho (""Pentcho"")",male,,0,0,349215,7.8958,,S +103,0,1,"White, Mr. Richard Frasar",male,21,0,1,35281,77.2875,D26,S +104,0,3,"Johansson, Mr. Gustaf Joel",male,33,0,0,7540,8.6542,,S +105,0,3,"Gustafsson, Mr. Anders Vilhelm",male,37,2,0,3101276,7.925,,S +106,0,3,"Mionoff, Mr. Stoytcho",male,28,0,0,349207,7.8958,,S +107,1,3,"Salkjelsvik, Miss. Anna Kristine",female,21,0,0,343120,7.65,,S +108,1,3,"Moss, Mr. Albert Johan",male,,0,0,312991,7.775,,S +109,0,3,"Rekic, Mr. Tido",male,38,0,0,349249,7.8958,,S +110,1,3,"Moran, Miss. Bertha",female,,1,0,371110,24.15,,Q +111,0,1,"Porter, Mr. Walter Chamberlain",male,47,0,0,110465,52,C110,S +112,0,3,"Zabour, Miss. Hileni",female,14.5,1,0,2665,14.4542,,C +113,0,3,"Barton, Mr. David John",male,22,0,0,324669,8.05,,S +114,0,3,"Jussila, Miss. Katriina",female,20,1,0,4136,9.825,,S +115,0,3,"Attalah, Miss. Malake",female,17,0,0,2627,14.4583,,C +116,0,3,"Pekoniemi, Mr. Edvard",male,21,0,0,STON/O 2. 3101294,7.925,,S +117,0,3,"Connors, Mr. Patrick",male,70.5,0,0,370369,7.75,,Q +118,0,2,"Turpin, Mr. William John Robert",male,29,1,0,11668,21,,S +119,0,1,"Baxter, Mr. Quigg Edmond",male,24,0,1,PC 17558,247.5208,B58 B60,C +120,0,3,"Andersson, Miss. Ellis Anna Maria",female,2,4,2,347082,31.275,,S +121,0,2,"Hickman, Mr. Stanley George",male,21,2,0,S.O.C. 14879,73.5,,S +122,0,3,"Moore, Mr. Leonard Charles",male,,0,0,A4. 54510,8.05,,S +123,0,2,"Nasser, Mr. Nicholas",male,32.5,1,0,237736,30.0708,,C +124,1,2,"Webber, Miss. Susan",female,32.5,0,0,27267,13,E101,S +125,0,1,"White, Mr. Percival Wayland",male,54,0,1,35281,77.2875,D26,S +126,1,3,"Nicola-Yarred, Master. Elias",male,12,1,0,2651,11.2417,,C +127,0,3,"McMahon, Mr. Martin",male,,0,0,370372,7.75,,Q +128,1,3,"Madsen, Mr. Fridtjof Arne",male,24,0,0,C 17369,7.1417,,S +129,1,3,"Peter, Miss. Anna",female,,1,1,2668,22.3583,F E69,C +130,0,3,"Ekstrom, Mr. Johan",male,45,0,0,347061,6.975,,S +131,0,3,"Drazenoic, Mr. Jozef",male,33,0,0,349241,7.8958,,C +132,0,3,"Coelho, Mr. Domingos Fernandeo",male,20,0,0,SOTON/O.Q. 3101307,7.05,,S +133,0,3,"Robins, Mrs. Alexander A (Grace Charity Laury)",female,47,1,0,A/5. 3337,14.5,,S +134,1,2,"Weisz, Mrs. Leopold (Mathilde Francoise Pede)",female,29,1,0,228414,26,,S +135,0,2,"Sobey, Mr. Samuel James Hayden",male,25,0,0,C.A. 29178,13,,S +136,0,2,"Richard, Mr. Emile",male,23,0,0,SC/PARIS 2133,15.0458,,C +137,1,1,"Newsom, Miss. Helen Monypeny",female,19,0,2,11752,26.2833,D47,S +138,0,1,"Futrelle, Mr. Jacques Heath",male,37,1,0,113803,53.1,C123,S +139,0,3,"Osen, Mr. Olaf Elon",male,16,0,0,7534,9.2167,,S +140,0,1,"Giglio, Mr. Victor",male,24,0,0,PC 17593,79.2,B86,C +141,0,3,"Boulos, Mrs. Joseph (Sultana)",female,,0,2,2678,15.2458,,C +142,1,3,"Nysten, Miss. Anna Sofia",female,22,0,0,347081,7.75,,S +143,1,3,"Hakkarainen, Mrs. Pekka Pietari (Elin Matilda Dolck)",female,24,1,0,STON/O2. 3101279,15.85,,S +144,0,3,"Burke, Mr. Jeremiah",male,19,0,0,365222,6.75,,Q +145,0,2,"Andrew, Mr. Edgardo Samuel",male,18,0,0,231945,11.5,,S +146,0,2,"Nicholls, Mr. Joseph Charles",male,19,1,1,C.A. 33112,36.75,,S +147,1,3,"Andersson, Mr. August Edvard (""Wennerstrom"")",male,27,0,0,350043,7.7958,,S +148,0,3,"Ford, Miss. Robina Maggie ""Ruby""",female,9,2,2,W./C. 6608,34.375,,S +149,0,2,"Navratil, Mr. Michel (""Louis M Hoffman"")",male,36.5,0,2,230080,26,F2,S +150,0,2,"Byles, Rev. Thomas Roussel Davids",male,42,0,0,244310,13,,S +151,0,2,"Bateman, Rev. Robert James",male,51,0,0,S.O.P. 1166,12.525,,S +152,1,1,"Pears, Mrs. Thomas (Edith Wearne)",female,22,1,0,113776,66.6,C2,S +153,0,3,"Meo, Mr. Alfonzo",male,55.5,0,0,A.5. 11206,8.05,,S +154,0,3,"van Billiard, Mr. Austin Blyler",male,40.5,0,2,A/5. 851,14.5,,S +155,0,3,"Olsen, Mr. Ole Martin",male,,0,0,Fa 265302,7.3125,,S +156,0,1,"Williams, Mr. Charles Duane",male,51,0,1,PC 17597,61.3792,,C +157,1,3,"Gilnagh, Miss. Katherine ""Katie""",female,16,0,0,35851,7.7333,,Q +158,0,3,"Corn, Mr. Harry",male,30,0,0,SOTON/OQ 392090,8.05,,S +159,0,3,"Smiljanic, Mr. Mile",male,,0,0,315037,8.6625,,S +160,0,3,"Sage, Master. Thomas Henry",male,,8,2,CA. 2343,69.55,,S +161,0,3,"Cribb, Mr. John Hatfield",male,44,0,1,371362,16.1,,S +162,1,2,"Watt, Mrs. James (Elizabeth ""Bessie"" Inglis Milne)",female,40,0,0,C.A. 33595,15.75,,S +163,0,3,"Bengtsson, Mr. John Viktor",male,26,0,0,347068,7.775,,S +164,0,3,"Calic, Mr. Jovo",male,17,0,0,315093,8.6625,,S +165,0,3,"Panula, Master. Eino Viljami",male,1,4,1,3101295,39.6875,,S +166,1,3,"Goldsmith, Master. Frank John William ""Frankie""",male,9,0,2,363291,20.525,,S +167,1,1,"Chibnall, Mrs. (Edith Martha Bowerman)",female,,0,1,113505,55,E33,S +168,0,3,"Skoog, Mrs. William (Anna Bernhardina Karlsson)",female,45,1,4,347088,27.9,,S +169,0,1,"Baumann, Mr. John D",male,,0,0,PC 17318,25.925,,S +170,0,3,"Ling, Mr. Lee",male,28,0,0,1601,56.4958,,S +171,0,1,"Van der hoef, Mr. Wyckoff",male,61,0,0,111240,33.5,B19,S +172,0,3,"Rice, Master. Arthur",male,4,4,1,382652,29.125,,Q +173,1,3,"Johnson, Miss. Eleanor Ileen",female,1,1,1,347742,11.1333,,S +174,0,3,"Sivola, Mr. Antti Wilhelm",male,21,0,0,STON/O 2. 3101280,7.925,,S +175,0,1,"Smith, Mr. James Clinch",male,56,0,0,17764,30.6958,A7,C +176,0,3,"Klasen, Mr. Klas Albin",male,18,1,1,350404,7.8542,,S +177,0,3,"Lefebre, Master. Henry Forbes",male,,3,1,4133,25.4667,,S +178,0,1,"Isham, Miss. Ann Elizabeth",female,50,0,0,PC 17595,28.7125,C49,C +179,0,2,"Hale, Mr. Reginald",male,30,0,0,250653,13,,S +180,0,3,"Leonard, Mr. Lionel",male,36,0,0,LINE,0,,S +181,0,3,"Sage, Miss. Constance Gladys",female,,8,2,CA. 2343,69.55,,S +182,0,2,"Pernot, Mr. Rene",male,,0,0,SC/PARIS 2131,15.05,,C +183,0,3,"Asplund, Master. Clarence Gustaf Hugo",male,9,4,2,347077,31.3875,,S +184,1,2,"Becker, Master. Richard F",male,1,2,1,230136,39,F4,S +185,1,3,"Kink-Heilmann, Miss. Luise Gretchen",female,4,0,2,315153,22.025,,S +186,0,1,"Rood, Mr. Hugh Roscoe",male,,0,0,113767,50,A32,S +187,1,3,"O'Brien, Mrs. Thomas (Johanna ""Hannah"" Godfrey)",female,,1,0,370365,15.5,,Q +188,1,1,"Romaine, Mr. Charles Hallace (""Mr C Rolmane"")",male,45,0,0,111428,26.55,,S +189,0,3,"Bourke, Mr. John",male,40,1,1,364849,15.5,,Q +190,0,3,"Turcin, Mr. Stjepan",male,36,0,0,349247,7.8958,,S +191,1,2,"Pinsky, Mrs. (Rosa)",female,32,0,0,234604,13,,S +192,0,2,"Carbines, Mr. William",male,19,0,0,28424,13,,S +193,1,3,"Andersen-Jensen, Miss. Carla Christine Nielsine",female,19,1,0,350046,7.8542,,S +194,1,2,"Navratil, Master. Michel M",male,3,1,1,230080,26,F2,S +195,1,1,"Brown, Mrs. James Joseph (Margaret Tobin)",female,44,0,0,PC 17610,27.7208,B4,C +196,1,1,"Lurette, Miss. Elise",female,58,0,0,PC 17569,146.5208,B80,C +197,0,3,"Mernagh, Mr. Robert",male,,0,0,368703,7.75,,Q +198,0,3,"Olsen, Mr. Karl Siegwart Andreas",male,42,0,1,4579,8.4042,,S +199,1,3,"Madigan, Miss. Margaret ""Maggie""",female,,0,0,370370,7.75,,Q +200,0,2,"Yrois, Miss. Henriette (""Mrs Harbeck"")",female,24,0,0,248747,13,,S +201,0,3,"Vande Walle, Mr. Nestor Cyriel",male,28,0,0,345770,9.5,,S +202,0,3,"Sage, Mr. Frederick",male,,8,2,CA. 2343,69.55,,S +203,0,3,"Johanson, Mr. Jakob Alfred",male,34,0,0,3101264,6.4958,,S +204,0,3,"Youseff, Mr. Gerious",male,45.5,0,0,2628,7.225,,C +205,1,3,"Cohen, Mr. Gurshon ""Gus""",male,18,0,0,A/5 3540,8.05,,S +206,0,3,"Strom, Miss. Telma Matilda",female,2,0,1,347054,10.4625,G6,S +207,0,3,"Backstrom, Mr. Karl Alfred",male,32,1,0,3101278,15.85,,S +208,1,3,"Albimona, Mr. Nassef Cassem",male,26,0,0,2699,18.7875,,C +209,1,3,"Carr, Miss. Helen ""Ellen""",female,16,0,0,367231,7.75,,Q +210,1,1,"Blank, Mr. Henry",male,40,0,0,112277,31,A31,C +211,0,3,"Ali, Mr. Ahmed",male,24,0,0,SOTON/O.Q. 3101311,7.05,,S +212,1,2,"Cameron, Miss. Clear Annie",female,35,0,0,F.C.C. 13528,21,,S +213,0,3,"Perkin, Mr. John Henry",male,22,0,0,A/5 21174,7.25,,S +214,0,2,"Givard, Mr. Hans Kristensen",male,30,0,0,250646,13,,S +215,0,3,"Kiernan, Mr. Philip",male,,1,0,367229,7.75,,Q +216,1,1,"Newell, Miss. Madeleine",female,31,1,0,35273,113.275,D36,C +217,1,3,"Honkanen, Miss. Eliina",female,27,0,0,STON/O2. 3101283,7.925,,S +218,0,2,"Jacobsohn, Mr. Sidney Samuel",male,42,1,0,243847,27,,S +219,1,1,"Bazzani, Miss. Albina",female,32,0,0,11813,76.2917,D15,C +220,0,2,"Harris, Mr. Walter",male,30,0,0,W/C 14208,10.5,,S +221,1,3,"Sunderland, Mr. Victor Francis",male,16,0,0,SOTON/OQ 392089,8.05,,S +222,0,2,"Bracken, Mr. James H",male,27,0,0,220367,13,,S +223,0,3,"Green, Mr. George Henry",male,51,0,0,21440,8.05,,S +224,0,3,"Nenkoff, Mr. Christo",male,,0,0,349234,7.8958,,S +225,1,1,"Hoyt, Mr. Frederick Maxfield",male,38,1,0,19943,90,C93,S +226,0,3,"Berglund, Mr. Karl Ivar Sven",male,22,0,0,PP 4348,9.35,,S +227,1,2,"Mellors, Mr. William John",male,19,0,0,SW/PP 751,10.5,,S +228,0,3,"Lovell, Mr. John Hall (""Henry"")",male,20.5,0,0,A/5 21173,7.25,,S +229,0,2,"Fahlstrom, Mr. Arne Jonas",male,18,0,0,236171,13,,S +230,0,3,"Lefebre, Miss. Mathilde",female,,3,1,4133,25.4667,,S +231,1,1,"Harris, Mrs. Henry Birkhardt (Irene Wallach)",female,35,1,0,36973,83.475,C83,S +232,0,3,"Larsson, Mr. Bengt Edvin",male,29,0,0,347067,7.775,,S +233,0,2,"Sjostedt, Mr. Ernst Adolf",male,59,0,0,237442,13.5,,S +234,1,3,"Asplund, Miss. Lillian Gertrud",female,5,4,2,347077,31.3875,,S +235,0,2,"Leyson, Mr. Robert William Norman",male,24,0,0,C.A. 29566,10.5,,S +236,0,3,"Harknett, Miss. Alice Phoebe",female,,0,0,W./C. 6609,7.55,,S +237,0,2,"Hold, Mr. Stephen",male,44,1,0,26707,26,,S +238,1,2,"Collyer, Miss. Marjorie ""Lottie""",female,8,0,2,C.A. 31921,26.25,,S +239,0,2,"Pengelly, Mr. Frederick William",male,19,0,0,28665,10.5,,S +240,0,2,"Hunt, Mr. George Henry",male,33,0,0,SCO/W 1585,12.275,,S +241,0,3,"Zabour, Miss. Thamine",female,,1,0,2665,14.4542,,C +242,1,3,"Murphy, Miss. Katherine ""Kate""",female,,1,0,367230,15.5,,Q +243,0,2,"Coleridge, Mr. Reginald Charles",male,29,0,0,W./C. 14263,10.5,,S +244,0,3,"Maenpaa, Mr. Matti Alexanteri",male,22,0,0,STON/O 2. 3101275,7.125,,S +245,0,3,"Attalah, Mr. Sleiman",male,30,0,0,2694,7.225,,C +246,0,1,"Minahan, Dr. William Edward",male,44,2,0,19928,90,C78,Q +247,0,3,"Lindahl, Miss. Agda Thorilda Viktoria",female,25,0,0,347071,7.775,,S +248,1,2,"Hamalainen, Mrs. William (Anna)",female,24,0,2,250649,14.5,,S +249,1,1,"Beckwith, Mr. Richard Leonard",male,37,1,1,11751,52.5542,D35,S +250,0,2,"Carter, Rev. Ernest Courtenay",male,54,1,0,244252,26,,S +251,0,3,"Reed, Mr. James George",male,,0,0,362316,7.25,,S +252,0,3,"Strom, Mrs. Wilhelm (Elna Matilda Persson)",female,29,1,1,347054,10.4625,G6,S +253,0,1,"Stead, Mr. William Thomas",male,62,0,0,113514,26.55,C87,S +254,0,3,"Lobb, Mr. William Arthur",male,30,1,0,A/5. 3336,16.1,,S +255,0,3,"Rosblom, Mrs. Viktor (Helena Wilhelmina)",female,41,0,2,370129,20.2125,,S +256,1,3,"Touma, Mrs. Darwis (Hanne Youssef Razi)",female,29,0,2,2650,15.2458,,C +257,1,1,"Thorne, Mrs. Gertrude Maybelle",female,,0,0,PC 17585,79.2,,C +258,1,1,"Cherry, Miss. Gladys",female,30,0,0,110152,86.5,B77,S +259,1,1,"Ward, Miss. Anna",female,35,0,0,PC 17755,512.3292,,C +260,1,2,"Parrish, Mrs. (Lutie Davis)",female,50,0,1,230433,26,,S +261,0,3,"Smith, Mr. Thomas",male,,0,0,384461,7.75,,Q +262,1,3,"Asplund, Master. Edvin Rojj Felix",male,3,4,2,347077,31.3875,,S +263,0,1,"Taussig, Mr. Emil",male,52,1,1,110413,79.65,E67,S +264,0,1,"Harrison, Mr. William",male,40,0,0,112059,0,B94,S +265,0,3,"Henry, Miss. Delia",female,,0,0,382649,7.75,,Q +266,0,2,"Reeves, Mr. David",male,36,0,0,C.A. 17248,10.5,,S +267,0,3,"Panula, Mr. Ernesti Arvid",male,16,4,1,3101295,39.6875,,S +268,1,3,"Persson, Mr. Ernst Ulrik",male,25,1,0,347083,7.775,,S +269,1,1,"Graham, Mrs. William Thompson (Edith Junkins)",female,58,0,1,PC 17582,153.4625,C125,S +270,1,1,"Bissette, Miss. Amelia",female,35,0,0,PC 17760,135.6333,C99,S +271,0,1,"Cairns, Mr. Alexander",male,,0,0,113798,31,,S +272,1,3,"Tornquist, Mr. William Henry",male,25,0,0,LINE,0,,S +273,1,2,"Mellinger, Mrs. (Elizabeth Anne Maidment)",female,41,0,1,250644,19.5,,S +274,0,1,"Natsch, Mr. Charles H",male,37,0,1,PC 17596,29.7,C118,C +275,1,3,"Healy, Miss. Hanora ""Nora""",female,,0,0,370375,7.75,,Q +276,1,1,"Andrews, Miss. Kornelia Theodosia",female,63,1,0,13502,77.9583,D7,S +277,0,3,"Lindblom, Miss. Augusta Charlotta",female,45,0,0,347073,7.75,,S +278,0,2,"Parkes, Mr. Francis ""Frank""",male,,0,0,239853,0,,S +279,0,3,"Rice, Master. Eric",male,7,4,1,382652,29.125,,Q +280,1,3,"Abbott, Mrs. Stanton (Rosa Hunt)",female,35,1,1,C.A. 2673,20.25,,S +281,0,3,"Duane, Mr. Frank",male,65,0,0,336439,7.75,,Q +282,0,3,"Olsson, Mr. Nils Johan Goransson",male,28,0,0,347464,7.8542,,S +283,0,3,"de Pelsmaeker, Mr. Alfons",male,16,0,0,345778,9.5,,S +284,1,3,"Dorking, Mr. Edward Arthur",male,19,0,0,A/5. 10482,8.05,,S +285,0,1,"Smith, Mr. Richard William",male,,0,0,113056,26,A19,S +286,0,3,"Stankovic, Mr. Ivan",male,33,0,0,349239,8.6625,,C +287,1,3,"de Mulder, Mr. Theodore",male,30,0,0,345774,9.5,,S +288,0,3,"Naidenoff, Mr. Penko",male,22,0,0,349206,7.8958,,S +289,1,2,"Hosono, Mr. Masabumi",male,42,0,0,237798,13,,S +290,1,3,"Connolly, Miss. Kate",female,22,0,0,370373,7.75,,Q +291,1,1,"Barber, Miss. Ellen ""Nellie""",female,26,0,0,19877,78.85,,S +292,1,1,"Bishop, Mrs. Dickinson H (Helen Walton)",female,19,1,0,11967,91.0792,B49,C +293,0,2,"Levy, Mr. Rene Jacques",male,36,0,0,SC/Paris 2163,12.875,D,C +294,0,3,"Haas, Miss. Aloisia",female,24,0,0,349236,8.85,,S +295,0,3,"Mineff, Mr. Ivan",male,24,0,0,349233,7.8958,,S +296,0,1,"Lewy, Mr. Ervin G",male,,0,0,PC 17612,27.7208,,C +297,0,3,"Hanna, Mr. Mansour",male,23.5,0,0,2693,7.2292,,C +298,0,1,"Allison, Miss. Helen Loraine",female,2,1,2,113781,151.55,C22 C26,S +299,1,1,"Saalfeld, Mr. Adolphe",male,,0,0,19988,30.5,C106,S +300,1,1,"Baxter, Mrs. James (Helene DeLaudeniere Chaput)",female,50,0,1,PC 17558,247.5208,B58 B60,C +301,1,3,"Kelly, Miss. Anna Katherine ""Annie Kate""",female,,0,0,9234,7.75,,Q +302,1,3,"McCoy, Mr. Bernard",male,,2,0,367226,23.25,,Q +303,0,3,"Johnson, Mr. William Cahoone Jr",male,19,0,0,LINE,0,,S +304,1,2,"Keane, Miss. Nora A",female,,0,0,226593,12.35,E101,Q +305,0,3,"Williams, Mr. Howard Hugh ""Harry""",male,,0,0,A/5 2466,8.05,,S +306,1,1,"Allison, Master. Hudson Trevor",male,0.92,1,2,113781,151.55,C22 C26,S +307,1,1,"Fleming, Miss. Margaret",female,,0,0,17421,110.8833,,C +308,1,1,"Penasco y Castellana, Mrs. Victor de Satode (Maria Josefa Perez de Soto y Vallejo)",female,17,1,0,PC 17758,108.9,C65,C +309,0,2,"Abelson, Mr. Samuel",male,30,1,0,P/PP 3381,24,,C +310,1,1,"Francatelli, Miss. Laura Mabel",female,30,0,0,PC 17485,56.9292,E36,C +311,1,1,"Hays, Miss. Margaret Bechstein",female,24,0,0,11767,83.1583,C54,C +312,1,1,"Ryerson, Miss. Emily Borie",female,18,2,2,PC 17608,262.375,B57 B59 B63 B66,C +313,0,2,"Lahtinen, Mrs. William (Anna Sylfven)",female,26,1,1,250651,26,,S +314,0,3,"Hendekovic, Mr. Ignjac",male,28,0,0,349243,7.8958,,S +315,0,2,"Hart, Mr. Benjamin",male,43,1,1,F.C.C. 13529,26.25,,S +316,1,3,"Nilsson, Miss. Helmina Josefina",female,26,0,0,347470,7.8542,,S +317,1,2,"Kantor, Mrs. Sinai (Miriam Sternin)",female,24,1,0,244367,26,,S +318,0,2,"Moraweck, Dr. Ernest",male,54,0,0,29011,14,,S +319,1,1,"Wick, Miss. Mary Natalie",female,31,0,2,36928,164.8667,C7,S +320,1,1,"Spedden, Mrs. Frederic Oakley (Margaretta Corning Stone)",female,40,1,1,16966,134.5,E34,C +321,0,3,"Dennis, Mr. Samuel",male,22,0,0,A/5 21172,7.25,,S +322,0,3,"Danoff, Mr. Yoto",male,27,0,0,349219,7.8958,,S +323,1,2,"Slayter, Miss. Hilda Mary",female,30,0,0,234818,12.35,,Q +324,1,2,"Caldwell, Mrs. Albert Francis (Sylvia Mae Harbaugh)",female,22,1,1,248738,29,,S +325,0,3,"Sage, Mr. George John Jr",male,,8,2,CA. 2343,69.55,,S +326,1,1,"Young, Miss. Marie Grice",female,36,0,0,PC 17760,135.6333,C32,C +327,0,3,"Nysveen, Mr. Johan Hansen",male,61,0,0,345364,6.2375,,S +328,1,2,"Ball, Mrs. (Ada E Hall)",female,36,0,0,28551,13,D,S +329,1,3,"Goldsmith, Mrs. Frank John (Emily Alice Brown)",female,31,1,1,363291,20.525,,S +330,1,1,"Hippach, Miss. Jean Gertrude",female,16,0,1,111361,57.9792,B18,C +331,1,3,"McCoy, Miss. Agnes",female,,2,0,367226,23.25,,Q +332,0,1,"Partner, Mr. Austen",male,45.5,0,0,113043,28.5,C124,S +333,0,1,"Graham, Mr. George Edward",male,38,0,1,PC 17582,153.4625,C91,S +334,0,3,"Vander Planke, Mr. Leo Edmondus",male,16,2,0,345764,18,,S +335,1,1,"Frauenthal, Mrs. Henry William (Clara Heinsheimer)",female,,1,0,PC 17611,133.65,,S +336,0,3,"Denkoff, Mr. Mitto",male,,0,0,349225,7.8958,,S +337,0,1,"Pears, Mr. Thomas Clinton",male,29,1,0,113776,66.6,C2,S +338,1,1,"Burns, Miss. Elizabeth Margaret",female,41,0,0,16966,134.5,E40,C +339,1,3,"Dahl, Mr. Karl Edwart",male,45,0,0,7598,8.05,,S +340,0,1,"Blackwell, Mr. Stephen Weart",male,45,0,0,113784,35.5,T,S +341,1,2,"Navratil, Master. Edmond Roger",male,2,1,1,230080,26,F2,S +342,1,1,"Fortune, Miss. Alice Elizabeth",female,24,3,2,19950,263,C23 C25 C27,S +343,0,2,"Collander, Mr. Erik Gustaf",male,28,0,0,248740,13,,S +344,0,2,"Sedgwick, Mr. Charles Frederick Waddington",male,25,0,0,244361,13,,S +345,0,2,"Fox, Mr. Stanley Hubert",male,36,0,0,229236,13,,S +346,1,2,"Brown, Miss. Amelia ""Mildred""",female,24,0,0,248733,13,F33,S +347,1,2,"Smith, Miss. Marion Elsie",female,40,0,0,31418,13,,S +348,1,3,"Davison, Mrs. Thomas Henry (Mary E Finck)",female,,1,0,386525,16.1,,S +349,1,3,"Coutts, Master. William Loch ""William""",male,3,1,1,C.A. 37671,15.9,,S +350,0,3,"Dimic, Mr. Jovan",male,42,0,0,315088,8.6625,,S +351,0,3,"Odahl, Mr. Nils Martin",male,23,0,0,7267,9.225,,S +352,0,1,"Williams-Lambert, Mr. Fletcher Fellows",male,,0,0,113510,35,C128,S +353,0,3,"Elias, Mr. Tannous",male,15,1,1,2695,7.2292,,C +354,0,3,"Arnold-Franchi, Mr. Josef",male,25,1,0,349237,17.8,,S +355,0,3,"Yousif, Mr. Wazli",male,,0,0,2647,7.225,,C +356,0,3,"Vanden Steen, Mr. Leo Peter",male,28,0,0,345783,9.5,,S +357,1,1,"Bowerman, Miss. Elsie Edith",female,22,0,1,113505,55,E33,S +358,0,2,"Funk, Miss. Annie Clemmer",female,38,0,0,237671,13,,S +359,1,3,"McGovern, Miss. Mary",female,,0,0,330931,7.8792,,Q +360,1,3,"Mockler, Miss. Helen Mary ""Ellie""",female,,0,0,330980,7.8792,,Q +361,0,3,"Skoog, Mr. Wilhelm",male,40,1,4,347088,27.9,,S +362,0,2,"del Carlo, Mr. Sebastiano",male,29,1,0,SC/PARIS 2167,27.7208,,C +363,0,3,"Barbara, Mrs. (Catherine David)",female,45,0,1,2691,14.4542,,C +364,0,3,"Asim, Mr. Adola",male,35,0,0,SOTON/O.Q. 3101310,7.05,,S +365,0,3,"O'Brien, Mr. Thomas",male,,1,0,370365,15.5,,Q +366,0,3,"Adahl, Mr. Mauritz Nils Martin",male,30,0,0,C 7076,7.25,,S +367,1,1,"Warren, Mrs. Frank Manley (Anna Sophia Atkinson)",female,60,1,0,110813,75.25,D37,C +368,1,3,"Moussa, Mrs. (Mantoura Boulos)",female,,0,0,2626,7.2292,,C +369,1,3,"Jermyn, Miss. Annie",female,,0,0,14313,7.75,,Q +370,1,1,"Aubart, Mme. Leontine Pauline",female,24,0,0,PC 17477,69.3,B35,C +371,1,1,"Harder, Mr. George Achilles",male,25,1,0,11765,55.4417,E50,C +372,0,3,"Wiklund, Mr. Jakob Alfred",male,18,1,0,3101267,6.4958,,S +373,0,3,"Beavan, Mr. William Thomas",male,19,0,0,323951,8.05,,S +374,0,1,"Ringhini, Mr. Sante",male,22,0,0,PC 17760,135.6333,,C +375,0,3,"Palsson, Miss. Stina Viola",female,3,3,1,349909,21.075,,S +376,1,1,"Meyer, Mrs. Edgar Joseph (Leila Saks)",female,,1,0,PC 17604,82.1708,,C +377,1,3,"Landergren, Miss. Aurora Adelia",female,22,0,0,C 7077,7.25,,S +378,0,1,"Widener, Mr. Harry Elkins",male,27,0,2,113503,211.5,C82,C +379,0,3,"Betros, Mr. Tannous",male,20,0,0,2648,4.0125,,C +380,0,3,"Gustafsson, Mr. Karl Gideon",male,19,0,0,347069,7.775,,S +381,1,1,"Bidois, Miss. Rosalie",female,42,0,0,PC 17757,227.525,,C +382,1,3,"Nakid, Miss. Maria (""Mary"")",female,1,0,2,2653,15.7417,,C +383,0,3,"Tikkanen, Mr. Juho",male,32,0,0,STON/O 2. 3101293,7.925,,S +384,1,1,"Holverson, Mrs. Alexander Oskar (Mary Aline Towner)",female,35,1,0,113789,52,,S +385,0,3,"Plotcharsky, Mr. Vasil",male,,0,0,349227,7.8958,,S +386,0,2,"Davies, Mr. Charles Henry",male,18,0,0,S.O.C. 14879,73.5,,S +387,0,3,"Goodwin, Master. Sidney Leonard",male,1,5,2,CA 2144,46.9,,S +388,1,2,"Buss, Miss. Kate",female,36,0,0,27849,13,,S +389,0,3,"Sadlier, Mr. Matthew",male,,0,0,367655,7.7292,,Q +390,1,2,"Lehmann, Miss. Bertha",female,17,0,0,SC 1748,12,,C +391,1,1,"Carter, Mr. William Ernest",male,36,1,2,113760,120,B96 B98,S +392,1,3,"Jansson, Mr. Carl Olof",male,21,0,0,350034,7.7958,,S +393,0,3,"Gustafsson, Mr. Johan Birger",male,28,2,0,3101277,7.925,,S +394,1,1,"Newell, Miss. Marjorie",female,23,1,0,35273,113.275,D36,C +395,1,3,"Sandstrom, Mrs. Hjalmar (Agnes Charlotta Bengtsson)",female,24,0,2,PP 9549,16.7,G6,S +396,0,3,"Johansson, Mr. Erik",male,22,0,0,350052,7.7958,,S +397,0,3,"Olsson, Miss. Elina",female,31,0,0,350407,7.8542,,S +398,0,2,"McKane, Mr. Peter David",male,46,0,0,28403,26,,S +399,0,2,"Pain, Dr. Alfred",male,23,0,0,244278,10.5,,S +400,1,2,"Trout, Mrs. William H (Jessie L)",female,28,0,0,240929,12.65,,S +401,1,3,"Niskanen, Mr. Juha",male,39,0,0,STON/O 2. 3101289,7.925,,S +402,0,3,"Adams, Mr. John",male,26,0,0,341826,8.05,,S +403,0,3,"Jussila, Miss. Mari Aina",female,21,1,0,4137,9.825,,S +404,0,3,"Hakkarainen, Mr. Pekka Pietari",male,28,1,0,STON/O2. 3101279,15.85,,S +405,0,3,"Oreskovic, Miss. Marija",female,20,0,0,315096,8.6625,,S +406,0,2,"Gale, Mr. Shadrach",male,34,1,0,28664,21,,S +407,0,3,"Widegren, Mr. Carl/Charles Peter",male,51,0,0,347064,7.75,,S +408,1,2,"Richards, Master. William Rowe",male,3,1,1,29106,18.75,,S +409,0,3,"Birkeland, Mr. Hans Martin Monsen",male,21,0,0,312992,7.775,,S +410,0,3,"Lefebre, Miss. Ida",female,,3,1,4133,25.4667,,S +411,0,3,"Sdycoff, Mr. Todor",male,,0,0,349222,7.8958,,S +412,0,3,"Hart, Mr. Henry",male,,0,0,394140,6.8583,,Q +413,1,1,"Minahan, Miss. Daisy E",female,33,1,0,19928,90,C78,Q +414,0,2,"Cunningham, Mr. Alfred Fleming",male,,0,0,239853,0,,S +415,1,3,"Sundman, Mr. Johan Julian",male,44,0,0,STON/O 2. 3101269,7.925,,S +416,0,3,"Meek, Mrs. Thomas (Annie Louise Rowley)",female,,0,0,343095,8.05,,S +417,1,2,"Drew, Mrs. James Vivian (Lulu Thorne Christian)",female,34,1,1,28220,32.5,,S +418,1,2,"Silven, Miss. Lyyli Karoliina",female,18,0,2,250652,13,,S +419,0,2,"Matthews, Mr. William John",male,30,0,0,28228,13,,S +420,0,3,"Van Impe, Miss. Catharina",female,10,0,2,345773,24.15,,S +421,0,3,"Gheorgheff, Mr. Stanio",male,,0,0,349254,7.8958,,C +422,0,3,"Charters, Mr. David",male,21,0,0,A/5. 13032,7.7333,,Q +423,0,3,"Zimmerman, Mr. Leo",male,29,0,0,315082,7.875,,S +424,0,3,"Danbom, Mrs. Ernst Gilbert (Anna Sigrid Maria Brogren)",female,28,1,1,347080,14.4,,S +425,0,3,"Rosblom, Mr. Viktor Richard",male,18,1,1,370129,20.2125,,S +426,0,3,"Wiseman, Mr. Phillippe",male,,0,0,A/4. 34244,7.25,,S +427,1,2,"Clarke, Mrs. Charles V (Ada Maria Winfield)",female,28,1,0,2003,26,,S +428,1,2,"Phillips, Miss. Kate Florence (""Mrs Kate Louise Phillips Marshall"")",female,19,0,0,250655,26,,S +429,0,3,"Flynn, Mr. James",male,,0,0,364851,7.75,,Q +430,1,3,"Pickard, Mr. Berk (Berk Trembisky)",male,32,0,0,SOTON/O.Q. 392078,8.05,E10,S +431,1,1,"Bjornstrom-Steffansson, Mr. Mauritz Hakan",male,28,0,0,110564,26.55,C52,S +432,1,3,"Thorneycroft, Mrs. Percival (Florence Kate White)",female,,1,0,376564,16.1,,S +433,1,2,"Louch, Mrs. Charles Alexander (Alice Adelaide Slow)",female,42,1,0,SC/AH 3085,26,,S +434,0,3,"Kallio, Mr. Nikolai Erland",male,17,0,0,STON/O 2. 3101274,7.125,,S +435,0,1,"Silvey, Mr. William Baird",male,50,1,0,13507,55.9,E44,S +436,1,1,"Carter, Miss. Lucile Polk",female,14,1,2,113760,120,B96 B98,S +437,0,3,"Ford, Miss. Doolina Margaret ""Daisy""",female,21,2,2,W./C. 6608,34.375,,S +438,1,2,"Richards, Mrs. Sidney (Emily Hocking)",female,24,2,3,29106,18.75,,S +439,0,1,"Fortune, Mr. Mark",male,64,1,4,19950,263,C23 C25 C27,S +440,0,2,"Kvillner, Mr. Johan Henrik Johannesson",male,31,0,0,C.A. 18723,10.5,,S +441,1,2,"Hart, Mrs. Benjamin (Esther Ada Bloomfield)",female,45,1,1,F.C.C. 13529,26.25,,S +442,0,3,"Hampe, Mr. Leon",male,20,0,0,345769,9.5,,S +443,0,3,"Petterson, Mr. Johan Emil",male,25,1,0,347076,7.775,,S +444,1,2,"Reynaldo, Ms. Encarnacion",female,28,0,0,230434,13,,S +445,1,3,"Johannesen-Bratthammer, Mr. Bernt",male,,0,0,65306,8.1125,,S +446,1,1,"Dodge, Master. Washington",male,4,0,2,33638,81.8583,A34,S +447,1,2,"Mellinger, Miss. Madeleine Violet",female,13,0,1,250644,19.5,,S +448,1,1,"Seward, Mr. Frederic Kimber",male,34,0,0,113794,26.55,,S +449,1,3,"Baclini, Miss. Marie Catherine",female,5,2,1,2666,19.2583,,C +450,1,1,"Peuchen, Major. Arthur Godfrey",male,52,0,0,113786,30.5,C104,S +451,0,2,"West, Mr. Edwy Arthur",male,36,1,2,C.A. 34651,27.75,,S +452,0,3,"Hagland, Mr. Ingvald Olai Olsen",male,,1,0,65303,19.9667,,S +453,0,1,"Foreman, Mr. Benjamin Laventall",male,30,0,0,113051,27.75,C111,C +454,1,1,"Goldenberg, Mr. Samuel L",male,49,1,0,17453,89.1042,C92,C +455,0,3,"Peduzzi, Mr. Joseph",male,,0,0,A/5 2817,8.05,,S +456,1,3,"Jalsevac, Mr. Ivan",male,29,0,0,349240,7.8958,,C +457,0,1,"Millet, Mr. Francis Davis",male,65,0,0,13509,26.55,E38,S +458,1,1,"Kenyon, Mrs. Frederick R (Marion)",female,,1,0,17464,51.8625,D21,S +459,1,2,"Toomey, Miss. Ellen",female,50,0,0,F.C.C. 13531,10.5,,S +460,0,3,"O'Connor, Mr. Maurice",male,,0,0,371060,7.75,,Q +461,1,1,"Anderson, Mr. Harry",male,48,0,0,19952,26.55,E12,S +462,0,3,"Morley, Mr. William",male,34,0,0,364506,8.05,,S +463,0,1,"Gee, Mr. Arthur H",male,47,0,0,111320,38.5,E63,S +464,0,2,"Milling, Mr. Jacob Christian",male,48,0,0,234360,13,,S +465,0,3,"Maisner, Mr. Simon",male,,0,0,A/S 2816,8.05,,S +466,0,3,"Goncalves, Mr. Manuel Estanslas",male,38,0,0,SOTON/O.Q. 3101306,7.05,,S +467,0,2,"Campbell, Mr. William",male,,0,0,239853,0,,S +468,0,1,"Smart, Mr. John Montgomery",male,56,0,0,113792,26.55,,S +469,0,3,"Scanlan, Mr. James",male,,0,0,36209,7.725,,Q +470,1,3,"Baclini, Miss. Helene Barbara",female,0.75,2,1,2666,19.2583,,C +471,0,3,"Keefe, Mr. Arthur",male,,0,0,323592,7.25,,S +472,0,3,"Cacic, Mr. Luka",male,38,0,0,315089,8.6625,,S +473,1,2,"West, Mrs. Edwy Arthur (Ada Mary Worth)",female,33,1,2,C.A. 34651,27.75,,S +474,1,2,"Jerwan, Mrs. Amin S (Marie Marthe Thuillard)",female,23,0,0,SC/AH Basle 541,13.7917,D,C +475,0,3,"Strandberg, Miss. Ida Sofia",female,22,0,0,7553,9.8375,,S +476,0,1,"Clifford, Mr. George Quincy",male,,0,0,110465,52,A14,S +477,0,2,"Renouf, Mr. Peter Henry",male,34,1,0,31027,21,,S +478,0,3,"Braund, Mr. Lewis Richard",male,29,1,0,3460,7.0458,,S +479,0,3,"Karlsson, Mr. Nils August",male,22,0,0,350060,7.5208,,S +480,1,3,"Hirvonen, Miss. Hildur E",female,2,0,1,3101298,12.2875,,S +481,0,3,"Goodwin, Master. Harold Victor",male,9,5,2,CA 2144,46.9,,S +482,0,2,"Frost, Mr. Anthony Wood ""Archie""",male,,0,0,239854,0,,S +483,0,3,"Rouse, Mr. Richard Henry",male,50,0,0,A/5 3594,8.05,,S +484,1,3,"Turkula, Mrs. (Hedwig)",female,63,0,0,4134,9.5875,,S +485,1,1,"Bishop, Mr. Dickinson H",male,25,1,0,11967,91.0792,B49,C +486,0,3,"Lefebre, Miss. Jeannie",female,,3,1,4133,25.4667,,S +487,1,1,"Hoyt, Mrs. Frederick Maxfield (Jane Anne Forby)",female,35,1,0,19943,90,C93,S +488,0,1,"Kent, Mr. Edward Austin",male,58,0,0,11771,29.7,B37,C +489,0,3,"Somerton, Mr. Francis William",male,30,0,0,A.5. 18509,8.05,,S +490,1,3,"Coutts, Master. Eden Leslie ""Neville""",male,9,1,1,C.A. 37671,15.9,,S +491,0,3,"Hagland, Mr. Konrad Mathias Reiersen",male,,1,0,65304,19.9667,,S +492,0,3,"Windelov, Mr. Einar",male,21,0,0,SOTON/OQ 3101317,7.25,,S +493,0,1,"Molson, Mr. Harry Markland",male,55,0,0,113787,30.5,C30,S +494,0,1,"Artagaveytia, Mr. Ramon",male,71,0,0,PC 17609,49.5042,,C +495,0,3,"Stanley, Mr. Edward Roland",male,21,0,0,A/4 45380,8.05,,S +496,0,3,"Yousseff, Mr. Gerious",male,,0,0,2627,14.4583,,C +497,1,1,"Eustis, Miss. Elizabeth Mussey",female,54,1,0,36947,78.2667,D20,C +498,0,3,"Shellard, Mr. Frederick William",male,,0,0,C.A. 6212,15.1,,S +499,0,1,"Allison, Mrs. Hudson J C (Bessie Waldo Daniels)",female,25,1,2,113781,151.55,C22 C26,S +500,0,3,"Svensson, Mr. Olof",male,24,0,0,350035,7.7958,,S +501,0,3,"Calic, Mr. Petar",male,17,0,0,315086,8.6625,,S +502,0,3,"Canavan, Miss. Mary",female,21,0,0,364846,7.75,,Q +503,0,3,"O'Sullivan, Miss. Bridget Mary",female,,0,0,330909,7.6292,,Q +504,0,3,"Laitinen, Miss. Kristina Sofia",female,37,0,0,4135,9.5875,,S +505,1,1,"Maioni, Miss. Roberta",female,16,0,0,110152,86.5,B79,S +506,0,1,"Penasco y Castellana, Mr. Victor de Satode",male,18,1,0,PC 17758,108.9,C65,C +507,1,2,"Quick, Mrs. Frederick Charles (Jane Richards)",female,33,0,2,26360,26,,S +508,1,1,"Bradley, Mr. George (""George Arthur Brayton"")",male,,0,0,111427,26.55,,S +509,0,3,"Olsen, Mr. Henry Margido",male,28,0,0,C 4001,22.525,,S +510,1,3,"Lang, Mr. Fang",male,26,0,0,1601,56.4958,,S +511,1,3,"Daly, Mr. Eugene Patrick",male,29,0,0,382651,7.75,,Q +512,0,3,"Webber, Mr. James",male,,0,0,SOTON/OQ 3101316,8.05,,S +513,1,1,"McGough, Mr. James Robert",male,36,0,0,PC 17473,26.2875,E25,S +514,1,1,"Rothschild, Mrs. Martin (Elizabeth L. Barrett)",female,54,1,0,PC 17603,59.4,,C +515,0,3,"Coleff, Mr. Satio",male,24,0,0,349209,7.4958,,S +516,0,1,"Walker, Mr. William Anderson",male,47,0,0,36967,34.0208,D46,S +517,1,2,"Lemore, Mrs. (Amelia Milley)",female,34,0,0,C.A. 34260,10.5,F33,S +518,0,3,"Ryan, Mr. Patrick",male,,0,0,371110,24.15,,Q +519,1,2,"Angle, Mrs. William A (Florence ""Mary"" Agnes Hughes)",female,36,1,0,226875,26,,S +520,0,3,"Pavlovic, Mr. Stefo",male,32,0,0,349242,7.8958,,S +521,1,1,"Perreault, Miss. Anne",female,30,0,0,12749,93.5,B73,S +522,0,3,"Vovk, Mr. Janko",male,22,0,0,349252,7.8958,,S +523,0,3,"Lahoud, Mr. Sarkis",male,,0,0,2624,7.225,,C +524,1,1,"Hippach, Mrs. Louis Albert (Ida Sophia Fischer)",female,44,0,1,111361,57.9792,B18,C +525,0,3,"Kassem, Mr. Fared",male,,0,0,2700,7.2292,,C +526,0,3,"Farrell, Mr. James",male,40.5,0,0,367232,7.75,,Q +527,1,2,"Ridsdale, Miss. Lucy",female,50,0,0,W./C. 14258,10.5,,S +528,0,1,"Farthing, Mr. John",male,,0,0,PC 17483,221.7792,C95,S +529,0,3,"Salonen, Mr. Johan Werner",male,39,0,0,3101296,7.925,,S +530,0,2,"Hocking, Mr. Richard George",male,23,2,1,29104,11.5,,S +531,1,2,"Quick, Miss. Phyllis May",female,2,1,1,26360,26,,S +532,0,3,"Toufik, Mr. Nakli",male,,0,0,2641,7.2292,,C +533,0,3,"Elias, Mr. Joseph Jr",male,17,1,1,2690,7.2292,,C +534,1,3,"Peter, Mrs. Catherine (Catherine Rizk)",female,,0,2,2668,22.3583,,C +535,0,3,"Cacic, Miss. Marija",female,30,0,0,315084,8.6625,,S +536,1,2,"Hart, Miss. Eva Miriam",female,7,0,2,F.C.C. 13529,26.25,,S +537,0,1,"Butt, Major. Archibald Willingham",male,45,0,0,113050,26.55,B38,S +538,1,1,"LeRoy, Miss. Bertha",female,30,0,0,PC 17761,106.425,,C +539,0,3,"Risien, Mr. Samuel Beard",male,,0,0,364498,14.5,,S +540,1,1,"Frolicher, Miss. Hedwig Margaritha",female,22,0,2,13568,49.5,B39,C +541,1,1,"Crosby, Miss. Harriet R",female,36,0,2,WE/P 5735,71,B22,S +542,0,3,"Andersson, Miss. Ingeborg Constanzia",female,9,4,2,347082,31.275,,S +543,0,3,"Andersson, Miss. Sigrid Elisabeth",female,11,4,2,347082,31.275,,S +544,1,2,"Beane, Mr. Edward",male,32,1,0,2908,26,,S +545,0,1,"Douglas, Mr. Walter Donald",male,50,1,0,PC 17761,106.425,C86,C +546,0,1,"Nicholson, Mr. Arthur Ernest",male,64,0,0,693,26,,S +547,1,2,"Beane, Mrs. Edward (Ethel Clarke)",female,19,1,0,2908,26,,S +548,1,2,"Padro y Manent, Mr. Julian",male,,0,0,SC/PARIS 2146,13.8625,,C +549,0,3,"Goldsmith, Mr. Frank John",male,33,1,1,363291,20.525,,S +550,1,2,"Davies, Master. John Morgan Jr",male,8,1,1,C.A. 33112,36.75,,S +551,1,1,"Thayer, Mr. John Borland Jr",male,17,0,2,17421,110.8833,C70,C +552,0,2,"Sharp, Mr. Percival James R",male,27,0,0,244358,26,,S +553,0,3,"O'Brien, Mr. Timothy",male,,0,0,330979,7.8292,,Q +554,1,3,"Leeni, Mr. Fahim (""Philip Zenni"")",male,22,0,0,2620,7.225,,C +555,1,3,"Ohman, Miss. Velin",female,22,0,0,347085,7.775,,S +556,0,1,"Wright, Mr. George",male,62,0,0,113807,26.55,,S +557,1,1,"Duff Gordon, Lady. (Lucille Christiana Sutherland) (""Mrs Morgan"")",female,48,1,0,11755,39.6,A16,C +558,0,1,"Robbins, Mr. Victor",male,,0,0,PC 17757,227.525,,C +559,1,1,"Taussig, Mrs. Emil (Tillie Mandelbaum)",female,39,1,1,110413,79.65,E67,S +560,1,3,"de Messemaeker, Mrs. Guillaume Joseph (Emma)",female,36,1,0,345572,17.4,,S +561,0,3,"Morrow, Mr. Thomas Rowan",male,,0,0,372622,7.75,,Q +562,0,3,"Sivic, Mr. Husein",male,40,0,0,349251,7.8958,,S +563,0,2,"Norman, Mr. Robert Douglas",male,28,0,0,218629,13.5,,S +564,0,3,"Simmons, Mr. John",male,,0,0,SOTON/OQ 392082,8.05,,S +565,0,3,"Meanwell, Miss. (Marion Ogden)",female,,0,0,SOTON/O.Q. 392087,8.05,,S +566,0,3,"Davies, Mr. Alfred J",male,24,2,0,A/4 48871,24.15,,S +567,0,3,"Stoytcheff, Mr. Ilia",male,19,0,0,349205,7.8958,,S +568,0,3,"Palsson, Mrs. Nils (Alma Cornelia Berglund)",female,29,0,4,349909,21.075,,S +569,0,3,"Doharr, Mr. Tannous",male,,0,0,2686,7.2292,,C +570,1,3,"Jonsson, Mr. Carl",male,32,0,0,350417,7.8542,,S +571,1,2,"Harris, Mr. George",male,62,0,0,S.W./PP 752,10.5,,S +572,1,1,"Appleton, Mrs. Edward Dale (Charlotte Lamson)",female,53,2,0,11769,51.4792,C101,S +573,1,1,"Flynn, Mr. John Irwin (""Irving"")",male,36,0,0,PC 17474,26.3875,E25,S +574,1,3,"Kelly, Miss. Mary",female,,0,0,14312,7.75,,Q +575,0,3,"Rush, Mr. Alfred George John",male,16,0,0,A/4. 20589,8.05,,S +576,0,3,"Patchett, Mr. George",male,19,0,0,358585,14.5,,S +577,1,2,"Garside, Miss. Ethel",female,34,0,0,243880,13,,S +578,1,1,"Silvey, Mrs. William Baird (Alice Munger)",female,39,1,0,13507,55.9,E44,S +579,0,3,"Caram, Mrs. Joseph (Maria Elias)",female,,1,0,2689,14.4583,,C +580,1,3,"Jussila, Mr. Eiriik",male,32,0,0,STON/O 2. 3101286,7.925,,S +581,1,2,"Christy, Miss. Julie Rachel",female,25,1,1,237789,30,,S +582,1,1,"Thayer, Mrs. John Borland (Marian Longstreth Morris)",female,39,1,1,17421,110.8833,C68,C +583,0,2,"Downton, Mr. William James",male,54,0,0,28403,26,,S +584,0,1,"Ross, Mr. John Hugo",male,36,0,0,13049,40.125,A10,C +585,0,3,"Paulner, Mr. Uscher",male,,0,0,3411,8.7125,,C +586,1,1,"Taussig, Miss. Ruth",female,18,0,2,110413,79.65,E68,S +587,0,2,"Jarvis, Mr. John Denzil",male,47,0,0,237565,15,,S +588,1,1,"Frolicher-Stehli, Mr. Maxmillian",male,60,1,1,13567,79.2,B41,C +589,0,3,"Gilinski, Mr. Eliezer",male,22,0,0,14973,8.05,,S +590,0,3,"Murdlin, Mr. Joseph",male,,0,0,A./5. 3235,8.05,,S +591,0,3,"Rintamaki, Mr. Matti",male,35,0,0,STON/O 2. 3101273,7.125,,S +592,1,1,"Stephenson, Mrs. Walter Bertram (Martha Eustis)",female,52,1,0,36947,78.2667,D20,C +593,0,3,"Elsbury, Mr. William James",male,47,0,0,A/5 3902,7.25,,S +594,0,3,"Bourke, Miss. Mary",female,,0,2,364848,7.75,,Q +595,0,2,"Chapman, Mr. John Henry",male,37,1,0,SC/AH 29037,26,,S +596,0,3,"Van Impe, Mr. Jean Baptiste",male,36,1,1,345773,24.15,,S +597,1,2,"Leitch, Miss. Jessie Wills",female,,0,0,248727,33,,S +598,0,3,"Johnson, Mr. Alfred",male,49,0,0,LINE,0,,S +599,0,3,"Boulos, Mr. Hanna",male,,0,0,2664,7.225,,C +600,1,1,"Duff Gordon, Sir. Cosmo Edmund (""Mr Morgan"")",male,49,1,0,PC 17485,56.9292,A20,C +601,1,2,"Jacobsohn, Mrs. Sidney Samuel (Amy Frances Christy)",female,24,2,1,243847,27,,S +602,0,3,"Slabenoff, Mr. Petco",male,,0,0,349214,7.8958,,S +603,0,1,"Harrington, Mr. Charles H",male,,0,0,113796,42.4,,S +604,0,3,"Torber, Mr. Ernst William",male,44,0,0,364511,8.05,,S +605,1,1,"Homer, Mr. Harry (""Mr E Haven"")",male,35,0,0,111426,26.55,,C +606,0,3,"Lindell, Mr. Edvard Bengtsson",male,36,1,0,349910,15.55,,S +607,0,3,"Karaic, Mr. Milan",male,30,0,0,349246,7.8958,,S +608,1,1,"Daniel, Mr. Robert Williams",male,27,0,0,113804,30.5,,S +609,1,2,"Laroche, Mrs. Joseph (Juliette Marie Louise Lafargue)",female,22,1,2,SC/Paris 2123,41.5792,,C +610,1,1,"Shutes, Miss. Elizabeth W",female,40,0,0,PC 17582,153.4625,C125,S +611,0,3,"Andersson, Mrs. Anders Johan (Alfrida Konstantia Brogren)",female,39,1,5,347082,31.275,,S +612,0,3,"Jardin, Mr. Jose Neto",male,,0,0,SOTON/O.Q. 3101305,7.05,,S +613,1,3,"Murphy, Miss. Margaret Jane",female,,1,0,367230,15.5,,Q +614,0,3,"Horgan, Mr. John",male,,0,0,370377,7.75,,Q +615,0,3,"Brocklebank, Mr. William Alfred",male,35,0,0,364512,8.05,,S +616,1,2,"Herman, Miss. Alice",female,24,1,2,220845,65,,S +617,0,3,"Danbom, Mr. Ernst Gilbert",male,34,1,1,347080,14.4,,S +618,0,3,"Lobb, Mrs. William Arthur (Cordelia K Stanlick)",female,26,1,0,A/5. 3336,16.1,,S +619,1,2,"Becker, Miss. Marion Louise",female,4,2,1,230136,39,F4,S +620,0,2,"Gavey, Mr. Lawrence",male,26,0,0,31028,10.5,,S +621,0,3,"Yasbeck, Mr. Antoni",male,27,1,0,2659,14.4542,,C +622,1,1,"Kimball, Mr. Edwin Nelson Jr",male,42,1,0,11753,52.5542,D19,S +623,1,3,"Nakid, Mr. Sahid",male,20,1,1,2653,15.7417,,C +624,0,3,"Hansen, Mr. Henry Damsgaard",male,21,0,0,350029,7.8542,,S +625,0,3,"Bowen, Mr. David John ""Dai""",male,21,0,0,54636,16.1,,S +626,0,1,"Sutton, Mr. Frederick",male,61,0,0,36963,32.3208,D50,S +627,0,2,"Kirkland, Rev. Charles Leonard",male,57,0,0,219533,12.35,,Q +628,1,1,"Longley, Miss. Gretchen Fiske",female,21,0,0,13502,77.9583,D9,S +629,0,3,"Bostandyeff, Mr. Guentcho",male,26,0,0,349224,7.8958,,S +630,0,3,"O'Connell, Mr. Patrick D",male,,0,0,334912,7.7333,,Q +631,1,1,"Barkworth, Mr. Algernon Henry Wilson",male,80,0,0,27042,30,A23,S +632,0,3,"Lundahl, Mr. Johan Svensson",male,51,0,0,347743,7.0542,,S +633,1,1,"Stahelin-Maeglin, Dr. Max",male,32,0,0,13214,30.5,B50,C +634,0,1,"Parr, Mr. William Henry Marsh",male,,0,0,112052,0,,S +635,0,3,"Skoog, Miss. Mabel",female,9,3,2,347088,27.9,,S +636,1,2,"Davis, Miss. Mary",female,28,0,0,237668,13,,S +637,0,3,"Leinonen, Mr. Antti Gustaf",male,32,0,0,STON/O 2. 3101292,7.925,,S +638,0,2,"Collyer, Mr. Harvey",male,31,1,1,C.A. 31921,26.25,,S +639,0,3,"Panula, Mrs. Juha (Maria Emilia Ojala)",female,41,0,5,3101295,39.6875,,S +640,0,3,"Thorneycroft, Mr. Percival",male,,1,0,376564,16.1,,S +641,0,3,"Jensen, Mr. Hans Peder",male,20,0,0,350050,7.8542,,S +642,1,1,"Sagesser, Mlle. Emma",female,24,0,0,PC 17477,69.3,B35,C +643,0,3,"Skoog, Miss. Margit Elizabeth",female,2,3,2,347088,27.9,,S +644,1,3,"Foo, Mr. Choong",male,,0,0,1601,56.4958,,S +645,1,3,"Baclini, Miss. Eugenie",female,0.75,2,1,2666,19.2583,,C +646,1,1,"Harper, Mr. Henry Sleeper",male,48,1,0,PC 17572,76.7292,D33,C +647,0,3,"Cor, Mr. Liudevit",male,19,0,0,349231,7.8958,,S +648,1,1,"Simonius-Blumer, Col. Oberst Alfons",male,56,0,0,13213,35.5,A26,C +649,0,3,"Willey, Mr. Edward",male,,0,0,S.O./P.P. 751,7.55,,S +650,1,3,"Stanley, Miss. Amy Zillah Elsie",female,23,0,0,CA. 2314,7.55,,S +651,0,3,"Mitkoff, Mr. Mito",male,,0,0,349221,7.8958,,S +652,1,2,"Doling, Miss. Elsie",female,18,0,1,231919,23,,S +653,0,3,"Kalvik, Mr. Johannes Halvorsen",male,21,0,0,8475,8.4333,,S +654,1,3,"O'Leary, Miss. Hanora ""Norah""",female,,0,0,330919,7.8292,,Q +655,0,3,"Hegarty, Miss. Hanora ""Nora""",female,18,0,0,365226,6.75,,Q +656,0,2,"Hickman, Mr. Leonard Mark",male,24,2,0,S.O.C. 14879,73.5,,S +657,0,3,"Radeff, Mr. Alexander",male,,0,0,349223,7.8958,,S +658,0,3,"Bourke, Mrs. John (Catherine)",female,32,1,1,364849,15.5,,Q +659,0,2,"Eitemiller, Mr. George Floyd",male,23,0,0,29751,13,,S +660,0,1,"Newell, Mr. Arthur Webster",male,58,0,2,35273,113.275,D48,C +661,1,1,"Frauenthal, Dr. Henry William",male,50,2,0,PC 17611,133.65,,S +662,0,3,"Badt, Mr. Mohamed",male,40,0,0,2623,7.225,,C +663,0,1,"Colley, Mr. Edward Pomeroy",male,47,0,0,5727,25.5875,E58,S +664,0,3,"Coleff, Mr. Peju",male,36,0,0,349210,7.4958,,S +665,1,3,"Lindqvist, Mr. Eino William",male,20,1,0,STON/O 2. 3101285,7.925,,S +666,0,2,"Hickman, Mr. Lewis",male,32,2,0,S.O.C. 14879,73.5,,S +667,0,2,"Butler, Mr. Reginald Fenton",male,25,0,0,234686,13,,S +668,0,3,"Rommetvedt, Mr. Knud Paust",male,,0,0,312993,7.775,,S +669,0,3,"Cook, Mr. Jacob",male,43,0,0,A/5 3536,8.05,,S +670,1,1,"Taylor, Mrs. Elmer Zebley (Juliet Cummins Wright)",female,,1,0,19996,52,C126,S +671,1,2,"Brown, Mrs. Thomas William Solomon (Elizabeth Catherine Ford)",female,40,1,1,29750,39,,S +672,0,1,"Davidson, Mr. Thornton",male,31,1,0,F.C. 12750,52,B71,S +673,0,2,"Mitchell, Mr. Henry Michael",male,70,0,0,C.A. 24580,10.5,,S +674,1,2,"Wilhelms, Mr. Charles",male,31,0,0,244270,13,,S +675,0,2,"Watson, Mr. Ennis Hastings",male,,0,0,239856,0,,S +676,0,3,"Edvardsson, Mr. Gustaf Hjalmar",male,18,0,0,349912,7.775,,S +677,0,3,"Sawyer, Mr. Frederick Charles",male,24.5,0,0,342826,8.05,,S +678,1,3,"Turja, Miss. Anna Sofia",female,18,0,0,4138,9.8417,,S +679,0,3,"Goodwin, Mrs. Frederick (Augusta Tyler)",female,43,1,6,CA 2144,46.9,,S +680,1,1,"Cardeza, Mr. Thomas Drake Martinez",male,36,0,1,PC 17755,512.3292,B51 B53 B55,C +681,0,3,"Peters, Miss. Katie",female,,0,0,330935,8.1375,,Q +682,1,1,"Hassab, Mr. Hammad",male,27,0,0,PC 17572,76.7292,D49,C +683,0,3,"Olsvigen, Mr. Thor Anderson",male,20,0,0,6563,9.225,,S +684,0,3,"Goodwin, Mr. Charles Edward",male,14,5,2,CA 2144,46.9,,S +685,0,2,"Brown, Mr. Thomas William Solomon",male,60,1,1,29750,39,,S +686,0,2,"Laroche, Mr. Joseph Philippe Lemercier",male,25,1,2,SC/Paris 2123,41.5792,,C +687,0,3,"Panula, Mr. Jaako Arnold",male,14,4,1,3101295,39.6875,,S +688,0,3,"Dakic, Mr. Branko",male,19,0,0,349228,10.1708,,S +689,0,3,"Fischer, Mr. Eberhard Thelander",male,18,0,0,350036,7.7958,,S +690,1,1,"Madill, Miss. Georgette Alexandra",female,15,0,1,24160,211.3375,B5,S +691,1,1,"Dick, Mr. Albert Adrian",male,31,1,0,17474,57,B20,S +692,1,3,"Karun, Miss. Manca",female,4,0,1,349256,13.4167,,C +693,1,3,"Lam, Mr. Ali",male,,0,0,1601,56.4958,,S +694,0,3,"Saad, Mr. Khalil",male,25,0,0,2672,7.225,,C +695,0,1,"Weir, Col. John",male,60,0,0,113800,26.55,,S +696,0,2,"Chapman, Mr. Charles Henry",male,52,0,0,248731,13.5,,S +697,0,3,"Kelly, Mr. James",male,44,0,0,363592,8.05,,S +698,1,3,"Mullens, Miss. Katherine ""Katie""",female,,0,0,35852,7.7333,,Q +699,0,1,"Thayer, Mr. John Borland",male,49,1,1,17421,110.8833,C68,C +700,0,3,"Humblen, Mr. Adolf Mathias Nicolai Olsen",male,42,0,0,348121,7.65,F G63,S +701,1,1,"Astor, Mrs. John Jacob (Madeleine Talmadge Force)",female,18,1,0,PC 17757,227.525,C62 C64,C +702,1,1,"Silverthorne, Mr. Spencer Victor",male,35,0,0,PC 17475,26.2875,E24,S +703,0,3,"Barbara, Miss. Saiide",female,18,0,1,2691,14.4542,,C +704,0,3,"Gallagher, Mr. Martin",male,25,0,0,36864,7.7417,,Q +705,0,3,"Hansen, Mr. Henrik Juul",male,26,1,0,350025,7.8542,,S +706,0,2,"Morley, Mr. Henry Samuel (""Mr Henry Marshall"")",male,39,0,0,250655,26,,S +707,1,2,"Kelly, Mrs. Florence ""Fannie""",female,45,0,0,223596,13.5,,S +708,1,1,"Calderhead, Mr. Edward Pennington",male,42,0,0,PC 17476,26.2875,E24,S +709,1,1,"Cleaver, Miss. Alice",female,22,0,0,113781,151.55,,S +710,1,3,"Moubarek, Master. Halim Gonios (""William George"")",male,,1,1,2661,15.2458,,C +711,1,1,"Mayne, Mlle. Berthe Antonine (""Mrs de Villiers"")",female,24,0,0,PC 17482,49.5042,C90,C +712,0,1,"Klaber, Mr. Herman",male,,0,0,113028,26.55,C124,S +713,1,1,"Taylor, Mr. Elmer Zebley",male,48,1,0,19996,52,C126,S +714,0,3,"Larsson, Mr. August Viktor",male,29,0,0,7545,9.4833,,S +715,0,2,"Greenberg, Mr. Samuel",male,52,0,0,250647,13,,S +716,0,3,"Soholt, Mr. Peter Andreas Lauritz Andersen",male,19,0,0,348124,7.65,F G73,S +717,1,1,"Endres, Miss. Caroline Louise",female,38,0,0,PC 17757,227.525,C45,C +718,1,2,"Troutt, Miss. Edwina Celia ""Winnie""",female,27,0,0,34218,10.5,E101,S +719,0,3,"McEvoy, Mr. Michael",male,,0,0,36568,15.5,,Q +720,0,3,"Johnson, Mr. Malkolm Joackim",male,33,0,0,347062,7.775,,S +721,1,2,"Harper, Miss. Annie Jessie ""Nina""",female,6,0,1,248727,33,,S +722,0,3,"Jensen, Mr. Svend Lauritz",male,17,1,0,350048,7.0542,,S +723,0,2,"Gillespie, Mr. William Henry",male,34,0,0,12233,13,,S +724,0,2,"Hodges, Mr. Henry Price",male,50,0,0,250643,13,,S +725,1,1,"Chambers, Mr. Norman Campbell",male,27,1,0,113806,53.1,E8,S +726,0,3,"Oreskovic, Mr. Luka",male,20,0,0,315094,8.6625,,S +727,1,2,"Renouf, Mrs. Peter Henry (Lillian Jefferys)",female,30,3,0,31027,21,,S +728,1,3,"Mannion, Miss. Margareth",female,,0,0,36866,7.7375,,Q +729,0,2,"Bryhl, Mr. Kurt Arnold Gottfrid",male,25,1,0,236853,26,,S +730,0,3,"Ilmakangas, Miss. Pieta Sofia",female,25,1,0,STON/O2. 3101271,7.925,,S +731,1,1,"Allen, Miss. Elisabeth Walton",female,29,0,0,24160,211.3375,B5,S +732,0,3,"Hassan, Mr. Houssein G N",male,11,0,0,2699,18.7875,,C +733,0,2,"Knight, Mr. Robert J",male,,0,0,239855,0,,S +734,0,2,"Berriman, Mr. William John",male,23,0,0,28425,13,,S +735,0,2,"Troupiansky, Mr. Moses Aaron",male,23,0,0,233639,13,,S +736,0,3,"Williams, Mr. Leslie",male,28.5,0,0,54636,16.1,,S +737,0,3,"Ford, Mrs. Edward (Margaret Ann Watson)",female,48,1,3,W./C. 6608,34.375,,S +738,1,1,"Lesurer, Mr. Gustave J",male,35,0,0,PC 17755,512.3292,B101,C +739,0,3,"Ivanoff, Mr. Kanio",male,,0,0,349201,7.8958,,S +740,0,3,"Nankoff, Mr. Minko",male,,0,0,349218,7.8958,,S +741,1,1,"Hawksford, Mr. Walter James",male,,0,0,16988,30,D45,S +742,0,1,"Cavendish, Mr. Tyrell William",male,36,1,0,19877,78.85,C46,S +743,1,1,"Ryerson, Miss. Susan Parker ""Suzette""",female,21,2,2,PC 17608,262.375,B57 B59 B63 B66,C +744,0,3,"McNamee, Mr. Neal",male,24,1,0,376566,16.1,,S +745,1,3,"Stranden, Mr. Juho",male,31,0,0,STON/O 2. 3101288,7.925,,S +746,0,1,"Crosby, Capt. Edward Gifford",male,70,1,1,WE/P 5735,71,B22,S +747,0,3,"Abbott, Mr. Rossmore Edward",male,16,1,1,C.A. 2673,20.25,,S +748,1,2,"Sinkkonen, Miss. Anna",female,30,0,0,250648,13,,S +749,0,1,"Marvin, Mr. Daniel Warner",male,19,1,0,113773,53.1,D30,S +750,0,3,"Connaghton, Mr. Michael",male,31,0,0,335097,7.75,,Q +751,1,2,"Wells, Miss. Joan",female,4,1,1,29103,23,,S +752,1,3,"Moor, Master. Meier",male,6,0,1,392096,12.475,E121,S +753,0,3,"Vande Velde, Mr. Johannes Joseph",male,33,0,0,345780,9.5,,S +754,0,3,"Jonkoff, Mr. Lalio",male,23,0,0,349204,7.8958,,S +755,1,2,"Herman, Mrs. Samuel (Jane Laver)",female,48,1,2,220845,65,,S +756,1,2,"Hamalainen, Master. Viljo",male,0.67,1,1,250649,14.5,,S +757,0,3,"Carlsson, Mr. August Sigfrid",male,28,0,0,350042,7.7958,,S +758,0,2,"Bailey, Mr. Percy Andrew",male,18,0,0,29108,11.5,,S +759,0,3,"Theobald, Mr. Thomas Leonard",male,34,0,0,363294,8.05,,S +760,1,1,"Rothes, the Countess. of (Lucy Noel Martha Dyer-Edwards)",female,33,0,0,110152,86.5,B77,S +761,0,3,"Garfirth, Mr. John",male,,0,0,358585,14.5,,S +762,0,3,"Nirva, Mr. Iisakki Antino Aijo",male,41,0,0,SOTON/O2 3101272,7.125,,S +763,1,3,"Barah, Mr. Hanna Assi",male,20,0,0,2663,7.2292,,C +764,1,1,"Carter, Mrs. William Ernest (Lucile Polk)",female,36,1,2,113760,120,B96 B98,S +765,0,3,"Eklund, Mr. Hans Linus",male,16,0,0,347074,7.775,,S +766,1,1,"Hogeboom, Mrs. John C (Anna Andrews)",female,51,1,0,13502,77.9583,D11,S +767,0,1,"Brewe, Dr. Arthur Jackson",male,,0,0,112379,39.6,,C +768,0,3,"Mangan, Miss. Mary",female,30.5,0,0,364850,7.75,,Q +769,0,3,"Moran, Mr. Daniel J",male,,1,0,371110,24.15,,Q +770,0,3,"Gronnestad, Mr. Daniel Danielsen",male,32,0,0,8471,8.3625,,S +771,0,3,"Lievens, Mr. Rene Aime",male,24,0,0,345781,9.5,,S +772,0,3,"Jensen, Mr. Niels Peder",male,48,0,0,350047,7.8542,,S +773,0,2,"Mack, Mrs. (Mary)",female,57,0,0,S.O./P.P. 3,10.5,E77,S +774,0,3,"Elias, Mr. Dibo",male,,0,0,2674,7.225,,C +775,1,2,"Hocking, Mrs. Elizabeth (Eliza Needs)",female,54,1,3,29105,23,,S +776,0,3,"Myhrman, Mr. Pehr Fabian Oliver Malkolm",male,18,0,0,347078,7.75,,S +777,0,3,"Tobin, Mr. Roger",male,,0,0,383121,7.75,F38,Q +778,1,3,"Emanuel, Miss. Virginia Ethel",female,5,0,0,364516,12.475,,S +779,0,3,"Kilgannon, Mr. Thomas J",male,,0,0,36865,7.7375,,Q +780,1,1,"Robert, Mrs. Edward Scott (Elisabeth Walton McMillan)",female,43,0,1,24160,211.3375,B3,S +781,1,3,"Ayoub, Miss. Banoura",female,13,0,0,2687,7.2292,,C +782,1,1,"Dick, Mrs. Albert Adrian (Vera Gillespie)",female,17,1,0,17474,57,B20,S +783,0,1,"Long, Mr. Milton Clyde",male,29,0,0,113501,30,D6,S +784,0,3,"Johnston, Mr. Andrew G",male,,1,2,W./C. 6607,23.45,,S +785,0,3,"Ali, Mr. William",male,25,0,0,SOTON/O.Q. 3101312,7.05,,S +786,0,3,"Harmer, Mr. Abraham (David Lishin)",male,25,0,0,374887,7.25,,S +787,1,3,"Sjoblom, Miss. Anna Sofia",female,18,0,0,3101265,7.4958,,S +788,0,3,"Rice, Master. George Hugh",male,8,4,1,382652,29.125,,Q +789,1,3,"Dean, Master. Bertram Vere",male,1,1,2,C.A. 2315,20.575,,S +790,0,1,"Guggenheim, Mr. Benjamin",male,46,0,0,PC 17593,79.2,B82 B84,C +791,0,3,"Keane, Mr. Andrew ""Andy""",male,,0,0,12460,7.75,,Q +792,0,2,"Gaskell, Mr. Alfred",male,16,0,0,239865,26,,S +793,0,3,"Sage, Miss. Stella Anna",female,,8,2,CA. 2343,69.55,,S +794,0,1,"Hoyt, Mr. William Fisher",male,,0,0,PC 17600,30.6958,,C +795,0,3,"Dantcheff, Mr. Ristiu",male,25,0,0,349203,7.8958,,S +796,0,2,"Otter, Mr. Richard",male,39,0,0,28213,13,,S +797,1,1,"Leader, Dr. Alice (Farnham)",female,49,0,0,17465,25.9292,D17,S +798,1,3,"Osman, Mrs. Mara",female,31,0,0,349244,8.6833,,S +799,0,3,"Ibrahim Shawah, Mr. Yousseff",male,30,0,0,2685,7.2292,,C +800,0,3,"Van Impe, Mrs. Jean Baptiste (Rosalie Paula Govaert)",female,30,1,1,345773,24.15,,S +801,0,2,"Ponesell, Mr. Martin",male,34,0,0,250647,13,,S +802,1,2,"Collyer, Mrs. Harvey (Charlotte Annie Tate)",female,31,1,1,C.A. 31921,26.25,,S +803,1,1,"Carter, Master. William Thornton II",male,11,1,2,113760,120,B96 B98,S +804,1,3,"Thomas, Master. Assad Alexander",male,0.42,0,1,2625,8.5167,,C +805,1,3,"Hedman, Mr. Oskar Arvid",male,27,0,0,347089,6.975,,S +806,0,3,"Johansson, Mr. Karl Johan",male,31,0,0,347063,7.775,,S +807,0,1,"Andrews, Mr. Thomas Jr",male,39,0,0,112050,0,A36,S +808,0,3,"Pettersson, Miss. Ellen Natalia",female,18,0,0,347087,7.775,,S +809,0,2,"Meyer, Mr. August",male,39,0,0,248723,13,,S +810,1,1,"Chambers, Mrs. Norman Campbell (Bertha Griggs)",female,33,1,0,113806,53.1,E8,S +811,0,3,"Alexander, Mr. William",male,26,0,0,3474,7.8875,,S +812,0,3,"Lester, Mr. James",male,39,0,0,A/4 48871,24.15,,S +813,0,2,"Slemen, Mr. Richard James",male,35,0,0,28206,10.5,,S +814,0,3,"Andersson, Miss. Ebba Iris Alfrida",female,6,4,2,347082,31.275,,S +815,0,3,"Tomlin, Mr. Ernest Portage",male,30.5,0,0,364499,8.05,,S +816,0,1,"Fry, Mr. Richard",male,,0,0,112058,0,B102,S +817,0,3,"Heininen, Miss. Wendla Maria",female,23,0,0,STON/O2. 3101290,7.925,,S +818,0,2,"Mallet, Mr. Albert",male,31,1,1,S.C./PARIS 2079,37.0042,,C +819,0,3,"Holm, Mr. John Fredrik Alexander",male,43,0,0,C 7075,6.45,,S +820,0,3,"Skoog, Master. Karl Thorsten",male,10,3,2,347088,27.9,,S +821,1,1,"Hays, Mrs. Charles Melville (Clara Jennings Gregg)",female,52,1,1,12749,93.5,B69,S +822,1,3,"Lulic, Mr. Nikola",male,27,0,0,315098,8.6625,,S +823,0,1,"Reuchlin, Jonkheer. John George",male,38,0,0,19972,0,,S +824,1,3,"Moor, Mrs. (Beila)",female,27,0,1,392096,12.475,E121,S +825,0,3,"Panula, Master. Urho Abraham",male,2,4,1,3101295,39.6875,,S +826,0,3,"Flynn, Mr. John",male,,0,0,368323,6.95,,Q +827,0,3,"Lam, Mr. Len",male,,0,0,1601,56.4958,,S +828,1,2,"Mallet, Master. Andre",male,1,0,2,S.C./PARIS 2079,37.0042,,C +829,1,3,"McCormack, Mr. Thomas Joseph",male,,0,0,367228,7.75,,Q +830,1,1,"Stone, Mrs. George Nelson (Martha Evelyn)",female,62,0,0,113572,80,B28, +831,1,3,"Yasbeck, Mrs. Antoni (Selini Alexander)",female,15,1,0,2659,14.4542,,C +832,1,2,"Richards, Master. George Sibley",male,0.83,1,1,29106,18.75,,S +833,0,3,"Saad, Mr. Amin",male,,0,0,2671,7.2292,,C +834,0,3,"Augustsson, Mr. Albert",male,23,0,0,347468,7.8542,,S +835,0,3,"Allum, Mr. Owen George",male,18,0,0,2223,8.3,,S +836,1,1,"Compton, Miss. Sara Rebecca",female,39,1,1,PC 17756,83.1583,E49,C +837,0,3,"Pasic, Mr. Jakob",male,21,0,0,315097,8.6625,,S +838,0,3,"Sirota, Mr. Maurice",male,,0,0,392092,8.05,,S +839,1,3,"Chip, Mr. Chang",male,32,0,0,1601,56.4958,,S +840,1,1,"Marechal, Mr. Pierre",male,,0,0,11774,29.7,C47,C +841,0,3,"Alhomaki, Mr. Ilmari Rudolf",male,20,0,0,SOTON/O2 3101287,7.925,,S +842,0,2,"Mudd, Mr. Thomas Charles",male,16,0,0,S.O./P.P. 3,10.5,,S +843,1,1,"Serepeca, Miss. Augusta",female,30,0,0,113798,31,,C +844,0,3,"Lemberopolous, Mr. Peter L",male,34.5,0,0,2683,6.4375,,C +845,0,3,"Culumovic, Mr. Jeso",male,17,0,0,315090,8.6625,,S +846,0,3,"Abbing, Mr. Anthony",male,42,0,0,C.A. 5547,7.55,,S +847,0,3,"Sage, Mr. Douglas Bullen",male,,8,2,CA. 2343,69.55,,S +848,0,3,"Markoff, Mr. Marin",male,35,0,0,349213,7.8958,,C +849,0,2,"Harper, Rev. John",male,28,0,1,248727,33,,S +850,1,1,"Goldenberg, Mrs. Samuel L (Edwiga Grabowska)",female,,1,0,17453,89.1042,C92,C +851,0,3,"Andersson, Master. Sigvard Harald Elias",male,4,4,2,347082,31.275,,S +852,0,3,"Svensson, Mr. Johan",male,74,0,0,347060,7.775,,S +853,0,3,"Boulos, Miss. Nourelain",female,9,1,1,2678,15.2458,,C +854,1,1,"Lines, Miss. Mary Conover",female,16,0,1,PC 17592,39.4,D28,S +855,0,2,"Carter, Mrs. Ernest Courtenay (Lilian Hughes)",female,44,1,0,244252,26,,S +856,1,3,"Aks, Mrs. Sam (Leah Rosen)",female,18,0,1,392091,9.35,,S +857,1,1,"Wick, Mrs. George Dennick (Mary Hitchcock)",female,45,1,1,36928,164.8667,,S +858,1,1,"Daly, Mr. Peter Denis ",male,51,0,0,113055,26.55,E17,S +859,1,3,"Baclini, Mrs. Solomon (Latifa Qurban)",female,24,0,3,2666,19.2583,,C +860,0,3,"Razi, Mr. Raihed",male,,0,0,2629,7.2292,,C +861,0,3,"Hansen, Mr. Claus Peter",male,41,2,0,350026,14.1083,,S +862,0,2,"Giles, Mr. Frederick Edward",male,21,1,0,28134,11.5,,S +863,1,1,"Swift, Mrs. Frederick Joel (Margaret Welles Barron)",female,48,0,0,17466,25.9292,D17,S +864,0,3,"Sage, Miss. Dorothy Edith ""Dolly""",female,,8,2,CA. 2343,69.55,,S +865,0,2,"Gill, Mr. John William",male,24,0,0,233866,13,,S +866,1,2,"Bystrom, Mrs. (Karolina)",female,42,0,0,236852,13,,S +867,1,2,"Duran y More, Miss. Asuncion",female,27,1,0,SC/PARIS 2149,13.8583,,C +868,0,1,"Roebling, Mr. Washington Augustus II",male,31,0,0,PC 17590,50.4958,A24,S +869,0,3,"van Melkebeke, Mr. Philemon",male,,0,0,345777,9.5,,S +870,1,3,"Johnson, Master. Harold Theodor",male,4,1,1,347742,11.1333,,S +871,0,3,"Balkic, Mr. Cerin",male,26,0,0,349248,7.8958,,S +872,1,1,"Beckwith, Mrs. Richard Leonard (Sallie Monypeny)",female,47,1,1,11751,52.5542,D35,S +873,0,1,"Carlsson, Mr. Frans Olof",male,33,0,0,695,5,B51 B53 B55,S +874,0,3,"Vander Cruyssen, Mr. Victor",male,47,0,0,345765,9,,S +875,1,2,"Abelson, Mrs. Samuel (Hannah Wizosky)",female,28,1,0,P/PP 3381,24,,C +876,1,3,"Najib, Miss. Adele Kiamie ""Jane""",female,15,0,0,2667,7.225,,C +877,0,3,"Gustafsson, Mr. Alfred Ossian",male,20,0,0,7534,9.8458,,S +878,0,3,"Petroff, Mr. Nedelio",male,19,0,0,349212,7.8958,,S +879,0,3,"Laleff, Mr. Kristo",male,,0,0,349217,7.8958,,S +880,1,1,"Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)",female,56,0,1,11767,83.1583,C50,C +881,1,2,"Shelley, Mrs. William (Imanita Parrish Hall)",female,25,0,1,230433,26,,S +882,0,3,"Markun, Mr. Johann",male,33,0,0,349257,7.8958,,S +883,0,3,"Dahlberg, Miss. Gerda Ulrika",female,22,0,0,7552,10.5167,,S +884,0,2,"Banfield, Mr. Frederick James",male,28,0,0,C.A./SOTON 34068,10.5,,S +885,0,3,"Sutehall, Mr. Henry Jr",male,25,0,0,SOTON/OQ 392076,7.05,,S +886,0,3,"Rice, Mrs. William (Margaret Norton)",female,39,0,5,382652,29.125,,Q +887,0,2,"Montvila, Rev. Juozas",male,27,0,0,211536,13,,S +888,1,1,"Graham, Miss. Margaret Edith",female,19,0,0,112053,30,B42,S +889,0,3,"Johnston, Miss. Catherine Helen ""Carrie""",female,,1,2,W./C. 6607,23.45,,S +890,1,1,"Behr, Mr. Karl Howell",male,26,0,0,111369,30,C148,C +891,0,3,"Dooley, Mr. Patrick",male,32,0,0,370376,7.75,,Q diff --git a/data/lab-01/gender_submission.csv b/data/lab-01/gender_submission.csv new file mode 100644 index 0000000..80bbbd8 --- /dev/null +++ b/data/lab-01/gender_submission.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,1 +894,0 +895,0 +896,1 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,1 +911,1 +912,0 +913,0 +914,1 +915,0 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,1 +925,1 +926,0 +927,0 +928,1 +929,1 +930,0 +931,0 +932,0 +933,0 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,1 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,0 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,1 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,0 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,1 +980,1 +981,0 +982,1 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,1 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,1 +1020,0 +1021,0 +1022,0 +1023,0 +1024,1 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,1 +1031,0 +1032,1 +1033,1 +1034,0 +1035,0 +1036,0 +1037,0 +1038,0 +1039,0 +1040,0 +1041,0 +1042,1 +1043,0 +1044,0 +1045,1 +1046,0 +1047,0 +1048,1 +1049,1 +1050,0 +1051,1 +1052,1 +1053,0 +1054,1 +1055,0 +1056,0 +1057,1 +1058,0 +1059,0 +1060,1 +1061,1 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,0 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,1 +1081,0 +1082,0 +1083,0 +1084,0 +1085,0 +1086,0 +1087,0 +1088,0 +1089,1 +1090,0 +1091,1 +1092,1 +1093,0 +1094,0 +1095,1 +1096,0 +1097,0 +1098,1 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,1 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,1 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,1 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,1 +1173,0 +1174,1 +1175,1 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,0 +1200,0 +1201,1 +1202,0 +1203,0 +1204,0 +1205,1 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,0 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,1 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,1 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,1 +1258,0 +1259,1 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,1 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,1 +1275,1 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,0 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/data/lab-01/test.csv b/data/lab-01/test.csv new file mode 100644 index 0000000..2ed7ef4 --- /dev/null +++ b/data/lab-01/test.csv @@ -0,0 +1,419 @@ +PassengerId,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked +892,3,"Kelly, Mr. James",male,34.5,0,0,330911,7.8292,,Q +893,3,"Wilkes, Mrs. James (Ellen Needs)",female,47,1,0,363272,7,,S +894,2,"Myles, Mr. Thomas Francis",male,62,0,0,240276,9.6875,,Q +895,3,"Wirz, Mr. Albert",male,27,0,0,315154,8.6625,,S +896,3,"Hirvonen, Mrs. Alexander (Helga E Lindqvist)",female,22,1,1,3101298,12.2875,,S +897,3,"Svensson, Mr. Johan Cervin",male,14,0,0,7538,9.225,,S +898,3,"Connolly, Miss. Kate",female,30,0,0,330972,7.6292,,Q +899,2,"Caldwell, Mr. Albert Francis",male,26,1,1,248738,29,,S +900,3,"Abrahim, Mrs. Joseph (Sophie Halaut Easu)",female,18,0,0,2657,7.2292,,C +901,3,"Davies, Mr. John Samuel",male,21,2,0,A/4 48871,24.15,,S +902,3,"Ilieff, Mr. Ylio",male,,0,0,349220,7.8958,,S +903,1,"Jones, Mr. Charles Cresson",male,46,0,0,694,26,,S +904,1,"Snyder, Mrs. John Pillsbury (Nelle Stevenson)",female,23,1,0,21228,82.2667,B45,S +905,2,"Howard, Mr. Benjamin",male,63,1,0,24065,26,,S +906,1,"Chaffee, Mrs. Herbert Fuller (Carrie Constance Toogood)",female,47,1,0,W.E.P. 5734,61.175,E31,S +907,2,"del Carlo, Mrs. Sebastiano (Argenia Genovesi)",female,24,1,0,SC/PARIS 2167,27.7208,,C +908,2,"Keane, Mr. Daniel",male,35,0,0,233734,12.35,,Q +909,3,"Assaf, Mr. Gerios",male,21,0,0,2692,7.225,,C +910,3,"Ilmakangas, Miss. Ida Livija",female,27,1,0,STON/O2. 3101270,7.925,,S +911,3,"Assaf Khalil, Mrs. Mariana (Miriam"")""",female,45,0,0,2696,7.225,,C +912,1,"Rothschild, Mr. Martin",male,55,1,0,PC 17603,59.4,,C +913,3,"Olsen, Master. Artur Karl",male,9,0,1,C 17368,3.1708,,S +914,1,"Flegenheim, Mrs. Alfred (Antoinette)",female,,0,0,PC 17598,31.6833,,S +915,1,"Williams, Mr. Richard Norris II",male,21,0,1,PC 17597,61.3792,,C +916,1,"Ryerson, Mrs. Arthur Larned (Emily Maria Borie)",female,48,1,3,PC 17608,262.375,B57 B59 B63 B66,C +917,3,"Robins, Mr. Alexander A",male,50,1,0,A/5. 3337,14.5,,S +918,1,"Ostby, Miss. Helene Ragnhild",female,22,0,1,113509,61.9792,B36,C +919,3,"Daher, Mr. Shedid",male,22.5,0,0,2698,7.225,,C +920,1,"Brady, Mr. John Bertram",male,41,0,0,113054,30.5,A21,S +921,3,"Samaan, Mr. Elias",male,,2,0,2662,21.6792,,C +922,2,"Louch, Mr. Charles Alexander",male,50,1,0,SC/AH 3085,26,,S +923,2,"Jefferys, Mr. Clifford Thomas",male,24,2,0,C.A. 31029,31.5,,S +924,3,"Dean, Mrs. Bertram (Eva Georgetta Light)",female,33,1,2,C.A. 2315,20.575,,S +925,3,"Johnston, Mrs. Andrew G (Elizabeth Lily"" Watson)""",female,,1,2,W./C. 6607,23.45,,S +926,1,"Mock, Mr. Philipp Edmund",male,30,1,0,13236,57.75,C78,C +927,3,"Katavelas, Mr. Vassilios (Catavelas Vassilios"")""",male,18.5,0,0,2682,7.2292,,C +928,3,"Roth, Miss. Sarah A",female,,0,0,342712,8.05,,S +929,3,"Cacic, Miss. Manda",female,21,0,0,315087,8.6625,,S +930,3,"Sap, Mr. Julius",male,25,0,0,345768,9.5,,S +931,3,"Hee, Mr. Ling",male,,0,0,1601,56.4958,,S +932,3,"Karun, Mr. Franz",male,39,0,1,349256,13.4167,,C +933,1,"Franklin, Mr. Thomas Parham",male,,0,0,113778,26.55,D34,S +934,3,"Goldsmith, Mr. Nathan",male,41,0,0,SOTON/O.Q. 3101263,7.85,,S +935,2,"Corbett, Mrs. Walter H (Irene Colvin)",female,30,0,0,237249,13,,S +936,1,"Kimball, Mrs. Edwin Nelson Jr (Gertrude Parsons)",female,45,1,0,11753,52.5542,D19,S +937,3,"Peltomaki, Mr. Nikolai Johannes",male,25,0,0,STON/O 2. 3101291,7.925,,S +938,1,"Chevre, Mr. Paul Romaine",male,45,0,0,PC 17594,29.7,A9,C +939,3,"Shaughnessy, Mr. Patrick",male,,0,0,370374,7.75,,Q +940,1,"Bucknell, Mrs. William Robert (Emma Eliza Ward)",female,60,0,0,11813,76.2917,D15,C +941,3,"Coutts, Mrs. William (Winnie Minnie"" Treanor)""",female,36,0,2,C.A. 37671,15.9,,S +942,1,"Smith, Mr. Lucien Philip",male,24,1,0,13695,60,C31,S +943,2,"Pulbaum, Mr. Franz",male,27,0,0,SC/PARIS 2168,15.0333,,C +944,2,"Hocking, Miss. Ellen Nellie""""",female,20,2,1,29105,23,,S +945,1,"Fortune, Miss. Ethel Flora",female,28,3,2,19950,263,C23 C25 C27,S +946,2,"Mangiavacchi, Mr. Serafino Emilio",male,,0,0,SC/A.3 2861,15.5792,,C +947,3,"Rice, Master. Albert",male,10,4,1,382652,29.125,,Q +948,3,"Cor, Mr. Bartol",male,35,0,0,349230,7.8958,,S +949,3,"Abelseth, Mr. Olaus Jorgensen",male,25,0,0,348122,7.65,F G63,S +950,3,"Davison, Mr. Thomas Henry",male,,1,0,386525,16.1,,S +951,1,"Chaudanson, Miss. Victorine",female,36,0,0,PC 17608,262.375,B61,C +952,3,"Dika, Mr. Mirko",male,17,0,0,349232,7.8958,,S +953,2,"McCrae, Mr. Arthur Gordon",male,32,0,0,237216,13.5,,S +954,3,"Bjorklund, Mr. Ernst Herbert",male,18,0,0,347090,7.75,,S +955,3,"Bradley, Miss. Bridget Delia",female,22,0,0,334914,7.725,,Q +956,1,"Ryerson, Master. John Borie",male,13,2,2,PC 17608,262.375,B57 B59 B63 B66,C +957,2,"Corey, Mrs. Percy C (Mary Phyllis Elizabeth Miller)",female,,0,0,F.C.C. 13534,21,,S +958,3,"Burns, Miss. Mary Delia",female,18,0,0,330963,7.8792,,Q +959,1,"Moore, Mr. Clarence Bloomfield",male,47,0,0,113796,42.4,,S +960,1,"Tucker, Mr. Gilbert Milligan Jr",male,31,0,0,2543,28.5375,C53,C +961,1,"Fortune, Mrs. Mark (Mary McDougald)",female,60,1,4,19950,263,C23 C25 C27,S +962,3,"Mulvihill, Miss. Bertha E",female,24,0,0,382653,7.75,,Q +963,3,"Minkoff, Mr. Lazar",male,21,0,0,349211,7.8958,,S +964,3,"Nieminen, Miss. Manta Josefina",female,29,0,0,3101297,7.925,,S +965,1,"Ovies y Rodriguez, Mr. Servando",male,28.5,0,0,PC 17562,27.7208,D43,C +966,1,"Geiger, Miss. Amalie",female,35,0,0,113503,211.5,C130,C +967,1,"Keeping, Mr. Edwin",male,32.5,0,0,113503,211.5,C132,C +968,3,"Miles, Mr. Frank",male,,0,0,359306,8.05,,S +969,1,"Cornell, Mrs. Robert Clifford (Malvina Helen Lamson)",female,55,2,0,11770,25.7,C101,S +970,2,"Aldworth, Mr. Charles Augustus",male,30,0,0,248744,13,,S +971,3,"Doyle, Miss. Elizabeth",female,24,0,0,368702,7.75,,Q +972,3,"Boulos, Master. Akar",male,6,1,1,2678,15.2458,,C +973,1,"Straus, Mr. Isidor",male,67,1,0,PC 17483,221.7792,C55 C57,S +974,1,"Case, Mr. Howard Brown",male,49,0,0,19924,26,,S +975,3,"Demetri, Mr. Marinko",male,,0,0,349238,7.8958,,S +976,2,"Lamb, Mr. John Joseph",male,,0,0,240261,10.7083,,Q +977,3,"Khalil, Mr. Betros",male,,1,0,2660,14.4542,,C +978,3,"Barry, Miss. Julia",female,27,0,0,330844,7.8792,,Q +979,3,"Badman, Miss. Emily Louisa",female,18,0,0,A/4 31416,8.05,,S +980,3,"O'Donoghue, Ms. Bridget",female,,0,0,364856,7.75,,Q +981,2,"Wells, Master. Ralph Lester",male,2,1,1,29103,23,,S +982,3,"Dyker, Mrs. Adolf Fredrik (Anna Elisabeth Judith Andersson)",female,22,1,0,347072,13.9,,S +983,3,"Pedersen, Mr. Olaf",male,,0,0,345498,7.775,,S +984,1,"Davidson, Mrs. Thornton (Orian Hays)",female,27,1,2,F.C. 12750,52,B71,S +985,3,"Guest, Mr. Robert",male,,0,0,376563,8.05,,S +986,1,"Birnbaum, Mr. Jakob",male,25,0,0,13905,26,,C +987,3,"Tenglin, Mr. Gunnar Isidor",male,25,0,0,350033,7.7958,,S +988,1,"Cavendish, Mrs. Tyrell William (Julia Florence Siegel)",female,76,1,0,19877,78.85,C46,S +989,3,"Makinen, Mr. Kalle Edvard",male,29,0,0,STON/O 2. 3101268,7.925,,S +990,3,"Braf, Miss. Elin Ester Maria",female,20,0,0,347471,7.8542,,S +991,3,"Nancarrow, Mr. William Henry",male,33,0,0,A./5. 3338,8.05,,S +992,1,"Stengel, Mrs. Charles Emil Henry (Annie May Morris)",female,43,1,0,11778,55.4417,C116,C +993,2,"Weisz, Mr. Leopold",male,27,1,0,228414,26,,S +994,3,"Foley, Mr. William",male,,0,0,365235,7.75,,Q +995,3,"Johansson Palmquist, Mr. Oskar Leander",male,26,0,0,347070,7.775,,S +996,3,"Thomas, Mrs. Alexander (Thamine Thelma"")""",female,16,1,1,2625,8.5167,,C +997,3,"Holthen, Mr. Johan Martin",male,28,0,0,C 4001,22.525,,S +998,3,"Buckley, Mr. Daniel",male,21,0,0,330920,7.8208,,Q +999,3,"Ryan, Mr. Edward",male,,0,0,383162,7.75,,Q +1000,3,"Willer, Mr. Aaron (Abi Weller"")""",male,,0,0,3410,8.7125,,S +1001,2,"Swane, Mr. George",male,18.5,0,0,248734,13,F,S +1002,2,"Stanton, Mr. Samuel Ward",male,41,0,0,237734,15.0458,,C +1003,3,"Shine, Miss. Ellen Natalia",female,,0,0,330968,7.7792,,Q +1004,1,"Evans, Miss. Edith Corse",female,36,0,0,PC 17531,31.6792,A29,C +1005,3,"Buckley, Miss. Katherine",female,18.5,0,0,329944,7.2833,,Q +1006,1,"Straus, Mrs. Isidor (Rosalie Ida Blun)",female,63,1,0,PC 17483,221.7792,C55 C57,S +1007,3,"Chronopoulos, Mr. Demetrios",male,18,1,0,2680,14.4542,,C +1008,3,"Thomas, Mr. John",male,,0,0,2681,6.4375,,C +1009,3,"Sandstrom, Miss. Beatrice Irene",female,1,1,1,PP 9549,16.7,G6,S +1010,1,"Beattie, Mr. Thomson",male,36,0,0,13050,75.2417,C6,C +1011,2,"Chapman, Mrs. John Henry (Sara Elizabeth Lawry)",female,29,1,0,SC/AH 29037,26,,S +1012,2,"Watt, Miss. Bertha J",female,12,0,0,C.A. 33595,15.75,,S +1013,3,"Kiernan, Mr. John",male,,1,0,367227,7.75,,Q +1014,1,"Schabert, Mrs. Paul (Emma Mock)",female,35,1,0,13236,57.75,C28,C +1015,3,"Carver, Mr. Alfred John",male,28,0,0,392095,7.25,,S +1016,3,"Kennedy, Mr. John",male,,0,0,368783,7.75,,Q +1017,3,"Cribb, Miss. Laura Alice",female,17,0,1,371362,16.1,,S +1018,3,"Brobeck, Mr. Karl Rudolf",male,22,0,0,350045,7.7958,,S +1019,3,"McCoy, Miss. Alicia",female,,2,0,367226,23.25,,Q +1020,2,"Bowenur, Mr. Solomon",male,42,0,0,211535,13,,S +1021,3,"Petersen, Mr. Marius",male,24,0,0,342441,8.05,,S +1022,3,"Spinner, Mr. Henry John",male,32,0,0,STON/OQ. 369943,8.05,,S +1023,1,"Gracie, Col. Archibald IV",male,53,0,0,113780,28.5,C51,C +1024,3,"Lefebre, Mrs. Frank (Frances)",female,,0,4,4133,25.4667,,S +1025,3,"Thomas, Mr. Charles P",male,,1,0,2621,6.4375,,C +1026,3,"Dintcheff, Mr. Valtcho",male,43,0,0,349226,7.8958,,S +1027,3,"Carlsson, Mr. Carl Robert",male,24,0,0,350409,7.8542,,S +1028,3,"Zakarian, Mr. Mapriededer",male,26.5,0,0,2656,7.225,,C +1029,2,"Schmidt, Mr. August",male,26,0,0,248659,13,,S +1030,3,"Drapkin, Miss. Jennie",female,23,0,0,SOTON/OQ 392083,8.05,,S +1031,3,"Goodwin, Mr. Charles Frederick",male,40,1,6,CA 2144,46.9,,S +1032,3,"Goodwin, Miss. Jessie Allis",female,10,5,2,CA 2144,46.9,,S +1033,1,"Daniels, Miss. Sarah",female,33,0,0,113781,151.55,,S +1034,1,"Ryerson, Mr. Arthur Larned",male,61,1,3,PC 17608,262.375,B57 B59 B63 B66,C +1035,2,"Beauchamp, Mr. Henry James",male,28,0,0,244358,26,,S +1036,1,"Lindeberg-Lind, Mr. Erik Gustaf (Mr Edward Lingrey"")""",male,42,0,0,17475,26.55,,S +1037,3,"Vander Planke, Mr. Julius",male,31,3,0,345763,18,,S +1038,1,"Hilliard, Mr. Herbert Henry",male,,0,0,17463,51.8625,E46,S +1039,3,"Davies, Mr. Evan",male,22,0,0,SC/A4 23568,8.05,,S +1040,1,"Crafton, Mr. John Bertram",male,,0,0,113791,26.55,,S +1041,2,"Lahtinen, Rev. William",male,30,1,1,250651,26,,S +1042,1,"Earnshaw, Mrs. Boulton (Olive Potter)",female,23,0,1,11767,83.1583,C54,C +1043,3,"Matinoff, Mr. Nicola",male,,0,0,349255,7.8958,,C +1044,3,"Storey, Mr. Thomas",male,60.5,0,0,3701,,,S +1045,3,"Klasen, Mrs. (Hulda Kristina Eugenia Lofqvist)",female,36,0,2,350405,12.1833,,S +1046,3,"Asplund, Master. Filip Oscar",male,13,4,2,347077,31.3875,,S +1047,3,"Duquemin, Mr. Joseph",male,24,0,0,S.O./P.P. 752,7.55,,S +1048,1,"Bird, Miss. Ellen",female,29,0,0,PC 17483,221.7792,C97,S +1049,3,"Lundin, Miss. Olga Elida",female,23,0,0,347469,7.8542,,S +1050,1,"Borebank, Mr. John James",male,42,0,0,110489,26.55,D22,S +1051,3,"Peacock, Mrs. Benjamin (Edith Nile)",female,26,0,2,SOTON/O.Q. 3101315,13.775,,S +1052,3,"Smyth, Miss. Julia",female,,0,0,335432,7.7333,,Q +1053,3,"Touma, Master. Georges Youssef",male,7,1,1,2650,15.2458,,C +1054,2,"Wright, Miss. Marion",female,26,0,0,220844,13.5,,S +1055,3,"Pearce, Mr. Ernest",male,,0,0,343271,7,,S +1056,2,"Peruschitz, Rev. Joseph Maria",male,41,0,0,237393,13,,S +1057,3,"Kink-Heilmann, Mrs. Anton (Luise Heilmann)",female,26,1,1,315153,22.025,,S +1058,1,"Brandeis, Mr. Emil",male,48,0,0,PC 17591,50.4958,B10,C +1059,3,"Ford, Mr. Edward Watson",male,18,2,2,W./C. 6608,34.375,,S +1060,1,"Cassebeer, Mrs. Henry Arthur Jr (Eleanor Genevieve Fosdick)",female,,0,0,17770,27.7208,,C +1061,3,"Hellstrom, Miss. Hilda Maria",female,22,0,0,7548,8.9625,,S +1062,3,"Lithman, Mr. Simon",male,,0,0,S.O./P.P. 251,7.55,,S +1063,3,"Zakarian, Mr. Ortin",male,27,0,0,2670,7.225,,C +1064,3,"Dyker, Mr. Adolf Fredrik",male,23,1,0,347072,13.9,,S +1065,3,"Torfa, Mr. Assad",male,,0,0,2673,7.2292,,C +1066,3,"Asplund, Mr. Carl Oscar Vilhelm Gustafsson",male,40,1,5,347077,31.3875,,S +1067,2,"Brown, Miss. Edith Eileen",female,15,0,2,29750,39,,S +1068,2,"Sincock, Miss. Maude",female,20,0,0,C.A. 33112,36.75,,S +1069,1,"Stengel, Mr. Charles Emil Henry",male,54,1,0,11778,55.4417,C116,C +1070,2,"Becker, Mrs. Allen Oliver (Nellie E Baumgardner)",female,36,0,3,230136,39,F4,S +1071,1,"Compton, Mrs. Alexander Taylor (Mary Eliza Ingersoll)",female,64,0,2,PC 17756,83.1583,E45,C +1072,2,"McCrie, Mr. James Matthew",male,30,0,0,233478,13,,S +1073,1,"Compton, Mr. Alexander Taylor Jr",male,37,1,1,PC 17756,83.1583,E52,C +1074,1,"Marvin, Mrs. Daniel Warner (Mary Graham Carmichael Farquarson)",female,18,1,0,113773,53.1,D30,S +1075,3,"Lane, Mr. Patrick",male,,0,0,7935,7.75,,Q +1076,1,"Douglas, Mrs. Frederick Charles (Mary Helene Baxter)",female,27,1,1,PC 17558,247.5208,B58 B60,C +1077,2,"Maybery, Mr. Frank Hubert",male,40,0,0,239059,16,,S +1078,2,"Phillips, Miss. Alice Frances Louisa",female,21,0,1,S.O./P.P. 2,21,,S +1079,3,"Davies, Mr. Joseph",male,17,2,0,A/4 48873,8.05,,S +1080,3,"Sage, Miss. Ada",female,,8,2,CA. 2343,69.55,,S +1081,2,"Veal, Mr. James",male,40,0,0,28221,13,,S +1082,2,"Angle, Mr. William A",male,34,1,0,226875,26,,S +1083,1,"Salomon, Mr. Abraham L",male,,0,0,111163,26,,S +1084,3,"van Billiard, Master. Walter John",male,11.5,1,1,A/5. 851,14.5,,S +1085,2,"Lingane, Mr. John",male,61,0,0,235509,12.35,,Q +1086,2,"Drew, Master. Marshall Brines",male,8,0,2,28220,32.5,,S +1087,3,"Karlsson, Mr. Julius Konrad Eugen",male,33,0,0,347465,7.8542,,S +1088,1,"Spedden, Master. Robert Douglas",male,6,0,2,16966,134.5,E34,C +1089,3,"Nilsson, Miss. Berta Olivia",female,18,0,0,347066,7.775,,S +1090,2,"Baimbrigge, Mr. Charles Robert",male,23,0,0,C.A. 31030,10.5,,S +1091,3,"Rasmussen, Mrs. (Lena Jacobsen Solvang)",female,,0,0,65305,8.1125,,S +1092,3,"Murphy, Miss. Nora",female,,0,0,36568,15.5,,Q +1093,3,"Danbom, Master. Gilbert Sigvard Emanuel",male,0.33,0,2,347080,14.4,,S +1094,1,"Astor, Col. John Jacob",male,47,1,0,PC 17757,227.525,C62 C64,C +1095,2,"Quick, Miss. Winifred Vera",female,8,1,1,26360,26,,S +1096,2,"Andrew, Mr. Frank Thomas",male,25,0,0,C.A. 34050,10.5,,S +1097,1,"Omont, Mr. Alfred Fernand",male,,0,0,F.C. 12998,25.7417,,C +1098,3,"McGowan, Miss. Katherine",female,35,0,0,9232,7.75,,Q +1099,2,"Collett, Mr. Sidney C Stuart",male,24,0,0,28034,10.5,,S +1100,1,"Rosenbaum, Miss. Edith Louise",female,33,0,0,PC 17613,27.7208,A11,C +1101,3,"Delalic, Mr. Redjo",male,25,0,0,349250,7.8958,,S +1102,3,"Andersen, Mr. Albert Karvin",male,32,0,0,C 4001,22.525,,S +1103,3,"Finoli, Mr. Luigi",male,,0,0,SOTON/O.Q. 3101308,7.05,,S +1104,2,"Deacon, Mr. Percy William",male,17,0,0,S.O.C. 14879,73.5,,S +1105,2,"Howard, Mrs. Benjamin (Ellen Truelove Arman)",female,60,1,0,24065,26,,S +1106,3,"Andersson, Miss. Ida Augusta Margareta",female,38,4,2,347091,7.775,,S +1107,1,"Head, Mr. Christopher",male,42,0,0,113038,42.5,B11,S +1108,3,"Mahon, Miss. Bridget Delia",female,,0,0,330924,7.8792,,Q +1109,1,"Wick, Mr. George Dennick",male,57,1,1,36928,164.8667,,S +1110,1,"Widener, Mrs. George Dunton (Eleanor Elkins)",female,50,1,1,113503,211.5,C80,C +1111,3,"Thomson, Mr. Alexander Morrison",male,,0,0,32302,8.05,,S +1112,2,"Duran y More, Miss. Florentina",female,30,1,0,SC/PARIS 2148,13.8583,,C +1113,3,"Reynolds, Mr. Harold J",male,21,0,0,342684,8.05,,S +1114,2,"Cook, Mrs. (Selena Rogers)",female,22,0,0,W./C. 14266,10.5,F33,S +1115,3,"Karlsson, Mr. Einar Gervasius",male,21,0,0,350053,7.7958,,S +1116,1,"Candee, Mrs. Edward (Helen Churchill Hungerford)",female,53,0,0,PC 17606,27.4458,,C +1117,3,"Moubarek, Mrs. George (Omine Amenia"" Alexander)""",female,,0,2,2661,15.2458,,C +1118,3,"Asplund, Mr. Johan Charles",male,23,0,0,350054,7.7958,,S +1119,3,"McNeill, Miss. Bridget",female,,0,0,370368,7.75,,Q +1120,3,"Everett, Mr. Thomas James",male,40.5,0,0,C.A. 6212,15.1,,S +1121,2,"Hocking, Mr. Samuel James Metcalfe",male,36,0,0,242963,13,,S +1122,2,"Sweet, Mr. George Frederick",male,14,0,0,220845,65,,S +1123,1,"Willard, Miss. Constance",female,21,0,0,113795,26.55,,S +1124,3,"Wiklund, Mr. Karl Johan",male,21,1,0,3101266,6.4958,,S +1125,3,"Linehan, Mr. Michael",male,,0,0,330971,7.8792,,Q +1126,1,"Cumings, Mr. John Bradley",male,39,1,0,PC 17599,71.2833,C85,C +1127,3,"Vendel, Mr. Olof Edvin",male,20,0,0,350416,7.8542,,S +1128,1,"Warren, Mr. Frank Manley",male,64,1,0,110813,75.25,D37,C +1129,3,"Baccos, Mr. Raffull",male,20,0,0,2679,7.225,,C +1130,2,"Hiltunen, Miss. Marta",female,18,1,1,250650,13,,S +1131,1,"Douglas, Mrs. Walter Donald (Mahala Dutton)",female,48,1,0,PC 17761,106.425,C86,C +1132,1,"Lindstrom, Mrs. Carl Johan (Sigrid Posse)",female,55,0,0,112377,27.7208,,C +1133,2,"Christy, Mrs. (Alice Frances)",female,45,0,2,237789,30,,S +1134,1,"Spedden, Mr. Frederic Oakley",male,45,1,1,16966,134.5,E34,C +1135,3,"Hyman, Mr. Abraham",male,,0,0,3470,7.8875,,S +1136,3,"Johnston, Master. William Arthur Willie""""",male,,1,2,W./C. 6607,23.45,,S +1137,1,"Kenyon, Mr. Frederick R",male,41,1,0,17464,51.8625,D21,S +1138,2,"Karnes, Mrs. J Frank (Claire Bennett)",female,22,0,0,F.C.C. 13534,21,,S +1139,2,"Drew, Mr. James Vivian",male,42,1,1,28220,32.5,,S +1140,2,"Hold, Mrs. Stephen (Annie Margaret Hill)",female,29,1,0,26707,26,,S +1141,3,"Khalil, Mrs. Betros (Zahie Maria"" Elias)""",female,,1,0,2660,14.4542,,C +1142,2,"West, Miss. Barbara J",female,0.92,1,2,C.A. 34651,27.75,,S +1143,3,"Abrahamsson, Mr. Abraham August Johannes",male,20,0,0,SOTON/O2 3101284,7.925,,S +1144,1,"Clark, Mr. Walter Miller",male,27,1,0,13508,136.7792,C89,C +1145,3,"Salander, Mr. Karl Johan",male,24,0,0,7266,9.325,,S +1146,3,"Wenzel, Mr. Linhart",male,32.5,0,0,345775,9.5,,S +1147,3,"MacKay, Mr. George William",male,,0,0,C.A. 42795,7.55,,S +1148,3,"Mahon, Mr. John",male,,0,0,AQ/4 3130,7.75,,Q +1149,3,"Niklasson, Mr. Samuel",male,28,0,0,363611,8.05,,S +1150,2,"Bentham, Miss. Lilian W",female,19,0,0,28404,13,,S +1151,3,"Midtsjo, Mr. Karl Albert",male,21,0,0,345501,7.775,,S +1152,3,"de Messemaeker, Mr. Guillaume Joseph",male,36.5,1,0,345572,17.4,,S +1153,3,"Nilsson, Mr. August Ferdinand",male,21,0,0,350410,7.8542,,S +1154,2,"Wells, Mrs. Arthur Henry (Addie"" Dart Trevaskis)""",female,29,0,2,29103,23,,S +1155,3,"Klasen, Miss. Gertrud Emilia",female,1,1,1,350405,12.1833,,S +1156,2,"Portaluppi, Mr. Emilio Ilario Giuseppe",male,30,0,0,C.A. 34644,12.7375,,C +1157,3,"Lyntakoff, Mr. Stanko",male,,0,0,349235,7.8958,,S +1158,1,"Chisholm, Mr. Roderick Robert Crispin",male,,0,0,112051,0,,S +1159,3,"Warren, Mr. Charles William",male,,0,0,C.A. 49867,7.55,,S +1160,3,"Howard, Miss. May Elizabeth",female,,0,0,A. 2. 39186,8.05,,S +1161,3,"Pokrnic, Mr. Mate",male,17,0,0,315095,8.6625,,S +1162,1,"McCaffry, Mr. Thomas Francis",male,46,0,0,13050,75.2417,C6,C +1163,3,"Fox, Mr. Patrick",male,,0,0,368573,7.75,,Q +1164,1,"Clark, Mrs. Walter Miller (Virginia McDowell)",female,26,1,0,13508,136.7792,C89,C +1165,3,"Lennon, Miss. Mary",female,,1,0,370371,15.5,,Q +1166,3,"Saade, Mr. Jean Nassr",male,,0,0,2676,7.225,,C +1167,2,"Bryhl, Miss. Dagmar Jenny Ingeborg ",female,20,1,0,236853,26,,S +1168,2,"Parker, Mr. Clifford Richard",male,28,0,0,SC 14888,10.5,,S +1169,2,"Faunthorpe, Mr. Harry",male,40,1,0,2926,26,,S +1170,2,"Ware, Mr. John James",male,30,1,0,CA 31352,21,,S +1171,2,"Oxenham, Mr. Percy Thomas",male,22,0,0,W./C. 14260,10.5,,S +1172,3,"Oreskovic, Miss. Jelka",female,23,0,0,315085,8.6625,,S +1173,3,"Peacock, Master. Alfred Edward",male,0.75,1,1,SOTON/O.Q. 3101315,13.775,,S +1174,3,"Fleming, Miss. Honora",female,,0,0,364859,7.75,,Q +1175,3,"Touma, Miss. Maria Youssef",female,9,1,1,2650,15.2458,,C +1176,3,"Rosblom, Miss. Salli Helena",female,2,1,1,370129,20.2125,,S +1177,3,"Dennis, Mr. William",male,36,0,0,A/5 21175,7.25,,S +1178,3,"Franklin, Mr. Charles (Charles Fardon)",male,,0,0,SOTON/O.Q. 3101314,7.25,,S +1179,1,"Snyder, Mr. John Pillsbury",male,24,1,0,21228,82.2667,B45,S +1180,3,"Mardirosian, Mr. Sarkis",male,,0,0,2655,7.2292,F E46,C +1181,3,"Ford, Mr. Arthur",male,,0,0,A/5 1478,8.05,,S +1182,1,"Rheims, Mr. George Alexander Lucien",male,,0,0,PC 17607,39.6,,S +1183,3,"Daly, Miss. Margaret Marcella Maggie""""",female,30,0,0,382650,6.95,,Q +1184,3,"Nasr, Mr. Mustafa",male,,0,0,2652,7.2292,,C +1185,1,"Dodge, Dr. Washington",male,53,1,1,33638,81.8583,A34,S +1186,3,"Wittevrongel, Mr. Camille",male,36,0,0,345771,9.5,,S +1187,3,"Angheloff, Mr. Minko",male,26,0,0,349202,7.8958,,S +1188,2,"Laroche, Miss. Louise",female,1,1,2,SC/Paris 2123,41.5792,,C +1189,3,"Samaan, Mr. Hanna",male,,2,0,2662,21.6792,,C +1190,1,"Loring, Mr. Joseph Holland",male,30,0,0,113801,45.5,,S +1191,3,"Johansson, Mr. Nils",male,29,0,0,347467,7.8542,,S +1192,3,"Olsson, Mr. Oscar Wilhelm",male,32,0,0,347079,7.775,,S +1193,2,"Malachard, Mr. Noel",male,,0,0,237735,15.0458,D,C +1194,2,"Phillips, Mr. Escott Robert",male,43,0,1,S.O./P.P. 2,21,,S +1195,3,"Pokrnic, Mr. Tome",male,24,0,0,315092,8.6625,,S +1196,3,"McCarthy, Miss. Catherine Katie""""",female,,0,0,383123,7.75,,Q +1197,1,"Crosby, Mrs. Edward Gifford (Catherine Elizabeth Halstead)",female,64,1,1,112901,26.55,B26,S +1198,1,"Allison, Mr. Hudson Joshua Creighton",male,30,1,2,113781,151.55,C22 C26,S +1199,3,"Aks, Master. Philip Frank",male,0.83,0,1,392091,9.35,,S +1200,1,"Hays, Mr. Charles Melville",male,55,1,1,12749,93.5,B69,S +1201,3,"Hansen, Mrs. Claus Peter (Jennie L Howard)",female,45,1,0,350026,14.1083,,S +1202,3,"Cacic, Mr. Jego Grga",male,18,0,0,315091,8.6625,,S +1203,3,"Vartanian, Mr. David",male,22,0,0,2658,7.225,,C +1204,3,"Sadowitz, Mr. Harry",male,,0,0,LP 1588,7.575,,S +1205,3,"Carr, Miss. Jeannie",female,37,0,0,368364,7.75,,Q +1206,1,"White, Mrs. John Stuart (Ella Holmes)",female,55,0,0,PC 17760,135.6333,C32,C +1207,3,"Hagardon, Miss. Kate",female,17,0,0,AQ/3. 30631,7.7333,,Q +1208,1,"Spencer, Mr. William Augustus",male,57,1,0,PC 17569,146.5208,B78,C +1209,2,"Rogers, Mr. Reginald Harry",male,19,0,0,28004,10.5,,S +1210,3,"Jonsson, Mr. Nils Hilding",male,27,0,0,350408,7.8542,,S +1211,2,"Jefferys, Mr. Ernest Wilfred",male,22,2,0,C.A. 31029,31.5,,S +1212,3,"Andersson, Mr. Johan Samuel",male,26,0,0,347075,7.775,,S +1213,3,"Krekorian, Mr. Neshan",male,25,0,0,2654,7.2292,F E57,C +1214,2,"Nesson, Mr. Israel",male,26,0,0,244368,13,F2,S +1215,1,"Rowe, Mr. Alfred G",male,33,0,0,113790,26.55,,S +1216,1,"Kreuchen, Miss. Emilie",female,39,0,0,24160,211.3375,,S +1217,3,"Assam, Mr. Ali",male,23,0,0,SOTON/O.Q. 3101309,7.05,,S +1218,2,"Becker, Miss. Ruth Elizabeth",female,12,2,1,230136,39,F4,S +1219,1,"Rosenshine, Mr. George (Mr George Thorne"")""",male,46,0,0,PC 17585,79.2,,C +1220,2,"Clarke, Mr. Charles Valentine",male,29,1,0,2003,26,,S +1221,2,"Enander, Mr. Ingvar",male,21,0,0,236854,13,,S +1222,2,"Davies, Mrs. John Morgan (Elizabeth Agnes Mary White) ",female,48,0,2,C.A. 33112,36.75,,S +1223,1,"Dulles, Mr. William Crothers",male,39,0,0,PC 17580,29.7,A18,C +1224,3,"Thomas, Mr. Tannous",male,,0,0,2684,7.225,,C +1225,3,"Nakid, Mrs. Said (Waika Mary"" Mowad)""",female,19,1,1,2653,15.7417,,C +1226,3,"Cor, Mr. Ivan",male,27,0,0,349229,7.8958,,S +1227,1,"Maguire, Mr. John Edward",male,30,0,0,110469,26,C106,S +1228,2,"de Brito, Mr. Jose Joaquim",male,32,0,0,244360,13,,S +1229,3,"Elias, Mr. Joseph",male,39,0,2,2675,7.2292,,C +1230,2,"Denbury, Mr. Herbert",male,25,0,0,C.A. 31029,31.5,,S +1231,3,"Betros, Master. Seman",male,,0,0,2622,7.2292,,C +1232,2,"Fillbrook, Mr. Joseph Charles",male,18,0,0,C.A. 15185,10.5,,S +1233,3,"Lundstrom, Mr. Thure Edvin",male,32,0,0,350403,7.5792,,S +1234,3,"Sage, Mr. John George",male,,1,9,CA. 2343,69.55,,S +1235,1,"Cardeza, Mrs. James Warburton Martinez (Charlotte Wardle Drake)",female,58,0,1,PC 17755,512.3292,B51 B53 B55,C +1236,3,"van Billiard, Master. James William",male,,1,1,A/5. 851,14.5,,S +1237,3,"Abelseth, Miss. Karen Marie",female,16,0,0,348125,7.65,,S +1238,2,"Botsford, Mr. William Hull",male,26,0,0,237670,13,,S +1239,3,"Whabee, Mrs. George Joseph (Shawneene Abi-Saab)",female,38,0,0,2688,7.2292,,C +1240,2,"Giles, Mr. Ralph",male,24,0,0,248726,13.5,,S +1241,2,"Walcroft, Miss. Nellie",female,31,0,0,F.C.C. 13528,21,,S +1242,1,"Greenfield, Mrs. Leo David (Blanche Strouse)",female,45,0,1,PC 17759,63.3583,D10 D12,C +1243,2,"Stokes, Mr. Philip Joseph",male,25,0,0,F.C.C. 13540,10.5,,S +1244,2,"Dibden, Mr. William",male,18,0,0,S.O.C. 14879,73.5,,S +1245,2,"Herman, Mr. Samuel",male,49,1,2,220845,65,,S +1246,3,"Dean, Miss. Elizabeth Gladys Millvina""""",female,0.17,1,2,C.A. 2315,20.575,,S +1247,1,"Julian, Mr. Henry Forbes",male,50,0,0,113044,26,E60,S +1248,1,"Brown, Mrs. John Murray (Caroline Lane Lamson)",female,59,2,0,11769,51.4792,C101,S +1249,3,"Lockyer, Mr. Edward",male,,0,0,1222,7.8792,,S +1250,3,"O'Keefe, Mr. Patrick",male,,0,0,368402,7.75,,Q +1251,3,"Lindell, Mrs. Edvard Bengtsson (Elin Gerda Persson)",female,30,1,0,349910,15.55,,S +1252,3,"Sage, Master. William Henry",male,14.5,8,2,CA. 2343,69.55,,S +1253,2,"Mallet, Mrs. Albert (Antoinette Magnin)",female,24,1,1,S.C./PARIS 2079,37.0042,,C +1254,2,"Ware, Mrs. John James (Florence Louise Long)",female,31,0,0,CA 31352,21,,S +1255,3,"Strilic, Mr. Ivan",male,27,0,0,315083,8.6625,,S +1256,1,"Harder, Mrs. George Achilles (Dorothy Annan)",female,25,1,0,11765,55.4417,E50,C +1257,3,"Sage, Mrs. John (Annie Bullen)",female,,1,9,CA. 2343,69.55,,S +1258,3,"Caram, Mr. Joseph",male,,1,0,2689,14.4583,,C +1259,3,"Riihivouri, Miss. Susanna Juhantytar Sanni""""",female,22,0,0,3101295,39.6875,,S +1260,1,"Gibson, Mrs. Leonard (Pauline C Boeson)",female,45,0,1,112378,59.4,,C +1261,2,"Pallas y Castello, Mr. Emilio",male,29,0,0,SC/PARIS 2147,13.8583,,C +1262,2,"Giles, Mr. Edgar",male,21,1,0,28133,11.5,,S +1263,1,"Wilson, Miss. Helen Alice",female,31,0,0,16966,134.5,E39 E41,C +1264,1,"Ismay, Mr. Joseph Bruce",male,49,0,0,112058,0,B52 B54 B56,S +1265,2,"Harbeck, Mr. William H",male,44,0,0,248746,13,,S +1266,1,"Dodge, Mrs. Washington (Ruth Vidaver)",female,54,1,1,33638,81.8583,A34,S +1267,1,"Bowen, Miss. Grace Scott",female,45,0,0,PC 17608,262.375,,C +1268,3,"Kink, Miss. Maria",female,22,2,0,315152,8.6625,,S +1269,2,"Cotterill, Mr. Henry Harry""""",male,21,0,0,29107,11.5,,S +1270,1,"Hipkins, Mr. William Edward",male,55,0,0,680,50,C39,S +1271,3,"Asplund, Master. Carl Edgar",male,5,4,2,347077,31.3875,,S +1272,3,"O'Connor, Mr. Patrick",male,,0,0,366713,7.75,,Q +1273,3,"Foley, Mr. Joseph",male,26,0,0,330910,7.8792,,Q +1274,3,"Risien, Mrs. Samuel (Emma)",female,,0,0,364498,14.5,,S +1275,3,"McNamee, Mrs. Neal (Eileen O'Leary)",female,19,1,0,376566,16.1,,S +1276,2,"Wheeler, Mr. Edwin Frederick""""",male,,0,0,SC/PARIS 2159,12.875,,S +1277,2,"Herman, Miss. Kate",female,24,1,2,220845,65,,S +1278,3,"Aronsson, Mr. Ernst Axel Algot",male,24,0,0,349911,7.775,,S +1279,2,"Ashby, Mr. John",male,57,0,0,244346,13,,S +1280,3,"Canavan, Mr. Patrick",male,21,0,0,364858,7.75,,Q +1281,3,"Palsson, Master. Paul Folke",male,6,3,1,349909,21.075,,S +1282,1,"Payne, Mr. Vivian Ponsonby",male,23,0,0,12749,93.5,B24,S +1283,1,"Lines, Mrs. Ernest H (Elizabeth Lindsey James)",female,51,0,1,PC 17592,39.4,D28,S +1284,3,"Abbott, Master. Eugene Joseph",male,13,0,2,C.A. 2673,20.25,,S +1285,2,"Gilbert, Mr. William",male,47,0,0,C.A. 30769,10.5,,S +1286,3,"Kink-Heilmann, Mr. Anton",male,29,3,1,315153,22.025,,S +1287,1,"Smith, Mrs. Lucien Philip (Mary Eloise Hughes)",female,18,1,0,13695,60,C31,S +1288,3,"Colbert, Mr. Patrick",male,24,0,0,371109,7.25,,Q +1289,1,"Frolicher-Stehli, Mrs. Maxmillian (Margaretha Emerentia Stehli)",female,48,1,1,13567,79.2,B41,C +1290,3,"Larsson-Rondberg, Mr. Edvard A",male,22,0,0,347065,7.775,,S +1291,3,"Conlon, Mr. Thomas Henry",male,31,0,0,21332,7.7333,,Q +1292,1,"Bonnell, Miss. Caroline",female,30,0,0,36928,164.8667,C7,S +1293,2,"Gale, Mr. Harry",male,38,1,0,28664,21,,S +1294,1,"Gibson, Miss. Dorothy Winifred",female,22,0,1,112378,59.4,,C +1295,1,"Carrau, Mr. Jose Pedro",male,17,0,0,113059,47.1,,S +1296,1,"Frauenthal, Mr. Isaac Gerald",male,43,1,0,17765,27.7208,D40,C +1297,2,"Nourney, Mr. Alfred (Baron von Drachstedt"")""",male,20,0,0,SC/PARIS 2166,13.8625,D38,C +1298,2,"Ware, Mr. William Jeffery",male,23,1,0,28666,10.5,,S +1299,1,"Widener, Mr. George Dunton",male,50,1,1,113503,211.5,C80,C +1300,3,"Riordan, Miss. Johanna Hannah""""",female,,0,0,334915,7.7208,,Q +1301,3,"Peacock, Miss. Treasteall",female,3,1,1,SOTON/O.Q. 3101315,13.775,,S +1302,3,"Naughton, Miss. Hannah",female,,0,0,365237,7.75,,Q +1303,1,"Minahan, Mrs. William Edward (Lillian E Thorpe)",female,37,1,0,19928,90,C78,Q +1304,3,"Henriksson, Miss. Jenny Lovisa",female,28,0,0,347086,7.775,,S +1305,3,"Spector, Mr. Woolf",male,,0,0,A.5. 3236,8.05,,S +1306,1,"Oliva y Ocana, Dona. Fermina",female,39,0,0,PC 17758,108.9,C105,C +1307,3,"Saether, Mr. Simon Sivertsen",male,38.5,0,0,SOTON/O.Q. 3101262,7.25,,S +1308,3,"Ware, Mr. Frederick",male,,0,0,359309,8.05,,S +1309,3,"Peter, Master. Michael J",male,,1,1,2668,22.3583,,C diff --git a/data/lab-01/train.csv b/data/lab-01/train.csv new file mode 100644 index 0000000..5cc466e --- /dev/null +++ b/data/lab-01/train.csv @@ -0,0 +1,892 @@ +PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked +1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S +2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C +3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S +4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35,1,0,113803,53.1,C123,S +5,0,3,"Allen, Mr. William Henry",male,35,0,0,373450,8.05,,S +6,0,3,"Moran, Mr. James",male,,0,0,330877,8.4583,,Q +7,0,1,"McCarthy, Mr. Timothy J",male,54,0,0,17463,51.8625,E46,S +8,0,3,"Palsson, Master. Gosta Leonard",male,2,3,1,349909,21.075,,S +9,1,3,"Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)",female,27,0,2,347742,11.1333,,S +10,1,2,"Nasser, Mrs. Nicholas (Adele Achem)",female,14,1,0,237736,30.0708,,C +11,1,3,"Sandstrom, Miss. Marguerite Rut",female,4,1,1,PP 9549,16.7,G6,S +12,1,1,"Bonnell, Miss. Elizabeth",female,58,0,0,113783,26.55,C103,S +13,0,3,"Saundercock, Mr. William Henry",male,20,0,0,A/5. 2151,8.05,,S +14,0,3,"Andersson, Mr. Anders Johan",male,39,1,5,347082,31.275,,S +15,0,3,"Vestrom, Miss. Hulda Amanda Adolfina",female,14,0,0,350406,7.8542,,S +16,1,2,"Hewlett, Mrs. (Mary D Kingcome) ",female,55,0,0,248706,16,,S +17,0,3,"Rice, Master. Eugene",male,2,4,1,382652,29.125,,Q +18,1,2,"Williams, Mr. Charles Eugene",male,,0,0,244373,13,,S +19,0,3,"Vander Planke, Mrs. Julius (Emelia Maria Vandemoortele)",female,31,1,0,345763,18,,S +20,1,3,"Masselmani, Mrs. Fatima",female,,0,0,2649,7.225,,C +21,0,2,"Fynney, Mr. Joseph J",male,35,0,0,239865,26,,S +22,1,2,"Beesley, Mr. Lawrence",male,34,0,0,248698,13,D56,S +23,1,3,"McGowan, Miss. Anna ""Annie""",female,15,0,0,330923,8.0292,,Q +24,1,1,"Sloper, Mr. William Thompson",male,28,0,0,113788,35.5,A6,S +25,0,3,"Palsson, Miss. Torborg Danira",female,8,3,1,349909,21.075,,S +26,1,3,"Asplund, Mrs. Carl Oscar (Selma Augusta Emilia Johansson)",female,38,1,5,347077,31.3875,,S +27,0,3,"Emir, Mr. Farred Chehab",male,,0,0,2631,7.225,,C +28,0,1,"Fortune, Mr. Charles Alexander",male,19,3,2,19950,263,C23 C25 C27,S +29,1,3,"O'Dwyer, Miss. Ellen ""Nellie""",female,,0,0,330959,7.8792,,Q +30,0,3,"Todoroff, Mr. Lalio",male,,0,0,349216,7.8958,,S +31,0,1,"Uruchurtu, Don. Manuel E",male,40,0,0,PC 17601,27.7208,,C +32,1,1,"Spencer, Mrs. William Augustus (Marie Eugenie)",female,,1,0,PC 17569,146.5208,B78,C +33,1,3,"Glynn, Miss. Mary Agatha",female,,0,0,335677,7.75,,Q +34,0,2,"Wheadon, Mr. Edward H",male,66,0,0,C.A. 24579,10.5,,S +35,0,1,"Meyer, Mr. Edgar Joseph",male,28,1,0,PC 17604,82.1708,,C +36,0,1,"Holverson, Mr. Alexander Oskar",male,42,1,0,113789,52,,S +37,1,3,"Mamee, Mr. Hanna",male,,0,0,2677,7.2292,,C +38,0,3,"Cann, Mr. Ernest Charles",male,21,0,0,A./5. 2152,8.05,,S +39,0,3,"Vander Planke, Miss. Augusta Maria",female,18,2,0,345764,18,,S +40,1,3,"Nicola-Yarred, Miss. Jamila",female,14,1,0,2651,11.2417,,C +41,0,3,"Ahlin, Mrs. Johan (Johanna Persdotter Larsson)",female,40,1,0,7546,9.475,,S +42,0,2,"Turpin, Mrs. William John Robert (Dorothy Ann Wonnacott)",female,27,1,0,11668,21,,S +43,0,3,"Kraeff, Mr. Theodor",male,,0,0,349253,7.8958,,C +44,1,2,"Laroche, Miss. Simonne Marie Anne Andree",female,3,1,2,SC/Paris 2123,41.5792,,C +45,1,3,"Devaney, Miss. Margaret Delia",female,19,0,0,330958,7.8792,,Q +46,0,3,"Rogers, Mr. William John",male,,0,0,S.C./A.4. 23567,8.05,,S +47,0,3,"Lennon, Mr. Denis",male,,1,0,370371,15.5,,Q +48,1,3,"O'Driscoll, Miss. Bridget",female,,0,0,14311,7.75,,Q +49,0,3,"Samaan, Mr. Youssef",male,,2,0,2662,21.6792,,C +50,0,3,"Arnold-Franchi, Mrs. Josef (Josefine Franchi)",female,18,1,0,349237,17.8,,S +51,0,3,"Panula, Master. Juha Niilo",male,7,4,1,3101295,39.6875,,S +52,0,3,"Nosworthy, Mr. Richard Cater",male,21,0,0,A/4. 39886,7.8,,S +53,1,1,"Harper, Mrs. Henry Sleeper (Myna Haxtun)",female,49,1,0,PC 17572,76.7292,D33,C +54,1,2,"Faunthorpe, Mrs. Lizzie (Elizabeth Anne Wilkinson)",female,29,1,0,2926,26,,S +55,0,1,"Ostby, Mr. Engelhart Cornelius",male,65,0,1,113509,61.9792,B30,C +56,1,1,"Woolner, Mr. Hugh",male,,0,0,19947,35.5,C52,S +57,1,2,"Rugg, Miss. Emily",female,21,0,0,C.A. 31026,10.5,,S +58,0,3,"Novel, Mr. Mansouer",male,28.5,0,0,2697,7.2292,,C +59,1,2,"West, Miss. Constance Mirium",female,5,1,2,C.A. 34651,27.75,,S +60,0,3,"Goodwin, Master. William Frederick",male,11,5,2,CA 2144,46.9,,S +61,0,3,"Sirayanian, Mr. Orsen",male,22,0,0,2669,7.2292,,C +62,1,1,"Icard, Miss. Amelie",female,38,0,0,113572,80,B28, +63,0,1,"Harris, Mr. Henry Birkhardt",male,45,1,0,36973,83.475,C83,S +64,0,3,"Skoog, Master. Harald",male,4,3,2,347088,27.9,,S +65,0,1,"Stewart, Mr. Albert A",male,,0,0,PC 17605,27.7208,,C +66,1,3,"Moubarek, Master. Gerios",male,,1,1,2661,15.2458,,C +67,1,2,"Nye, Mrs. (Elizabeth Ramell)",female,29,0,0,C.A. 29395,10.5,F33,S +68,0,3,"Crease, Mr. Ernest James",male,19,0,0,S.P. 3464,8.1583,,S +69,1,3,"Andersson, Miss. Erna Alexandra",female,17,4,2,3101281,7.925,,S +70,0,3,"Kink, Mr. Vincenz",male,26,2,0,315151,8.6625,,S +71,0,2,"Jenkin, Mr. Stephen Curnow",male,32,0,0,C.A. 33111,10.5,,S +72,0,3,"Goodwin, Miss. Lillian Amy",female,16,5,2,CA 2144,46.9,,S +73,0,2,"Hood, Mr. Ambrose Jr",male,21,0,0,S.O.C. 14879,73.5,,S +74,0,3,"Chronopoulos, Mr. Apostolos",male,26,1,0,2680,14.4542,,C +75,1,3,"Bing, Mr. Lee",male,32,0,0,1601,56.4958,,S +76,0,3,"Moen, Mr. Sigurd Hansen",male,25,0,0,348123,7.65,F G73,S +77,0,3,"Staneff, Mr. Ivan",male,,0,0,349208,7.8958,,S +78,0,3,"Moutal, Mr. Rahamin Haim",male,,0,0,374746,8.05,,S +79,1,2,"Caldwell, Master. Alden Gates",male,0.83,0,2,248738,29,,S +80,1,3,"Dowdell, Miss. Elizabeth",female,30,0,0,364516,12.475,,S +81,0,3,"Waelens, Mr. Achille",male,22,0,0,345767,9,,S +82,1,3,"Sheerlinck, Mr. Jan Baptist",male,29,0,0,345779,9.5,,S +83,1,3,"McDermott, Miss. Brigdet Delia",female,,0,0,330932,7.7875,,Q +84,0,1,"Carrau, Mr. Francisco M",male,28,0,0,113059,47.1,,S +85,1,2,"Ilett, Miss. Bertha",female,17,0,0,SO/C 14885,10.5,,S +86,1,3,"Backstrom, Mrs. Karl Alfred (Maria Mathilda Gustafsson)",female,33,3,0,3101278,15.85,,S +87,0,3,"Ford, Mr. William Neal",male,16,1,3,W./C. 6608,34.375,,S +88,0,3,"Slocovski, Mr. Selman Francis",male,,0,0,SOTON/OQ 392086,8.05,,S +89,1,1,"Fortune, Miss. Mabel Helen",female,23,3,2,19950,263,C23 C25 C27,S +90,0,3,"Celotti, Mr. Francesco",male,24,0,0,343275,8.05,,S +91,0,3,"Christmann, Mr. Emil",male,29,0,0,343276,8.05,,S +92,0,3,"Andreasson, Mr. Paul Edvin",male,20,0,0,347466,7.8542,,S +93,0,1,"Chaffee, Mr. Herbert Fuller",male,46,1,0,W.E.P. 5734,61.175,E31,S +94,0,3,"Dean, Mr. Bertram Frank",male,26,1,2,C.A. 2315,20.575,,S +95,0,3,"Coxon, Mr. Daniel",male,59,0,0,364500,7.25,,S +96,0,3,"Shorney, Mr. Charles Joseph",male,,0,0,374910,8.05,,S +97,0,1,"Goldschmidt, Mr. George B",male,71,0,0,PC 17754,34.6542,A5,C +98,1,1,"Greenfield, Mr. William Bertram",male,23,0,1,PC 17759,63.3583,D10 D12,C +99,1,2,"Doling, Mrs. John T (Ada Julia Bone)",female,34,0,1,231919,23,,S +100,0,2,"Kantor, Mr. Sinai",male,34,1,0,244367,26,,S +101,0,3,"Petranec, Miss. Matilda",female,28,0,0,349245,7.8958,,S +102,0,3,"Petroff, Mr. Pastcho (""Pentcho"")",male,,0,0,349215,7.8958,,S +103,0,1,"White, Mr. Richard Frasar",male,21,0,1,35281,77.2875,D26,S +104,0,3,"Johansson, Mr. Gustaf Joel",male,33,0,0,7540,8.6542,,S +105,0,3,"Gustafsson, Mr. Anders Vilhelm",male,37,2,0,3101276,7.925,,S +106,0,3,"Mionoff, Mr. Stoytcho",male,28,0,0,349207,7.8958,,S +107,1,3,"Salkjelsvik, Miss. Anna Kristine",female,21,0,0,343120,7.65,,S +108,1,3,"Moss, Mr. Albert Johan",male,,0,0,312991,7.775,,S +109,0,3,"Rekic, Mr. Tido",male,38,0,0,349249,7.8958,,S +110,1,3,"Moran, Miss. Bertha",female,,1,0,371110,24.15,,Q +111,0,1,"Porter, Mr. Walter Chamberlain",male,47,0,0,110465,52,C110,S +112,0,3,"Zabour, Miss. Hileni",female,14.5,1,0,2665,14.4542,,C +113,0,3,"Barton, Mr. David John",male,22,0,0,324669,8.05,,S +114,0,3,"Jussila, Miss. Katriina",female,20,1,0,4136,9.825,,S +115,0,3,"Attalah, Miss. Malake",female,17,0,0,2627,14.4583,,C +116,0,3,"Pekoniemi, Mr. Edvard",male,21,0,0,STON/O 2. 3101294,7.925,,S +117,0,3,"Connors, Mr. Patrick",male,70.5,0,0,370369,7.75,,Q +118,0,2,"Turpin, Mr. William John Robert",male,29,1,0,11668,21,,S +119,0,1,"Baxter, Mr. Quigg Edmond",male,24,0,1,PC 17558,247.5208,B58 B60,C +120,0,3,"Andersson, Miss. Ellis Anna Maria",female,2,4,2,347082,31.275,,S +121,0,2,"Hickman, Mr. Stanley George",male,21,2,0,S.O.C. 14879,73.5,,S +122,0,3,"Moore, Mr. Leonard Charles",male,,0,0,A4. 54510,8.05,,S +123,0,2,"Nasser, Mr. Nicholas",male,32.5,1,0,237736,30.0708,,C +124,1,2,"Webber, Miss. Susan",female,32.5,0,0,27267,13,E101,S +125,0,1,"White, Mr. Percival Wayland",male,54,0,1,35281,77.2875,D26,S +126,1,3,"Nicola-Yarred, Master. Elias",male,12,1,0,2651,11.2417,,C +127,0,3,"McMahon, Mr. Martin",male,,0,0,370372,7.75,,Q +128,1,3,"Madsen, Mr. Fridtjof Arne",male,24,0,0,C 17369,7.1417,,S +129,1,3,"Peter, Miss. Anna",female,,1,1,2668,22.3583,F E69,C +130,0,3,"Ekstrom, Mr. Johan",male,45,0,0,347061,6.975,,S +131,0,3,"Drazenoic, Mr. Jozef",male,33,0,0,349241,7.8958,,C +132,0,3,"Coelho, Mr. Domingos Fernandeo",male,20,0,0,SOTON/O.Q. 3101307,7.05,,S +133,0,3,"Robins, Mrs. Alexander A (Grace Charity Laury)",female,47,1,0,A/5. 3337,14.5,,S +134,1,2,"Weisz, Mrs. Leopold (Mathilde Francoise Pede)",female,29,1,0,228414,26,,S +135,0,2,"Sobey, Mr. Samuel James Hayden",male,25,0,0,C.A. 29178,13,,S +136,0,2,"Richard, Mr. Emile",male,23,0,0,SC/PARIS 2133,15.0458,,C +137,1,1,"Newsom, Miss. Helen Monypeny",female,19,0,2,11752,26.2833,D47,S +138,0,1,"Futrelle, Mr. Jacques Heath",male,37,1,0,113803,53.1,C123,S +139,0,3,"Osen, Mr. Olaf Elon",male,16,0,0,7534,9.2167,,S +140,0,1,"Giglio, Mr. Victor",male,24,0,0,PC 17593,79.2,B86,C +141,0,3,"Boulos, Mrs. Joseph (Sultana)",female,,0,2,2678,15.2458,,C +142,1,3,"Nysten, Miss. Anna Sofia",female,22,0,0,347081,7.75,,S +143,1,3,"Hakkarainen, Mrs. Pekka Pietari (Elin Matilda Dolck)",female,24,1,0,STON/O2. 3101279,15.85,,S +144,0,3,"Burke, Mr. Jeremiah",male,19,0,0,365222,6.75,,Q +145,0,2,"Andrew, Mr. Edgardo Samuel",male,18,0,0,231945,11.5,,S +146,0,2,"Nicholls, Mr. Joseph Charles",male,19,1,1,C.A. 33112,36.75,,S +147,1,3,"Andersson, Mr. August Edvard (""Wennerstrom"")",male,27,0,0,350043,7.7958,,S +148,0,3,"Ford, Miss. Robina Maggie ""Ruby""",female,9,2,2,W./C. 6608,34.375,,S +149,0,2,"Navratil, Mr. Michel (""Louis M Hoffman"")",male,36.5,0,2,230080,26,F2,S +150,0,2,"Byles, Rev. Thomas Roussel Davids",male,42,0,0,244310,13,,S +151,0,2,"Bateman, Rev. Robert James",male,51,0,0,S.O.P. 1166,12.525,,S +152,1,1,"Pears, Mrs. Thomas (Edith Wearne)",female,22,1,0,113776,66.6,C2,S +153,0,3,"Meo, Mr. Alfonzo",male,55.5,0,0,A.5. 11206,8.05,,S +154,0,3,"van Billiard, Mr. Austin Blyler",male,40.5,0,2,A/5. 851,14.5,,S +155,0,3,"Olsen, Mr. Ole Martin",male,,0,0,Fa 265302,7.3125,,S +156,0,1,"Williams, Mr. Charles Duane",male,51,0,1,PC 17597,61.3792,,C +157,1,3,"Gilnagh, Miss. Katherine ""Katie""",female,16,0,0,35851,7.7333,,Q +158,0,3,"Corn, Mr. Harry",male,30,0,0,SOTON/OQ 392090,8.05,,S +159,0,3,"Smiljanic, Mr. Mile",male,,0,0,315037,8.6625,,S +160,0,3,"Sage, Master. Thomas Henry",male,,8,2,CA. 2343,69.55,,S +161,0,3,"Cribb, Mr. John Hatfield",male,44,0,1,371362,16.1,,S +162,1,2,"Watt, Mrs. James (Elizabeth ""Bessie"" Inglis Milne)",female,40,0,0,C.A. 33595,15.75,,S +163,0,3,"Bengtsson, Mr. John Viktor",male,26,0,0,347068,7.775,,S +164,0,3,"Calic, Mr. Jovo",male,17,0,0,315093,8.6625,,S +165,0,3,"Panula, Master. Eino Viljami",male,1,4,1,3101295,39.6875,,S +166,1,3,"Goldsmith, Master. Frank John William ""Frankie""",male,9,0,2,363291,20.525,,S +167,1,1,"Chibnall, Mrs. (Edith Martha Bowerman)",female,,0,1,113505,55,E33,S +168,0,3,"Skoog, Mrs. William (Anna Bernhardina Karlsson)",female,45,1,4,347088,27.9,,S +169,0,1,"Baumann, Mr. John D",male,,0,0,PC 17318,25.925,,S +170,0,3,"Ling, Mr. Lee",male,28,0,0,1601,56.4958,,S +171,0,1,"Van der hoef, Mr. Wyckoff",male,61,0,0,111240,33.5,B19,S +172,0,3,"Rice, Master. Arthur",male,4,4,1,382652,29.125,,Q +173,1,3,"Johnson, Miss. Eleanor Ileen",female,1,1,1,347742,11.1333,,S +174,0,3,"Sivola, Mr. Antti Wilhelm",male,21,0,0,STON/O 2. 3101280,7.925,,S +175,0,1,"Smith, Mr. James Clinch",male,56,0,0,17764,30.6958,A7,C +176,0,3,"Klasen, Mr. Klas Albin",male,18,1,1,350404,7.8542,,S +177,0,3,"Lefebre, Master. Henry Forbes",male,,3,1,4133,25.4667,,S +178,0,1,"Isham, Miss. Ann Elizabeth",female,50,0,0,PC 17595,28.7125,C49,C +179,0,2,"Hale, Mr. Reginald",male,30,0,0,250653,13,,S +180,0,3,"Leonard, Mr. Lionel",male,36,0,0,LINE,0,,S +181,0,3,"Sage, Miss. Constance Gladys",female,,8,2,CA. 2343,69.55,,S +182,0,2,"Pernot, Mr. Rene",male,,0,0,SC/PARIS 2131,15.05,,C +183,0,3,"Asplund, Master. Clarence Gustaf Hugo",male,9,4,2,347077,31.3875,,S +184,1,2,"Becker, Master. Richard F",male,1,2,1,230136,39,F4,S +185,1,3,"Kink-Heilmann, Miss. Luise Gretchen",female,4,0,2,315153,22.025,,S +186,0,1,"Rood, Mr. Hugh Roscoe",male,,0,0,113767,50,A32,S +187,1,3,"O'Brien, Mrs. Thomas (Johanna ""Hannah"" Godfrey)",female,,1,0,370365,15.5,,Q +188,1,1,"Romaine, Mr. Charles Hallace (""Mr C Rolmane"")",male,45,0,0,111428,26.55,,S +189,0,3,"Bourke, Mr. John",male,40,1,1,364849,15.5,,Q +190,0,3,"Turcin, Mr. Stjepan",male,36,0,0,349247,7.8958,,S +191,1,2,"Pinsky, Mrs. (Rosa)",female,32,0,0,234604,13,,S +192,0,2,"Carbines, Mr. William",male,19,0,0,28424,13,,S +193,1,3,"Andersen-Jensen, Miss. Carla Christine Nielsine",female,19,1,0,350046,7.8542,,S +194,1,2,"Navratil, Master. Michel M",male,3,1,1,230080,26,F2,S +195,1,1,"Brown, Mrs. James Joseph (Margaret Tobin)",female,44,0,0,PC 17610,27.7208,B4,C +196,1,1,"Lurette, Miss. Elise",female,58,0,0,PC 17569,146.5208,B80,C +197,0,3,"Mernagh, Mr. Robert",male,,0,0,368703,7.75,,Q +198,0,3,"Olsen, Mr. Karl Siegwart Andreas",male,42,0,1,4579,8.4042,,S +199,1,3,"Madigan, Miss. Margaret ""Maggie""",female,,0,0,370370,7.75,,Q +200,0,2,"Yrois, Miss. Henriette (""Mrs Harbeck"")",female,24,0,0,248747,13,,S +201,0,3,"Vande Walle, Mr. Nestor Cyriel",male,28,0,0,345770,9.5,,S +202,0,3,"Sage, Mr. Frederick",male,,8,2,CA. 2343,69.55,,S +203,0,3,"Johanson, Mr. Jakob Alfred",male,34,0,0,3101264,6.4958,,S +204,0,3,"Youseff, Mr. Gerious",male,45.5,0,0,2628,7.225,,C +205,1,3,"Cohen, Mr. Gurshon ""Gus""",male,18,0,0,A/5 3540,8.05,,S +206,0,3,"Strom, Miss. Telma Matilda",female,2,0,1,347054,10.4625,G6,S +207,0,3,"Backstrom, Mr. Karl Alfred",male,32,1,0,3101278,15.85,,S +208,1,3,"Albimona, Mr. Nassef Cassem",male,26,0,0,2699,18.7875,,C +209,1,3,"Carr, Miss. Helen ""Ellen""",female,16,0,0,367231,7.75,,Q +210,1,1,"Blank, Mr. Henry",male,40,0,0,112277,31,A31,C +211,0,3,"Ali, Mr. Ahmed",male,24,0,0,SOTON/O.Q. 3101311,7.05,,S +212,1,2,"Cameron, Miss. Clear Annie",female,35,0,0,F.C.C. 13528,21,,S +213,0,3,"Perkin, Mr. John Henry",male,22,0,0,A/5 21174,7.25,,S +214,0,2,"Givard, Mr. Hans Kristensen",male,30,0,0,250646,13,,S +215,0,3,"Kiernan, Mr. Philip",male,,1,0,367229,7.75,,Q +216,1,1,"Newell, Miss. Madeleine",female,31,1,0,35273,113.275,D36,C +217,1,3,"Honkanen, Miss. Eliina",female,27,0,0,STON/O2. 3101283,7.925,,S +218,0,2,"Jacobsohn, Mr. Sidney Samuel",male,42,1,0,243847,27,,S +219,1,1,"Bazzani, Miss. Albina",female,32,0,0,11813,76.2917,D15,C +220,0,2,"Harris, Mr. Walter",male,30,0,0,W/C 14208,10.5,,S +221,1,3,"Sunderland, Mr. Victor Francis",male,16,0,0,SOTON/OQ 392089,8.05,,S +222,0,2,"Bracken, Mr. James H",male,27,0,0,220367,13,,S +223,0,3,"Green, Mr. George Henry",male,51,0,0,21440,8.05,,S +224,0,3,"Nenkoff, Mr. Christo",male,,0,0,349234,7.8958,,S +225,1,1,"Hoyt, Mr. Frederick Maxfield",male,38,1,0,19943,90,C93,S +226,0,3,"Berglund, Mr. Karl Ivar Sven",male,22,0,0,PP 4348,9.35,,S +227,1,2,"Mellors, Mr. William John",male,19,0,0,SW/PP 751,10.5,,S +228,0,3,"Lovell, Mr. John Hall (""Henry"")",male,20.5,0,0,A/5 21173,7.25,,S +229,0,2,"Fahlstrom, Mr. Arne Jonas",male,18,0,0,236171,13,,S +230,0,3,"Lefebre, Miss. Mathilde",female,,3,1,4133,25.4667,,S +231,1,1,"Harris, Mrs. Henry Birkhardt (Irene Wallach)",female,35,1,0,36973,83.475,C83,S +232,0,3,"Larsson, Mr. Bengt Edvin",male,29,0,0,347067,7.775,,S +233,0,2,"Sjostedt, Mr. Ernst Adolf",male,59,0,0,237442,13.5,,S +234,1,3,"Asplund, Miss. Lillian Gertrud",female,5,4,2,347077,31.3875,,S +235,0,2,"Leyson, Mr. Robert William Norman",male,24,0,0,C.A. 29566,10.5,,S +236,0,3,"Harknett, Miss. Alice Phoebe",female,,0,0,W./C. 6609,7.55,,S +237,0,2,"Hold, Mr. Stephen",male,44,1,0,26707,26,,S +238,1,2,"Collyer, Miss. Marjorie ""Lottie""",female,8,0,2,C.A. 31921,26.25,,S +239,0,2,"Pengelly, Mr. Frederick William",male,19,0,0,28665,10.5,,S +240,0,2,"Hunt, Mr. George Henry",male,33,0,0,SCO/W 1585,12.275,,S +241,0,3,"Zabour, Miss. Thamine",female,,1,0,2665,14.4542,,C +242,1,3,"Murphy, Miss. Katherine ""Kate""",female,,1,0,367230,15.5,,Q +243,0,2,"Coleridge, Mr. Reginald Charles",male,29,0,0,W./C. 14263,10.5,,S +244,0,3,"Maenpaa, Mr. Matti Alexanteri",male,22,0,0,STON/O 2. 3101275,7.125,,S +245,0,3,"Attalah, Mr. Sleiman",male,30,0,0,2694,7.225,,C +246,0,1,"Minahan, Dr. William Edward",male,44,2,0,19928,90,C78,Q +247,0,3,"Lindahl, Miss. Agda Thorilda Viktoria",female,25,0,0,347071,7.775,,S +248,1,2,"Hamalainen, Mrs. William (Anna)",female,24,0,2,250649,14.5,,S +249,1,1,"Beckwith, Mr. Richard Leonard",male,37,1,1,11751,52.5542,D35,S +250,0,2,"Carter, Rev. Ernest Courtenay",male,54,1,0,244252,26,,S +251,0,3,"Reed, Mr. James George",male,,0,0,362316,7.25,,S +252,0,3,"Strom, Mrs. Wilhelm (Elna Matilda Persson)",female,29,1,1,347054,10.4625,G6,S +253,0,1,"Stead, Mr. William Thomas",male,62,0,0,113514,26.55,C87,S +254,0,3,"Lobb, Mr. William Arthur",male,30,1,0,A/5. 3336,16.1,,S +255,0,3,"Rosblom, Mrs. Viktor (Helena Wilhelmina)",female,41,0,2,370129,20.2125,,S +256,1,3,"Touma, Mrs. Darwis (Hanne Youssef Razi)",female,29,0,2,2650,15.2458,,C +257,1,1,"Thorne, Mrs. Gertrude Maybelle",female,,0,0,PC 17585,79.2,,C +258,1,1,"Cherry, Miss. Gladys",female,30,0,0,110152,86.5,B77,S +259,1,1,"Ward, Miss. Anna",female,35,0,0,PC 17755,512.3292,,C +260,1,2,"Parrish, Mrs. (Lutie Davis)",female,50,0,1,230433,26,,S +261,0,3,"Smith, Mr. Thomas",male,,0,0,384461,7.75,,Q +262,1,3,"Asplund, Master. Edvin Rojj Felix",male,3,4,2,347077,31.3875,,S +263,0,1,"Taussig, Mr. Emil",male,52,1,1,110413,79.65,E67,S +264,0,1,"Harrison, Mr. William",male,40,0,0,112059,0,B94,S +265,0,3,"Henry, Miss. Delia",female,,0,0,382649,7.75,,Q +266,0,2,"Reeves, Mr. David",male,36,0,0,C.A. 17248,10.5,,S +267,0,3,"Panula, Mr. Ernesti Arvid",male,16,4,1,3101295,39.6875,,S +268,1,3,"Persson, Mr. Ernst Ulrik",male,25,1,0,347083,7.775,,S +269,1,1,"Graham, Mrs. William Thompson (Edith Junkins)",female,58,0,1,PC 17582,153.4625,C125,S +270,1,1,"Bissette, Miss. Amelia",female,35,0,0,PC 17760,135.6333,C99,S +271,0,1,"Cairns, Mr. Alexander",male,,0,0,113798,31,,S +272,1,3,"Tornquist, Mr. William Henry",male,25,0,0,LINE,0,,S +273,1,2,"Mellinger, Mrs. (Elizabeth Anne Maidment)",female,41,0,1,250644,19.5,,S +274,0,1,"Natsch, Mr. Charles H",male,37,0,1,PC 17596,29.7,C118,C +275,1,3,"Healy, Miss. Hanora ""Nora""",female,,0,0,370375,7.75,,Q +276,1,1,"Andrews, Miss. Kornelia Theodosia",female,63,1,0,13502,77.9583,D7,S +277,0,3,"Lindblom, Miss. Augusta Charlotta",female,45,0,0,347073,7.75,,S +278,0,2,"Parkes, Mr. Francis ""Frank""",male,,0,0,239853,0,,S +279,0,3,"Rice, Master. Eric",male,7,4,1,382652,29.125,,Q +280,1,3,"Abbott, Mrs. Stanton (Rosa Hunt)",female,35,1,1,C.A. 2673,20.25,,S +281,0,3,"Duane, Mr. Frank",male,65,0,0,336439,7.75,,Q +282,0,3,"Olsson, Mr. Nils Johan Goransson",male,28,0,0,347464,7.8542,,S +283,0,3,"de Pelsmaeker, Mr. Alfons",male,16,0,0,345778,9.5,,S +284,1,3,"Dorking, Mr. Edward Arthur",male,19,0,0,A/5. 10482,8.05,,S +285,0,1,"Smith, Mr. Richard William",male,,0,0,113056,26,A19,S +286,0,3,"Stankovic, Mr. Ivan",male,33,0,0,349239,8.6625,,C +287,1,3,"de Mulder, Mr. Theodore",male,30,0,0,345774,9.5,,S +288,0,3,"Naidenoff, Mr. Penko",male,22,0,0,349206,7.8958,,S +289,1,2,"Hosono, Mr. Masabumi",male,42,0,0,237798,13,,S +290,1,3,"Connolly, Miss. Kate",female,22,0,0,370373,7.75,,Q +291,1,1,"Barber, Miss. Ellen ""Nellie""",female,26,0,0,19877,78.85,,S +292,1,1,"Bishop, Mrs. Dickinson H (Helen Walton)",female,19,1,0,11967,91.0792,B49,C +293,0,2,"Levy, Mr. Rene Jacques",male,36,0,0,SC/Paris 2163,12.875,D,C +294,0,3,"Haas, Miss. Aloisia",female,24,0,0,349236,8.85,,S +295,0,3,"Mineff, Mr. Ivan",male,24,0,0,349233,7.8958,,S +296,0,1,"Lewy, Mr. Ervin G",male,,0,0,PC 17612,27.7208,,C +297,0,3,"Hanna, Mr. Mansour",male,23.5,0,0,2693,7.2292,,C +298,0,1,"Allison, Miss. Helen Loraine",female,2,1,2,113781,151.55,C22 C26,S +299,1,1,"Saalfeld, Mr. Adolphe",male,,0,0,19988,30.5,C106,S +300,1,1,"Baxter, Mrs. James (Helene DeLaudeniere Chaput)",female,50,0,1,PC 17558,247.5208,B58 B60,C +301,1,3,"Kelly, Miss. Anna Katherine ""Annie Kate""",female,,0,0,9234,7.75,,Q +302,1,3,"McCoy, Mr. Bernard",male,,2,0,367226,23.25,,Q +303,0,3,"Johnson, Mr. William Cahoone Jr",male,19,0,0,LINE,0,,S +304,1,2,"Keane, Miss. Nora A",female,,0,0,226593,12.35,E101,Q +305,0,3,"Williams, Mr. Howard Hugh ""Harry""",male,,0,0,A/5 2466,8.05,,S +306,1,1,"Allison, Master. Hudson Trevor",male,0.92,1,2,113781,151.55,C22 C26,S +307,1,1,"Fleming, Miss. Margaret",female,,0,0,17421,110.8833,,C +308,1,1,"Penasco y Castellana, Mrs. Victor de Satode (Maria Josefa Perez de Soto y Vallejo)",female,17,1,0,PC 17758,108.9,C65,C +309,0,2,"Abelson, Mr. Samuel",male,30,1,0,P/PP 3381,24,,C +310,1,1,"Francatelli, Miss. Laura Mabel",female,30,0,0,PC 17485,56.9292,E36,C +311,1,1,"Hays, Miss. Margaret Bechstein",female,24,0,0,11767,83.1583,C54,C +312,1,1,"Ryerson, Miss. Emily Borie",female,18,2,2,PC 17608,262.375,B57 B59 B63 B66,C +313,0,2,"Lahtinen, Mrs. William (Anna Sylfven)",female,26,1,1,250651,26,,S +314,0,3,"Hendekovic, Mr. Ignjac",male,28,0,0,349243,7.8958,,S +315,0,2,"Hart, Mr. Benjamin",male,43,1,1,F.C.C. 13529,26.25,,S +316,1,3,"Nilsson, Miss. Helmina Josefina",female,26,0,0,347470,7.8542,,S +317,1,2,"Kantor, Mrs. Sinai (Miriam Sternin)",female,24,1,0,244367,26,,S +318,0,2,"Moraweck, Dr. Ernest",male,54,0,0,29011,14,,S +319,1,1,"Wick, Miss. Mary Natalie",female,31,0,2,36928,164.8667,C7,S +320,1,1,"Spedden, Mrs. Frederic Oakley (Margaretta Corning Stone)",female,40,1,1,16966,134.5,E34,C +321,0,3,"Dennis, Mr. Samuel",male,22,0,0,A/5 21172,7.25,,S +322,0,3,"Danoff, Mr. Yoto",male,27,0,0,349219,7.8958,,S +323,1,2,"Slayter, Miss. Hilda Mary",female,30,0,0,234818,12.35,,Q +324,1,2,"Caldwell, Mrs. Albert Francis (Sylvia Mae Harbaugh)",female,22,1,1,248738,29,,S +325,0,3,"Sage, Mr. George John Jr",male,,8,2,CA. 2343,69.55,,S +326,1,1,"Young, Miss. Marie Grice",female,36,0,0,PC 17760,135.6333,C32,C +327,0,3,"Nysveen, Mr. Johan Hansen",male,61,0,0,345364,6.2375,,S +328,1,2,"Ball, Mrs. (Ada E Hall)",female,36,0,0,28551,13,D,S +329,1,3,"Goldsmith, Mrs. Frank John (Emily Alice Brown)",female,31,1,1,363291,20.525,,S +330,1,1,"Hippach, Miss. Jean Gertrude",female,16,0,1,111361,57.9792,B18,C +331,1,3,"McCoy, Miss. Agnes",female,,2,0,367226,23.25,,Q +332,0,1,"Partner, Mr. Austen",male,45.5,0,0,113043,28.5,C124,S +333,0,1,"Graham, Mr. George Edward",male,38,0,1,PC 17582,153.4625,C91,S +334,0,3,"Vander Planke, Mr. Leo Edmondus",male,16,2,0,345764,18,,S +335,1,1,"Frauenthal, Mrs. Henry William (Clara Heinsheimer)",female,,1,0,PC 17611,133.65,,S +336,0,3,"Denkoff, Mr. Mitto",male,,0,0,349225,7.8958,,S +337,0,1,"Pears, Mr. Thomas Clinton",male,29,1,0,113776,66.6,C2,S +338,1,1,"Burns, Miss. Elizabeth Margaret",female,41,0,0,16966,134.5,E40,C +339,1,3,"Dahl, Mr. Karl Edwart",male,45,0,0,7598,8.05,,S +340,0,1,"Blackwell, Mr. Stephen Weart",male,45,0,0,113784,35.5,T,S +341,1,2,"Navratil, Master. Edmond Roger",male,2,1,1,230080,26,F2,S +342,1,1,"Fortune, Miss. Alice Elizabeth",female,24,3,2,19950,263,C23 C25 C27,S +343,0,2,"Collander, Mr. Erik Gustaf",male,28,0,0,248740,13,,S +344,0,2,"Sedgwick, Mr. Charles Frederick Waddington",male,25,0,0,244361,13,,S +345,0,2,"Fox, Mr. Stanley Hubert",male,36,0,0,229236,13,,S +346,1,2,"Brown, Miss. Amelia ""Mildred""",female,24,0,0,248733,13,F33,S +347,1,2,"Smith, Miss. Marion Elsie",female,40,0,0,31418,13,,S +348,1,3,"Davison, Mrs. Thomas Henry (Mary E Finck)",female,,1,0,386525,16.1,,S +349,1,3,"Coutts, Master. William Loch ""William""",male,3,1,1,C.A. 37671,15.9,,S +350,0,3,"Dimic, Mr. Jovan",male,42,0,0,315088,8.6625,,S +351,0,3,"Odahl, Mr. Nils Martin",male,23,0,0,7267,9.225,,S +352,0,1,"Williams-Lambert, Mr. Fletcher Fellows",male,,0,0,113510,35,C128,S +353,0,3,"Elias, Mr. Tannous",male,15,1,1,2695,7.2292,,C +354,0,3,"Arnold-Franchi, Mr. Josef",male,25,1,0,349237,17.8,,S +355,0,3,"Yousif, Mr. Wazli",male,,0,0,2647,7.225,,C +356,0,3,"Vanden Steen, Mr. Leo Peter",male,28,0,0,345783,9.5,,S +357,1,1,"Bowerman, Miss. Elsie Edith",female,22,0,1,113505,55,E33,S +358,0,2,"Funk, Miss. Annie Clemmer",female,38,0,0,237671,13,,S +359,1,3,"McGovern, Miss. Mary",female,,0,0,330931,7.8792,,Q +360,1,3,"Mockler, Miss. Helen Mary ""Ellie""",female,,0,0,330980,7.8792,,Q +361,0,3,"Skoog, Mr. Wilhelm",male,40,1,4,347088,27.9,,S +362,0,2,"del Carlo, Mr. Sebastiano",male,29,1,0,SC/PARIS 2167,27.7208,,C +363,0,3,"Barbara, Mrs. (Catherine David)",female,45,0,1,2691,14.4542,,C +364,0,3,"Asim, Mr. Adola",male,35,0,0,SOTON/O.Q. 3101310,7.05,,S +365,0,3,"O'Brien, Mr. Thomas",male,,1,0,370365,15.5,,Q +366,0,3,"Adahl, Mr. Mauritz Nils Martin",male,30,0,0,C 7076,7.25,,S +367,1,1,"Warren, Mrs. Frank Manley (Anna Sophia Atkinson)",female,60,1,0,110813,75.25,D37,C +368,1,3,"Moussa, Mrs. (Mantoura Boulos)",female,,0,0,2626,7.2292,,C +369,1,3,"Jermyn, Miss. Annie",female,,0,0,14313,7.75,,Q +370,1,1,"Aubart, Mme. Leontine Pauline",female,24,0,0,PC 17477,69.3,B35,C +371,1,1,"Harder, Mr. George Achilles",male,25,1,0,11765,55.4417,E50,C +372,0,3,"Wiklund, Mr. Jakob Alfred",male,18,1,0,3101267,6.4958,,S +373,0,3,"Beavan, Mr. William Thomas",male,19,0,0,323951,8.05,,S +374,0,1,"Ringhini, Mr. Sante",male,22,0,0,PC 17760,135.6333,,C +375,0,3,"Palsson, Miss. Stina Viola",female,3,3,1,349909,21.075,,S +376,1,1,"Meyer, Mrs. Edgar Joseph (Leila Saks)",female,,1,0,PC 17604,82.1708,,C +377,1,3,"Landergren, Miss. Aurora Adelia",female,22,0,0,C 7077,7.25,,S +378,0,1,"Widener, Mr. Harry Elkins",male,27,0,2,113503,211.5,C82,C +379,0,3,"Betros, Mr. Tannous",male,20,0,0,2648,4.0125,,C +380,0,3,"Gustafsson, Mr. Karl Gideon",male,19,0,0,347069,7.775,,S +381,1,1,"Bidois, Miss. Rosalie",female,42,0,0,PC 17757,227.525,,C +382,1,3,"Nakid, Miss. Maria (""Mary"")",female,1,0,2,2653,15.7417,,C +383,0,3,"Tikkanen, Mr. Juho",male,32,0,0,STON/O 2. 3101293,7.925,,S +384,1,1,"Holverson, Mrs. Alexander Oskar (Mary Aline Towner)",female,35,1,0,113789,52,,S +385,0,3,"Plotcharsky, Mr. Vasil",male,,0,0,349227,7.8958,,S +386,0,2,"Davies, Mr. Charles Henry",male,18,0,0,S.O.C. 14879,73.5,,S +387,0,3,"Goodwin, Master. Sidney Leonard",male,1,5,2,CA 2144,46.9,,S +388,1,2,"Buss, Miss. Kate",female,36,0,0,27849,13,,S +389,0,3,"Sadlier, Mr. Matthew",male,,0,0,367655,7.7292,,Q +390,1,2,"Lehmann, Miss. Bertha",female,17,0,0,SC 1748,12,,C +391,1,1,"Carter, Mr. William Ernest",male,36,1,2,113760,120,B96 B98,S +392,1,3,"Jansson, Mr. Carl Olof",male,21,0,0,350034,7.7958,,S +393,0,3,"Gustafsson, Mr. Johan Birger",male,28,2,0,3101277,7.925,,S +394,1,1,"Newell, Miss. Marjorie",female,23,1,0,35273,113.275,D36,C +395,1,3,"Sandstrom, Mrs. Hjalmar (Agnes Charlotta Bengtsson)",female,24,0,2,PP 9549,16.7,G6,S +396,0,3,"Johansson, Mr. Erik",male,22,0,0,350052,7.7958,,S +397,0,3,"Olsson, Miss. Elina",female,31,0,0,350407,7.8542,,S +398,0,2,"McKane, Mr. Peter David",male,46,0,0,28403,26,,S +399,0,2,"Pain, Dr. Alfred",male,23,0,0,244278,10.5,,S +400,1,2,"Trout, Mrs. William H (Jessie L)",female,28,0,0,240929,12.65,,S +401,1,3,"Niskanen, Mr. Juha",male,39,0,0,STON/O 2. 3101289,7.925,,S +402,0,3,"Adams, Mr. John",male,26,0,0,341826,8.05,,S +403,0,3,"Jussila, Miss. Mari Aina",female,21,1,0,4137,9.825,,S +404,0,3,"Hakkarainen, Mr. Pekka Pietari",male,28,1,0,STON/O2. 3101279,15.85,,S +405,0,3,"Oreskovic, Miss. Marija",female,20,0,0,315096,8.6625,,S +406,0,2,"Gale, Mr. Shadrach",male,34,1,0,28664,21,,S +407,0,3,"Widegren, Mr. Carl/Charles Peter",male,51,0,0,347064,7.75,,S +408,1,2,"Richards, Master. William Rowe",male,3,1,1,29106,18.75,,S +409,0,3,"Birkeland, Mr. Hans Martin Monsen",male,21,0,0,312992,7.775,,S +410,0,3,"Lefebre, Miss. Ida",female,,3,1,4133,25.4667,,S +411,0,3,"Sdycoff, Mr. Todor",male,,0,0,349222,7.8958,,S +412,0,3,"Hart, Mr. Henry",male,,0,0,394140,6.8583,,Q +413,1,1,"Minahan, Miss. Daisy E",female,33,1,0,19928,90,C78,Q +414,0,2,"Cunningham, Mr. Alfred Fleming",male,,0,0,239853,0,,S +415,1,3,"Sundman, Mr. Johan Julian",male,44,0,0,STON/O 2. 3101269,7.925,,S +416,0,3,"Meek, Mrs. Thomas (Annie Louise Rowley)",female,,0,0,343095,8.05,,S +417,1,2,"Drew, Mrs. James Vivian (Lulu Thorne Christian)",female,34,1,1,28220,32.5,,S +418,1,2,"Silven, Miss. Lyyli Karoliina",female,18,0,2,250652,13,,S +419,0,2,"Matthews, Mr. William John",male,30,0,0,28228,13,,S +420,0,3,"Van Impe, Miss. Catharina",female,10,0,2,345773,24.15,,S +421,0,3,"Gheorgheff, Mr. Stanio",male,,0,0,349254,7.8958,,C +422,0,3,"Charters, Mr. David",male,21,0,0,A/5. 13032,7.7333,,Q +423,0,3,"Zimmerman, Mr. Leo",male,29,0,0,315082,7.875,,S +424,0,3,"Danbom, Mrs. Ernst Gilbert (Anna Sigrid Maria Brogren)",female,28,1,1,347080,14.4,,S +425,0,3,"Rosblom, Mr. Viktor Richard",male,18,1,1,370129,20.2125,,S +426,0,3,"Wiseman, Mr. Phillippe",male,,0,0,A/4. 34244,7.25,,S +427,1,2,"Clarke, Mrs. Charles V (Ada Maria Winfield)",female,28,1,0,2003,26,,S +428,1,2,"Phillips, Miss. Kate Florence (""Mrs Kate Louise Phillips Marshall"")",female,19,0,0,250655,26,,S +429,0,3,"Flynn, Mr. James",male,,0,0,364851,7.75,,Q +430,1,3,"Pickard, Mr. Berk (Berk Trembisky)",male,32,0,0,SOTON/O.Q. 392078,8.05,E10,S +431,1,1,"Bjornstrom-Steffansson, Mr. Mauritz Hakan",male,28,0,0,110564,26.55,C52,S +432,1,3,"Thorneycroft, Mrs. Percival (Florence Kate White)",female,,1,0,376564,16.1,,S +433,1,2,"Louch, Mrs. Charles Alexander (Alice Adelaide Slow)",female,42,1,0,SC/AH 3085,26,,S +434,0,3,"Kallio, Mr. Nikolai Erland",male,17,0,0,STON/O 2. 3101274,7.125,,S +435,0,1,"Silvey, Mr. William Baird",male,50,1,0,13507,55.9,E44,S +436,1,1,"Carter, Miss. Lucile Polk",female,14,1,2,113760,120,B96 B98,S +437,0,3,"Ford, Miss. Doolina Margaret ""Daisy""",female,21,2,2,W./C. 6608,34.375,,S +438,1,2,"Richards, Mrs. Sidney (Emily Hocking)",female,24,2,3,29106,18.75,,S +439,0,1,"Fortune, Mr. Mark",male,64,1,4,19950,263,C23 C25 C27,S +440,0,2,"Kvillner, Mr. Johan Henrik Johannesson",male,31,0,0,C.A. 18723,10.5,,S +441,1,2,"Hart, Mrs. Benjamin (Esther Ada Bloomfield)",female,45,1,1,F.C.C. 13529,26.25,,S +442,0,3,"Hampe, Mr. Leon",male,20,0,0,345769,9.5,,S +443,0,3,"Petterson, Mr. Johan Emil",male,25,1,0,347076,7.775,,S +444,1,2,"Reynaldo, Ms. Encarnacion",female,28,0,0,230434,13,,S +445,1,3,"Johannesen-Bratthammer, Mr. Bernt",male,,0,0,65306,8.1125,,S +446,1,1,"Dodge, Master. Washington",male,4,0,2,33638,81.8583,A34,S +447,1,2,"Mellinger, Miss. Madeleine Violet",female,13,0,1,250644,19.5,,S +448,1,1,"Seward, Mr. Frederic Kimber",male,34,0,0,113794,26.55,,S +449,1,3,"Baclini, Miss. Marie Catherine",female,5,2,1,2666,19.2583,,C +450,1,1,"Peuchen, Major. Arthur Godfrey",male,52,0,0,113786,30.5,C104,S +451,0,2,"West, Mr. Edwy Arthur",male,36,1,2,C.A. 34651,27.75,,S +452,0,3,"Hagland, Mr. Ingvald Olai Olsen",male,,1,0,65303,19.9667,,S +453,0,1,"Foreman, Mr. Benjamin Laventall",male,30,0,0,113051,27.75,C111,C +454,1,1,"Goldenberg, Mr. Samuel L",male,49,1,0,17453,89.1042,C92,C +455,0,3,"Peduzzi, Mr. Joseph",male,,0,0,A/5 2817,8.05,,S +456,1,3,"Jalsevac, Mr. Ivan",male,29,0,0,349240,7.8958,,C +457,0,1,"Millet, Mr. Francis Davis",male,65,0,0,13509,26.55,E38,S +458,1,1,"Kenyon, Mrs. Frederick R (Marion)",female,,1,0,17464,51.8625,D21,S +459,1,2,"Toomey, Miss. Ellen",female,50,0,0,F.C.C. 13531,10.5,,S +460,0,3,"O'Connor, Mr. Maurice",male,,0,0,371060,7.75,,Q +461,1,1,"Anderson, Mr. Harry",male,48,0,0,19952,26.55,E12,S +462,0,3,"Morley, Mr. William",male,34,0,0,364506,8.05,,S +463,0,1,"Gee, Mr. Arthur H",male,47,0,0,111320,38.5,E63,S +464,0,2,"Milling, Mr. Jacob Christian",male,48,0,0,234360,13,,S +465,0,3,"Maisner, Mr. Simon",male,,0,0,A/S 2816,8.05,,S +466,0,3,"Goncalves, Mr. Manuel Estanslas",male,38,0,0,SOTON/O.Q. 3101306,7.05,,S +467,0,2,"Campbell, Mr. William",male,,0,0,239853,0,,S +468,0,1,"Smart, Mr. John Montgomery",male,56,0,0,113792,26.55,,S +469,0,3,"Scanlan, Mr. James",male,,0,0,36209,7.725,,Q +470,1,3,"Baclini, Miss. Helene Barbara",female,0.75,2,1,2666,19.2583,,C +471,0,3,"Keefe, Mr. Arthur",male,,0,0,323592,7.25,,S +472,0,3,"Cacic, Mr. Luka",male,38,0,0,315089,8.6625,,S +473,1,2,"West, Mrs. Edwy Arthur (Ada Mary Worth)",female,33,1,2,C.A. 34651,27.75,,S +474,1,2,"Jerwan, Mrs. Amin S (Marie Marthe Thuillard)",female,23,0,0,SC/AH Basle 541,13.7917,D,C +475,0,3,"Strandberg, Miss. Ida Sofia",female,22,0,0,7553,9.8375,,S +476,0,1,"Clifford, Mr. George Quincy",male,,0,0,110465,52,A14,S +477,0,2,"Renouf, Mr. Peter Henry",male,34,1,0,31027,21,,S +478,0,3,"Braund, Mr. Lewis Richard",male,29,1,0,3460,7.0458,,S +479,0,3,"Karlsson, Mr. Nils August",male,22,0,0,350060,7.5208,,S +480,1,3,"Hirvonen, Miss. Hildur E",female,2,0,1,3101298,12.2875,,S +481,0,3,"Goodwin, Master. Harold Victor",male,9,5,2,CA 2144,46.9,,S +482,0,2,"Frost, Mr. Anthony Wood ""Archie""",male,,0,0,239854,0,,S +483,0,3,"Rouse, Mr. Richard Henry",male,50,0,0,A/5 3594,8.05,,S +484,1,3,"Turkula, Mrs. (Hedwig)",female,63,0,0,4134,9.5875,,S +485,1,1,"Bishop, Mr. Dickinson H",male,25,1,0,11967,91.0792,B49,C +486,0,3,"Lefebre, Miss. Jeannie",female,,3,1,4133,25.4667,,S +487,1,1,"Hoyt, Mrs. Frederick Maxfield (Jane Anne Forby)",female,35,1,0,19943,90,C93,S +488,0,1,"Kent, Mr. Edward Austin",male,58,0,0,11771,29.7,B37,C +489,0,3,"Somerton, Mr. Francis William",male,30,0,0,A.5. 18509,8.05,,S +490,1,3,"Coutts, Master. Eden Leslie ""Neville""",male,9,1,1,C.A. 37671,15.9,,S +491,0,3,"Hagland, Mr. Konrad Mathias Reiersen",male,,1,0,65304,19.9667,,S +492,0,3,"Windelov, Mr. Einar",male,21,0,0,SOTON/OQ 3101317,7.25,,S +493,0,1,"Molson, Mr. Harry Markland",male,55,0,0,113787,30.5,C30,S +494,0,1,"Artagaveytia, Mr. Ramon",male,71,0,0,PC 17609,49.5042,,C +495,0,3,"Stanley, Mr. Edward Roland",male,21,0,0,A/4 45380,8.05,,S +496,0,3,"Yousseff, Mr. Gerious",male,,0,0,2627,14.4583,,C +497,1,1,"Eustis, Miss. Elizabeth Mussey",female,54,1,0,36947,78.2667,D20,C +498,0,3,"Shellard, Mr. Frederick William",male,,0,0,C.A. 6212,15.1,,S +499,0,1,"Allison, Mrs. Hudson J C (Bessie Waldo Daniels)",female,25,1,2,113781,151.55,C22 C26,S +500,0,3,"Svensson, Mr. Olof",male,24,0,0,350035,7.7958,,S +501,0,3,"Calic, Mr. Petar",male,17,0,0,315086,8.6625,,S +502,0,3,"Canavan, Miss. Mary",female,21,0,0,364846,7.75,,Q +503,0,3,"O'Sullivan, Miss. Bridget Mary",female,,0,0,330909,7.6292,,Q +504,0,3,"Laitinen, Miss. Kristina Sofia",female,37,0,0,4135,9.5875,,S +505,1,1,"Maioni, Miss. Roberta",female,16,0,0,110152,86.5,B79,S +506,0,1,"Penasco y Castellana, Mr. Victor de Satode",male,18,1,0,PC 17758,108.9,C65,C +507,1,2,"Quick, Mrs. Frederick Charles (Jane Richards)",female,33,0,2,26360,26,,S +508,1,1,"Bradley, Mr. George (""George Arthur Brayton"")",male,,0,0,111427,26.55,,S +509,0,3,"Olsen, Mr. Henry Margido",male,28,0,0,C 4001,22.525,,S +510,1,3,"Lang, Mr. Fang",male,26,0,0,1601,56.4958,,S +511,1,3,"Daly, Mr. Eugene Patrick",male,29,0,0,382651,7.75,,Q +512,0,3,"Webber, Mr. James",male,,0,0,SOTON/OQ 3101316,8.05,,S +513,1,1,"McGough, Mr. James Robert",male,36,0,0,PC 17473,26.2875,E25,S +514,1,1,"Rothschild, Mrs. Martin (Elizabeth L. Barrett)",female,54,1,0,PC 17603,59.4,,C +515,0,3,"Coleff, Mr. Satio",male,24,0,0,349209,7.4958,,S +516,0,1,"Walker, Mr. William Anderson",male,47,0,0,36967,34.0208,D46,S +517,1,2,"Lemore, Mrs. (Amelia Milley)",female,34,0,0,C.A. 34260,10.5,F33,S +518,0,3,"Ryan, Mr. Patrick",male,,0,0,371110,24.15,,Q +519,1,2,"Angle, Mrs. William A (Florence ""Mary"" Agnes Hughes)",female,36,1,0,226875,26,,S +520,0,3,"Pavlovic, Mr. Stefo",male,32,0,0,349242,7.8958,,S +521,1,1,"Perreault, Miss. Anne",female,30,0,0,12749,93.5,B73,S +522,0,3,"Vovk, Mr. Janko",male,22,0,0,349252,7.8958,,S +523,0,3,"Lahoud, Mr. Sarkis",male,,0,0,2624,7.225,,C +524,1,1,"Hippach, Mrs. Louis Albert (Ida Sophia Fischer)",female,44,0,1,111361,57.9792,B18,C +525,0,3,"Kassem, Mr. Fared",male,,0,0,2700,7.2292,,C +526,0,3,"Farrell, Mr. James",male,40.5,0,0,367232,7.75,,Q +527,1,2,"Ridsdale, Miss. Lucy",female,50,0,0,W./C. 14258,10.5,,S +528,0,1,"Farthing, Mr. John",male,,0,0,PC 17483,221.7792,C95,S +529,0,3,"Salonen, Mr. Johan Werner",male,39,0,0,3101296,7.925,,S +530,0,2,"Hocking, Mr. Richard George",male,23,2,1,29104,11.5,,S +531,1,2,"Quick, Miss. Phyllis May",female,2,1,1,26360,26,,S +532,0,3,"Toufik, Mr. Nakli",male,,0,0,2641,7.2292,,C +533,0,3,"Elias, Mr. Joseph Jr",male,17,1,1,2690,7.2292,,C +534,1,3,"Peter, Mrs. Catherine (Catherine Rizk)",female,,0,2,2668,22.3583,,C +535,0,3,"Cacic, Miss. Marija",female,30,0,0,315084,8.6625,,S +536,1,2,"Hart, Miss. Eva Miriam",female,7,0,2,F.C.C. 13529,26.25,,S +537,0,1,"Butt, Major. Archibald Willingham",male,45,0,0,113050,26.55,B38,S +538,1,1,"LeRoy, Miss. Bertha",female,30,0,0,PC 17761,106.425,,C +539,0,3,"Risien, Mr. Samuel Beard",male,,0,0,364498,14.5,,S +540,1,1,"Frolicher, Miss. Hedwig Margaritha",female,22,0,2,13568,49.5,B39,C +541,1,1,"Crosby, Miss. Harriet R",female,36,0,2,WE/P 5735,71,B22,S +542,0,3,"Andersson, Miss. Ingeborg Constanzia",female,9,4,2,347082,31.275,,S +543,0,3,"Andersson, Miss. Sigrid Elisabeth",female,11,4,2,347082,31.275,,S +544,1,2,"Beane, Mr. Edward",male,32,1,0,2908,26,,S +545,0,1,"Douglas, Mr. Walter Donald",male,50,1,0,PC 17761,106.425,C86,C +546,0,1,"Nicholson, Mr. Arthur Ernest",male,64,0,0,693,26,,S +547,1,2,"Beane, Mrs. Edward (Ethel Clarke)",female,19,1,0,2908,26,,S +548,1,2,"Padro y Manent, Mr. Julian",male,,0,0,SC/PARIS 2146,13.8625,,C +549,0,3,"Goldsmith, Mr. Frank John",male,33,1,1,363291,20.525,,S +550,1,2,"Davies, Master. John Morgan Jr",male,8,1,1,C.A. 33112,36.75,,S +551,1,1,"Thayer, Mr. John Borland Jr",male,17,0,2,17421,110.8833,C70,C +552,0,2,"Sharp, Mr. Percival James R",male,27,0,0,244358,26,,S +553,0,3,"O'Brien, Mr. Timothy",male,,0,0,330979,7.8292,,Q +554,1,3,"Leeni, Mr. Fahim (""Philip Zenni"")",male,22,0,0,2620,7.225,,C +555,1,3,"Ohman, Miss. Velin",female,22,0,0,347085,7.775,,S +556,0,1,"Wright, Mr. George",male,62,0,0,113807,26.55,,S +557,1,1,"Duff Gordon, Lady. (Lucille Christiana Sutherland) (""Mrs Morgan"")",female,48,1,0,11755,39.6,A16,C +558,0,1,"Robbins, Mr. Victor",male,,0,0,PC 17757,227.525,,C +559,1,1,"Taussig, Mrs. Emil (Tillie Mandelbaum)",female,39,1,1,110413,79.65,E67,S +560,1,3,"de Messemaeker, Mrs. Guillaume Joseph (Emma)",female,36,1,0,345572,17.4,,S +561,0,3,"Morrow, Mr. Thomas Rowan",male,,0,0,372622,7.75,,Q +562,0,3,"Sivic, Mr. Husein",male,40,0,0,349251,7.8958,,S +563,0,2,"Norman, Mr. Robert Douglas",male,28,0,0,218629,13.5,,S +564,0,3,"Simmons, Mr. John",male,,0,0,SOTON/OQ 392082,8.05,,S +565,0,3,"Meanwell, Miss. (Marion Ogden)",female,,0,0,SOTON/O.Q. 392087,8.05,,S +566,0,3,"Davies, Mr. Alfred J",male,24,2,0,A/4 48871,24.15,,S +567,0,3,"Stoytcheff, Mr. Ilia",male,19,0,0,349205,7.8958,,S +568,0,3,"Palsson, Mrs. Nils (Alma Cornelia Berglund)",female,29,0,4,349909,21.075,,S +569,0,3,"Doharr, Mr. Tannous",male,,0,0,2686,7.2292,,C +570,1,3,"Jonsson, Mr. Carl",male,32,0,0,350417,7.8542,,S +571,1,2,"Harris, Mr. George",male,62,0,0,S.W./PP 752,10.5,,S +572,1,1,"Appleton, Mrs. Edward Dale (Charlotte Lamson)",female,53,2,0,11769,51.4792,C101,S +573,1,1,"Flynn, Mr. John Irwin (""Irving"")",male,36,0,0,PC 17474,26.3875,E25,S +574,1,3,"Kelly, Miss. Mary",female,,0,0,14312,7.75,,Q +575,0,3,"Rush, Mr. Alfred George John",male,16,0,0,A/4. 20589,8.05,,S +576,0,3,"Patchett, Mr. George",male,19,0,0,358585,14.5,,S +577,1,2,"Garside, Miss. Ethel",female,34,0,0,243880,13,,S +578,1,1,"Silvey, Mrs. William Baird (Alice Munger)",female,39,1,0,13507,55.9,E44,S +579,0,3,"Caram, Mrs. Joseph (Maria Elias)",female,,1,0,2689,14.4583,,C +580,1,3,"Jussila, Mr. Eiriik",male,32,0,0,STON/O 2. 3101286,7.925,,S +581,1,2,"Christy, Miss. Julie Rachel",female,25,1,1,237789,30,,S +582,1,1,"Thayer, Mrs. John Borland (Marian Longstreth Morris)",female,39,1,1,17421,110.8833,C68,C +583,0,2,"Downton, Mr. William James",male,54,0,0,28403,26,,S +584,0,1,"Ross, Mr. John Hugo",male,36,0,0,13049,40.125,A10,C +585,0,3,"Paulner, Mr. Uscher",male,,0,0,3411,8.7125,,C +586,1,1,"Taussig, Miss. Ruth",female,18,0,2,110413,79.65,E68,S +587,0,2,"Jarvis, Mr. John Denzil",male,47,0,0,237565,15,,S +588,1,1,"Frolicher-Stehli, Mr. Maxmillian",male,60,1,1,13567,79.2,B41,C +589,0,3,"Gilinski, Mr. Eliezer",male,22,0,0,14973,8.05,,S +590,0,3,"Murdlin, Mr. Joseph",male,,0,0,A./5. 3235,8.05,,S +591,0,3,"Rintamaki, Mr. Matti",male,35,0,0,STON/O 2. 3101273,7.125,,S +592,1,1,"Stephenson, Mrs. Walter Bertram (Martha Eustis)",female,52,1,0,36947,78.2667,D20,C +593,0,3,"Elsbury, Mr. William James",male,47,0,0,A/5 3902,7.25,,S +594,0,3,"Bourke, Miss. Mary",female,,0,2,364848,7.75,,Q +595,0,2,"Chapman, Mr. John Henry",male,37,1,0,SC/AH 29037,26,,S +596,0,3,"Van Impe, Mr. Jean Baptiste",male,36,1,1,345773,24.15,,S +597,1,2,"Leitch, Miss. Jessie Wills",female,,0,0,248727,33,,S +598,0,3,"Johnson, Mr. Alfred",male,49,0,0,LINE,0,,S +599,0,3,"Boulos, Mr. Hanna",male,,0,0,2664,7.225,,C +600,1,1,"Duff Gordon, Sir. Cosmo Edmund (""Mr Morgan"")",male,49,1,0,PC 17485,56.9292,A20,C +601,1,2,"Jacobsohn, Mrs. Sidney Samuel (Amy Frances Christy)",female,24,2,1,243847,27,,S +602,0,3,"Slabenoff, Mr. Petco",male,,0,0,349214,7.8958,,S +603,0,1,"Harrington, Mr. Charles H",male,,0,0,113796,42.4,,S +604,0,3,"Torber, Mr. Ernst William",male,44,0,0,364511,8.05,,S +605,1,1,"Homer, Mr. Harry (""Mr E Haven"")",male,35,0,0,111426,26.55,,C +606,0,3,"Lindell, Mr. Edvard Bengtsson",male,36,1,0,349910,15.55,,S +607,0,3,"Karaic, Mr. Milan",male,30,0,0,349246,7.8958,,S +608,1,1,"Daniel, Mr. Robert Williams",male,27,0,0,113804,30.5,,S +609,1,2,"Laroche, Mrs. Joseph (Juliette Marie Louise Lafargue)",female,22,1,2,SC/Paris 2123,41.5792,,C +610,1,1,"Shutes, Miss. Elizabeth W",female,40,0,0,PC 17582,153.4625,C125,S +611,0,3,"Andersson, Mrs. Anders Johan (Alfrida Konstantia Brogren)",female,39,1,5,347082,31.275,,S +612,0,3,"Jardin, Mr. Jose Neto",male,,0,0,SOTON/O.Q. 3101305,7.05,,S +613,1,3,"Murphy, Miss. Margaret Jane",female,,1,0,367230,15.5,,Q +614,0,3,"Horgan, Mr. John",male,,0,0,370377,7.75,,Q +615,0,3,"Brocklebank, Mr. William Alfred",male,35,0,0,364512,8.05,,S +616,1,2,"Herman, Miss. Alice",female,24,1,2,220845,65,,S +617,0,3,"Danbom, Mr. Ernst Gilbert",male,34,1,1,347080,14.4,,S +618,0,3,"Lobb, Mrs. William Arthur (Cordelia K Stanlick)",female,26,1,0,A/5. 3336,16.1,,S +619,1,2,"Becker, Miss. Marion Louise",female,4,2,1,230136,39,F4,S +620,0,2,"Gavey, Mr. Lawrence",male,26,0,0,31028,10.5,,S +621,0,3,"Yasbeck, Mr. Antoni",male,27,1,0,2659,14.4542,,C +622,1,1,"Kimball, Mr. Edwin Nelson Jr",male,42,1,0,11753,52.5542,D19,S +623,1,3,"Nakid, Mr. Sahid",male,20,1,1,2653,15.7417,,C +624,0,3,"Hansen, Mr. Henry Damsgaard",male,21,0,0,350029,7.8542,,S +625,0,3,"Bowen, Mr. David John ""Dai""",male,21,0,0,54636,16.1,,S +626,0,1,"Sutton, Mr. Frederick",male,61,0,0,36963,32.3208,D50,S +627,0,2,"Kirkland, Rev. Charles Leonard",male,57,0,0,219533,12.35,,Q +628,1,1,"Longley, Miss. Gretchen Fiske",female,21,0,0,13502,77.9583,D9,S +629,0,3,"Bostandyeff, Mr. Guentcho",male,26,0,0,349224,7.8958,,S +630,0,3,"O'Connell, Mr. Patrick D",male,,0,0,334912,7.7333,,Q +631,1,1,"Barkworth, Mr. Algernon Henry Wilson",male,80,0,0,27042,30,A23,S +632,0,3,"Lundahl, Mr. Johan Svensson",male,51,0,0,347743,7.0542,,S +633,1,1,"Stahelin-Maeglin, Dr. Max",male,32,0,0,13214,30.5,B50,C +634,0,1,"Parr, Mr. William Henry Marsh",male,,0,0,112052,0,,S +635,0,3,"Skoog, Miss. Mabel",female,9,3,2,347088,27.9,,S +636,1,2,"Davis, Miss. Mary",female,28,0,0,237668,13,,S +637,0,3,"Leinonen, Mr. Antti Gustaf",male,32,0,0,STON/O 2. 3101292,7.925,,S +638,0,2,"Collyer, Mr. Harvey",male,31,1,1,C.A. 31921,26.25,,S +639,0,3,"Panula, Mrs. Juha (Maria Emilia Ojala)",female,41,0,5,3101295,39.6875,,S +640,0,3,"Thorneycroft, Mr. Percival",male,,1,0,376564,16.1,,S +641,0,3,"Jensen, Mr. Hans Peder",male,20,0,0,350050,7.8542,,S +642,1,1,"Sagesser, Mlle. Emma",female,24,0,0,PC 17477,69.3,B35,C +643,0,3,"Skoog, Miss. Margit Elizabeth",female,2,3,2,347088,27.9,,S +644,1,3,"Foo, Mr. Choong",male,,0,0,1601,56.4958,,S +645,1,3,"Baclini, Miss. Eugenie",female,0.75,2,1,2666,19.2583,,C +646,1,1,"Harper, Mr. Henry Sleeper",male,48,1,0,PC 17572,76.7292,D33,C +647,0,3,"Cor, Mr. Liudevit",male,19,0,0,349231,7.8958,,S +648,1,1,"Simonius-Blumer, Col. Oberst Alfons",male,56,0,0,13213,35.5,A26,C +649,0,3,"Willey, Mr. Edward",male,,0,0,S.O./P.P. 751,7.55,,S +650,1,3,"Stanley, Miss. Amy Zillah Elsie",female,23,0,0,CA. 2314,7.55,,S +651,0,3,"Mitkoff, Mr. Mito",male,,0,0,349221,7.8958,,S +652,1,2,"Doling, Miss. Elsie",female,18,0,1,231919,23,,S +653,0,3,"Kalvik, Mr. Johannes Halvorsen",male,21,0,0,8475,8.4333,,S +654,1,3,"O'Leary, Miss. Hanora ""Norah""",female,,0,0,330919,7.8292,,Q +655,0,3,"Hegarty, Miss. Hanora ""Nora""",female,18,0,0,365226,6.75,,Q +656,0,2,"Hickman, Mr. Leonard Mark",male,24,2,0,S.O.C. 14879,73.5,,S +657,0,3,"Radeff, Mr. Alexander",male,,0,0,349223,7.8958,,S +658,0,3,"Bourke, Mrs. John (Catherine)",female,32,1,1,364849,15.5,,Q +659,0,2,"Eitemiller, Mr. George Floyd",male,23,0,0,29751,13,,S +660,0,1,"Newell, Mr. Arthur Webster",male,58,0,2,35273,113.275,D48,C +661,1,1,"Frauenthal, Dr. Henry William",male,50,2,0,PC 17611,133.65,,S +662,0,3,"Badt, Mr. Mohamed",male,40,0,0,2623,7.225,,C +663,0,1,"Colley, Mr. Edward Pomeroy",male,47,0,0,5727,25.5875,E58,S +664,0,3,"Coleff, Mr. Peju",male,36,0,0,349210,7.4958,,S +665,1,3,"Lindqvist, Mr. Eino William",male,20,1,0,STON/O 2. 3101285,7.925,,S +666,0,2,"Hickman, Mr. Lewis",male,32,2,0,S.O.C. 14879,73.5,,S +667,0,2,"Butler, Mr. Reginald Fenton",male,25,0,0,234686,13,,S +668,0,3,"Rommetvedt, Mr. Knud Paust",male,,0,0,312993,7.775,,S +669,0,3,"Cook, Mr. Jacob",male,43,0,0,A/5 3536,8.05,,S +670,1,1,"Taylor, Mrs. Elmer Zebley (Juliet Cummins Wright)",female,,1,0,19996,52,C126,S +671,1,2,"Brown, Mrs. Thomas William Solomon (Elizabeth Catherine Ford)",female,40,1,1,29750,39,,S +672,0,1,"Davidson, Mr. Thornton",male,31,1,0,F.C. 12750,52,B71,S +673,0,2,"Mitchell, Mr. Henry Michael",male,70,0,0,C.A. 24580,10.5,,S +674,1,2,"Wilhelms, Mr. Charles",male,31,0,0,244270,13,,S +675,0,2,"Watson, Mr. Ennis Hastings",male,,0,0,239856,0,,S +676,0,3,"Edvardsson, Mr. Gustaf Hjalmar",male,18,0,0,349912,7.775,,S +677,0,3,"Sawyer, Mr. Frederick Charles",male,24.5,0,0,342826,8.05,,S +678,1,3,"Turja, Miss. Anna Sofia",female,18,0,0,4138,9.8417,,S +679,0,3,"Goodwin, Mrs. Frederick (Augusta Tyler)",female,43,1,6,CA 2144,46.9,,S +680,1,1,"Cardeza, Mr. Thomas Drake Martinez",male,36,0,1,PC 17755,512.3292,B51 B53 B55,C +681,0,3,"Peters, Miss. Katie",female,,0,0,330935,8.1375,,Q +682,1,1,"Hassab, Mr. Hammad",male,27,0,0,PC 17572,76.7292,D49,C +683,0,3,"Olsvigen, Mr. Thor Anderson",male,20,0,0,6563,9.225,,S +684,0,3,"Goodwin, Mr. Charles Edward",male,14,5,2,CA 2144,46.9,,S +685,0,2,"Brown, Mr. Thomas William Solomon",male,60,1,1,29750,39,,S +686,0,2,"Laroche, Mr. Joseph Philippe Lemercier",male,25,1,2,SC/Paris 2123,41.5792,,C +687,0,3,"Panula, Mr. Jaako Arnold",male,14,4,1,3101295,39.6875,,S +688,0,3,"Dakic, Mr. Branko",male,19,0,0,349228,10.1708,,S +689,0,3,"Fischer, Mr. Eberhard Thelander",male,18,0,0,350036,7.7958,,S +690,1,1,"Madill, Miss. Georgette Alexandra",female,15,0,1,24160,211.3375,B5,S +691,1,1,"Dick, Mr. Albert Adrian",male,31,1,0,17474,57,B20,S +692,1,3,"Karun, Miss. Manca",female,4,0,1,349256,13.4167,,C +693,1,3,"Lam, Mr. Ali",male,,0,0,1601,56.4958,,S +694,0,3,"Saad, Mr. Khalil",male,25,0,0,2672,7.225,,C +695,0,1,"Weir, Col. John",male,60,0,0,113800,26.55,,S +696,0,2,"Chapman, Mr. Charles Henry",male,52,0,0,248731,13.5,,S +697,0,3,"Kelly, Mr. James",male,44,0,0,363592,8.05,,S +698,1,3,"Mullens, Miss. Katherine ""Katie""",female,,0,0,35852,7.7333,,Q +699,0,1,"Thayer, Mr. John Borland",male,49,1,1,17421,110.8833,C68,C +700,0,3,"Humblen, Mr. Adolf Mathias Nicolai Olsen",male,42,0,0,348121,7.65,F G63,S +701,1,1,"Astor, Mrs. John Jacob (Madeleine Talmadge Force)",female,18,1,0,PC 17757,227.525,C62 C64,C +702,1,1,"Silverthorne, Mr. Spencer Victor",male,35,0,0,PC 17475,26.2875,E24,S +703,0,3,"Barbara, Miss. Saiide",female,18,0,1,2691,14.4542,,C +704,0,3,"Gallagher, Mr. Martin",male,25,0,0,36864,7.7417,,Q +705,0,3,"Hansen, Mr. Henrik Juul",male,26,1,0,350025,7.8542,,S +706,0,2,"Morley, Mr. Henry Samuel (""Mr Henry Marshall"")",male,39,0,0,250655,26,,S +707,1,2,"Kelly, Mrs. Florence ""Fannie""",female,45,0,0,223596,13.5,,S +708,1,1,"Calderhead, Mr. Edward Pennington",male,42,0,0,PC 17476,26.2875,E24,S +709,1,1,"Cleaver, Miss. Alice",female,22,0,0,113781,151.55,,S +710,1,3,"Moubarek, Master. Halim Gonios (""William George"")",male,,1,1,2661,15.2458,,C +711,1,1,"Mayne, Mlle. Berthe Antonine (""Mrs de Villiers"")",female,24,0,0,PC 17482,49.5042,C90,C +712,0,1,"Klaber, Mr. Herman",male,,0,0,113028,26.55,C124,S +713,1,1,"Taylor, Mr. Elmer Zebley",male,48,1,0,19996,52,C126,S +714,0,3,"Larsson, Mr. August Viktor",male,29,0,0,7545,9.4833,,S +715,0,2,"Greenberg, Mr. Samuel",male,52,0,0,250647,13,,S +716,0,3,"Soholt, Mr. Peter Andreas Lauritz Andersen",male,19,0,0,348124,7.65,F G73,S +717,1,1,"Endres, Miss. Caroline Louise",female,38,0,0,PC 17757,227.525,C45,C +718,1,2,"Troutt, Miss. Edwina Celia ""Winnie""",female,27,0,0,34218,10.5,E101,S +719,0,3,"McEvoy, Mr. Michael",male,,0,0,36568,15.5,,Q +720,0,3,"Johnson, Mr. Malkolm Joackim",male,33,0,0,347062,7.775,,S +721,1,2,"Harper, Miss. Annie Jessie ""Nina""",female,6,0,1,248727,33,,S +722,0,3,"Jensen, Mr. Svend Lauritz",male,17,1,0,350048,7.0542,,S +723,0,2,"Gillespie, Mr. William Henry",male,34,0,0,12233,13,,S +724,0,2,"Hodges, Mr. Henry Price",male,50,0,0,250643,13,,S +725,1,1,"Chambers, Mr. Norman Campbell",male,27,1,0,113806,53.1,E8,S +726,0,3,"Oreskovic, Mr. Luka",male,20,0,0,315094,8.6625,,S +727,1,2,"Renouf, Mrs. Peter Henry (Lillian Jefferys)",female,30,3,0,31027,21,,S +728,1,3,"Mannion, Miss. Margareth",female,,0,0,36866,7.7375,,Q +729,0,2,"Bryhl, Mr. Kurt Arnold Gottfrid",male,25,1,0,236853,26,,S +730,0,3,"Ilmakangas, Miss. Pieta Sofia",female,25,1,0,STON/O2. 3101271,7.925,,S +731,1,1,"Allen, Miss. Elisabeth Walton",female,29,0,0,24160,211.3375,B5,S +732,0,3,"Hassan, Mr. Houssein G N",male,11,0,0,2699,18.7875,,C +733,0,2,"Knight, Mr. Robert J",male,,0,0,239855,0,,S +734,0,2,"Berriman, Mr. William John",male,23,0,0,28425,13,,S +735,0,2,"Troupiansky, Mr. Moses Aaron",male,23,0,0,233639,13,,S +736,0,3,"Williams, Mr. Leslie",male,28.5,0,0,54636,16.1,,S +737,0,3,"Ford, Mrs. Edward (Margaret Ann Watson)",female,48,1,3,W./C. 6608,34.375,,S +738,1,1,"Lesurer, Mr. Gustave J",male,35,0,0,PC 17755,512.3292,B101,C +739,0,3,"Ivanoff, Mr. Kanio",male,,0,0,349201,7.8958,,S +740,0,3,"Nankoff, Mr. Minko",male,,0,0,349218,7.8958,,S +741,1,1,"Hawksford, Mr. Walter James",male,,0,0,16988,30,D45,S +742,0,1,"Cavendish, Mr. Tyrell William",male,36,1,0,19877,78.85,C46,S +743,1,1,"Ryerson, Miss. Susan Parker ""Suzette""",female,21,2,2,PC 17608,262.375,B57 B59 B63 B66,C +744,0,3,"McNamee, Mr. Neal",male,24,1,0,376566,16.1,,S +745,1,3,"Stranden, Mr. Juho",male,31,0,0,STON/O 2. 3101288,7.925,,S +746,0,1,"Crosby, Capt. Edward Gifford",male,70,1,1,WE/P 5735,71,B22,S +747,0,3,"Abbott, Mr. Rossmore Edward",male,16,1,1,C.A. 2673,20.25,,S +748,1,2,"Sinkkonen, Miss. Anna",female,30,0,0,250648,13,,S +749,0,1,"Marvin, Mr. Daniel Warner",male,19,1,0,113773,53.1,D30,S +750,0,3,"Connaghton, Mr. Michael",male,31,0,0,335097,7.75,,Q +751,1,2,"Wells, Miss. Joan",female,4,1,1,29103,23,,S +752,1,3,"Moor, Master. Meier",male,6,0,1,392096,12.475,E121,S +753,0,3,"Vande Velde, Mr. Johannes Joseph",male,33,0,0,345780,9.5,,S +754,0,3,"Jonkoff, Mr. Lalio",male,23,0,0,349204,7.8958,,S +755,1,2,"Herman, Mrs. Samuel (Jane Laver)",female,48,1,2,220845,65,,S +756,1,2,"Hamalainen, Master. Viljo",male,0.67,1,1,250649,14.5,,S +757,0,3,"Carlsson, Mr. August Sigfrid",male,28,0,0,350042,7.7958,,S +758,0,2,"Bailey, Mr. Percy Andrew",male,18,0,0,29108,11.5,,S +759,0,3,"Theobald, Mr. Thomas Leonard",male,34,0,0,363294,8.05,,S +760,1,1,"Rothes, the Countess. of (Lucy Noel Martha Dyer-Edwards)",female,33,0,0,110152,86.5,B77,S +761,0,3,"Garfirth, Mr. John",male,,0,0,358585,14.5,,S +762,0,3,"Nirva, Mr. Iisakki Antino Aijo",male,41,0,0,SOTON/O2 3101272,7.125,,S +763,1,3,"Barah, Mr. Hanna Assi",male,20,0,0,2663,7.2292,,C +764,1,1,"Carter, Mrs. William Ernest (Lucile Polk)",female,36,1,2,113760,120,B96 B98,S +765,0,3,"Eklund, Mr. Hans Linus",male,16,0,0,347074,7.775,,S +766,1,1,"Hogeboom, Mrs. John C (Anna Andrews)",female,51,1,0,13502,77.9583,D11,S +767,0,1,"Brewe, Dr. Arthur Jackson",male,,0,0,112379,39.6,,C +768,0,3,"Mangan, Miss. Mary",female,30.5,0,0,364850,7.75,,Q +769,0,3,"Moran, Mr. Daniel J",male,,1,0,371110,24.15,,Q +770,0,3,"Gronnestad, Mr. Daniel Danielsen",male,32,0,0,8471,8.3625,,S +771,0,3,"Lievens, Mr. Rene Aime",male,24,0,0,345781,9.5,,S +772,0,3,"Jensen, Mr. Niels Peder",male,48,0,0,350047,7.8542,,S +773,0,2,"Mack, Mrs. (Mary)",female,57,0,0,S.O./P.P. 3,10.5,E77,S +774,0,3,"Elias, Mr. Dibo",male,,0,0,2674,7.225,,C +775,1,2,"Hocking, Mrs. Elizabeth (Eliza Needs)",female,54,1,3,29105,23,,S +776,0,3,"Myhrman, Mr. Pehr Fabian Oliver Malkolm",male,18,0,0,347078,7.75,,S +777,0,3,"Tobin, Mr. Roger",male,,0,0,383121,7.75,F38,Q +778,1,3,"Emanuel, Miss. Virginia Ethel",female,5,0,0,364516,12.475,,S +779,0,3,"Kilgannon, Mr. Thomas J",male,,0,0,36865,7.7375,,Q +780,1,1,"Robert, Mrs. Edward Scott (Elisabeth Walton McMillan)",female,43,0,1,24160,211.3375,B3,S +781,1,3,"Ayoub, Miss. Banoura",female,13,0,0,2687,7.2292,,C +782,1,1,"Dick, Mrs. Albert Adrian (Vera Gillespie)",female,17,1,0,17474,57,B20,S +783,0,1,"Long, Mr. Milton Clyde",male,29,0,0,113501,30,D6,S +784,0,3,"Johnston, Mr. Andrew G",male,,1,2,W./C. 6607,23.45,,S +785,0,3,"Ali, Mr. William",male,25,0,0,SOTON/O.Q. 3101312,7.05,,S +786,0,3,"Harmer, Mr. Abraham (David Lishin)",male,25,0,0,374887,7.25,,S +787,1,3,"Sjoblom, Miss. Anna Sofia",female,18,0,0,3101265,7.4958,,S +788,0,3,"Rice, Master. George Hugh",male,8,4,1,382652,29.125,,Q +789,1,3,"Dean, Master. Bertram Vere",male,1,1,2,C.A. 2315,20.575,,S +790,0,1,"Guggenheim, Mr. Benjamin",male,46,0,0,PC 17593,79.2,B82 B84,C +791,0,3,"Keane, Mr. Andrew ""Andy""",male,,0,0,12460,7.75,,Q +792,0,2,"Gaskell, Mr. Alfred",male,16,0,0,239865,26,,S +793,0,3,"Sage, Miss. Stella Anna",female,,8,2,CA. 2343,69.55,,S +794,0,1,"Hoyt, Mr. William Fisher",male,,0,0,PC 17600,30.6958,,C +795,0,3,"Dantcheff, Mr. Ristiu",male,25,0,0,349203,7.8958,,S +796,0,2,"Otter, Mr. Richard",male,39,0,0,28213,13,,S +797,1,1,"Leader, Dr. Alice (Farnham)",female,49,0,0,17465,25.9292,D17,S +798,1,3,"Osman, Mrs. Mara",female,31,0,0,349244,8.6833,,S +799,0,3,"Ibrahim Shawah, Mr. Yousseff",male,30,0,0,2685,7.2292,,C +800,0,3,"Van Impe, Mrs. Jean Baptiste (Rosalie Paula Govaert)",female,30,1,1,345773,24.15,,S +801,0,2,"Ponesell, Mr. Martin",male,34,0,0,250647,13,,S +802,1,2,"Collyer, Mrs. Harvey (Charlotte Annie Tate)",female,31,1,1,C.A. 31921,26.25,,S +803,1,1,"Carter, Master. William Thornton II",male,11,1,2,113760,120,B96 B98,S +804,1,3,"Thomas, Master. Assad Alexander",male,0.42,0,1,2625,8.5167,,C +805,1,3,"Hedman, Mr. Oskar Arvid",male,27,0,0,347089,6.975,,S +806,0,3,"Johansson, Mr. Karl Johan",male,31,0,0,347063,7.775,,S +807,0,1,"Andrews, Mr. Thomas Jr",male,39,0,0,112050,0,A36,S +808,0,3,"Pettersson, Miss. Ellen Natalia",female,18,0,0,347087,7.775,,S +809,0,2,"Meyer, Mr. August",male,39,0,0,248723,13,,S +810,1,1,"Chambers, Mrs. Norman Campbell (Bertha Griggs)",female,33,1,0,113806,53.1,E8,S +811,0,3,"Alexander, Mr. William",male,26,0,0,3474,7.8875,,S +812,0,3,"Lester, Mr. James",male,39,0,0,A/4 48871,24.15,,S +813,0,2,"Slemen, Mr. Richard James",male,35,0,0,28206,10.5,,S +814,0,3,"Andersson, Miss. Ebba Iris Alfrida",female,6,4,2,347082,31.275,,S +815,0,3,"Tomlin, Mr. Ernest Portage",male,30.5,0,0,364499,8.05,,S +816,0,1,"Fry, Mr. Richard",male,,0,0,112058,0,B102,S +817,0,3,"Heininen, Miss. Wendla Maria",female,23,0,0,STON/O2. 3101290,7.925,,S +818,0,2,"Mallet, Mr. Albert",male,31,1,1,S.C./PARIS 2079,37.0042,,C +819,0,3,"Holm, Mr. John Fredrik Alexander",male,43,0,0,C 7075,6.45,,S +820,0,3,"Skoog, Master. Karl Thorsten",male,10,3,2,347088,27.9,,S +821,1,1,"Hays, Mrs. Charles Melville (Clara Jennings Gregg)",female,52,1,1,12749,93.5,B69,S +822,1,3,"Lulic, Mr. Nikola",male,27,0,0,315098,8.6625,,S +823,0,1,"Reuchlin, Jonkheer. John George",male,38,0,0,19972,0,,S +824,1,3,"Moor, Mrs. (Beila)",female,27,0,1,392096,12.475,E121,S +825,0,3,"Panula, Master. Urho Abraham",male,2,4,1,3101295,39.6875,,S +826,0,3,"Flynn, Mr. John",male,,0,0,368323,6.95,,Q +827,0,3,"Lam, Mr. Len",male,,0,0,1601,56.4958,,S +828,1,2,"Mallet, Master. Andre",male,1,0,2,S.C./PARIS 2079,37.0042,,C +829,1,3,"McCormack, Mr. Thomas Joseph",male,,0,0,367228,7.75,,Q +830,1,1,"Stone, Mrs. George Nelson (Martha Evelyn)",female,62,0,0,113572,80,B28, +831,1,3,"Yasbeck, Mrs. Antoni (Selini Alexander)",female,15,1,0,2659,14.4542,,C +832,1,2,"Richards, Master. George Sibley",male,0.83,1,1,29106,18.75,,S +833,0,3,"Saad, Mr. Amin",male,,0,0,2671,7.2292,,C +834,0,3,"Augustsson, Mr. Albert",male,23,0,0,347468,7.8542,,S +835,0,3,"Allum, Mr. Owen George",male,18,0,0,2223,8.3,,S +836,1,1,"Compton, Miss. Sara Rebecca",female,39,1,1,PC 17756,83.1583,E49,C +837,0,3,"Pasic, Mr. Jakob",male,21,0,0,315097,8.6625,,S +838,0,3,"Sirota, Mr. Maurice",male,,0,0,392092,8.05,,S +839,1,3,"Chip, Mr. Chang",male,32,0,0,1601,56.4958,,S +840,1,1,"Marechal, Mr. Pierre",male,,0,0,11774,29.7,C47,C +841,0,3,"Alhomaki, Mr. Ilmari Rudolf",male,20,0,0,SOTON/O2 3101287,7.925,,S +842,0,2,"Mudd, Mr. Thomas Charles",male,16,0,0,S.O./P.P. 3,10.5,,S +843,1,1,"Serepeca, Miss. Augusta",female,30,0,0,113798,31,,C +844,0,3,"Lemberopolous, Mr. Peter L",male,34.5,0,0,2683,6.4375,,C +845,0,3,"Culumovic, Mr. Jeso",male,17,0,0,315090,8.6625,,S +846,0,3,"Abbing, Mr. Anthony",male,42,0,0,C.A. 5547,7.55,,S +847,0,3,"Sage, Mr. Douglas Bullen",male,,8,2,CA. 2343,69.55,,S +848,0,3,"Markoff, Mr. Marin",male,35,0,0,349213,7.8958,,C +849,0,2,"Harper, Rev. John",male,28,0,1,248727,33,,S +850,1,1,"Goldenberg, Mrs. Samuel L (Edwiga Grabowska)",female,,1,0,17453,89.1042,C92,C +851,0,3,"Andersson, Master. Sigvard Harald Elias",male,4,4,2,347082,31.275,,S +852,0,3,"Svensson, Mr. Johan",male,74,0,0,347060,7.775,,S +853,0,3,"Boulos, Miss. Nourelain",female,9,1,1,2678,15.2458,,C +854,1,1,"Lines, Miss. Mary Conover",female,16,0,1,PC 17592,39.4,D28,S +855,0,2,"Carter, Mrs. Ernest Courtenay (Lilian Hughes)",female,44,1,0,244252,26,,S +856,1,3,"Aks, Mrs. Sam (Leah Rosen)",female,18,0,1,392091,9.35,,S +857,1,1,"Wick, Mrs. George Dennick (Mary Hitchcock)",female,45,1,1,36928,164.8667,,S +858,1,1,"Daly, Mr. Peter Denis ",male,51,0,0,113055,26.55,E17,S +859,1,3,"Baclini, Mrs. Solomon (Latifa Qurban)",female,24,0,3,2666,19.2583,,C +860,0,3,"Razi, Mr. Raihed",male,,0,0,2629,7.2292,,C +861,0,3,"Hansen, Mr. Claus Peter",male,41,2,0,350026,14.1083,,S +862,0,2,"Giles, Mr. Frederick Edward",male,21,1,0,28134,11.5,,S +863,1,1,"Swift, Mrs. Frederick Joel (Margaret Welles Barron)",female,48,0,0,17466,25.9292,D17,S +864,0,3,"Sage, Miss. Dorothy Edith ""Dolly""",female,,8,2,CA. 2343,69.55,,S +865,0,2,"Gill, Mr. John William",male,24,0,0,233866,13,,S +866,1,2,"Bystrom, Mrs. (Karolina)",female,42,0,0,236852,13,,S +867,1,2,"Duran y More, Miss. Asuncion",female,27,1,0,SC/PARIS 2149,13.8583,,C +868,0,1,"Roebling, Mr. Washington Augustus II",male,31,0,0,PC 17590,50.4958,A24,S +869,0,3,"van Melkebeke, Mr. Philemon",male,,0,0,345777,9.5,,S +870,1,3,"Johnson, Master. Harold Theodor",male,4,1,1,347742,11.1333,,S +871,0,3,"Balkic, Mr. Cerin",male,26,0,0,349248,7.8958,,S +872,1,1,"Beckwith, Mrs. Richard Leonard (Sallie Monypeny)",female,47,1,1,11751,52.5542,D35,S +873,0,1,"Carlsson, Mr. Frans Olof",male,33,0,0,695,5,B51 B53 B55,S +874,0,3,"Vander Cruyssen, Mr. Victor",male,47,0,0,345765,9,,S +875,1,2,"Abelson, Mrs. Samuel (Hannah Wizosky)",female,28,1,0,P/PP 3381,24,,C +876,1,3,"Najib, Miss. Adele Kiamie ""Jane""",female,15,0,0,2667,7.225,,C +877,0,3,"Gustafsson, Mr. Alfred Ossian",male,20,0,0,7534,9.8458,,S +878,0,3,"Petroff, Mr. Nedelio",male,19,0,0,349212,7.8958,,S +879,0,3,"Laleff, Mr. Kristo",male,,0,0,349217,7.8958,,S +880,1,1,"Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)",female,56,0,1,11767,83.1583,C50,C +881,1,2,"Shelley, Mrs. William (Imanita Parrish Hall)",female,25,0,1,230433,26,,S +882,0,3,"Markun, Mr. Johann",male,33,0,0,349257,7.8958,,S +883,0,3,"Dahlberg, Miss. Gerda Ulrika",female,22,0,0,7552,10.5167,,S +884,0,2,"Banfield, Mr. Frederick James",male,28,0,0,C.A./SOTON 34068,10.5,,S +885,0,3,"Sutehall, Mr. Henry Jr",male,25,0,0,SOTON/OQ 392076,7.05,,S +886,0,3,"Rice, Mrs. William (Margaret Norton)",female,39,0,5,382652,29.125,,Q +887,0,2,"Montvila, Rev. Juozas",male,27,0,0,211536,13,,S +888,1,1,"Graham, Miss. Margaret Edith",female,19,0,0,112053,30,B42,S +889,0,3,"Johnston, Miss. Catherine Helen ""Carrie""",female,,1,2,W./C. 6607,23.45,,S +890,1,1,"Behr, Mr. Karl Howell",male,26,0,0,111369,30,C148,C +891,0,3,"Dooley, Mr. Patrick",male,32,0,0,370376,7.75,,Q diff --git a/img/boxplot-660x233.png b/img/boxplot-660x233.png new file mode 100644 index 0000000..11223ae Binary files /dev/null and b/img/boxplot-660x233.png differ diff --git a/img/titanic-figure-one-side-view.png b/img/titanic-figure-one-side-view.png new file mode 100644 index 0000000..a54d44d Binary files /dev/null and b/img/titanic-figure-one-side-view.png differ diff --git a/img/types-of-data-1024x555-1.png b/img/types-of-data-1024x555-1.png new file mode 100644 index 0000000..88b26c3 Binary files /dev/null and b/img/types-of-data-1024x555-1.png differ diff --git a/lab-01.ipynb b/lab-01.ipynb new file mode 100644 index 0000000..f68453c --- /dev/null +++ b/lab-01.ipynb @@ -0,0 +1,4842 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "fd487d21", + "metadata": {}, + "source": [ + "# Lab 01 - Data exploration and preprocessing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ab0a0d4d", + "metadata": {}, + "outputs": [], + "source": [ + "# !pip install pandas --quiet\n", + "# !pip install scipy --quiet\n", + "# !pip install matplotlib --quiet\n", + "# !pip install seaborn --quiet\n", + "# !pip install scikit-learn --quiet" + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "id": "fbc1481d", + "metadata": {}, + "outputs": [], + "source": [ + "# import dependencies\n", + "import os\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "from scipy.stats import gaussian_kde\n", + "from sklearn.base import BaseEstimator, TransformerMixin\n", + "from sklearn.pipeline import Pipeline\n", + "from sklearn.compose import ColumnTransformer\n", + "from sklearn.impute import SimpleImputer\n", + "from sklearn.preprocessing import MinMaxScaler, StandardScaler, OneHotEncoder, OrdinalEncoder\n", + "from sklearn.decomposition import PCA\n", + "from sklearn.manifold import TSNE" + ] + }, + { + "cell_type": "markdown", + "id": "2c858f34", + "metadata": {}, + "source": [ + "## Introduction" + ] + }, + { + "cell_type": "markdown", + "id": "b5866566", + "metadata": {}, + "source": [ + "### Objective of the lab\n", + "\n", + "The quality of the data and the amount of useful information that it contains are key factors that determine how well a machine learning algorithm can learn. Therefore, it is absolutely critical that we make sure to examine and preprocess a dataset before we feed it to a learning algorithm. \n", + "\n", + "In this laboratory we will explore the data exploration and preprocessing pipeline." + ] + }, + { + "cell_type": "markdown", + "id": "2938e958", + "metadata": {}, + "source": [ + "#### What is a Dataset?\n", + "\n", + "A data set (or dataset) is a collection of data. In the case of tabular data, a data set corresponds to one or more database tables, where every **column** of a table represents a particular **variable**, and each **row** corresponds to a given **record of the data** set in question. The data set lists values for each of the variables, such as for example height and weight of an object, for each member of the data set. Data sets can also consist of a collection of documents or files\n", + "\n", + "Several characteristics define a data set's structure and properties. These include the number and types of the attributes or variables, and various statistical measures applicable to them.\n", + "\n", + "The values may be numbers, such as real numbers or integers, for example representing a person's height in centimeters, but may also be nominal data (i.e., not consisting of numerical values), for example representing a person's ethnicity. More generally, values may be of any of the kinds described as a level of measurement.\n", + "\n", + "Missing values may exist, which must be indicated somehow.\n", + "\n", + "[Data set - Wikipedia](https://en.wikipedia.org/wiki/Data_set)" + ] + }, + { + "cell_type": "markdown", + "id": "93e36221", + "metadata": {}, + "source": [ + "### Dataset description\n", + "\n", + "The sinking of the Titanic is one of the most infamous shipwrecks in history.\n", + "\n", + "On April 15, 1912, during her maiden voyage, the widely considered “unsinkable” RMS Titanic sank after colliding with an iceberg. Unfortunately, there weren’t enough lifeboats for everyone onboard, resulting in the death of 1502 out of 2224 passengers and crew.\n", + "\n", + "While there was some element of luck involved in surviving, it seems some groups of people were more likely to survive than others." + ] + }, + { + "cell_type": "markdown", + "id": "7071aecd", + "metadata": {}, + "source": [ + "| Column Name | Data Type | Description | Possible Values |\n", + "|-------------|-----------|-------------|----------------|\n", + "| PassengerId | Integer | Unique identifier for each passenger | 1, 2, 3, etc. |\n", + "| Survived | Integer | Survival indicator | 0 = No (Did not survive), 1 = Yes (Survived) |\n", + "| Pclass | Integer | Passenger ticket class | 1 = 1st/Upper, 2 = 2nd/Middle, 3 = 3rd/Lower |\n", + "| Name | String | Full name of the passenger | \"Braund, Mr. Owen Harris\", etc. |\n", + "| Sex | String | Gender of the passenger | \"male\", \"female\" |\n", + "| Age | Float | Age of the passenger in years | 22.0, 40.0, etc. (may contain missing values) |\n", + "| SibSp | Integer | Number of siblings/spouses aboard the Titanic | 0, 1, 2, etc. |\n", + "| Parch | Integer | Number of parents/children aboard the Titanic | 0, 1, 2, etc. |\n", + "| Ticket | String | Ticket number | \"A/5 21171\", \"PC 17599\", etc. |\n", + "| Fare | Float | Price paid for the ticket | 7.25, 71.2833, etc. |\n", + "| Cabin | String | Cabin number | \"C85\", \"E46\", etc. (many missing values) |\n", + "| Embarked | String | Port of embarkation | \"C\" = Cherbourg, \"Q\" = Queenstown, \"S\" = Southampton |" + ] + }, + { + "cell_type": "markdown", + "id": "bad7a3aa", + "metadata": {}, + "source": [ + "#### What are the different types of data?\n", + "\n", + "The two main types of data are:\n", + "\n", + "- Qualitative Data\n", + "- Quantitative Data\n", + "\n", + "![types-of-data-img](img\\types-of-data-1024x555-1.png)\n", + "\n", + "---\n", + "\n", + "**Qualitative or Categorical Data**\n", + " \n", + "Qualitative or Categorical Data is a type of data that can’t be measured or counted in the form of numbers. These types of data are sorted by category, not by number. That’s why it is also known as Categorical Data. \n", + "\n", + "These data consist of audio, images, symbols, or text. The gender of a person, i.e., male, female, or others, is qualitative data.\n", + "\n", + "Qualitative data tells about the perception of people. This data helps market researchers understand the customers’ tastes and then design their ideas and strategies accordingly. \n", + "\n", + "The Qualitative data are further classified into two parts :\n", + " \n", + "- Nominal Data\n", + " Nominal Data is used to label variables without any order or quantitative value. The color of hair can be considered nominal data, as one color can’t be compared with another color.\n", + "\n", + " With the help of nominal data, we can’t do any numerical tasks or can’t give any order to sort the data. These data don’t have any meaningful order; their values are distributed into distinct categories.\n", + "\n", + "- Ordinal Data\n", + "\n", + " Ordinal data have natural ordering where a number is present in some kind of order by their position on the scale. These data are used for observation like customer satisfaction, happiness, etc., but we can’t do any arithmetical tasks on them. \n", + "\n", + " Ordinal data is qualitative data for which their values have some kind of relative position. These kinds of data can be considered “in-between” qualitative and quantitative data.\n", + "\n", + " The ordinal data only shows the sequences and cannot use for statistical analysis. Compared to nominal data, ordinal data have some kind of order that is not present in nominal data. \n", + "\n", + "--- \n", + "\n", + "**Quantitative Data**\n", + " \n", + "Quantitative data is a type of data that can be expressed in numerical values, making it countable and including statistical data analysis. These kinds of data are also known as Numerical data.\n", + "\n", + "It answers the questions like “how much,” “how many,” and “how often.” For example, the price of a phone, the computer’s ram, the height or weight of a person, etc., falls under quantitative data. \n", + "\n", + "Quantitative data can be used for statistical manipulation. These data can be represented on a wide variety of graphs and charts, such as bar graphs, histograms, scatter plots, boxplots, pie charts, line graphs, etc.\n", + "\n", + "- Discrete Data\n", + "\n", + " The term discrete means distinct or separate. The discrete data contain the values that fall under integers or whole numbers. The total number of students in a class is an example of discrete data. These data can’t be broken into decimal or fraction values.\n", + "\n", + " The discrete data are countable and have finite values; their subdivision is not possible. These data are represented mainly by a bar graph, number line, or frequency table.\n", + "\n", + "- Continuous Data\n", + "\n", + " Continuous data are in the form of fractional numbers. It can be the version of an android phone, the height of a person, the length of an object, etc. Continuous data represents information that can be divided into smaller levels. The continuous variable can take any value within a range. \n", + "\n", + " The key difference between discrete and continuous data is that discrete data contains the integer or whole number. Still, continuous data stores the fractional numbers to record different types of data such as temperature, height, width, time, speed, etc.\n", + "\n", + "[Types Of Data - Great Learning](https://www.mygreatlearning.com/blog/types-of-data/)" + ] + }, + { + "cell_type": "markdown", + "id": "5b35bcc3", + "metadata": {}, + "source": [ + "## Dataset Loading\n", + "\n", + "**What is Pandas?**\n", + "\n", + "Pandas is an open-source software library designed for data manipulation and analysis. It provides data structures like series and DataFrames to easily clean, transform and analyze large datasets and integrates with other Python libraries, such as NumPy and Matplotlib.\n", + "\n", + "It offers functions for data transformation, aggregation and visualization, which are important for analysis.\n", + "\n", + "Pandas revolves around two primary Data structures: Series (1D) for single columns and DataFrame (2D) for tabular data enabling efficient data manipulation.\n", + "\n", + "With pandas, you can perform a wide range of data operations, including\n", + "\n", + "- Reading and writing data from various file formats like CSV, Excel and SQL databases.\n", + "\n", + "- Cleaning and preparing data by handling missing values and filtering entries.\n", + "\n", + "- Merging and joining multiple datasets seamlessly.\n", + "\n", + "- ...\n", + "\n", + "[Pandas Tutorial - geeksforgeeks](https://www.geeksforgeeks.org/pandas-tutorial/)\n", + "\n", + "For this tutorial, the Titanic dataset will be provided in the format of a `.csv` file. We'll load it using [pandas.read_csv()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "id": "54d1bc21", + "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", + "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS
\n", + "
" + ], + "text/plain": [ + " PassengerId Survived Pclass \\\n", + "0 1 0 3 \n", + "1 2 1 1 \n", + "2 3 1 3 \n", + "3 4 1 1 \n", + "4 5 0 3 \n", + "\n", + " Name Sex Age SibSp \\\n", + "0 Braund, Mr. Owen Harris male 22.0 1 \n", + "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", + "2 Heikkinen, Miss. Laina female 26.0 0 \n", + "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", + "4 Allen, Mr. William Henry male 35.0 0 \n", + "\n", + " Parch Ticket Fare Cabin Embarked \n", + "0 0 A/5 21171 7.2500 NaN S \n", + "1 0 PC 17599 71.2833 C85 C \n", + "2 0 STON/O2. 3101282 7.9250 NaN S \n", + "3 0 113803 53.1000 C123 S \n", + "4 0 373450 8.0500 NaN S " + ] + }, + "execution_count": 156, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "DATASET_PATH = os.path.join(\"data\", \"lab-01\", \"Titanic-Dataset.csv\")\n", + "\n", + "# Load the dataset from the subfolder 'data/lab-01'\n", + "df = pd.read_csv(filepath_or_buffer=DATASET_PATH)\n", + "\n", + "# Display the first 5 rows to check it's loaded correctly\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "id": "d4b7cb1f", + "metadata": {}, + "source": [ + "## Dataset Overview\n", + "\n", + "Now that we have successfully loaded our dataset, the next step is to dive into Exploratory Data Analysis (EDA). EDA is an essential early phase in any data science or machine learning project for several reasons:\n", + "\n", + "- **Data Understanding**: EDA helps you learn what each column represents, the types of values present, and how variables might relate to the outcome you're interested in.\n", + "\n", + "- **Anomaly Detection**: It allows you to spot outliers, missing values, and data entry errors that could compromise your analysis or model performance.\n", + "\n", + "- **Data Cleaning Planning**: Insights from EDA guide how to handle missing data, transform variables, or drop irrelevant columns.\n", + "\n", + "- **Feature Selection and Engineering**: By understanding relationships between variables, EDA helps you decide which features are most relevant for modeling.\n", + "\n", + "- **Bias and Data Quality Assessment**: EDA can reveal biases, data leakage, or inconsistencies, ensuring a more robust and reliable analysis.\n", + "\n", + "- **Hypothesis Generation**: It helps generate initial hypotheses and questions to be tested with more formal statistical methods.\n" + ] + }, + { + "cell_type": "markdown", + "id": "537ee08f", + "metadata": {}, + "source": [ + "**Check the Shape of the Dataset**\n", + "\n", + "This step gives us a basic understanding of the dataset's size by returning the number of rows (observations) and columns (features). It's an essential first step in EDA to gauge how large and complex your dataset is, and to quickly catch any red flags (e.g., very small datasets or datasets with an unexpectedly large number of columns).\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 157, + "id": "7a24cc6c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Our dataset is composed of 891 rows, and 12 columns\n" + ] + } + ], + "source": [ + "# Check the shape of the dataset (rows, columns)\n", + "# DataFrame.shape: Return a tuple representing the dimensionality of the DataFrame.\n", + "\n", + "n_rows, n_cols = df.shape \n", + "print(f\"Our dataset is composed of {n_rows} rows, and {n_cols} columns\")" + ] + }, + { + "cell_type": "markdown", + "id": "48c5a5cc", + "metadata": {}, + "source": [ + "**Show the Column Names**\n", + "\n", + "This cell lists all the column names (features) in the dataset. Understanding what features are present helps you interpret the data, think about potential predictors and targets for modeling, and identify redundant, irrelevant, or misspelled columns early on." + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "id": "5a5cbdc5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dataset columns:\n", + "['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked']\n" + ] + } + ], + "source": [ + "# Show the column names\n", + "# DataFrame.columns: The column labels of the DataFrame.\n", + "dataframe_columns = df.columns\n", + "print(\"Dataset columns:\")\n", + "print(list(dataframe_columns))" + ] + }, + { + "cell_type": "markdown", + "id": "367c0b8f", + "metadata": {}, + "source": [ + "**View Data Types of Each Feature**\n", + "\n", + "Here, you're checking the data type of each column (e.g., integer, float, object/string, datetime). This can be exploited for:\n", + "\n", + "- Understanding what kind of operations can be performed on each column\n", + "\n", + "- Spotting incorrect data types (e.g., numeric values stored as objects)\n", + "\n", + "- Preparing for data preprocessing (e.g., encoding categorical variables, converting dates)" + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "id": "053a64e4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Features data types:\n", + "PassengerId int64\n", + "Survived int64\n", + "Pclass int64\n", + "Name object\n", + "Sex object\n", + "Age float64\n", + "SibSp int64\n", + "Parch int64\n", + "Ticket object\n", + "Fare float64\n", + "Cabin object\n", + "Embarked object\n", + "dtype: object\n" + ] + } + ], + "source": [ + "# DataFrame.dtype: Return the dtypes in the DataFrame.\n", + "# This returns a Series with the data type of each column. \n", + "# The result’s index is the original DataFrame’s columns. Columns with mixed types are stored with the object dtype. \n", + "print(\"Features data types:\")\n", + "print(df.dtypes)" + ] + }, + { + "cell_type": "markdown", + "id": "f8d74ce8", + "metadata": {}, + "source": [ + "**General Information About the Dataset**\n", + "\n", + "This is a concise summary of the dataset, showing:\n", + "\n", + "- Column names and types\n", + "\n", + "- Number of non-null entries per column\n", + "\n", + "- Memory usage\n", + "\n", + "It helps quickly assess missing data, data types, and memory footprint." + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "id": "7fcee358", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 891 entries, 0 to 890\n", + "Data columns (total 12 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 PassengerId 891 non-null int64 \n", + " 1 Survived 891 non-null int64 \n", + " 2 Pclass 891 non-null int64 \n", + " 3 Name 891 non-null object \n", + " 4 Sex 891 non-null object \n", + " 5 Age 714 non-null float64\n", + " 6 SibSp 891 non-null int64 \n", + " 7 Parch 891 non-null int64 \n", + " 8 Ticket 891 non-null object \n", + " 9 Fare 891 non-null float64\n", + " 10 Cabin 204 non-null object \n", + " 11 Embarked 889 non-null object \n", + "dtypes: float64(2), int64(5), object(5)\n", + "memory usage: 83.7+ KB\n" + ] + } + ], + "source": [ + "# Display information about each column (data type, non-null values, etc.)\n", + "# DataFrame.info: Print a concise summary of a DataFrame.\n", + "# This method prints information about a DataFrame including the index dtype and columns, non-null values and memory usage. \n", + "df.info()" + ] + }, + { + "cell_type": "markdown", + "id": "3b1b5f6f", + "metadata": {}, + "source": [ + "Explore the unique values of our *target* using the [pandas.unique](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.unique.html) module." + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "id": "ac6e1337", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Target unique values\n" + ] + }, + { + "data": { + "text/plain": [ + "array([0, 1])" + ] + }, + "execution_count": 161, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(\"Target unique values\")\n", + "df[\"Survived\"].unique()" + ] + }, + { + "cell_type": "markdown", + "id": "795427f2", + "metadata": {}, + "source": [ + "Exercise: For the columns *Survived, Pclass, Sex, Embarked*, return the list of unique values" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "id": "c039567b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Column: Survived\n", + "Unique values: [0 1]\n", + "\n", + "Column: Pclass\n", + "Unique values: [3 1 2]\n", + "\n", + "Column: Sex\n", + "Unique values: ['male' 'female']\n", + "\n", + "Column: Embarked\n", + "Unique values: ['S' 'C' 'Q' nan]\n", + "\n" + ] + } + ], + "source": [ + "columns = [\"Survived\", \"Pclass\", \"Sex\", \"Embarked\"]\n", + "for col in columns:\n", + " print(f\"Column: {col}\")\n", + " print(f\"Unique values: {df[col].unique()}\\n\")" + ] + }, + { + "cell_type": "markdown", + "id": "d54d8a85", + "metadata": {}, + "source": [ + "## Data Quality Check\n", + "\n", + "Before proceeding with any analysis or modeling, it is essential to verify the quality and integrity of our dataset. Data quality issues can arise in any dataset, including widely used ones like the Titanic dataset. Common problems include:\n", + "\n", + "- **Missing values**: Empty cells or NaN entries that may require imputation or removal.\n", + "\n", + "- **Inconsistent formats**: Data types or formats that do not align with expectations (e.g., text in a numerical column).\n", + "\n", + "- **Duplicate records**: Repeated rows that can distort statistical analysis and model performance.\n", + "\n", + "- **Invalid or implausible values**: Outliers or entries that fall outside realistic ranges (such as negative ages).\n", + "\n", + "Identifying and addressing these issues early is crucial for ensuring reliable results and robust models. In this section, we will systematically check for missing data, duplicates, and obvious inconsistencies, setting the stage for effective data cleaning and analysis." + ] + }, + { + "cell_type": "markdown", + "id": "9337b97b", + "metadata": {}, + "source": [ + "**Check for missing values**\n", + "\n", + "This cell checks for missing values in each column of the dataset by using [DataFrame.isnull()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.isnull.html). This method returns a boolean DataFrame where:\n", + "\n", + "- `True` indicates a missing value (e.g., NaN, None)\n", + "- `False` indicates a valid entry\n", + "\n", + "By summing the boolean values with `.sum()`, we get the total count of missing entries per column.\n", + "\n", + "Identifying where and how much data is missing is a crucial step to decide whether to impute, remove, or otherwise handle incomplete data before further analysis or model building." + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "id": "bb8a742a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Missing values per column:\n", + "\n", + "PassengerId 0\n", + "Survived 0\n", + "Pclass 0\n", + "Name 0\n", + "Sex 0\n", + "Age 177\n", + "SibSp 0\n", + "Parch 0\n", + "Ticket 0\n", + "Fare 0\n", + "Cabin 687\n", + "Embarked 2\n", + "dtype: int64\n" + ] + } + ], + "source": [ + "# Check for missing values per column\n", + "print(\"Missing values per column:\\n\")\n", + "print(df.isnull().sum())" + ] + }, + { + "cell_type": "markdown", + "id": "8c2dfcab", + "metadata": {}, + "source": [ + "**Compute percentage of missing values**\n", + "\n", + "This cell calculates the percentage of missing values in each column to assess the relative impact of missing data. \n", + "\n", + "It divides the count of missing values `(df.isnull().sum())` by the total number of rows `(len(df))`, then multiplies by 100 to express it as a percentage.\n", + "\n", + "Knowing the proportion of missing data helps prioritize data cleaning steps — for example, columns with very high missing percentages might be dropped, while those with minimal gaps could be imputed." + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "id": "e32bd777", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Percentage of missing values:\n", + "\n", + "PassengerId 0.000000\n", + "Survived 0.000000\n", + "Pclass 0.000000\n", + "Name 0.000000\n", + "Sex 0.000000\n", + "Age 19.865320\n", + "SibSp 0.000000\n", + "Parch 0.000000\n", + "Ticket 0.000000\n", + "Fare 0.000000\n", + "Cabin 77.104377\n", + "Embarked 0.224467\n", + "dtype: float64\n" + ] + } + ], + "source": [ + "# Optional: Check the percentage of missing values\n", + "print(\"Percentage of missing values:\\n\")\n", + "print((df.isnull().sum() / len(df)) * 100)" + ] + }, + { + "cell_type": "markdown", + "id": "b83b3e1d", + "metadata": {}, + "source": [ + "**Check for duplicated rows**\n", + "\n", + "This cell checks for duplicate rows in the dataset using [DataFrame.duplicated()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.duplicated.html), which returns a boolean Series where True indicates a duplicate row. \n", + "\n", + "By applying `.sum()`, it counts the total number of duplicate rows.\n", + "\n", + "Identifying and removing duplicates is important because repeated entries can skew statistical analyses and affect model performance. This step helps ensure that each observation is unique and reliable." + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "id": "3c6b44b5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of duplicated rows: 0\n" + ] + } + ], + "source": [ + "# Check for duplicated rows\n", + "print(\"Number of duplicated rows:\", df.duplicated().sum())" + ] + }, + { + "cell_type": "markdown", + "id": "ac369c16", + "metadata": {}, + "source": [ + "**Examining rows with inconsistencies or invalid entries**\n", + "\n", + "This part demonstrates how to identify invalid or inconsistent data entries in the Titanic dataset:\n", + "\n", + "- **Invalid 'Fare' values**: The first part filters rows where the 'Fare' column contains values that are less than or equal to zero. Negative or zero fares are invalid, as they don't make sense in the context of ticket prices.\n", + "\n", + "- **Invalid 'Embarked' values**: The second part checks the 'Embarked' column for values that are not among the valid embarkation ports ('C', 'Q', or 'S'). Any entry outside these three values would be inconsistent and require attention.\n", + "\n", + "- **Missing 'Age' values**: The third part filters rows where the 'Age' column contains missing values (NaN). These missing values need to be handled, either through imputation or removal, to ensure that the dataset is complete for analysis." + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "id": "cc6a6a34", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rows with invalid 'Fare' values (negative or zero):\n" + ] + }, + { + "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", + "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
17918003Leonard, Mr. Lionelmale36.000LINE0.0NaNS
26326401Harrison, Mr. Williammale40.0001120590.0B94S
27127213Tornquist, Mr. William Henrymale25.000LINE0.0NaNS
27727802Parkes, Mr. Francis \"Frank\"maleNaN002398530.0NaNS
30230303Johnson, Mr. William Cahoone Jrmale19.000LINE0.0NaNS
41341402Cunningham, Mr. Alfred FlemingmaleNaN002398530.0NaNS
46646702Campbell, Mr. WilliammaleNaN002398530.0NaNS
48148202Frost, Mr. Anthony Wood \"Archie\"maleNaN002398540.0NaNS
59759803Johnson, Mr. Alfredmale49.000LINE0.0NaNS
63363401Parr, Mr. William Henry MarshmaleNaN001120520.0NaNS
67467502Watson, Mr. Ennis HastingsmaleNaN002398560.0NaNS
73273302Knight, Mr. Robert JmaleNaN002398550.0NaNS
80680701Andrews, Mr. Thomas Jrmale39.0001120500.0A36S
81581601Fry, Mr. RichardmaleNaN001120580.0B102S
82282301Reuchlin, Jonkheer. John Georgemale38.000199720.0NaNS
\n", + "
" + ], + "text/plain": [ + " PassengerId Survived Pclass Name Sex \\\n", + "179 180 0 3 Leonard, Mr. Lionel male \n", + "263 264 0 1 Harrison, Mr. William male \n", + "271 272 1 3 Tornquist, Mr. William Henry male \n", + "277 278 0 2 Parkes, Mr. Francis \"Frank\" male \n", + "302 303 0 3 Johnson, Mr. William Cahoone Jr male \n", + "413 414 0 2 Cunningham, Mr. Alfred Fleming male \n", + "466 467 0 2 Campbell, Mr. William male \n", + "481 482 0 2 Frost, Mr. Anthony Wood \"Archie\" male \n", + "597 598 0 3 Johnson, Mr. Alfred male \n", + "633 634 0 1 Parr, Mr. William Henry Marsh male \n", + "674 675 0 2 Watson, Mr. Ennis Hastings male \n", + "732 733 0 2 Knight, Mr. Robert J male \n", + "806 807 0 1 Andrews, Mr. Thomas Jr male \n", + "815 816 0 1 Fry, Mr. Richard male \n", + "822 823 0 1 Reuchlin, Jonkheer. John George male \n", + "\n", + " Age SibSp Parch Ticket Fare Cabin Embarked \n", + "179 36.0 0 0 LINE 0.0 NaN S \n", + "263 40.0 0 0 112059 0.0 B94 S \n", + "271 25.0 0 0 LINE 0.0 NaN S \n", + "277 NaN 0 0 239853 0.0 NaN S \n", + "302 19.0 0 0 LINE 0.0 NaN S \n", + "413 NaN 0 0 239853 0.0 NaN S \n", + "466 NaN 0 0 239853 0.0 NaN S \n", + "481 NaN 0 0 239854 0.0 NaN S \n", + "597 49.0 0 0 LINE 0.0 NaN S \n", + "633 NaN 0 0 112052 0.0 NaN S \n", + "674 NaN 0 0 239856 0.0 NaN S \n", + "732 NaN 0 0 239855 0.0 NaN S \n", + "806 39.0 0 0 112050 0.0 A36 S \n", + "815 NaN 0 0 112058 0.0 B102 S \n", + "822 38.0 0 0 19972 0.0 NaN S " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Example: Check for invalid or zero fares\n", + "print(\"Rows with invalid 'Fare' values (negative or zero):\")\n", + "display(df[df['Fare'] <= 0])" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "id": "4205c152", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rows with invalid 'Embarked' values:\n" + ] + }, + { + "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", + "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
616211Icard, Miss. Ameliefemale38.00011357280.0B28NaN
82983011Stone, Mrs. George Nelson (Martha Evelyn)female62.00011357280.0B28NaN
\n", + "
" + ], + "text/plain": [ + " PassengerId Survived Pclass Name \\\n", + "61 62 1 1 Icard, Miss. Amelie \n", + "829 830 1 1 Stone, Mrs. George Nelson (Martha Evelyn) \n", + "\n", + " Sex Age SibSp Parch Ticket Fare Cabin Embarked \n", + "61 female 38.0 0 0 113572 80.0 B28 NaN \n", + "829 female 62.0 0 0 113572 80.0 B28 NaN " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Example: Check for invalid embarkation ports (should be 'C', 'Q', or 'S')\n", + "print(\"Rows with invalid 'Embarked' values:\")\n", + "display(df[~df['Embarked'].isin(['C', 'Q', 'S'])])" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "id": "763f5a1c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rows with missing 'Age':\n" + ] + }, + { + "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", + "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
5603Moran, Mr. JamesmaleNaN003308778.4583NaNQ
171812Williams, Mr. Charles EugenemaleNaN0024437313.0000NaNS
192013Masselmani, Mrs. FatimafemaleNaN0026497.2250NaNC
262703Emir, Mr. Farred ChehabmaleNaN0026317.2250NaNC
282913O'Dwyer, Miss. Ellen \"Nellie\"femaleNaN003309597.8792NaNQ
\n", + "
" + ], + "text/plain": [ + " PassengerId Survived Pclass Name Sex Age \\\n", + "5 6 0 3 Moran, Mr. James male NaN \n", + "17 18 1 2 Williams, Mr. Charles Eugene male NaN \n", + "19 20 1 3 Masselmani, Mrs. Fatima female NaN \n", + "26 27 0 3 Emir, Mr. Farred Chehab male NaN \n", + "28 29 1 3 O'Dwyer, Miss. Ellen \"Nellie\" female NaN \n", + "\n", + " SibSp Parch Ticket Fare Cabin Embarked \n", + "5 0 0 330877 8.4583 NaN Q \n", + "17 0 0 244373 13.0000 NaN S \n", + "19 0 0 2649 7.2250 NaN C \n", + "26 0 0 2631 7.2250 NaN C \n", + "28 0 0 330959 7.8792 NaN Q " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Example: Show rows with missing 'Age'\n", + "print(\"Rows with missing 'Age':\")\n", + "display(df[df['Age'].isnull()].head())" + ] + }, + { + "cell_type": "markdown", + "id": "2a86fdb7", + "metadata": {}, + "source": [ + "## Descriptive Statistics\n", + "\n", + "After performing data quality checks, the next step is to explore the distribution and composition of our dataset, both numerically and categorically.\n", + "\n", + "This step is crucial because:\n", + "\n", + "- It reveals the central tendency (mean, median) and spread (variance, range) of numerical features.\n", + "\n", + "- It helps identify outliers, skewed distributions, and potential data imbalance.\n", + "\n", + "- It offers insights into categorical distributions, which are vital for understanding group sizes and planning encoding strategies." + ] + }, + { + "cell_type": "markdown", + "id": "377eae28", + "metadata": {}, + "source": [ + "**Generate Summary Statistics**\n", + "\n", + "This command gives you summary statistics (mean, std, min, max, percentiles) for all columns, including categorical ones `(include=\"all\")`. Transposing the result `(.T)` makes it easier to read.\n", + "\n", + "It's good practice for:\n", + "\n", + "- Understanding distributions and value ranges\n", + "\n", + "- Spotting outliers or suspicious values\n", + "\n", + "- Gauging variability in each feature" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "id": "8305e2d9", + "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", + "
countuniquetopfreqmeanstdmin25%50%75%max
PassengerId891.0NaNNaNNaN446.0257.3538421.0223.5446.0668.5891.0
Survived891.0NaNNaNNaN0.3838380.4865920.00.00.01.01.0
Pclass891.0NaNNaNNaN2.3086420.8360711.02.03.03.03.0
Name891891Dooley, Mr. Patrick1NaNNaNNaNNaNNaNNaNNaN
Sex8912male577NaNNaNNaNNaNNaNNaNNaN
Age714.0NaNNaNNaN29.69911814.5264970.4220.12528.038.080.0
SibSp891.0NaNNaNNaN0.5230081.1027430.00.00.01.08.0
Parch891.0NaNNaNNaN0.3815940.8060570.00.00.00.06.0
Ticket8916813470827NaNNaNNaNNaNNaNNaNNaN
Fare891.0NaNNaNNaN32.20420849.6934290.07.910414.454231.0512.3292
Cabin204147G64NaNNaNNaNNaNNaNNaNNaN
Embarked8893S644NaNNaNNaNNaNNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " count unique top freq mean std \\\n", + "PassengerId 891.0 NaN NaN NaN 446.0 257.353842 \n", + "Survived 891.0 NaN NaN NaN 0.383838 0.486592 \n", + "Pclass 891.0 NaN NaN NaN 2.308642 0.836071 \n", + "Name 891 891 Dooley, Mr. Patrick 1 NaN NaN \n", + "Sex 891 2 male 577 NaN NaN \n", + "Age 714.0 NaN NaN NaN 29.699118 14.526497 \n", + "SibSp 891.0 NaN NaN NaN 0.523008 1.102743 \n", + "Parch 891.0 NaN NaN NaN 0.381594 0.806057 \n", + "Ticket 891 681 347082 7 NaN NaN \n", + "Fare 891.0 NaN NaN NaN 32.204208 49.693429 \n", + "Cabin 204 147 G6 4 NaN NaN \n", + "Embarked 889 3 S 644 NaN NaN \n", + "\n", + " min 25% 50% 75% max \n", + "PassengerId 1.0 223.5 446.0 668.5 891.0 \n", + "Survived 0.0 0.0 0.0 1.0 1.0 \n", + "Pclass 1.0 2.0 3.0 3.0 3.0 \n", + "Name NaN NaN NaN NaN NaN \n", + "Sex NaN NaN NaN NaN NaN \n", + "Age 0.42 20.125 28.0 38.0 80.0 \n", + "SibSp 0.0 0.0 0.0 1.0 8.0 \n", + "Parch 0.0 0.0 0.0 0.0 6.0 \n", + "Ticket NaN NaN NaN NaN NaN \n", + "Fare 0.0 7.9104 14.4542 31.0 512.3292 \n", + "Cabin NaN NaN NaN NaN NaN \n", + "Embarked NaN NaN NaN NaN NaN " + ] + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Summary statistics for numerical columns\n", + "# DataFrame.describe: Generate descriptive statistics.\n", + "# Descriptive statistics include those that summarize the central tendency, \n", + "# dispersion and shape of a dataset’s distribution, excluding NaN values.\n", + "# Analyzes both numeric and object series, as well as DataFrame column sets of mixed data types. \n", + "\n", + "df.describe(include=\"all\").T" + ] + }, + { + "cell_type": "markdown", + "id": "418d97e6", + "metadata": {}, + "source": [ + "This step examines how frequently each category appears in selected columns using [.value_counts()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.value_counts.html):\n", + "\n", + "It reveals class imbalances, missing values (especially with `dropna=False`), and dominant categories — all of which can guide encoding strategies or model interpretation." + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "id": "60966a2d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Value counts for 'Sex':\n", + "Sex\n", + "male 577\n", + "female 314\n", + "Name: count, dtype: int64\n", + "\n", + "Value counts for 'Pclass':\n", + "Pclass\n", + "3 491\n", + "1 216\n", + "2 184\n", + "Name: count, dtype: int64\n", + "\n", + "Value counts for 'Embarked':\n", + "Embarked\n", + "S 644\n", + "C 168\n", + "Q 77\n", + "NaN 2\n", + "Name: count, dtype: int64\n" + ] + } + ], + "source": [ + "# Value counts for categorical features\n", + "print(\"\\nValue counts for 'Sex':\")\n", + "print(df['Sex'].value_counts())\n", + "\n", + "print(\"\\nValue counts for 'Pclass':\")\n", + "print(df['Pclass'].value_counts())\n", + "\n", + "print(\"\\nValue counts for 'Embarked':\")\n", + "print(df['Embarked'].value_counts(dropna=False)) # include NaN" + ] + }, + { + "cell_type": "markdown", + "id": "fb1de943", + "metadata": {}, + "source": [ + "**Exercise:** Together with the default percentile, return in the output also the 1st and 99th percentile\n", + "\n", + "Check at this link the documentation of the module [DataFrame.describe](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html)" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "id": "ecb40dad", + "metadata": {}, + "outputs": [], + "source": [ + "# percentiles = ...\n", + "# df.describe(percentiles=)" + ] + }, + { + "cell_type": "markdown", + "id": "da3dba6c", + "metadata": {}, + "source": [ + "## Basic Data Visualization\n", + "\n", + "After summarizing the dataset using statistics, the next step is to visualize the data. Visualization helps us spot patterns, trends, and anomalies that are hard to detect in raw numbers alone.\n", + "\n", + "These visual tools make data intuitive and accessible, even for those without strong statistical backgrounds." + ] + }, + { + "cell_type": "markdown", + "id": "7454b04e", + "metadata": {}, + "source": [ + "**Target Variable Distribution: `Survived`**\n", + "\n", + "Before analyzing other features, it's important to explore the distribution of our **target variable**, `Survived`. This bar chart illustrates the number of passengers who survived (1) versus those who did not survive (0).\n", + "\n", + "Why this matters:\n", + "- Class imbalance occurs when one class significantly outnumbers the other(s). For example, if most passengers did not survive, models might learn to always predict the majority class just to achieve higher accuracy — without actually learning useful patterns.\n", + "\n", + "- This can lead to misleading performance metrics, especially if we rely solely on accuracy." + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "id": "71fbe07b", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAGGCAYAAACNCg6xAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQytJREFUeJzt3QeYFNXy+P0i5yxRooDkrAIKSo4qCCgoSpCLioAIShRBUQFRgmRUJPhTUCRcL1ySgCLJAIIkCQICEiXn2O9Tdd+e/8wG6Fl2WGb3+3me2dnp7uk5k2vqVJ+TyHEcRwAAAHBTiW++CQAAABSBEwAAgEcETgAAAB4ROAEAAHhE4AQAAOARgRMAAIBHBE4AAAAeETgBAAB4ROAEAADgEYETAMSyRIkSyVtvvRWy/U+ePNluY8+ePSG7DQBRI3ACQvSl5p5Spkwp9957r3Tq1EkOHz4c182LV65fvy5Tp06VihUrSubMmSVdunT2WLdq1UrWrFkT1827Y6xfv16effZZyZMnj6RIkcIeq1q1asmkSZPk2rVrcicYOHCgzJkzJ66bAdxU0ptvAiAmBgwYIAUKFJCLFy/KihUrZNy4cfLf//5XNm3aJKlTp47r5sULr7zyiowZM0YaNWokLVu2lKRJk8q2bdtk/vz5cs8990ilSpXipF0XLlywttwJPv30U3nppZcke/bs8txzz0nhwoXlzJkzsmTJEmnXrp0cPHhQ+vTpc0cETs2aNZPGjRvHdVOAG7oz3tlAPFS/fn2577777P9//etfkiVLFhk2bJj8+9//lqeffjqumxc2GaXLly9b1i4izd6NHTtW2rdvLx9//HHAuhEjRsjRo0djpQ06D7oGv6lSpfJ8najaGxc066ZBU+XKlS1o14yc69VXX5Vff/3VAnkA3tFVB9wmNWrUsPPdu3fb+YcffigPPvigBVT6pVyhQgX55ptvIl1v8eLFUqVKFcmYMaOkTZtWihQpEilDMGrUKClRooRlsjJlymQB25dffhmwzd9//y3PP/+8ZR60u0a3/+yzzwK2+f7776178euvv5b33ntPcufObUFAzZo1ZefOnZHaptkezexo+x944AH58ccfpVq1anbyd+nSJenfv78UKlTIblu7jHr06GHL/elta5fmF198Ye3TbRcsWBDl46mPowY1Dz30UKR1up9s2bL5Lmu9kS7zUiuUP39+efTRR2XhwoX2OOp9mzBhgpQsWVKqV68eZXB39913W7YkqhonfU718g8//BDpurpfXecGL7///ru0adPGHlN93HPkyGHP2bFjxyQm3n77bdu/Pp7+QZNL75/enuvcuXPy2muv+br09LWmr1N9nF36WOk+9bG7WW2X+7jra0dvR1/DGTJkkLZt28r58+cDrqe3PWXKFF8Xt9suzY5pkKfPi7ZJn9fatWvLunXrYvSYALeKjBNwm/z55592roGS+uijj+Txxx+3LibNqkyfPl2efPJJmTt3rjRs2NC22bx5s32Jly5d2rr+9ItDv4RWrlzp2+8nn3xiXVb6xd2lSxfLjugX8E8//STPPPOMLzuj3VZuYJI1a1brztKumtOnT9sXk7/BgwdL4sSJ5fXXX5dTp07JkCFDrJ26T5d2Peq+qlatKl27drUvVO1m0cBNAy7/wELvp3ZXvvDCC1KsWDHZuHGjDB8+XLZv3x6prmXp0qUWuOm+77rrLvvCjEq+fPnsfMaMGfa4xWb3p3b3aVbwxRdftIyWBhDNmze3QODQoUMW0Lj0fh04cEBatGgR5b70udSAV+/TI488ErDuq6++sgBRgzI3SN61a5cFFnob+vxrNk3PNXsUVfAXHQ1MtDvu4Ycflrx58950ew2O9HlatmyZvS7Kli1rwWP37t0t6NbnK6aeeuop67YeNGiQBTzafagB0Pvvv2/rP//8c8vKavCtrxFVsGBBO9eMmQaf+nooXry4BZH6mG/dulXKly8f4zYBMeYAiFWTJk3Sn+fOd9995xw9etTZt2+fM336dCdLlixOqlSpnP3799t258+fD7je5cuXnZIlSzo1atTwLRs+fLjtS/cTnUaNGjklSpS4YZvatWvn5MyZ0/nnn38Clrdo0cLJkCGDry3Lli2z2ytWrJhz6dIl33YfffSRLd+4caNd1nV6f+6//37nypUrvu0mT55s2z3yyCO+ZZ9//rmTOHFi58cffwy47fHjx9u2K1eu9C3Ty7rt5s2bHS9atWpl18mUKZPzxBNPOB9++KGzdevWSNv179/ftovuudq9e7dvWb58+WzZggULArbdtm2bLR81alTA8pdfftlJmzZtwPOp2+ltup5++mknW7ZsztWrV33LDh48aPd1wIABvmURXxNq2rRptr/ly5ffsN0Rbdiwwbbp0qWL48Wc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FalVq5ZvW+3Gy5s3r6xevdou63mpUqUsaHLVrVtXTp8+LZs3b46DewMAAOKzOM04VaxYUSZPnixFihSxbra3335bqlatKps2bZJDhw5ZxihjxowB19EgSdcpPfcPmtz17rroXLp0yU4uDbQAAADu6MCpfv36vv9Lly5tgVS+fPnk66+/llSpUoXsdgcNGmRBGgAAQFh11fnT7NK9994rO3futLqny5cvy8mTJwO20aPq3JooPY94lJ17Oaq6KVfv3r2thso97du3LyT3BwAAxC93VOB09uxZ+fPPPyVnzpxSoUIFOzpuyZIlvvXbtm2zGqjKlSvbZT3fuHGjHDlyxLfN4sWLJX369FK8ePFobydFihS2jf8JAADgju6qe/311+Wxxx6z7rkDBw5I//79JUmSJPL000/b8APt2rWTbt26SebMmS246dy5swVLekSdqlOnjgVIzz33nAwZMsTqmvr27WtjP2lwBAAAEG8Cp/3791uQdOzYMcmaNatUqVLFhhrQ/9Xw4cMlceLENvClFnPrEXNjx471XV+DrLlz50qHDh0soEqTJo20bt1aBgwYEIf3CgAAxFeJHMdxJIHTo+o0w6X1TqHotsvfa16s7xNIKPYMbhjXTQAQz50OIg64o2qcAAAA7mQETgAAAB4ROAEAAHhE4AQAAOARgRMAAIBHBE4AAAAeETgBAAB4ROAEAADgEYETAACARwROAAAAHhE4AQAAeETgBAAA4BGBEwAAgEcETgAAAB4ROAEAAHhE4AQAAOARgRMAAIBHBE4AAAAeETgBAAB4ROAEAADgEYETAACARwROAAAAHhE4AQAAeETgBAAA4BGBEwAAgEcETgAAAB4ROAEAAHhE4AQAAOARgRMAAECoAqcLFy7I+fPnfZf/+usvGTFihCxatCjYXQEAAMTvwKlRo0YydepU+//kyZNSsWJFGTp0qC0fN25cKNoIAAAQnoHTunXrpGrVqvb/N998I9mzZ7eskwZTI0eODEUbAQAAwjNw0m66dOnS2f/aPdekSRNJnDixVKpUyQIoAACA+CrowKlQoUIyZ84c2bdvnyxcuFDq1Kljy48cOSLp06cPRRsBAADCM3Dq16+fvP7665I/f36rb6pcubIv+1SuXLlQtBEAAOCOkDTYKzRr1kyqVKkiBw8elDJlyviW16xZU5544onYbh8AAEB4Bk5X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wElHB9ficD2dOXPGlmkgBQAAEN/FaBwnFwETAABISIIuDgcAAEioCJwAAAA8InACAAAIReB05coVqVmzpuzYsSOYqwEAACS8wClZsmTy+++/h641AAAA8amr7tlnn5WJEyeGpjUAAADxaTiCq1evymeffSbfffedVKhQQdKkSROwftiwYbHZPgAAgPANnDZt2iTly5e3/7dv3x5pcEwAAID4KujAadmyZaFpCQAAQHwdjmDnzp2ycOFCuXDhgl12HCc22wUAABD+gdOxY8dsSIJ7771XGjRoIAcPHrTl7dq1k9deey0UbQQAAAjPwEkn99VhCfbu3SupU6f2LW/evLksWLAgttsHAAAQvjVOixYtsi663LlzBywvXLiw/PXXX7HZNgAAgPDOOJ07dy4g0+Q6fvy4pEiRIrbaBQAAEP6BU9WqVWXq1KkBQxBcv35dhgwZItWrV4/t9gEAAIRvV50GSFoc/uuvv8rly5elR48esnnzZss4rVy5MjStBAAACMeMU8mSJW3gyypVqkijRo2s665Jkyby22+/ScGCBUPTSgAAgDtA0BknlSFDBnnjjTdivzUAAADxLXA6ceKETfS7detWu1y8eHFp27atZM6cObbbBwAAEL5ddcuXL5f8+fPLyJEjLYDSk/5foEABWwcAABBfBZ1x6tixow12OW7cOEmSJIktu3btmrz88su2buPGjaFoJwAAQPhlnHSOOp1axQ2alP7frVs3WwcAABBfBR04lS9f3lfb5E+XlSlTJqh9DRo0SO6//35Jly6dZMuWTRo3bizbtm0L2ObixYuWycqSJYukTZtWmjZtKocPHw7YRqd/adiwoQ3Mqfvp3r27XL16Ndi7BgAAcOtddb///rvv/1deeUW6dOli2aVKlSrZsjVr1siYMWNk8ODBEowffvjBgiINnjTQ6dOnj9SpU0e2bNkiadKk8c2NN2/ePJkxY4YdzdepUycb/sAdM0q7CTVoypEjh6xatcomHW7VqpXNpzdw4MCg2gMAAHAjiRzHcW6alkqc2EYIv9mmuo0GMjF19OhRyxhpQPXwww/LqVOnJGvWrPLll19Ks2bNbJs//vhDihUrJqtXr7bAbf78+fLoo4/KgQMHJHv27LbN+PHjpWfPnra/5MmT3/R2T58+bUGZ3l769OkltuXvNS/W9wkkFHsGN5T4hM8D4M77PAgm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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Get counts of each survival class\n", + "index = df[\"Survived\"].value_counts().index\n", + "values = df[\"Survived\"].value_counts().values\n", + "\n", + "plt.figure(figsize=(6, 4))\n", + "plt.bar(index, values)\n", + "\n", + "plt.xlabel(\"Survival (0 = No, 1 = Yes)\")\n", + "plt.ylabel(\"Number of Passengers\")\n", + "plt.title(\"Passenger Survival Counts\")\n", + "plt.xticks(index, labels=[\"Did Not Survive\", \"Survived\"])\n", + "\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "3b89e5f3", + "metadata": {}, + "source": [ + "**Numerical Variables Distribution: `Age`**\n", + "\n", + "To understand the spread and shape of the data, we visualize the distribution of the Age feature using a histogram combined with a Kernel Density Estimate (KDE):\n", + "\n", + "- The histogram shows how passenger ages are distributed across intervals. It highlights concentrations of values — for example, many passengers appear to be between 20 and 40 years old.\n", + "\n", + "- The KDE curve (in red) offers a smooth approximation of the underlying distribution. Unlike the rigid bins of a histogram, KDE helps us see the overall shape and continuity of the data — such as skewness or multiple peaks.\n", + "\n", + "This kind of plot is valuable for:\n", + "\n", + "- Identifying common age ranges\n", + "\n", + "- Detecting skewed distributions or multi-modal trends\n", + "\n", + "- Spotting areas where data is sparse, which may influence model performance\n", + "\n", + "By combining histogram and KDE, we get both discrete and continuous perspectives on the same feature, making it easier to decide on transformations (e.g., normalization, binning) or whether age should be treated differently in model pipelines." + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "id": "ee827da3", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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8/seHR2tUqdJCjV5PwsVKoTRo0fHK/FlNe/5S2tTkEUsXrzY4Orqapg9e7bh33//NfTo0cOQKVMmw82bNw16sn79esNnn31mWLFihSp/8vvvv8e7fezYsQYvLy/DypUrDYcPHza8/fbbhgIFChjCw8MNtqxBgwaGOXPmGI4dO2Y4dOiQoVGjRoa8efMaQkNDY4/54IMPDHny5DFs2rTJEBQUZKhSpYqhWrVqBlu3evVqw7p16wynT582nDp1yjB06FBV+k9eCz2fd0J79+415M+f31CqVClD3759Y/fr9fylFGPx4sUN169fj91u376t+/MW9+7dM+TLl8/QuXNnw549ewznz583bNy40XD27Fndf9fdunUr3nseGBiovuu3bNmi6/f9q6++Mnh7exvWrl1ruHDhgmHZsmWG9OnTGyZPnmx17zkDuzQitW8//PDD2OvR0dGGnDlzGsaMGWPQq4SBXUxMjMHX19cwfvz42H0PHjwwuLm5GRYtWmTQE/nyk/Pftm1b7HlKsCNfBiYnTpxQx+zatcugN5kzZzbMnDnTbs770aNHBj8/P/VLrlatWrGBnZ7PXwK70qVLm71Nz+ctBg0aZKhRo0ait9vTd5181gsVKqTOWc/ve+PGjQ1du3aNt6958+aG9957z+recw7FpoHIyEjs379fdcuaSNJlub5r1y7YiwsXLqgk1HFfBymRIsPSensdQkJC1M8sWbKon/L+R0VFxTt3GbbKmzevrs5dhiukGowkCJchWXs5bxl6kko4cc9T6P38ZZhJpl0ULFgQ7733nkoobw/nvXr1alUtSfKpytSLsmXLYsaMGXb3XSe/2+bPn4+uXbuq4Vg9v+/VqlVTpUpPnz6trh8+fBj//PMP3nzzTat7z60iQbHe3blzR/3CM1XTMJHrJ0+ehL2QD70w9zqYbtMDqXcsc6yqV68eWxFFzk9qIyesQayXcz969KgK5GR+jcyr+f3331GsWDEcOnRI1+ctJJA9cOAA9u3b99xten7f5RfW3Llz4e/vj+vXr+Pzzz9HzZo1cezYMV2ftzh//ryaWyolMaUCkrz3H3/8sTpnKZFpL991Modaqjt17txZXdfz+z548GBVd14CVScnJ/U7/auvvlJ/0Ahres8Z2BGlQu+N/HKTv+bshfxylyBOeiqXL1+ufrlt27YNenf58mVVvzowMNDu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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "age_data = df['Age'].dropna()\n", + "\n", + "# Create a histogram of ages\n", + "plt.hist(age_data, bins=100, edgecolor='black', density=True)\n", + "\n", + "# Apply Kernel Density Estimation to smooth the age distribution\n", + "# gaussian_kde: A class for performing kernel density estimation.\n", + "# It is a non-parametric way to estimate the probability density function of a random variable.\n", + "# It is a useful tool for visualizing the distribution of data points in a dataset.\n", + "kde = gaussian_kde(age_data) \n", + "age_range = np.linspace(age_data.min(), age_data.max(), 100)\n", + "kde_values = kde(age_range)\n", + "\n", + "# Plot the KDE curve on top of the histogram\n", + "plt.plot(age_range, kde_values, color='red', label='KDE')\n", + "\n", + "\n", + "plt.title('Distribution of Age with KDE')\n", + "plt.xlabel('Age')\n", + "plt.ylabel('Density')\n", + "plt.legend()\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "008f3705", + "metadata": {}, + "source": [ + "**Categorical Features Distribution**\n", + "\n", + "Visualizing categorical variables helps us understand the composition and potential impact of each category on the target variable. By plotting count distributions, we can quickly detect:\n", + "\n", + "- Imbalances between categories (e.g., more males than females)\n", + "- Dominant groups within features like Sex, Pclass, Embarked, etc.\n", + "- Potential patterns or groupings relevant for modeling and feature engineering" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "id": "69ca462b", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAGGCAYAAACNCg6xAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAMbNJREFUeJzt3Qd4VFXex/F/QugldALSpUtTQIFFUUACAtJUYBXjLoKLBAVeEaJI3SXIKiAIsrjSVJYVXHQFkRKKSC+CFEXqSxRIUDYJIIR23+d/nufOOxMSOGQTJpl8P88zzMy9d2buFGZ+Oed/zg1yHMcRAAAA3FLwrTcBAACAIjgBAABYIjgBAABYIjgBAABYIjgBAABYIjgBAABYIjgBAABYIjgBAABYIjgBAABYIjgBQDY1evRoCQoKkl9++cXfuwLkGAQnwE/mzp1rfvTcU758+aRGjRoSGRkpcXFx/t69gLRkyRJp3769lCxZUvLkySPlypWTp556StasWSNZwcmTJ00Y2r17t2Ql169fl/nz58sDDzwgxYsXl8KFC5vP6rPPPitbtmzx9+4Bd1TInX04ACmNHTtWqlSpIpcuXZJvvvlG3nvvPfnyyy9l3759UqBAAX/vXkDQQ3L+8Y9/NGH13nvvlSFDhkhYWJicOnXKhKnWrVvLxo0bpXnz5n4PTmPGjJHKlStLw4YNJat46aWXZPr06dK5c2d5+umnJSQkRA4ePCjLly+XqlWrStOmTf29i8AdQ3AC/ExbQBo3bmwuP//881KiRAmZNGmSfP7559KrVy9/7162oC0ily9fNq12qXn77bdNaBo0aJB5bbWFz/X666/Lhx9+aMIAbqStnzNmzJC+ffvKrFmzfNZNmTJFzpw547d9A/yBrjogi2nVqpU5P3bsmDl/6623TEuIBqr8+fNLo0aNZPHixTfcbtWqVdKiRQspWrSoFCpUSGrWrCmvvfaazzbTpk2Te+65x7RkFStWzAS2BQsW+Gzz888/m9aZMmXKSN68ec32s2fP9tlm3bp1Jnx88skn8pe//EXKly9vQou23Bw+fPiGfdPWCm2Z0P2///77ZcOGDfLwww+bk7fk5GQZNWqUVKtWzTx2hQoV5NVXXzXLvelja5fmxx9/bPZPt/3qq69SfT0vXrwo0dHRUqtWLfNaeocmV+/evc1+uY4ePSpPPvmk6ZbS10pbVJYtW5ZqV+vx48dTfW303KXPs27dunLgwAF55JFHzH3eddddMnHiRJ/bNWnSxFz+wx/+4OnC1ce5Fa1x0i7HIkWKmM/Jyy+/bFowXS1btpQGDRqkelv9nISHh6d53/o51Ba73/3udzes0/0rXbq0z7KEhAQTUPW90/dF38s333zThFul96WvQalSpSQ+Pt5zOw2+9erVk7vvvlsuXLhwy+cM+At/YgFZzJEjR8y5/gCqd955Rx5//HHTRaI/LgsXLjQ/6kuXLpUOHTqYbfbv3y8dO3aU+vXrm64//cHSAKPdT67333/fdLk88cQTnh/W7777TrZu3Sq///3vPa0LGhLcYKI/btod06dPH0lKSjI/iN4mTJggwcHB8sorr0hiYqIJArqfep8u7XrU+3rwwQdl8ODBJmh06dLFBDcNXC79YdXnqd2V/fr1k9q1a8vevXtl8uTJ8uOPP8pnn33m89hal6TBTe9ba5a0eys1en9nz541+54rV65bvv76GmhQ/e2338zrpe/DvHnzzL5pYO3ataukx3/+8x9p166ddOvWzYQcva9hw4aZsKCtjvp89b0bOXKkef76eimb7kO9P33+GhC15mjq1Knm8bQuyQ2G2mKk3b8a4Fzbt283r+2IESPSvO9KlSqZ80WLFpnP3c26j/U105Cm4fuFF16QihUryqZNmyQqKsp0i2oLlX62NIjrZ/VPf/qT/Otf/zK31cCsn2MNkAULFryNVxa4wxwAfjFnzhxH/wuuXr3aOXPmjBMbG+ssXLjQKVGihJM/f37np59+Mtv99ttvPre7fPmyU7duXadVq1aeZZMnTzb3pfeTls6dOzv33HPPTfepT58+TtmyZZ1ffvnFZ3nPnj2d0NBQz76sXbvWPF7t2rWd5ORkz3bvvPOOWb53715zXdfp82nSpIlz5coVz3Zz584127Vs2dKz7MMPP3SCg4OdDRs2+Dz2zJkzzbYbN270LNPruu3+/ftv+ny892nJkiWOjUGDBpntvffj3LlzTpUqVZzKlSs7165d83n/jh075nN797XRc5c+T102f/58zzJ9bcLCwpzu3bt7lm3fvt1sp/dtY9SoUWb7xx9/3Gf5iy++aJbv2bPHXE9ISHDy5cvnDBs2zGe7l156ySlYsKBz/vz5mz7Os88+a+6vWLFiTteuXZ233nrL+f7772/Ybty4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5ylH2bnX3W1SExUVZWqo3JOGOAAAgCwbnFq3bi179+6V3bt3e06NGzc2heLu5dy5c0tMTIznNgcPHjTTDzRr1sxc13O9Dw1grlWrVkmRIkWkTp06aT523rx5zTbeJwAAgCxb41S4cGGpW7euz7KCBQuaOZvc5X369JEhQ4ZI8eLFTbgZOHCgCUtNmzY169u2bWsCUu/evWXixImmrmnEiBGm4FzDEQAAQMAUh9/K5MmTJTg42Ex8qcXcOmJuxowZnvW5cuWSpUuXSv/+/U2g0uAVEREhY8eO9et+AwCAwBTkOI4jOZyOqtMica13yoxuu8rDl2X4fQI5xfEJHfy9CwACXNJt5AC/z+MEAACQXRCcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAAMjM4Va1aVX799dcblickJJh1AAAAgShdwen48eNy7dq1G5YnJyfLzz//nBH7BQAAkOWE3M7G//73vz2XV6xYIaGhoZ7rGqRiYmKkcuXKGbuHAAAA2TE4denSxZwHBQVJRESEz7rcuXOb0PT2229n7B4CAABkx+B0/fp1c16lShXZvn27lCxZMrP2CwAAIHsHJ9exY8cyfk8AAAACMTgprWfSU3x8vKclyjV79uyM2DcAAIDsH5zGjBkjY8eOlcaNG0vZsmVNzRMAAECgS1dwmjlzpsydO1d69+6d8XsEAAAQSPM4Xb58WZo3b57xewMAABBowen555+XBQsWZPzeAAAABFpX3aVLl2TWrFmyevVqqV+/vpnDydukSZMyav8AAACyd3D67rvvpGHDhubyvn37fNZRKA4AAAJVuoLT2rVrM35PACAHqDx8mb93Aci2jk/okD1rnAAAAHKidAWnRx55RFq1apXmydZ7771naqSKFCliTs2aNZPly5f71FINGDBASpQoIYUKFZLu3btLXFycz32cOHFCOnToIAUKFJDSpUvL0KFD5erVq+l5WgAAABnfVefWN7muXLkiu3fvNvVOKQ/+ezPly5eXCRMmSPXq1cVxHJk3b5507txZvv32W7nnnntk8ODBsmzZ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vHnzmlF43icAAIBsG5yqVKliwk9MTIxnmdYiae1Ss2bNzHU9T0hIkJ07d3q2WbNmjVy/ft3UQgEAAATMqDqdb+nw4cM+BeG7d+82NUoVK1aUQYMGyZ///GepXr26CVJvvPGGGSnXpUsXs33t2rWlXbt20rdvXzNlwZUrVyQyMtKMuGNEHQAACKjgtGPHDnnkkUc814cMGWLOIyIiZO7cufLqq6+auZ50XiZtWWrRooWZfiBfvnye23z88ccmLLVu3dqMpuvevbuZ+wkAACCjBTk6YVIOp12AOrpOC8Uzo96p8vBlGX6fQE5xfEIHCSR8HwBZ7/vgdnJAlq1xAgAAyGoITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAADktOE2fPl0qV64s+fLlkwceeEC2bdvm710CAAABJiCC0z//+U8ZMmSIjBo1Snbt2iUNGjSQ8PBwiY+P9/euAQCAABIQwWnSpEnSt29f+cMf/iB16tSRmTNnSoECBWT27Nn+3jUAABBAsn1wunz5suzcuVPatGnjWRYcHGyub9682a/7BgAAAkuIZHO//PKLXLt2TcqUKeOzXK//8MMPqd4mOTnZnFyJiYnmPCkpKVP28Xryb5lyv0BOkFn/L/2F7wMg630fuPfrOE7gB6f0iI6OljFjxtywvEKFCn7ZHwBpC53i7z0AkFO+D86dOyehoaGBHZxKliwpuXLlkri4OJ/lej0sLCzV20RFRZlictf169fl7NmzUqJECQkKCsr0fUbWoX9laGCOjY2VIkWK+Ht3APgR3wc5l+M4JjSVK1fulttm++CUJ08eadSokcTExEiXLl08QUivR0ZGpnqbvHnzmpO3okWL3pH9RdakX5J8UQJQfB/kTKG3aGkKmOCktPUoIiJCGjduLPfff79MmTJFLly4YEbZAQAAZJSACE49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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Count plot for Sex\n", + "sex_counts = df['Sex'].value_counts()\n", + "plt.figure(figsize=(6, 4))\n", + "plt.bar(sex_counts.index, sex_counts.values)\n", + "plt.title('Passenger Count by Sex')\n", + "plt.xlabel('Sex')\n", + "plt.ylabel('Count')\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "id": "3bd5a2a3", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAANBtJREFUeJzt3Ql4VOXZ//E7gRD2hDWAsqnsawUE1KJAZBEQCliwFKMvYqWAAhUxym4riAqKBUGLBBeKYkUEBWRVKqAsRSEIggVBWYIiYdEsJOe97uf/nvnPhGELSc7kyfdzXeNk5pyZ88zJyPxyP8uEOY7jCAAAAPK9cK8bAAAAgJxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwA4ACZvz48RIWFiY//vijhIp169aZNuk1gOwj2AH5TEJCgvkAdC9FixaV2rVry5AhQ+TYsWNeN89KixYtks6dO0v58uWlSJEiUqVKFfn9738va9askVBw+PBhE9a2b98uoSjUzx9gk8JeNwBA9kycOFFq1qwpKSkp8u9//1tefvll+eijj2Tnzp1SvHhxr5tnBf0q7f/5n/8xYfo3v/mNjBgxQipVqiRHjhwxYaV9+/by2Wefyc033+x5sJswYYLUqFFDmjZtKqEiv5w/wCYEOyCf0gpI8+bNzc8PPPCAlCtXTqZOnSqLFy+We+65x+vm5QuZmZmSlpZmqp7BPP/88yaUDBs2zJxbrZC6nnzySXnjjTekcGH+Gb0Qzh+Q9+iKBSzRrl07c71//35z/dxzz5lKiAa+YsWKSbNmzeTdd98973ErV66UW2+9VaKjo6VkyZJSp04deeKJJwL2eemll6RBgwamElimTBkTKOfPnx+wzw8//GCqMzExMRIZGWn2f+2114KOo3rnnXfkb3/7m1x77bUmVGnlZt++fee1bcaMGXLdddeZ9t90002yfv16uf32283FX2pqqowbN05uuOEGc+yqVavKY489Zu73p8fWLuu33nrLtE/3Xb58edDz+euvv8qkSZOkbt265lz6hxJX//79Tbtc//3vf+Xuu++WsmXLmnPVqlUr+fDDD4N2pR84cOCSY8z0dTZs2FB27dolbdu2Nc95zTXXyJQpUwIe16JFC/Pz/fff7+ui1+Ncio6x0y7R0qVLm/fJI488YirArttuu02aNGkS9LH6PunYseMFnzs75y8r/X3r+axWrZrv9zp8+HDz3P6OHj1qXru+n3S/ypUrS/fu3QPO8ZYtW0x7tTtY309a7db3K2Ab/lQCLPHtt9+aa/2AVi+++KLcdddd0q9fP1OVWrBggfmQXLp0qXTp0sXsk5iYKF27dpXGjRubrl39UNSApd1jrldffVUefvhh6d27t++D/6uvvpLPP/9c/vCHP5h9dGyfhhg3OFWoUEGWLVsmAwYMkFOnTpmKjb/JkydLeHi4PProo5KcnGyCirZTn9OlXcv6XL/97W/Nh7l+SPfo0cMES/0A96+66evU7ugHH3xQ6tWrJzt27JBp06bJN998I++//37AsXVclwZLfW79kNfuy2D0+U6cOGHaXqhQoUuefz0HGqR/+eUXc7709zBv3jzTNg3Uv/vd7yQ7fv75Z+nUqZP07NnThDB9rlGjRkmjRo1M1VZfr/7uxo4da16/ni91Od2b+nz6+jWAbdq0SaZPn26O9/rrr/uC18CBA033vgZM1+bNm825HT169AWf+0rPXzALFy4053PQoEHmfH7xxRfmj4zvv//ebHP16tXLvJeHDh1qXk9SUpL5g+XgwYO+2x06dDDvy8cff9z8EaPvp/feey9b7QJCmgMgX5k7d66j/+uuWrXKOX78uHPo0CFnwYIFTrly5ZxixYo533//vdnvl19+CXhcWlqa07BhQ6ddu3a++6ZNm2aeS5/nQrp37+40aNDgom0aMGCAU7lyZefHH38MuL9v375OVFSUry1r1641x6tXr56Tmprq2+/FF1809+/YscPc1m36elq0aOGkp6f79ktISDD73Xbbbb773njjDSc8PNxZv359wLFnzZpl9v3ss8989+lt3TcxMfGir8e/TYsWLXIux7Bhw8z+/u04ffq0U7NmTadGjRpORkZGwO9v//79AY93z41eu/R16n2vv/667z49N5UqVXJ69erlu2/z5s1mP33uyzFu3Diz/1133RVw/5///Gdz/5dffmlunzx50ilatKgzatSogP0efvhhp0SJEs6ZM2dy7PwFe/1Z38Nq0qRJTlhYmPPdd9+Z2z///LN53LPPPnvB59Y26D56ngDb0RUL5FOxsbGmAqHdU3379jXdqDogXbvqlHY3ubQKo5UxreZs27bNd79WLpSOy9PKVzC6j1ZItEoT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WcPO39SpU7PfIgAAAORdsPvqq6+kadOm5uedO3cGbGMiBQAAQD4KdmvXrs35lgAAACDvx9gBAADAkopd27ZtL9rlumbNmqtpEwAAAPIq2Lnj61zp6emyfft2M94uLi4uO08JAAAAL4LdtGnTgt4/fvx4OXPmzNW2CQAAAF6PsfvjH//I98QCAADYEOw2btwoRYsWzcmnBAAAQG52xfbs2TPgtuM4cuTIEdmyZYuMGTMmO08JAAAAL4JdVFRUwO3w8HCpU6eOTJw4UTp06HC1bQIAAEBeBbu5c+dm52EAAAAItWDn2rp1q3z99dfm5wYNGshvfvObnGoXAAAA8iLYJSUlSd++fWXdunUSHR1t7jt58qRZuHjBggVSoUKF7DwtAAAA8npW7NChQ+X06dOSmJgoJ06cMBddnPjUqVPy8MMPX017AAAAkJcVu+XLl8uqVaukXr16vvvq168vM2bMYPIEAABAfqrYZWZmSkRExHn36326DQAAAPkk2LVr104eeeQROXz4sO++H374QYYPHy7t27fPyfYBAAAgN4Pd3//+dzOerkaNGnL99debS82aNc19L730UnaeEgAAAF6Msatataps27bNjLPbvXu3uU/H28XGxl5tewAAAJAXFbs1a9aYSRJamQsLC5M77rjDzJDVS4sWLcxaduvXr89uWwAAAJBXwe6FF16QgQMHSunSpYN+zdif/vQnmTp16tW0BwAAAHkR7L788kvp1KnTBbfrUif6bRQAAAAI8WB37NixoMucuAoXLizHjx/PiXYBAAAgN4PdNddcY75h4kK++uorqVy58pW2AQAAAHkd7O68804ZM2aMpKSknLft119/lXHjxknXrl1zol0AAADIzeVORo8eLe+9957Url1bhgwZInXq1DH365In+nViGRkZ8uSTT15pGwAAAJDXwS4mJkY2bNgggwYNkvj4eHEcx9yvS5907NjRhDvdBwAAAPlggeLq1avLRx99JD///LPs27fPhLtatWpJmTJlcqeFAAAAyL1vnlAa5HRRYgAAAOTj74oFAABA6CHYAQAAWIJgBwAAYAmCHQAAgCUIdgAAAJYg2AEAAFiCYAcAAGAJgh0AAIAlCHYAAAAF/ZsncOVqPP6h101APnZgchevmwAACHFU7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACw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AAAASxDs4KlPP/1UunXrZhZd1MWh33//fa+bBGT7G21atGghpUqVkooVK5p1Nffs2eN1s4Bsefnll6Vx48a+tetat24ty5Yt87pZuAwEO3hK1xts0qSJzJgxw+umAFflk08+kcGDB8umTZtk5cqVkp6eLh06dDDvcSC/ufbaa2Xy5MmydetW2bJli7Rr1066d+8uiYmJXjcNl8CsWIQMrdgtWrTI9w0iQH6ma2tq5U4DX5s2bbxuDnDVypYtK88++6wMGDDA66agIKxjBwChJDk52fdhCORnGRkZsnDhQlN91i5ZhDaCHQDkMP2+6mHDhsktt9wiDRs29Lo5QLbs2LHDBLmUlBQpWbKk6VGpX7++183CJRDsACCH6Vi7nTt3yr///W+vmwJkW506dWT79u2m+vzuu++a72TXoQWEu9BGsAOAHKRfbbh06VIz41sHoAP5VZEiReSGG24wPzdr1kw2b94sL774osyePdvrpuEiCHYAkAN0HtrQoUNNd9W6deukZs2aXjcJyPEhBqmpqV43A5dAsIOnzpw5I/v27fPd3r9/vyn964DzatWqedo24Eq7X+fPny+LFy82a9kdPXrU3B8VFSXFihXzunnAFYmPj5fOnTubf4dPnz5t3tv6B8uKFSu8bhougeVO4Cn9h6Jt27bn3a9jORISEjxpE5Dd5XqCmTt3rtx333153h7gauiSJqtXr5YjR46YP050seJRo0bJHXfc4XXTcAkEOwAAAEvwzRMAAACWINgBAABYgmAHAABgCYIdAACAJQh2AAAAliDYAQAAWIJgBwAAYAmCHQAAgCUIdgBgEf2Wix49enjdDAAeIdgB8DSE6Fdx6aVIkSJyww03yMSJE+XcuXNeNy0k6RcFvfLKK9KyZUspWbKkREdHS/PmzeWFF16QX375xevmAQgBBDsAnurUqZP5Psq9e/fKX/7yFxk/frw8++yzUlClpaVdcFv//v1l2LBh0r17d1m7dq1s375dxowZI4sXL5aPP/44T9sJIDQR7AB4KjIyUipVqiTVq1eXQYMGSWxsrHzwwQdm29SpU6VRo0ZSokQJqVq1qvz5z3+WM2fO+B773XffSbdu3aRMmTJmnwYNGshHH31ktv3888/Sr18/qVChghQrVkxq1aolc+fO9T320KFD8vvf/95UvcqWLWvC0oEDB87r0nzuueekcuXKUq5cORk8eLCkp6f79tFA2qVLF/P8NWvWlPnz50uNGjVMBc118uRJeeCBB0w7SpcuLe3atZMvv/zSt12DbNOmTeUf//iHeY6iRYsGPU/vvPOOvPXWW/LPf/5TnnjiCWnRooU5lrZ7zZo10rZt26CPW758udx6663mdepr6Nq1q3z77bcBQXLIkCHmNeqx9fcwadIkX4VQ21etWjXze6pSpYo8/PDDV/gbBpCXCufp0QDgEjQk/fTTT+bn8PBwmT59ugk8//3vf02we+yxx2TmzJlmuwYtDSaffvqpCXa7du0yXZRKK1l6e9myZVK+fHnZt2+f/Prrr2abhrOOHTtK69atZf369VK4cGH561//aqqHX331lekWVloV08Cj1/r4Pn36mBA2cOBAs/3ee++VH3/8UdatWycREREyYsQISUpKCng9d999t3lN2o6oqCiZPXu2tG/fXr755hsTKJU+97/+9S957733pFChQkHPi4a6OnXqmCCXlXZl63MHc/bsWdOuxo0bm1A8duxY+d3vfmeqfe751SCtwVEDnAZevSht07Rp02TBggUmNB89ejQglAIIQQ4AeCQuLs7p3r27+TkzM9NZuXKlExkZ6Tz66KNB91+4cKFTrlw53+1GjRo548ePD7pvt27dnPvvvz/otjfeeMOpU6eOOaYrNTXVKVasmLNixQpf26pXr+6cO3fOt8/dd9/t9OnTx/z89ddfO/pP6ObNm33b9+7da+6bNm2aub1+/XqndOnSTkpKSsDxr7/+emf27Nnm53HjxjkRERFOUlLSRc9VvXr1nLvuuuui+2Q9p8EcP37ctHHHjh3m9tChQ5127doFnAvX888/79SuXdtJS0u75HEBhAa6YgF4aunSpabKpt2AnTt3NlUx7f5Tq1atMtWta665RkqVKmXGmGk1z50ooN2CWmm75ZZbZNy4caba5tJuXa00aYVNq3wbNmzwbdOqk1bJ9Dn12HrR6llKSkpAN6VWqfwraFq9cytye/bsMZW+G2+80bddJ39ot7D/cbRKpl2g7nH0sn///oDjaPendtVejHaLZoeOXbznnnvkuuuuM13B2n2rDh486Oty1uqdVgP1fPqP1dNqo1Y59bFapVy0aBETW4AQR7AD4CkdG6bBQgOIhoh58+aZblUd76bjwbQLUbsEt27dKjNmzAiYYKBj17SLVgPfjh07zAzRl156yWzTkKhj8IYPHy6HDx82AfHRRx812zRsNWvWzBzX/6Ldo3/4wx98bdPu1axdnpmZmZf92vQ4GgazHkdD4ciRI3376eu9lNq1a8vu3bvlSukYxBMnTsirr74qn3/+ubn4n0MNpho0n3rqKXP+ddxh7969zTYd16ht1a5v7U7WrvA2bdoEjDMEEFoIdgA8paFGK106vksrYC4Nchqinn/+eWnVqpUJNhrQstLw8dBDD5nxaTqrVgOMS6tgcXFx8uabb5oJDbpUiBtmNEhWrFjRHNv/cqGxallphUurV//5z39892kVUCdtuPQ4Oi5NX1fW4+i4vyuhgVODp86ADVbNS05OPu9+rW5qMBs9erQJtvXq1Qton0sreVop1XP39ttvmyCtYVBpoNNwqGPxdCzhxo0bTYgGEJoIdgBCkoYfrQxpBU6rcm+88YbMmjUrYB9d+mPFihWm4rRt2zYzyUHDi9JJAhqCNGwlJiaaLl93m86W1WClExF08oQ+XkOLdkV+//33l9W+unXrmhm8Dz74oHzxxRcm4OnPGoS0sqd0u07Q0Nm12sWpVUjtEn7yySdly5YtV3Q+tJKm4Uu7VZ9++mnzeK1I6uvS4+hrz0q7hbUbWAOtngedPasTKfzpzGOdaavVQA2OCxcuNLOUdRZtQkKCzJkzR3bu3Gl+BxqQ9fVp1zGA0ESwAxCSmjRpYkLHM888Iw0bNjSzQt1lOFwZGRlmZqwGNp3RqlU9d8aszmyNj483Xbnafahj5XTMnSpevLiZSatVwp49e5rHDxgwwIyx0+rV5Xr99dclJibGPL/ONNVxaDpuz12yRAOeLr+i2++//37Tvr59+5pApo+7EvpcupyKnpP3339fbrvtNvPadDyiBlSd5ZuVznrV16zVTz2H2i2ddY1Abe+UKVNMN7YuoaLhU9usj9Vwp1U8HcOox9Ixj0uWLDFhEUBoCtMZFF43AgBsoNU+7Rp2J30AQF4j2AFANmnXpk6Q0EWUdbFinX37ww8/mC7NrBMvACAvsEAxAGSTjgHUb4HQ8WfapXnzzTebLmNCHQCvULEDAACwBJMnAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAADEDv8LuNnP2KA9vA0AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Count plot for Pclass\n", + "pclass_counts = df['Pclass'].value_counts().sort_index()\n", + "plt.bar(pclass_counts.index.astype(str), pclass_counts.values)\n", + "plt.title('Passenger Count by Class')\n", + "plt.xlabel('Passenger Class')\n", + "plt.ylabel('Count')\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "7f2f2d4c", + "metadata": {}, + "source": [ + "**Boxplot of Age by Survival**\n", + "\n", + "In descriptive statistics, a box plot or boxplot is a method for demonstrating graphically the locality, spread and skewness groups of numerical data through their quartiles.\n", + "In addition to the box on a box plot, there can be lines (which are called whiskers) extending from the box indicating variability outside the upper and lower quartiles.\n", + "Outliers that differ significantly from the rest of the dataset[2] may be plotted as individual points beyond the whiskers on the box-plot. Box plots are non-parametric: they display variation in samples of a statistical population without making any assumptions of the underlying statistical distribution.\n", + "\n", + "[Boxplot - Wikipedia](https://en.wikipedia.org/wiki/Box_plot)\n", + "\n", + "**Elements of Box Plot**\n", + "\n", + "A box plot gives a five-number summary of a set of data which is:\n", + "\n", + "- Minimum – It is the minimum value in the dataset excluding the outliers.\n", + "- First Quartile (Q1) – 25% of the data lies below the First (lower) Quartile.\n", + "- Median (Q2) – It is the mid-point of the dataset. Half of the values lie below it and half above.\n", + "- Third Quartile (Q3) – 75% of the data lies below the Third (Upper) Quartile.\n", + "- Maximum – It is the maximum value in the dataset excluding the outliers.\n", + "\n", + "![Elements of a boxplot](img\\boxplot-660x233.png)\n", + "\n", + "The area inside the box (50% of the data) is known as the Inter Quartile Range. The IQR is calculated as:\n", + "\n", + "$IQR = Q3-Q1$\n", + "\n", + "Outlies are the data points below and above the lower and upper limit. The lower and upper limit is calculated as:\n", + "\n", + "$Lower Limit = Q1 - 1.5*IQR$\n", + "\n", + "$Upper Limit = Q3 + 1.5*IQR$\n", + "\n", + "The values below and above these limits are considered outliers and the minimum and maximum values are calculated from the points which lie under the lower and upper limit.\n", + "\n", + "[Boxplot -geeksforgeeks](https://www.geeksforgeeks.org/box-plot/)" + ] + }, + { + "cell_type": "markdown", + "id": "d78ee627", + "metadata": {}, + "source": [ + "Here, we use a boxplot to examine how age varies between passengers who survived and those who did not." + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "id": "0a5daf14", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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4Em/91W/fcRzhDUAu9HHDshD/fI8aV+3t956y8zp1aBBA7+VC4FJ59j7+eefTZMsgPyDPnZAHqHTTmi40xGp2lFfB1/odBb69Uy+nhoEeZdOR6PzuekIZB2IcKWJfgHYh2AH5BHaeV//WOvIQx11qp36tcZOR9ACLjqgYcyYMWYEq363sOc3YgCwH33sAAAALEEfOwAAAEsQ7AAAACxhfR87nZ1fZybXSSx9+RVGAAAAuUF7zemk9vqVeVebwNv6YKehLjIy0t/FAAAAyBb9yr4KFSrk72Dn+qJyfTF0vi8AAIC8RL/aUSupXJkmXwc7V/OrhjqCHQAAyKsy06WMwRMAAACWINgBAABYgmAHAABgCYIdAACAJQh2AAAAliDYAQAAWIJgBwAAYAmCHQAAgCUIdgAAAJYg2AEAAFiCYAcAAGAJvwa7y5cvywsvvCBVqlSR8PBwqVq1qrz88sviOI77GP3/qFGjpFy5cuaY6Oho2bNnjz+LDQDANf/dW7NmjXz00UfmVtcBa4LdhAkTZPr06fL222/Ljh07zPrEiRPlrbfech+j62+++abMmDFDNmzYIEWKFJGYmBhJSkryZ9EBAMiSzz//XKpVqyatW7eWHj16mFtd1+2AFcHuhx9+kE6dOkn79u2lcuXKct9998ldd90lP/74o7u2bsqUKfL888+b4+rVqycffvihHD58WBYvXuzPogMAkGka3vRvXN26dWXdunVy5swZc6vrup1wByuCXbNmzWT16tWye/dus75161ZZu3attGvXzqzv27dP4uPjTfOrS4kSJaRx48bmFwIAgECnza3Dhg2TDh06mEqJJk2aSNGiRc2truv2Z599lmZZ+ESI+NFzzz0np0+flqioKClQoIB5U48bN0569uxp9muoU2XLlvW6n6679qWWnJxsFhc9PwAA/vLdd9/J/v37Tb+64GDv+hRdj42NNRUdelyrVq38Vk7Ywa81dp988onMmzdP5s+fL1u2bJEPPvhAXnvtNXN7reLi4kytnmuJjIz0aZkBAMiKI0eOmNs6deqku9+13XUckGeD3fDhw02t3QMPPGD6GTz00EMyZMgQE85URESEuT169KjX/XTdtS81/eSTmJjoXg4ePJgLzwQAgPTprA5q27Zt6e53bXcdB+TZYHfu3Lk01dLaJJuSkmL+r9OgaIDTfnieTas6OrZp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uhjqp+zExER57733pH79+lKlShVp3bq1TJ482fxfzZkzR0qWLHnFGkRXk6qeR++n4fSdd94xAVG/h9hTp06dpG/fvl73U19++aW5X+qmlkGDBkmbNm3c62vXrpWWLVtKeHi4+R7JZ555xiuEak1jx44dzX4ty7x58674OgLIHP3d/O6778wHT71OVKpUSW6//XaJjY01tf779+8314Wff/7Z6z66TZtSPZtUly9fLg0bNjTXr/fff99s27lzp9fj6XWoatWqXvfT8+l3yOrvt57D06JFi8z3nZ87d86s63fMdu/e3Vy/9MOrXnu0jC6XL1+WoUOHmv36AXPEiBEmaCJ/INgh1xQoUEDGjx8vb731lhw6dCjdYzZv3mwuWA888ID8+uuvJiC98MILJoSpzz//3Hz375gxY0zzhS7p0QCpn5b1gpjdC9rvv/9uwqY+tl7Yu3XrZj7Ff/311+5j/vrrL1mxYoX07Nkzzf215lAvsHoOzwvvxx9/7D5+7969cvfdd5tag19++cXs06D39NNPezVn6wVdH/fTTz+VadOm5UqzMmA7rWHXRT/YJScnZ+tczz33nOlyoq0E9913n9x2221pPoTpeo8ePdLcV783tkOHDjJ//vw0x2v/uMKFC8vFixdNE7EGPQ2j+iFWy67XD1eLgn4Y1mumBku9juj1Sa+FyCd0gmIgp/Xu3dvp1KmT+X+TJk2cvn37mv8vWrRIU5f7uB49ejht27b1uu/w4cOd2rVru9crVarkTJ48+aqPOXLkSCckJMQpVaqUc/fddzsTJ0504uPj3ftnz57tlChRwus+qcszevRop2DBgs6xY8e8jtPn4noOaubMmU758uWdy5cvu+93yy23uPcPGjTIadOmjXt95cqVTlhYmHPq1Cmz3q9fP+fxxx/3eozvvvvOCQ4Ods6fP+/s2rXLlOvHH39079+xY4fZlpnXAsCVffrpp851113nFCpUyGnWrJkTGxvrbN261ezbt2+f+V376aef3Mfr765u+/rrr8263ur64sWLvc6rv59Vq1Z1r7t+l/X31/N+rmuBXoOKFi3qnD171qwnJiaaMi1fvtys//vf/3Zq1qzppKSkuM+ZnJzshIeHm+uKKleunLneuVy8eNGpUKGC+xoMu1Fjh1ynzR3aj0U/0aam25o3b+61Tdf37NljarmyYty4cRIfHy8zZswwTbt6GxUVZWoCs0KbZW644QavbVrTpjVwrk/3+olaaxmDg9P/ldLjtcnl8OHD7uPbt2/vbgrWgR76CdtVc6CLfirX5t59+/aZ1yUkJMQ08bjoc0ndlAzg2mhtuf5+at86rf3S39cGDRq4WwsyS2voPOl1QZtJ169f7/7d1/Pq7296/vnPf0rBggVNOZReZ7QmT7uyuK4V2oqgNXaua4U2xyYlJZmaf+2Coi0ZjRs3dp9Trx2pywV7EeyQ6/7xj3+Y0KL9V3Ka9i/RptPXXnvNhCPtG6f/VxrCUjfTajNHakWKFEmzTfu66X2XLVtmmke1SSS9ZliXRo0amT41CxYskPPnz5tmEc/j//77b+nfv79p6nUtegHXQOvqiwMgZ2lf2LZt25ruHz/88IPp/qDf6er6wOZ5vUjvWpHe9UK7hWhfWlfzqt5e6Vqhgym0CdfzeB3Nr+HMda3QD3ie1wpddMBHes27yH/+/3cKkMu0D4oOLqhZs6bX9lq1aqWZXkDXa9SoYfrouS58Wa29c91PQ5JrQILWwp05c8asuy7Gnp2jr/YHoEuXLubTt3561uehn8KvRC/merz2EdQ/FFpj56L33b59u1SrVi3d++qne+0zqH0QNSSqXbt25fjcV0B+Vrt2bdPvzlVjrzVhOhgrK9cK1+++DmB48MEH5Y8//jC1eFc7XgPmb7/9Jl999ZWMHTvW61qhfXB1GietyUtPuXLlZMOGDeZDtHJdO652jYIl/N0WjPzXx87loYceMn1HPN+GmzdvNv3KxowZY/qizJkzx/Qd0f5wLtoH75577nEOHTrkHD9+PN3H++KLL5yePXuaWz3Pzp07nVdffdUpUKCA8+GHH5pjTp486RQpUsR55plnnN9//92ZN2+e6SeXuo+dZ185T6tWrTL95LS/y8svv+y1L7377dmzx5y7Xr16pk+dJ+3Lo89zwIABph/P7t27TV8dXXfRfoL169d31q9f72zatMlp0aKFuQ997IDsOXHihNO6dWvTf01/F//44w/nk08+ccqWLevuS6t9g1u2bOls377dWbNmjXP77ben28fO1VfO0+nTp83vql4T7rzzTq996d1P+89FRkaa4z375ynte1e9enWnVatWzrfffmvKqucYOHCgc/DgQXPMK6+8YvoWa3897cv32GOPOcWKFaOPXT5BsIPfgp12SA4NDfUKUq5OzDpYQgctVKxY0QQyT+vWrTPhSENVRp9N9u7day5mNWrUMBfUkiVLOo0aNfIKiEovfNWqVTPHdOjQwXnnnXcyHex0oIR2Utbj9fE8ZXQ/1x+Dr776Ks0+HRihoVU7Tmvg1Oc4btw49/4jR4447du3N89bXxcNqJkdSAIgY0lJSc5zzz3nNGjQwAyoKly4sPnA9vzzzzvnzp0zx2iga9q0qblW3Hrrrc6XX36Z6WCnunfvbva///77Xtszut+IESPM9lGjRqU5l14LHn74Yef6668314ObbrrJXO90oIVrsIQO2CpevLi59g0dOtQcT7DLH4L0H3/XGgIAACD7GDwBAABgCYIdAACAJQh2AAAAliDYAQAAWIJgBwAAYAmCHQAAgCUIdgAAAJYg2AEAAFiCYAcAAGAJgh0AAIAlCHYAAACWINgBAACIHf4/6HEAIEjhFuoAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "survived_0 = df[df['Survived'] == 0]['Age'].dropna()\n", + "survived_1 = df[df['Survived'] == 1]['Age'].dropna()\n", + "\n", + "plt.boxplot([survived_0, survived_1], tick_labels=['Not Survived', 'Survived'])\n", + "plt.title('Age Distribution by Survival')\n", + "plt.ylabel('Age')\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "7d7b8d4b", + "metadata": {}, + "source": [ + "**Correlation Heatmap**\n", + "\n", + "A correlation heatmap is a graphical tool used in statistics and data analysis to visualize the **strength** and **direction** of relationships between multiple numerical variables simultaneously. It displays a correlation matrix where each variable is represented both as a row and a column, and each cell shows the correlation coefficient between the pair of variables it intersects.\n", + "\n", + "The values in the heatmap cells are correlation coefficients, typically Pearson’s correlation, which range from -1 to 1. A value of 1 indicates a perfect positive **linear relationship** (as one variable increases, the other increases), -1 indicates a perfect negative **linear relationship** (one variable increases as the other decreases), and 0 indicates no linear relationship\n", + "\n", + "In preprocessing, identifying highly correlated variables is crucial. Variables with very high positive or negative correlations (e.g., above 0.7 or below -0.7) may indicate redundancy or multicollinearity, which can affect model performance. Heatmaps help pinpoint such variables for potential removal or transformation" + ] + }, + { + "cell_type": "code", + "execution_count": 177, + "id": "910a7faa", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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6PufffaZVaNGDevpp5+2Ll68aJlGZGSk/l22bJk1f/58/feNGzes33//3WrTpo1VqlQpq1KlStbChQutOnXqWM2bN7euX79umXgMp0+fti5fvqzte+6556yKFSta6dOn13M/cuRI6+TJk1a1atWsrl27+rvJAcXhw4etJ554wtq9e7fe1//++6/eB5kzZ7Z27drlcg0eNvjdoX023333nZUnTx6rWLFiVsmSJa39+/f7pV0kevC8ee+99/R6QRYXLVoU7fZ//fWXlTJlSqtXr17WH3/8YY0fP95KlCiRtXz5cstXUKyDCDwISpQoYa1du1Zf//zzz1ayZMmsqVOnumw3bNgw6/XXX7fu3btnmYL7w7VLly5WSEiI/nic2bBhgzVgwAArbdq0+j7E++rVq5Zpx/H9999bTz75pPX111/r6507d+q/J02apOJi06RJE70eJGbndfr06VaVKlWsunXraifI+R6uX7++Vb58eb/d17gPH3nkEe00HDt2zDpz5oz+e+zYsdasWbOsZs2aWalTp7bWr1/vl/aRmBETse7Tp492vpxp2bKlVa9ePctXUKyDCFgVZcuW1X9D5MLCwlQcwLVr16zFixff9/AzSbDB1q1bta1oH3qt6K26CzY4ePCg9fHHH+tf08APPUWKFNYnn3yiD21PQLDRk8+SJYt16NChh97GQAFWy9mzZ/Xf//33nzVkyBC1UgsUKODYBuvBmjVrrNy5c+s+/uL48ePaaciVK5e1ZMkSvcY26Fy0bdtWBRudTnI/uJbo9Hi7XLly5b51t27dijexhnfyjTfecFk3bdo0K02aNF4df7Tt8tknE5/iLLJ3797Vv3/++aeVL18+q3///mp52kINtm3bpq5DWHg2/nIVRgUEDJbJ22+/ra/xg3vzzTdVsO0fD47bPnbTOhrgxIkT6t2wzz2uDTof69ats44cOaLr4N5v3769Csuvv/7q5xaby9y5c63KlStbHTp0cAzj4O+4ceOsjBkzqvC5d/RwTjFk8rBx/i3hHoBXBZ4fWNPO2IKdIUMGa9WqVQ+9naYLdXpJpGLp7RIWFnbfuoEDB8abWBcuXNj66KOPXNb9+OOPum94eLjlC1gUJcCDyTDtI0BwBCaqQBnRUaNGSceOHR2TWyAgC0E4iJZF9S8b09Jc0L6qVatqwBVA+lX//v3134gGR5pZ06ZN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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "corr = df.select_dtypes(include=[np.number]).corr()\n", + "\n", + "plt.matshow(corr, cmap='coolwarm')\n", + "plt.colorbar()\n", + "\n", + "plt.xticks(range(len(corr.columns)), corr.columns, rotation=45)\n", + "plt.yticks(range(len(corr.columns)), corr.columns)\n", + "\n", + "plt.title('Correlation Heatmap of Numeric Features', pad=20)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "3532d9c4", + "metadata": {}, + "source": [ + "**Exercises**\n", + "\n", + "Compare 3 different columns and their relation between them" + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "id": "33251565", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "selected_cols = df[['Age', 'Survived', 'Pclass']]\n", + "\n", + "# Compute correlation matrix\n", + "corr_selected = selected_cols.corr()\n", + "\n", + "# Plot the correlation heatmap\n", + "fig, ax = plt.subplots(figsize=(6, 4))\n", + "cax = ax.matshow(corr_selected, cmap='coolwarm')\n", + "fig.colorbar(cax)\n", + "\n", + "# Set axis ticks and labels\n", + "ax.set_xticks(range(len(corr_selected.columns)))\n", + "ax.set_yticks(range(len(corr_selected.columns)))\n", + "ax.set_xticklabels(corr_selected.columns, rotation=45, ha='left')\n", + "ax.set_yticklabels(corr_selected.columns)\n", + "\n", + "plt.title('Correlation: Age, Survived & Pclass', pad=20)\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "0224a37f", + "metadata": {}, + "source": [ + "## Exploring Feature Relationships\n", + "\n", + "Before performing any advanced analysis or modeling, it is essential to explore and understand the underlying structure of the dataset. One fundamental tool for this process is the groupby function in the pandas library, which allows for the aggregation and summarization of data based on one or more categorical features. By grouping data, we can uncover patterns, compare subsets, and derive meaningful insights that would otherwise remain hidden in raw tables. The following exercises are designed to develop familiarity with groupby operations and demonstrate how systematic data exploration leads to a deeper understanding of trends, distributions, and relationships within the data." + ] + }, + { + "cell_type": "markdown", + "id": "0c68fa63", + "metadata": {}, + "source": [ + "### Grouped statistics\n", + "\n", + "Pandas [DataFrame.groupby()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html) function is a powerful tool used to split a DataFrame into groups based on one or more columns, allowing for efficient data analysis and aggregation. It follows a “split-apply-combine” strategy, where data is divided into groups, a function is applied to each group, and the results are combined into a new DataFrame.\n", + "\n", + "The groupby() function in Pandas involves three main steps: Splitting, Applying, and Combining.\n", + "\n", + "- Splitting: This step involves dividing the DataFrame into groups based on some criteria. The groups are defined by unique values in one or more columns.\n", + "\n", + "- Applying: In this step, a function is applied to each group independently. You can apply various functions to each group, such as:\n", + " - Aggregation: Calculate summary statistics (e.g., sum, mean, count) for each group.\n", + " - Transformation: Modify the values within each group.\n", + " - Filtering: Keep or discard groups based on certain conditions.\n", + "\n", + "- Combining: Finally, the results of the applied function are combined into a new DataFrame or Series.\n", + "\n", + "[Pandas DataFrame.groupby() Method - geeksforgeeks](https://www.geeksforgeeks.org/python-pandas-dataframe-groupby/)\n", + "\n", + "The abstract definition of grouping is to provide a mapping of labels to group names.\n", + "For **DataFrame objects**, a string indicating either a column name or an index level name to be used to group." + ] + }, + { + "cell_type": "markdown", + "id": "72e15534", + "metadata": {}, + "source": [ + "#### Grouping by single columns\n", + "In this example, we will demonstrate how to group data by a single column using the groupby method. We will group by our categorical features, and explore how their relationship with the target feature" + ] + }, + { + "cell_type": "code", + "execution_count": 179, + "id": "89539e8c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Sex\n", + "female 0.742038\n", + "male 0.188908\n", + "Name: Survived, dtype: float64" + ] + }, + "execution_count": 179, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Calculate the average survival rate for each sex (female/male)\n", + "grouped = df.groupby(by=\"Sex\")\n", + "grouped[\"Survived\"].mean()" + ] + }, + { + "cell_type": "markdown", + "id": "ce8986a1", + "metadata": {}, + "source": [ + "This tells us that \n", + "- 74% of women passengers survived\n", + "- 18% of men passengers survived\n", + " \n", + "thus we could infer that women were more likely to survive" + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "id": "1d982743", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Pclass\n", + "1 0.629630\n", + "2 0.472826\n", + "3 0.242363\n", + "Name: Survived, dtype: float64" + ] + }, + "execution_count": 180, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Calculate the average survival rate for each passenger ticket class (1st, 2nd, 3rd)\n", + "df.groupby(by=\"Pclass\")[\"Survived\"].mean()" + ] + }, + { + "cell_type": "markdown", + "id": "1838a121", + "metadata": {}, + "source": [ + "This tells us that\n", + "- 62% of passengers in Upper class survived\n", + "- 47% of passengers in Middle class survived\n", + "- 24% of passengers in Lower class survived\n", + "\n", + "![Titanic cabin assignments through class](img\\titanic-figure-one-side-view.png)\n", + "\n", + "[Titanic cabin placement](https://www.encyclopedia-titanica.org/class-gender-titanic-disaster-1912~chapter-2~part-2.html)\n", + "\n", + "​The Titanic disaster highlighted the influence of social class on survival rates. Several factors contributed to this disparity. The ship's design placed first-class accommodations closer to the lifeboats, facilitating quicker access during the evacuation. Additionally, third-class passengers faced physical barriers and lacked clear guidance, which hindered their ability to reach lifeboats in time. These structural and procedural disadvantages underscore how deeply social hierarchies impacted survival outcomes during the tragedy.​" + ] + }, + { + "cell_type": "markdown", + "id": "0dc76e6d", + "metadata": {}, + "source": [ + "As demonstrated, it is essential to explore data in depth alongside its context, as this approach can uncover meaningful insights into model performance during inference. Understanding the background not only helps interpret results more accurately, but also sheds light on potential biases and patterns that might otherwise go unnoticed. This is particularly crucial when working with historical or real-world datasets, where external factors can significantly influence outcomes." + ] + }, + { + "cell_type": "markdown", + "id": "d484889b", + "metadata": {}, + "source": [ + "**Exercises**\n", + "\n", + "Explore the relation between the **port of embarkation** (Embarked) and the survival rate." + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "id": "e5bb3920", + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: df.groupby()[]. ..." + ] + }, + { + "cell_type": "markdown", + "id": "001d4a8d", + "metadata": {}, + "source": [ + "If we prefer, we can create a plot for better visualizing our results using matplotlib bar plot" + ] + }, + { + "cell_type": "code", + "execution_count": 182, + "id": "a51a522e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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GTPGNC01atRIli9f7upkHB8f7/E8+rwrVqyQwYMHS4MGDUzw0aAzfPjwyy4LAACwQ5BDq2NyQee40fChfV3caejwZ9p3SEdNaefiMmXK5Pn1I0csy/NrArY4NLmzr4sAIEDl5Ps7x5P4aU2LNht9+eWXXh/Pas4ZAACA/JbjtqVBgwaZ9Z10+YUSJUqYZiQdHl6rVi0zyR4AAIAv5bjm5uuvv5ZPPvnEdALW/jDakVjXe9IqIu3427kz1c4AACCAam50NJNzPhsdBq7NVKp+/fpm8UsAAICACje1a9c2q3ErXcX7jTfekCNHjphZgnW+GQAAgIBqltKh1wkJCeZ2bGysdOzYURYsWGDmunnnnXfyo4wAAAD5F2569erluq0zDP/666+yd+9eufrqq81MxQAAAL502TPxhYWFSZMmTczK4C+//HLelAoAAKAgwo12Hv78889l5cqVrvls/v77b5kxY4ZERkbK5MmTc1sOAACAgm2W2rBhg9x5551mhkBdPFOHgr/99tvStWtXCQ0NlbFjx5p1ogAAAAKi5mbUqFHSqVMn2blzp1nwcsuWLdKtWzezcOWPP/4ojz32mJnUDwAAICDCza5du0zAqVevnowfP97U3rz44oty77335m8JAQAA8iPcnDx50jUaSmtotCOxBh0AAICAHQquzU+JiYnmti4mrpP56YzFgbQqOAAAsFuOws3tt99uQo2TdjBW2kSl+/X/rAoOAAACItwcPHgwf0sCAABQkOFGV/8GAACwfoZiAAAAf0K4AQAAViHcAAAAqxBuAACAVQg3AACg8I2Waty4sZnDJju2bdt2uWUCAADI33CjK38DAABYE25iY2PzvyQAAAB5gD43AACg8K4tpXTtqFdeeUU++OADiY+Pl9TUVI/HT5w4kZflAwAAyN+am3Hjxsm0adOkR48ekpycLEOGDJG7775bgoODZezYsTm9HAAAgG/DzYIFC2T27NnyzDPPSGhoqPTs2VPmzJkjY8aMkW+//TZvSwcAAJDf4SYxMVHq169vbpcqVcrU3qg777xTli1bltPLAQAA+DbcXHXVVZKQkGBuX3PNNbJy5Upze8uWLVKsWLG8LR0AAEB+h5tu3brJ6tWrze2BAwfK6NGjpVatWtKnTx956KGHcno5AAAA346Wmjx5suu2diquXr26bNy40QScLl265G3pAAAA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Group and calculate survival rates\n", + "survival_by_sex = df.groupby(\"Sex\")[\"Survived\"].mean()\n", + "\n", + "# Extract the index and relative values from our grouped data\n", + "sex = survival_by_sex.index\n", + "rates = survival_by_sex.values\n", + "\n", + "plt.bar(x=sex, height=rates)\n", + "\n", + "# Add values on top of bars\n", + "for i, rate in enumerate(rates):\n", + " plt.text(x=i, y=rate, s=f'{rate:.2f}', ha='center', va='bottom', fontsize=10)\n", + "\n", + "plt.ylim(0, 1)\n", + "plt.title('Survival Rate by Sex')\n", + "plt.ylabel('Survival Rate')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "eade8108", + "metadata": {}, + "source": [ + "**Exercise**\n", + "\n", + "Create the plotbar for the average survival rate for each passenger ticket class" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "id": "fa8a81fc", + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: " + ] + }, + { + "cell_type": "markdown", + "id": "3600768d", + "metadata": {}, + "source": [ + "## Handling Missing Values\n", + "\n", + "It is not uncommon in real-world applications for our samples to be missing one or more values for various reasons. There could have been an error in the data collection process, certain measurements are not applicable, or particular fields could have been simply left blank in a survey, for example. We typically see missing values as the blank spaces in our data table or as placeholder strings such as NaN, which stands for not a number, or NULL (a commonly used indicator of unknown values in relational databases).\n", + "\n", + "Unfortunately, most computational tools are unable to handle such missing values, or produce unpredictable results if we simply ignore them. Therefore, it is crucial that we take care of those missing values before we proceed with further analyses. In this section, we will work through several practical techniques for dealing with missing values by removing entries from our dataset or imputing missing values from other samples and features.\n", + "\n", + "(the material of this section is a reference to *Raschka, S., & Mirjalili, V. (2019). Python machine learning: Machine learning and deep learning with Python, scikit-learn, and TensorFlow 2 (3rd ed.). Packt Publishing.*)\n" + ] + }, + { + "cell_type": "markdown", + "id": "a5ec1dba", + "metadata": {}, + "source": [ + "### Eliminating samples or features with missing values\n", + "\n", + "One of the easiest ways to deal with missing data is to simply remove the corresponding features (columns) or samples (rows) from the dataset entirely; rows with missing values can be easily dropped via the dropna method:" + ] + }, + { + "cell_type": "code", + "execution_count": 184, + "id": "daa295ab", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data set shape before dropping rows with missing values: (891, 12)\n", + "Data shape after dropping rows with missing values: (183, 12)\n" + ] + } + ], + "source": [ + "print(\"Data set shape before dropping rows with missing values:\", df.shape)\n", + "temp = df.dropna(axis=0)\n", + "print(\"Data shape after dropping rows with missing values:\", temp.shape)" + ] + }, + { + "cell_type": "markdown", + "id": "72188fc4", + "metadata": {}, + "source": [ + "Similarly, we can drop columns that have at least one NaN in any row by setting the axis argument to 1:" + ] + }, + { + "cell_type": "code", + "execution_count": 185, + "id": "a5915326", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data set shape before dropping columns with missing values: (891, 12)\n", + "Data shape after dropping columns with missing values: (891, 9)\n" + ] + } + ], + "source": [ + "print(\"Data set shape before dropping columns with missing values:\", df.shape)\n", + "temp = df.dropna(axis=1)\n", + "print(\"Data shape after dropping columns with missing values:\", temp.shape)" + ] + }, + { + "cell_type": "markdown", + "id": "f587b126", + "metadata": {}, + "source": [ + "The dropna method supports several additional parameters that can come in handy:" + ] + }, + { + "cell_type": "code", + "execution_count": 186, + "id": "7610d62c", + "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", + "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS
.......................................
88688702Montvila, Rev. Juozasmale27.00021153613.0000NaNS
88788811Graham, Miss. Margaret Edithfemale19.00011205330.0000B42S
88888903Johnston, Miss. Catherine Helen \"Carrie\"femaleNaN12W./C. 660723.4500NaNS
88989011Behr, Mr. Karl Howellmale26.00011136930.0000C148C
89089103Dooley, Mr. Patrickmale32.0003703767.7500NaNQ
\n", + "

891 rows × 12 columns

\n", + "
" + ], + "text/plain": [ + " PassengerId Survived Pclass \\\n", + "0 1 0 3 \n", + "1 2 1 1 \n", + "2 3 1 3 \n", + "3 4 1 1 \n", + "4 5 0 3 \n", + ".. ... ... ... \n", + "886 887 0 2 \n", + "887 888 1 1 \n", + "888 889 0 3 \n", + "889 890 1 1 \n", + "890 891 0 3 \n", + "\n", + " Name Sex Age SibSp \\\n", + "0 Braund, Mr. Owen Harris male 22.0 1 \n", + "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", + "2 Heikkinen, Miss. Laina female 26.0 0 \n", + "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", + "4 Allen, Mr. William Henry male 35.0 0 \n", + ".. ... ... ... ... \n", + "886 Montvila, Rev. Juozas male 27.0 0 \n", + "887 Graham, Miss. Margaret Edith female 19.0 0 \n", + "888 Johnston, Miss. Catherine Helen \"Carrie\" female NaN 1 \n", + "889 Behr, Mr. Karl Howell male 26.0 0 \n", + "890 Dooley, Mr. Patrick male 32.0 0 \n", + "\n", + " Parch Ticket Fare Cabin Embarked \n", + "0 0 A/5 21171 7.2500 NaN S \n", + "1 0 PC 17599 71.2833 C85 C \n", + "2 0 STON/O2. 3101282 7.9250 NaN S \n", + "3 0 113803 53.1000 C123 S \n", + "4 0 373450 8.0500 NaN S \n", + ".. ... ... ... ... ... \n", + "886 0 211536 13.0000 NaN S \n", + "887 0 112053 30.0000 B42 S \n", + "888 2 W./C. 6607 23.4500 NaN S \n", + "889 0 111369 30.0000 C148 C \n", + "890 0 370376 7.7500 NaN Q \n", + "\n", + "[891 rows x 12 columns]" + ] + }, + "execution_count": 186, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# only drop rows where all columns are NaN\n", + "df.dropna(how=\"all\")" + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "id": "f4e7a192", + "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", + "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS
.......................................
88688702Montvila, Rev. Juozasmale27.00021153613.0000NaNS
88788811Graham, Miss. Margaret Edithfemale19.00011205330.0000B42S
88888903Johnston, Miss. Catherine Helen \"Carrie\"femaleNaN12W./C. 660723.4500NaNS
88989011Behr, Mr. Karl Howellmale26.00011136930.0000C148C
89089103Dooley, Mr. Patrickmale32.0003703767.7500NaNQ
\n", + "

891 rows × 12 columns

\n", + "
" + ], + "text/plain": [ + " PassengerId Survived Pclass \\\n", + "0 1 0 3 \n", + "1 2 1 1 \n", + "2 3 1 3 \n", + "3 4 1 1 \n", + "4 5 0 3 \n", + ".. ... ... ... \n", + "886 887 0 2 \n", + "887 888 1 1 \n", + "888 889 0 3 \n", + "889 890 1 1 \n", + "890 891 0 3 \n", + "\n", + " Name Sex Age SibSp \\\n", + "0 Braund, Mr. Owen Harris male 22.0 1 \n", + "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", + "2 Heikkinen, Miss. Laina female 26.0 0 \n", + "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", + "4 Allen, Mr. William Henry male 35.0 0 \n", + ".. ... ... ... ... \n", + "886 Montvila, Rev. Juozas male 27.0 0 \n", + "887 Graham, Miss. Margaret Edith female 19.0 0 \n", + "888 Johnston, Miss. Catherine Helen \"Carrie\" female NaN 1 \n", + "889 Behr, Mr. Karl Howell male 26.0 0 \n", + "890 Dooley, Mr. Patrick male 32.0 0 \n", + "\n", + " Parch Ticket Fare Cabin Embarked \n", + "0 0 A/5 21171 7.2500 NaN S \n", + "1 0 PC 17599 71.2833 C85 C \n", + "2 0 STON/O2. 3101282 7.9250 NaN S \n", + "3 0 113803 53.1000 C123 S \n", + "4 0 373450 8.0500 NaN S \n", + ".. ... ... ... ... ... \n", + "886 0 211536 13.0000 NaN S \n", + "887 0 112053 30.0000 B42 S \n", + "888 2 W./C. 6607 23.4500 NaN S \n", + "889 0 111369 30.0000 C148 C \n", + "890 0 370376 7.7500 NaN Q \n", + "\n", + "[891 rows x 12 columns]" + ] + }, + "execution_count": 187, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# drop rows that have less than 4 real values\n", + "df.dropna(thresh=4)" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "id": "e53a6f15", + "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", + "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
6701McCarthy, Mr. Timothy Jmale54.0001746351.8625E46S
101113Sandstrom, Miss. Marguerite Rutfemale4.011PP 954916.7000G6S
111211Bonnell, Miss. Elizabethfemale58.00011378326.5500C103S
.......................................
87187211Beckwith, Mrs. Richard Leonard (Sallie Monypeny)female47.0111175152.5542D35S
87287301Carlsson, Mr. Frans Olofmale33.0006955.0000B51 B53 B55S
87988011Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)female56.0011176783.1583C50C
88788811Graham, Miss. Margaret Edithfemale19.00011205330.0000B42S
88989011Behr, Mr. Karl Howellmale26.00011136930.0000C148C
\n", + "

204 rows × 12 columns

\n", + "
" + ], + "text/plain": [ + " PassengerId Survived Pclass \\\n", + "1 2 1 1 \n", + "3 4 1 1 \n", + "6 7 0 1 \n", + "10 11 1 3 \n", + "11 12 1 1 \n", + ".. ... ... ... \n", + "871 872 1 1 \n", + "872 873 0 1 \n", + "879 880 1 1 \n", + "887 888 1 1 \n", + "889 890 1 1 \n", + "\n", + " Name Sex Age SibSp \\\n", + "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", + "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", + "6 McCarthy, Mr. Timothy J male 54.0 0 \n", + "10 Sandstrom, Miss. Marguerite Rut female 4.0 1 \n", + "11 Bonnell, Miss. Elizabeth female 58.0 0 \n", + ".. ... ... ... ... \n", + "871 Beckwith, Mrs. Richard Leonard (Sallie Monypeny) female 47.0 1 \n", + "872 Carlsson, Mr. Frans Olof male 33.0 0 \n", + "879 Potter, Mrs. Thomas Jr (Lily Alexenia Wilson) female 56.0 0 \n", + "887 Graham, Miss. Margaret Edith female 19.0 0 \n", + "889 Behr, Mr. Karl Howell male 26.0 0 \n", + "\n", + " Parch Ticket Fare Cabin Embarked \n", + "1 0 PC 17599 71.2833 C85 C \n", + "3 0 113803 53.1000 C123 S \n", + "6 0 17463 51.8625 E46 S \n", + "10 1 PP 9549 16.7000 G6 S \n", + "11 0 113783 26.5500 C103 S \n", + ".. ... ... ... ... ... \n", + "871 1 11751 52.5542 D35 S \n", + "872 0 695 5.0000 B51 B53 B55 S \n", + "879 1 11767 83.1583 C50 C \n", + "887 0 112053 30.0000 B42 S \n", + "889 0 111369 30.0000 C148 C \n", + "\n", + "[204 rows x 12 columns]" + ] + }, + "execution_count": 188, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# only drop rows where NaN appear in specific columns (here: 'Cabin')\n", + "df.dropna(subset=['Cabin'])" + ] + }, + { + "cell_type": "markdown", + "id": "2f1d5cb5", + "metadata": {}, + "source": [ + "Although the removal of missing data seems to be a convenient approach, it also comes with certain disadvantages; for example, we may end up removing too many samples, which will make a reliable analysis impossible. Or, if we remove too many feature columns, we will run the risk of losing valuable information that our classifier needs to discriminate between classes." + ] + }, + { + "cell_type": "markdown", + "id": "aba75388", + "metadata": {}, + "source": [ + "### Imputing missing values\n", + "\n", + "Often, the removal of samples or dropping of entire feature columns is simply not feasible, because we might lose too much valuable data. In this case, we can use different interpolation techniques to estimate the missing values from the other training samples in our dataset. One of the most common interpolation techniques is **mean imputation**, where we simply replace the missing value with the mean value of the entire feature column. A convenient way to achieve this is by using the [SimpleImputer](https://scikit-learn.org/stable/modules/generated/sklearn.impute.SimpleImputer.html) class from **scikit-learn**, as shown in the following code" + ] + }, + { + "cell_type": "code", + "execution_count": 189, + "id": "e0d2ab02", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 1. 10. 20. 4.]\n", + " [nan 15. nan 2.]\n", + " [ 6. 8. nan nan]]\n" + ] + } + ], + "source": [ + "# create a simple matrix with missing values\n", + "numerical_data = np.array([\n", + " [1, 10, 20, 4],\n", + " [np.nan, 15, np.nan, 2],\n", + " [6, 8, np.nan, np.nan]\n", + "])\n", + "\n", + "print(numerical_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 190, + "id": "265a7ad4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 1. 10. 20. 4. ]\n", + " [ 3.5 15. 20. 2. ]\n", + " [ 6. 8. 20. 3. ]]\n" + ] + } + ], + "source": [ + "imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean')\n", + "imp_mean = imp_mean.fit(numerical_data)\n", + "imputed_data = imp_mean.transform(numerical_data)\n", + "print(imputed_data)" + ] + }, + { + "cell_type": "markdown", + "id": "ac23a06a", + "metadata": {}, + "source": [ + "Here, we replaced each np.nan value with the corresponding mean, which is separately calculated for each feature column.\n", + "\n", + "Other options for the strategy parameter are median or most_frequent, where the latter replaces the missing values with the most frequent values. This is useful for imputing categorical feature values" + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "id": "b5bd80d5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[['red' 'tall' 'fast']\n", + " ['brown' nan 'slow']\n", + " [nan 'small' 'slow']\n", + " ['brown' 'tall' nan]]\n" + ] + } + ], + "source": [ + "categorical_data = np.array([\n", + " [\"red\", \"tall\", \"fast\"],\n", + " [\"brown\", np.nan, \"slow\"],\n", + " [np.nan, \"small\", \"slow\"],\n", + " [\"brown\", \"tall\", np.nan],\n", + "], dtype=object)\n", + "\n", + "print(categorical_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "id": "c8a36007", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[['red' 'tall' 'fast']\n", + " ['brown' 'tall' 'slow']\n", + " ['brown' 'small' 'slow']\n", + " ['brown' 'tall' 'slow']]\n" + ] + } + ], + "source": [ + "imp_most_frequent = SimpleImputer(missing_values=np.nan, strategy=\"most_frequent\")\n", + "imputed_data = imp_most_frequent.fit_transform(categorical_data)\n", + "print(imputed_data)" + ] + }, + { + "cell_type": "markdown", + "id": "fac336ab", + "metadata": {}, + "source": [ + "**Exercise**\n", + "\n", + "Impute the missing values in the Cabin column using the constant as the imputation strategy and fill_value as *missing*." + ] + }, + { + "cell_type": "markdown", + "id": "017632ea", + "metadata": {}, + "source": [ + "```python\n", + "# extract Age data\n", + "cabin = df[\"Cabin\"].values\n", + "\n", + "# Create imputer instance\n", + "imp_median = SimpleImputer(strategy=, fill_value=)\n", + "\n", + "# Apply imputing technique\n", + "imputed_cabin = \n", + "\n", + "print(imputed_cabin)\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "9489ec02", + "metadata": {}, + "source": [ + "## Feature Engineering\n", + "\n", + "Feature engineering is the process of transforming raw data into features that are suitable for machine learning models. In other words, it is the process of selecting, extracting, and transforming the most relevant features from the available data to build more accurate and efficient machine learning models.\n", + "\n", + "The success of machine learning models heavily depends on the quality of the features used to train them. Feature engineering involves a set of techniques that enable us to create new features by combining or transforming the existing ones. These techniques help to highlight the most important patterns and relationships in the data, which in turn helps the machine learning model to learn from the data more effectively.\n", + "\n", + "[What is Feature Engineering? - geeksforgeeks](https://www.geeksforgeeks.org/what-is-feature-engineering/)\n", + "\n", + "| Column Name | Data Type | Description | Possible Values / Examples |\n", + "|--------------------------|-----------------------------|-------------------------------------------------------------------------|--------------------------------------------------------|\n", + "| Feature Extraction | String → Categorical | Extract useful parts from complex fields or derive new features (e.g., dimensionality reduction) | From `Name` → `Title` = \"Mr\", \"Mrs\", \"Miss\", etc.; PCA for dimensionality reduction |\n", + "| Feature Transformation | Numeric | Apply mathematical or rule-based transformation to values | `Fare` → log(Fare), `Age` → square root(Age) |\n", + "| Encoding Categorical | Categorical → Numeric | Convert string labels into numeric format for modeling | `Sex` = \"male\", \"female\" → 1, 0 using `get_dummies()` |\n", + "| Binning | Numeric → Categorical | Divide continuous values into discrete intervals | `Age` → \"Child\", \"Adult\", \"Senior\" |\n", + "| Feature Interaction | Multiple Columns | Combine two or more columns to create meaningful relationships | `FamilySize` = `SibSp` + `Parch` + 1 |\n", + "| Datetime Decomposition | Datetime → Numeric/Categorical | Break down datetime into parts like year, month, day, etc. | `2023-04-19` → year = 2023, month = 4 |\n", + "| Scaling / Normalization | Numeric | Scale numeric values to a common range or distribution | `Fare` → 0–1 using MinMaxScaler |\n", + "| Missing Value Imputation | Any | Fill missing values with mean, median, mode, or prediction | `Age` → fill missing with median age (e.g., 28.0) |\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "c465626d", + "metadata": {}, + "source": [ + "### Handling categorical data" + ] + }, + { + "cell_type": "markdown", + "id": "dc752004", + "metadata": {}, + "source": [ + "**Feature Extraction & Encoding for Nominal Variables:**\n", + "\n", + "Feature extraction for nominal (categorical) data involves transforming raw categorical variables into new, meaningful features that can be effectively used in machine learning models. This process often includes extracting patterns or subcomponents from the nominal data to capture relevant information such as social status, gender, or groupings that may influence the prediction target.\n", + "\n", + "Nominal data in our dataset, such as **names** or **cabin identifiers**, are non-numeric and cannot be directly used by most machine learning algorithms. Feature extraction techniques for nominal data typically involve:\n", + "\n", + "- Parsing and extracting meaningful components: For example, extracting titles (Mr, Mrs, Miss) from passenger names to capture social status or demographics.\n", + "\n", + "- Decomposing complex categorical variables: Breaking down a cabin number into a deck letter and a numeric part to capture location information.\n", + "\n", + "- Encoding categorical variables: Converting extracted features into formats suitable for modeling, such as one-hot encoding or numeric encoding." + ] + }, + { + "cell_type": "markdown", + "id": "83f5a24d", + "metadata": {}, + "source": [ + "This code extracts passenger titles (such as Mr., Mrs., Miss, etc.) from the Name column in the dataset. It uses a regular expression to capture the string that appears between a comma and a period, which typically corresponds to the title." + ] + }, + { + "cell_type": "code", + "execution_count": 193, + "id": "e620008d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Unique titles found:\n" + ] + }, + { + "data": { + "text/plain": [ + "array(['Mr', 'Mrs', 'Miss', 'Master', 'Don', 'Rev', 'Dr', 'Mme', 'Ms',\n", + " 'Major', 'Lady', 'Sir', 'Mlle', 'Col', 'Capt', 'the Countess',\n", + " 'Jonkheer'], dtype=object)" + ] + }, + "execution_count": 193, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Extract title from passenger name\n", + "name = df['Name']\n", + "title = name.str.extract(r',\\s*([^\\.]*)\\s*\\.', expand=False)\n", + "\n", + "# View unique titles\n", + "print(\"Unique titles found:\")\n", + "title.unique()" + ] + }, + { + "cell_type": "markdown", + "id": "c3da16dc", + "metadata": {}, + "source": [ + "This code extracts two components from the Cabin column: the deck letter and the cabin number. The deck letter is taken as the first character of the string (e.g., 'C' from 'C85'), while the cabin number is extracted using a regular expression and converted to a numeric type. The results help identify the range of cabin locations, which may correlate with survival rates." + ] + }, + { + "cell_type": "code", + "execution_count": 194, + "id": "552e9286", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cabin decks: [nan 'C' 'E' 'G' 'D' 'A' 'B' 'F' 'T']\n", + "Max and Min cabin number: (np.float64(148.0), np.float64(2.0))\n" + ] + } + ], + "source": [ + "# Extract cabin deck and number from Cabin code\n", + "cabin = df[\"Cabin\"]\n", + "cabin_deck = cabin.str[0]\n", + "cabin_number = pd.to_numeric(cabin.str.extract(r'(\\d+)')[0], errors=\"coerce\")\n", + "\n", + "print(f\"Cabin decks: {cabin_deck.unique()}\")\n", + "print(f\"Max and Min cabin number: {(cabin_number.max(), cabin_number.min())}\")" + ] + }, + { + "cell_type": "markdown", + "id": "96447256", + "metadata": {}, + "source": [ + "Our model can’t handle text labels like 'male' or 'female', pandas.get_dummies() Convert categorical variable into dummy/indicator variables.\n", + "\n", + "Each variable is converted in as many 0/1 variables as there are different values. Columns in the output are each named after a value; if the input is a DataFrame, the name of the original variable is prepended to the value." + ] + }, + { + "cell_type": "code", + "execution_count": 195, + "id": "a227b75e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Sex_female Sex_male\n", + "0 False True\n", + "1 True False\n", + "2 True False\n", + "3 True False\n", + "4 False True\n" + ] + } + ], + "source": [ + "# Encode 'Sex' column into binary variables (0 or 1)\n", + "df_encoded = pd.get_dummies(df, columns=['Sex']) # by setting drop_first = 1, the first dummy column will be dropped, since it has redundant information\n", + "print(df_encoded[[\"Sex_female\", \"Sex_male\"]].head())" + ] + }, + { + "cell_type": "markdown", + "id": "3cd3b1b2", + "metadata": {}, + "source": [ + "Alternatively we can use sklearn.preprocessing.OneHotEncoder: \n", + "\n", + "With one-hot, we convert each categorical value into a new categorical column and assign a binary value of 1 or 0 to those columns. Each integer value is represented as a binary vector. All the values are zero, and the index is marked with a 1." + ] + }, + { + "cell_type": "code", + "execution_count": 196, + "id": "448a9a82", + "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", + "
Embarked_QEmbarked_SEmbarked_C
00.01.00.0
10.00.01.0
20.01.00.0
30.01.00.0
40.01.00.0
............
8860.01.00.0
8870.01.00.0
8880.01.00.0
8890.00.01.0
8901.00.00.0
\n", + "

891 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " Embarked_Q Embarked_S Embarked_C\n", + "0 0.0 1.0 0.0\n", + "1 0.0 0.0 1.0\n", + "2 0.0 1.0 0.0\n", + "3 0.0 1.0 0.0\n", + "4 0.0 1.0 0.0\n", + ".. ... ... ...\n", + "886 0.0 1.0 0.0\n", + "887 0.0 1.0 0.0\n", + "888 0.0 1.0 0.0\n", + "889 0.0 0.0 1.0\n", + "890 1.0 0.0 0.0\n", + "\n", + "[891 rows x 3 columns]" + ] + }, + "execution_count": 196, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ohe = OneHotEncoder(categories=[[\"Q\", \"S\", \"C\"]], handle_unknown=\"ignore\")\n", + "embarked = ohe.fit_transform(df[[\"Embarked\"]])\n", + "embarked_df = pd.DataFrame(embarked.toarray(), columns=ohe.get_feature_names_out([\"Embarked\"]))\n", + "\n", + "embarked_df" + ] + }, + { + "cell_type": "markdown", + "id": "063101a9", + "metadata": {}, + "source": [ + "### Handling numerical data (Feature Scaling)" + ] + }, + { + "cell_type": "markdown", + "id": "0cc59cd0", + "metadata": {}, + "source": [ + "**Feature scaling** is an important step in the preprocessing pipeline for many machine learning models, even though some algorithms, like decision trees and random forests, do not require it. These models are \"scale invariant,\" meaning that the performance of the algorithm does not change with different feature scales. However, many other machine learning algorithms benefit from feature scaling because their performance can be affected by the differences in the magnitude of features.\n", + "\n", + "To better understand the significance of feature scaling, let's take a look at two concrete examples:\n", + "\n", + "1. Gradient Descent (Linear Regression or Logistic Regression)\n", + "Imagine you are working with a dataset that includes two features:\n", + "\n", + " Feature 1 (Income): Ranges from 10,000 to 100,000 (in dollars).\n", + "\n", + " Feature 2 (Age): Ranges from 18 to 70 (in years).\n", + "\n", + " When you use gradient descent to minimize the cost function (e.g., mean squared error), the algorithm adjusts weights based on the features. If the income feature has values that are much larger than the age feature, the model will tend to focus more on optimizing the weight of the income feature because the numerical range of income is much larger. As a result, the model may not learn as effectively from the age feature.\n", + "\n", + " If both features were scaled to have a similar range (e.g., between 0 and 1 or with a standard deviation of 1), the gradient descent algorithm would update both weights more evenly, leading to a more balanced and effective model.\n", + "\n", + "2. k-Nearest Neighbors (KNN)\n", + " Consider a dataset with the following two features:\n", + "\n", + " Feature 1 (Distance to school): Ranges from 0 to 5 kilometers.\n", + "\n", + " Feature 2 (Annual salary): Ranges from 20,000 to 200,000 (in dollars).\n", + "\n", + " When using k-nearest neighbors (KNN) with the Euclidean distance metric to classify or predict, the distances between samples are calculated based on the features. However, the distance calculation involves squaring the differences of each feature's value, and the larger the feature's range, the more influence it has on the final distance. In this case, the salary feature will dominate the distance calculation because its range is much larger than that of the distance to school feature.\n", + "\n", + " For example, if two data points differ significantly in salary but have very similar distances to school, the KNN algorithm might incorrectly assign a higher weight to the salary difference due to its larger scale, making the distance metric less representative of the actual similarities between data points.\n", + "\n", + " If both features were scaled to the same range, the distance between samples would be influenced equally by both features, leading to more accurate classifications or predictions." + ] + }, + { + "cell_type": "markdown", + "id": "5552b828", + "metadata": {}, + "source": [ + "Now, there are two common approaches to bring different features onto the same scale: **normalization** and **standardization**. Those terms are often used quite loosely in different fields, and the meaning has to be derived from the context. Most often, **normalization** refers to the rescaling of the features to a range of \\([0, 1]\\), which is a special case of **min-max scaling**.\n", + "\n", + "To normalize our data, we can simply apply the min-max scaling to each feature column, where the new value of a sample can be calculated as follows:\n", + "\n", + "$X_{\\text{normalized}} = \\frac{X - X_{\\text{min}}}{X_{\\text{max}} - X_{\\text{min}}}$\n", + "\n", + "\n", + "Where:\n", + "- $X_{\\text{normalized}}$ is the normalized value of the feature.\n", + "\n", + "- $X$ is the original value of the feature.\n", + "\n", + "- $X_{\\text{min}}$ is the minimum value of the feature.\n", + "\n", + "- $X_{\\text{max}}$ is the maximum value of the feature." + ] + }, + { + "cell_type": "code", + "execution_count": 197, + "id": "c89ae9a6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Normalized age maximum: [1.]\n", + "Normalized age minimum: [0.]\n" + ] + } + ], + "source": [ + "# Let's apply MinMaxScaling to our Age feature\n", + "mm_scaler = MinMaxScaler()\n", + "age = df[\"Age\"].values.reshape(-1, 1)\n", + "normalized_age = mm_scaler.fit_transform(age)\n", + "print(f\"Normalized age maximum: {max(normalized_age)}\")\n", + "print(f\"Normalized age minimum: {min(normalized_age)}\")" + ] + }, + { + "cell_type": "markdown", + "id": "c439f90d", + "metadata": {}, + "source": [ + "Although normalization via min-max scaling is a commonly used technique that is useful when we need values in a bounded interval, **standardization** can be more practical for many machine learning algorithms, especially for optimization algorithms such as gradient descent. The reason is that many linear models initialize the weights to 0 or small random values close to 0. Using standardization, we center the feature columns at a mean of 0 with a standard deviation of 1, so that the feature columns take the form of a normal distribution, which makes it easier to learn the weights.\n", + "\n", + "Furthermore, standardization maintains useful information about outliers and makes the algorithm less sensitive to them, in contrast to min-max scaling, which scales the data to a limited range of values.\n", + "\n", + "The procedure for **standardization** can be expressed by the following equation:\n", + "\n", + "$X_{\\text{standardized}} = \\frac{X - \\mu}{\\sigma}$\n", + "\n", + "Where:\n", + "- $X_{\\text{standardized}}$ is the standardized value of the feature.\n", + "\n", + "- $X$ is the original value of the feature.\n", + "\n", + "- $\\mu$ is the sample mean of the feature.\n", + "\n", + "- $\\sigma$ is the standard deviation of the feature." + ] + }, + { + "cell_type": "code", + "execution_count": 198, + "id": "06f0a398", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Standardized fare maximum: [9.66716653]\n", + "Standardized fare minimum: [-0.64842165]\n", + "Standardized fare mean: 0.0\n", + "Standardized fare standard deviation: 1.0\n" + ] + } + ], + "source": [ + "ss_scaler = StandardScaler()\n", + "fare = df[\"Fare\"].values.reshape(-1, 1)\n", + "standardized_fare = ss_scaler.fit_transform(fare)\n", + "\n", + "print(f\"Standardized fare maximum: {max(standardized_fare)}\")\n", + "print(f\"Standardized fare minimum: {min(standardized_fare)}\")\n", + "print(f\"Standardized fare mean: {round(np.mean(standardized_fare), 10)}\")\n", + "print(f\"Standardized fare standard deviation: {round(np.std(standardized_fare), 10)}\")" + ] + }, + { + "cell_type": "markdown", + "id": "0e5df500", + "metadata": {}, + "source": [ + "### Pipeline, Column Transformers and Custom Transformers" + ] + }, + { + "cell_type": "markdown", + "id": "d657c5cd", + "metadata": {}, + "source": [ + "The process of transforming raw data into a model-ready format often involves a series of steps, including data preprocessing, feature selection, and model training. Managing these steps efficiently and ensuring reproducibility can be challenging. This is where sklearn.pipeline.Pipeline from the scikit-learn library comes into play.\n", + "\n", + "The Pipeline class in scikit-learn is a powerful tool designed to streamline the machine learning workflow. It allows you to chain together multiple steps, such as data transformations and model training, into a single, cohesive process. This not only simplifies the code but also ensures that the same sequence of steps is applied consistently to both training and testing data, thereby reducing the risk of data leakage and improving reproducibility." + ] + }, + { + "cell_type": "markdown", + "id": "cfe960fc", + "metadata": {}, + "source": [ + "To illustrate the use of scikit-learn pipelines, let's walk through a simple example where we apply a series of transformations to the \"Age\" feature in a dataset. In this example, we will:\n", + "\n", + "- Impute missing values in the \"Age\" column with the mean value.\n", + "\n", + "- Standardize the \"Age\" values, so they have a mean of 0 and a standard deviation of 1.\n", + "\n", + "We will use the **Pipeline** class from scikit-learn to combine these two steps into one unified process, making it easier to manage and apply consistently." + ] + }, + { + "cell_type": "code", + "execution_count": 199, + "id": "e933a3ee", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Before ...\n", + "Age min/max: 0.42, 80.00\n", + "Age missing values: 177\n", + "\n", + "After ...\n", + "Age min/max: -2.25, 3.87\n", + "Age missing values: 0\n" + ] + } + ], + "source": [ + "print(\"Before ...\")\n", + "print(f\"Age min/max: {df['Age'].min():.2f}, {df['Age'].max():.2f}\")\n", + "print(f\"Age missing values: {df['Age'].isna().sum()}\")\n", + "\n", + "age_pipeline = Pipeline([\n", + " (\"mean_imp\", SimpleImputer(strategy=\"mean\")),\n", + " (\"ss_scaler\", StandardScaler())\n", + "])\n", + "\n", + "age_transformed = age_pipeline.fit_transform(df[[\"Age\"]]) # Returns NumPy array\n", + "\n", + "print(\"\\nAfter ...\")\n", + "print(f\"Age min/max: {age_transformed.min():.2f}, {age_transformed.max():.2f}\") \n", + "print(f\"Age missing values: {np.isnan(age_transformed).sum()}\")" + ] + }, + { + "cell_type": "markdown", + "id": "c0591a0a", + "metadata": {}, + "source": [ + "**Custom Transformers in scikit-learn**\n", + "\n", + "In many cases, standard transformers like SimpleImputer and StandardScaler are not sufficient for specific tasks. For such situations, we can create custom transformers that can be used just like the built-in ones, while performing more complex transformations.\n", + "\n", + "A custom transformer is a class that inherits from BaseEstimator and TransformerMixin in scikit-learn. The primary responsibility of a custom transformer is to define two methods:\n", + "\n", + "- fit(...): This method is used to learn any necessary parameters from the data. For simple transformations that don't require fitting (like string manipulation), you can leave this method empty.\n", + " \n", + "- transform(...): This method performs the actual transformation of the data.\n", + " \n", + "- get_feature_names_out(...): (Optional but recommended) This method defines the names of the output features, useful when using pipelines or ColumnTransformers.\n", + "\n", + "Let’s look at an example where we create a custom transformer to preprocess the \"Cabin\" feature in the Titanic dataset.\n", + "\n", + "In the Titanic dataset, the \"Cabin\" column contains string values, which include both the deck (a letter) and the cabin number (a number). We can create a custom transformer to extract and separate these values into two new columns: CabinDeck and CabinNumber." + ] + }, + { + "cell_type": "code", + "execution_count": 200, + "id": "28ee7c92", + "metadata": {}, + "outputs": [], + "source": [ + "class CabinTransformer(BaseEstimator, TransformerMixin):\n", + " def __init__(self):\n", + " pass \n", + "\n", + " def fit(self, X, y=None):\n", + " return self\n", + "\n", + " def transform(self, X):\n", + " X = pd.Series(X.flatten()) \n", + " \n", + " deck = X.str[0] # First letter (deck)\n", + " number = X.str.extract(r'(\\d+)') # Extract numbers\n", + " \n", + " cabin_number = pd.to_numeric(number[0], errors='coerce')\n", + " \n", + " # Combine deck and scaled cabin number into a DataFrame\n", + " transformed = pd.DataFrame({\n", + " 'CabinDeck': deck,\n", + " 'CabinNumber': cabin_number\n", + " })\n", + "\n", + " return transformed\n", + "\n", + " def get_feature_names_out(self, input_features=None):\n", + " # After transform, this transformer outputs a single column \"Title\"\n", + " return np.array([\"CabinDeck\", \"CabinNumber\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 201, + "id": "e26883b2", + "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", + "
CabinDeckCabinNumber
0B96.0
1C85.0
2B96.0
3C123.0
4B96.0
.........
886B96.0
887B42.0
888B96.0
889C148.0
890B96.0
\n", + "

891 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " CabinDeck CabinNumber\n", + "0 B 96.0\n", + "1 C 85.0\n", + "2 B 96.0\n", + "3 C 123.0\n", + "4 B 96.0\n", + ".. ... ...\n", + "886 B 96.0\n", + "887 B 42.0\n", + "888 B 96.0\n", + "889 C 148.0\n", + "890 B 96.0\n", + "\n", + "[891 rows x 2 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cabin_pipeline = Pipeline([\n", + " (\"imp\", SimpleImputer(strategy=\"most_frequent\")), # Impute missing values with the most frequent value\n", + " (\"custom_transformer\", CabinTransformer()) # Apply the custom CabinTransformer\n", + "])\n", + "\n", + "\n", + "transformed_cabin = cabin_pipeline.fit_transform(df[[\"Cabin\"]])\n", + "display(transformed_cabin)" + ] + }, + { + "cell_type": "markdown", + "id": "3411ae57", + "metadata": {}, + "source": [ + "**ColumnTransformer in scikit-learn**\n", + "\n", + "`ColumnTransformer` is a utility in `scikit-learn` that allows you to apply different transformations to different subsets of columns in your dataset. It's particularly useful when working with datasets that contain various types of features (e.g., numerical, categorical, text) that require distinct preprocessing steps.\n", + "\n", + "In a machine learning pipeline, preprocessing is a crucial step to transform raw data into a suitable format for model training. The `ColumnTransformer` helps by enabling separate processing for different features, without needing to manually split the dataset or write custom logic.\n", + "\n", + "A `ColumnTransformer` allows you to specify a list of transformers to be applied to specific subsets of columns. The general format looks like this:\n", + "\n", + "```python\n", + "from sklearn.compose import ColumnTransformer\n", + "\n", + "column_transformer = ColumnTransformer(\n", + " transformers=[\n", + " ('name_of_transformer', transformer_object, columns_to_transform)\n", + " ]\n", + ")\n", + "```\n", + "\n", + "Where:\n", + "- **`name_of_transformer`**: This is a string label that names the transformation. It can be anything descriptive, like `'scaler'`, `'encoder'`, etc.\n", + "\n", + "- **`transformer_object`**: This is the transformer object that will be applied to the selected columns. This could be a `StandardScaler`, `SimpleImputer`, `OneHotEncoder`, etc.\n", + "\n", + "- **`columns_to_transform`**: A list or a string specifying which columns should be transformed. You can select columns by name, index, or condition (such as numerical columns).\n" + ] + }, + { + "cell_type": "markdown", + "id": "b319902e", + "metadata": {}, + "source": [ + "Before instantiating our custom transformations and pipelines, let's first outline the transformations we need to apply to each column in the dataset:\n", + "\n", + "- `PassengerId`: Drop column (since it's just an identifier and doesn't contribute to the model).\n", + "\n", + "- `Pclass`: Ordinal Encoding (using OrdinalEncoder) — This variable has a meaningful order (1st class > 2nd class > 3rd class), so it's encoded as integers while preserving the ordinal relationship.\n", + "\n", + "- `Name`: Custom transformation (NameTransformer) to extract titles from the name, followed by OneHotEncoding (OneHotEncoder) — This helps to capture additional information about the passenger based on their title (e.g., Mr., Mrs., Miss) while also avoiding introducing a large number of dummy variables.\n", + "\n", + "- `Sex`: Binary Encoding using OneHotEncoder (OneHotEncoder(drop=\"first\")) — This encodes male and female as binary values, with the first category dropped to avoid multicollinearity.\n", + "\n", + "- `Age`: Mean imputation (SimpleImputer(strategy=\"mean\")) followed by MinMax scaling (MinMaxScaler) — Missing values are filled with the mean age, and the values are then scaled to the range [0, 1].\n", + "\n", + "- `SibSp & Parch`: Custom transformation (FamilySizeTransformer) to create a new feature FamilySize, which is the sum of SibSp and Parch — This gives a better representation of family size, which may be more informative than the individual columns.\n", + "\n", + "- `Ticket`: Drop column (not included in the transformation, as it doesn't add meaningful value or may contain too many unique values).\n", + "\n", + "- `Cabin`: Drop column (too many missing values and potentially too complex to handle meaningfully without further preprocessing).\n", + "\n", + "- `Embarked`: Most frequent imputation (SimpleImputer(strategy=\"most_frequent\")) followed by OneHotEncoding (OneHotEncoder) — Missing values are imputed with the most frequent value, and then the categorical values are encoded using OneHotEncoding." + ] + }, + { + "cell_type": "code", + "execution_count": 202, + "id": "e151c46f", + "metadata": {}, + "outputs": [], + "source": [ + "class NameTransformer(BaseEstimator, TransformerMixin):\n", + " def __init__(self):\n", + " pass\n", + " \n", + " def fit(self, X, y=None):\n", + " return self\n", + " \n", + " def transform(self, X, y=None):\n", + " # Extract the Title from the Name column\n", + " names = X[\"Name\"]\n", + " titles = names.str.extract(r',\\s*([^\\.]*)\\s*\\.', expand=False)\n", + " return pd.DataFrame({\"Title\": titles})\n", + " \n", + " def get_feature_names_out(self, input_features=None):\n", + " # After transform, this transformer outputs a single column \"Title\"\n", + " return np.array([\"Title\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 203, + "id": "3e319ff2", + "metadata": {}, + "outputs": [], + "source": [ + "class FamilySizeTransformer(BaseEstimator, TransformerMixin):\n", + " def __init__(self):\n", + " pass\n", + "\n", + " def fit(self, X, y=None):\n", + " return self\n", + "\n", + " def transform(self, X, y=None):\n", + " # Compute family size\n", + " X_copy = X.copy()\n", + " X_copy['FamilySize'] = X_copy['SibSp'] + X_copy['Parch'] + 1\n", + " return X_copy[['FamilySize']]\n", + " \n", + " def get_feature_names_out(self, input_features=None):\n", + " # After transform, this transformer outputs a single column \"FamilySize\"\n", + " return np.array([\"FamilySize\"])" + ] + }, + { + "cell_type": "markdown", + "id": "809b38b9", + "metadata": {}, + "source": [ + "Now that we've defined our custom transformers, we can build individual pipelines for each feature or group of features. Each pipeline handles the specific preprocessing steps required for that column, such as imputation, scaling, encoding, or applying custom logic." + ] + }, + { + "cell_type": "code", + "execution_count": 204, + "id": "34dc5372", + "metadata": {}, + "outputs": [], + "source": [ + "pclass_pipeline = Pipeline([\n", + " (\"ohe\", OrdinalEncoder())\n", + "])\n", + "\n", + "name_pipeline = Pipeline([\n", + " (\"custom_transf\", NameTransformer()),\n", + " (\"ohe\", OneHotEncoder(drop=\"first\", handle_unknown=\"ignore\", sparse_output=False))\n", + "])\n", + "\n", + "sex_pipeline = Pipeline([\n", + " (\"binary_ohe\", OneHotEncoder(drop=\"first\", handle_unknown=\"ignore\", sparse_output=False))\n", + "])\n", + "\n", + "age_pipeline = Pipeline([\n", + " (\"mean_imp\", SimpleImputer(strategy=\"mean\")),\n", + " (\"mm_scaler\", MinMaxScaler())\n", + "])\n", + "\n", + "family_pipeline = Pipeline([\n", + " (\"custom_trans\", FamilySizeTransformer())\n", + "])\n", + "\n", + "embarked_pipeline = Pipeline([\n", + " (\"most_freq_imp\", SimpleImputer(strategy=\"most_frequent\")),\n", + " (\"ohe\", OneHotEncoder(drop=\"first\", handle_unknown=\"ignore\", sparse_output=False))\n", + "])" + ] + }, + { + "cell_type": "markdown", + "id": "ee7561d1", + "metadata": {}, + "source": [ + "After defining all individual pipelines, we can combine them into a single ColumnTransformer. This allows us to apply the appropriate preprocessing steps to each subset of features in a clean and organized way, all within one unified transformation." + ] + }, + { + "cell_type": "code", + "execution_count": 205, + "id": "223d4561", + "metadata": {}, + "outputs": [], + "source": [ + "final_transformation = ColumnTransformer(\n", + " transformers=[\n", + " (\"pclass_preprocess\", pclass_pipeline, [\"Pclass\"]),\n", + " (\"name_preprocess\", name_pipeline, [\"Name\"]),\n", + " (\"sex_preprocess\", sex_pipeline, [\"Sex\"]),\n", + " (\"age_preprocess\", age_pipeline, [\"Age\"]),\n", + " (\"sibsp_parch_preprocess\", family_pipeline, [\"SibSp\", \"Parch\"]),\n", + " (\"embarked_preprocess\", embarked_pipeline, [\"Embarked\"])\n", + " ],\n", + " remainder=\"drop\",\n", + " verbose_feature_names_out=True,\n", + " sparse_threshold=0\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "5a02b047", + "metadata": {}, + "source": [ + "Before applying the transformation, we split the dataset into features (X) and the target variable (y). This ensures that the target variable (Survived) is not included in the transformations, as it should remain separate and only be used for model training or evaluation. The remainder=\"drop\" parameter in the ColumnTransformer ensures that any columns not explicitly specified for transformation are dropped from the final output." + ] + }, + { + "cell_type": "code", + "execution_count": 206, + "id": "3e9392da", + "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", + "
pclass_preprocess__Pclassname_preprocess__Title_Colname_preprocess__Title_Donname_preprocess__Title_Drname_preprocess__Title_Jonkheername_preprocess__Title_Ladyname_preprocess__Title_Majorname_preprocess__Title_Mastername_preprocess__Title_Missname_preprocess__Title_Mlle...name_preprocess__Title_Mrsname_preprocess__Title_Msname_preprocess__Title_Revname_preprocess__Title_Sirname_preprocess__Title_the Countesssex_preprocess__Sex_maleage_preprocess__Agesibsp_parch_preprocess__FamilySizeembarked_preprocess__Embarked_Qembarked_preprocess__Embarked_S
02.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.01.00.2711742.00.01.0
10.00.00.00.00.00.00.00.00.00.0...1.00.00.00.00.00.00.4722292.00.00.0
22.00.00.00.00.00.00.00.01.00.0...0.00.00.00.00.00.00.3214381.00.01.0
30.00.00.00.00.00.00.00.00.00.0...1.00.00.00.00.00.00.4345312.00.01.0
42.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.01.00.4345311.00.01.0
\n", + "

5 rows × 22 columns

\n", + "
" + ], + "text/plain": [ + " pclass_preprocess__Pclass name_preprocess__Title_Col \\\n", + "0 2.0 0.0 \n", + "1 0.0 0.0 \n", + "2 2.0 0.0 \n", + "3 0.0 0.0 \n", + "4 2.0 0.0 \n", + "\n", + " name_preprocess__Title_Don name_preprocess__Title_Dr \\\n", + "0 0.0 0.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n", + "\n", + " name_preprocess__Title_Jonkheer name_preprocess__Title_Lady \\\n", + "0 0.0 0.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n", + "\n", + " name_preprocess__Title_Major name_preprocess__Title_Master \\\n", + "0 0.0 0.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n", + "\n", + " name_preprocess__Title_Miss name_preprocess__Title_Mlle ... \\\n", + "0 0.0 0.0 ... \n", + "1 0.0 0.0 ... \n", + "2 1.0 0.0 ... \n", + "3 0.0 0.0 ... \n", + "4 0.0 0.0 ... \n", + "\n", + " name_preprocess__Title_Mrs name_preprocess__Title_Ms \\\n", + "0 0.0 0.0 \n", + "1 1.0 0.0 \n", + "2 0.0 0.0 \n", + "3 1.0 0.0 \n", + "4 0.0 0.0 \n", + "\n", + " name_preprocess__Title_Rev name_preprocess__Title_Sir \\\n", + "0 0.0 0.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n", + "\n", + " name_preprocess__Title_the Countess sex_preprocess__Sex_male \\\n", + "0 0.0 1.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 1.0 \n", + "\n", + " age_preprocess__Age sibsp_parch_preprocess__FamilySize \\\n", + "0 0.271174 2.0 \n", + "1 0.472229 2.0 \n", + "2 0.321438 1.0 \n", + "3 0.434531 2.0 \n", + "4 0.434531 1.0 \n", + "\n", + " embarked_preprocess__Embarked_Q embarked_preprocess__Embarked_S \n", + "0 0.0 1.0 \n", + "1 0.0 0.0 \n", + "2 0.0 1.0 \n", + "3 0.0 1.0 \n", + "4 0.0 1.0 \n", + "\n", + "[5 rows x 22 columns]" + ] + }, + "execution_count": 206, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X, y = df.drop(columns=[\"Survived\"]), df[\"Survived\"]\n", + "\n", + "transformed_array = final_transformation.fit_transform(X)\n", + "feature_names = final_transformation.get_feature_names_out()\n", + "\n", + "transformed_df = pd.DataFrame(transformed_array, columns=feature_names, index=X.index)\n", + "transformed_df.head()" + ] + }, + { + "cell_type": "markdown", + "id": "40060b97", + "metadata": {}, + "source": [ + "## Final Summary\n", + "\n", + "In this last step, we confirm that our preprocessing has produced a clean, complete dataset ready for modeling. We will:\n", + "\n", + "1. Reconstruct the final DataFrame (`final_df`) with all features and the `Survived` target \n", + "2. Verify the shape and feature list \n", + "3. Check for any remaining missing or duplicate values \n", + "4. Summarize our main observations" + ] + }, + { + "cell_type": "code", + "execution_count": 207, + "id": "f0d4ce15", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Final shape: (891, 23)\n", + "Final features: ['pclass_preprocess__Pclass', 'name_preprocess__Title_Col', 'name_preprocess__Title_Don', 'name_preprocess__Title_Dr', 'name_preprocess__Title_Jonkheer', 'name_preprocess__Title_Lady', 'name_preprocess__Title_Major', 'name_preprocess__Title_Master', 'name_preprocess__Title_Miss', 'name_preprocess__Title_Mlle', 'name_preprocess__Title_Mme', 'name_preprocess__Title_Mr', 'name_preprocess__Title_Mrs', 'name_preprocess__Title_Ms', 'name_preprocess__Title_Rev', 'name_preprocess__Title_Sir', 'name_preprocess__Title_the Countess', 'sex_preprocess__Sex_male', 'age_preprocess__Age', 'sibsp_parch_preprocess__FamilySize', 'embarked_preprocess__Embarked_Q', 'embarked_preprocess__Embarked_S', 'Survived']\n", + "\n", + "Missing values per column:\n", + " pclass_preprocess__Pclass 0\n", + "name_preprocess__Title_Col 0\n", + "name_preprocess__Title_Don 0\n", + "name_preprocess__Title_Dr 0\n", + "name_preprocess__Title_Jonkheer 0\n", + "name_preprocess__Title_Lady 0\n", + "name_preprocess__Title_Major 0\n", + "name_preprocess__Title_Master 0\n", + "name_preprocess__Title_Miss 0\n", + "name_preprocess__Title_Mlle 0\n", + "name_preprocess__Title_Mme 0\n", + "name_preprocess__Title_Mr 0\n", + "name_preprocess__Title_Mrs 0\n", + "name_preprocess__Title_Ms 0\n", + "name_preprocess__Title_Rev 0\n", + "name_preprocess__Title_Sir 0\n", + "name_preprocess__Title_the Countess 0\n", + "sex_preprocess__Sex_male 0\n", + "age_preprocess__Age 0\n", + "sibsp_parch_preprocess__FamilySize 0\n", + "embarked_preprocess__Embarked_Q 0\n", + "embarked_preprocess__Embarked_S 0\n", + "Survived 0\n", + "dtype: int64\n", + "\n", + "Total identical feature-target rows (duplicates): 291\n" + ] + } + ], + "source": [ + "# 1. Reconstruct final DataFrame (features + target)\n", + "final_df = pd.concat([transformed_df, df[\"Survived\"].reset_index(drop=True)], axis=1)\n", + "\n", + "# 2. Shape & feature list\n", + "print(\"Final shape:\", final_df.shape)\n", + "print(\"Final features:\", final_df.columns.tolist())\n", + "\n", + "# 3. Final data quality check\n", + "print(\"\\nMissing values per column:\\n\", final_df.isnull().sum())\n", + "print(\"\\nTotal identical feature-target rows (duplicates):\", final_df.duplicated().sum())" + ] + }, + { + "cell_type": "markdown", + "id": "87e482ee", + "metadata": {}, + "source": [ + "**Why so many “duplicates”?** \n", + "After feature engineering and encoding, multiple distinct passengers end up with exactly the same values across all transformed features *and* the same survival label. \n", + "For example, two female passengers in 3rd class, both aged 24 (imputed or binned the same), with identical family size and embarkation port—all of those collapse to an identical feature vector. \n", + "These are *not* data errors but simply reflect that our pipeline maps different raw records to the same engineered profile.\n", + "\n", + "### Key Observations\n", + "\n", + "- **Rows & Columns**: 891 rows × _N_ features + `Survived` \n", + "- **Missing values**: 0 across all columns \n", + "- **Identical engineered-profile rows**: 291 (expected) \n", + "- **Features after preprocessing**: \n", + " `Title_*`, `FamilySize`, `Pclass`, `Sex_female`, scaled `Age`, scaled `Fare`, `Embarked_*`, _(etc.)_.\n", + "\n", + "Having validated that our final dataset is clean, complete, and fully numeric, we’re now ready to move on to model building and evaluation in Lab 2.\n" + ] + }, + { + "cell_type": "markdown", + "id": "16ec2c61", + "metadata": {}, + "source": [ + "## EXTRA EXERCISE -- Unsupervised Exploration: PCA & t-SNE\n", + "\n", + "When we have many numeric features, it can be hard to visualize or understand the “shape” of the data in its full dimensionality. Two popular techniques—**PCA** and **t-SNE**—help us project high-dimensional data into 2D (or 3D) so we can:\n", + "\n", + "- **See clusters** or separations between classes. \n", + "- **Detect outliers** or unexpected structure. \n", + "- **Decide** if reduced representations might be useful for modeling or further feature engineering." + ] + }, + { + "cell_type": "markdown", + "id": "755efb43", + "metadata": {}, + "source": [ + "### Principal Component Analysis (PCA)\n", + "\n", + "PCA is a **linear** technique that finds new orthogonal axes (principal components) that capture the most variance in the data.\n", + "\n", + "1. **Standardize** each feature to mean 0, variance 1. \n", + "2. **Compute** the covariance matrix of the standardized data. \n", + "3. **Eigen-decompose** → get eigenvectors (directions) and eigenvalues (variance explained). \n", + "4. **Order** components by descending eigenvalue and **project** your data onto the top _k_ components.\n", + "\n", + "**Why it helps in EDA/preprocessing** \n", + "- You can plot the first two PCs and color by `Survived` to see if survivors cluster apart. \n", + "- The **explained-variance ratio** tells you how many components capture, say, 90% of the variance—guiding dimensionality reduction. \n", + "- By comparing model performance on the top _n_ PCs vs. all features, you learn how much information lives in those directions." + ] + }, + { + "cell_type": "code", + "execution_count": 208, + "id": "fddd96b3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Explained variance ratio (2 PCs): [0.127737 0.08552449]\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAGGCAYAAACNCg6xAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQJFJREFUeJzt3QucTfX+//HPuIvcQy4ZIvcockuonCiFcuKomJBOitxSyOVIISE6/HXQ5VQc0r3IJUmd3G+ViqRE7hIyMi6z/4/39zz2/u2Z2TPWZsbYe17Px2Ox99prr/1da8/s/ZnP9/P9rhifz+czAAAAnFW2s28CAAAAIXACAADwiMAJAADAIwInAAAAjwicAAAAPCJwAgAA8IjACQAAwCMCJwAAAI8InAAAADwicAKQpldffdViYmJs+/btYT/3/vvvt9jYWIu0dmelNp2Phx9+2P7yl79YpDt16pSVLVvW/t//+3+Z3RREAAInIMQXm3/JkyePXXXVVdazZ0/bt29fiu217rHHHrMqVarYJZdcYvny5bM6derY008/bYcPHw75GvXq1XP7njp1qud26Ys2uF3JlzFjxpzXcWdVV199tV1xxRWW1pWnrr/+eitRooSdPn36grbtYvfzzz/bjBkzbPDgwYF1O3futBEjRrif8cKFC1uxYsWsWbNm9sknn3ja52effZbk5zpnzpxWoUIF69y5s/30008ptj969Kh7vVq1aln+/Pktb968VqNGDXviiSds9+7dno9Fr9OvXz975pln7MSJE56fh6wpR2Y3ALgYPfXUU1a+fHn3Ifrf//7XBTnz58+3TZs2uQBJ1qxZY7fddpsdO3bM7rvvPhcwydq1a10g8/nnn9uiRYuS7Hfr1q3uecrCzJw503r06BFWuzp27OheM7lrrrnGLkbTp0+3xMREu1jde++9NnDgQPviiy+sSZMmIQPWFStWuMA5R47z/7js1KmT/e1vf7PcuXNbpJs0aZL7HbnxxhsD695//3179tlnrW3bthYXF+eCzddee81lpV5++WXr0qWLp30/+uijdt1117lM0Pr1623atGk2b948++abb6xUqVJuGwVSzZs3tx07dtjdd99tDz74oOXKlcu+/vpre+mll+zdd9+1H374wfPxqG36WZg1a5Z17dr1HM4Isgxd5BfA/7zyyitKPfjWrFmTZH2/fv3c+lmzZrn7v//+u6906dK+EiVK+L7//vsU+9m7d69v5MiRKdYPGzbMV7x4cd/bb7/ti4mJ8f3888+e2qXt9PrPPfecL7POide2Xiy8tHvHjh3uffj73/8e8vFRo0a5faxcufK82nLs2DFfNDl58qSvWLFiviFDhiRZv2nTJt+BAweSrDtx4oSvSpUqvjJlypx1v0uXLnXne+7cuUnWv/DCC2693g85deqUr1atWr5LLrnE98UXX6TYz5EjR3yDBw8O+7huv/123w033BD285C10FUHeHDTTTcFuifkX//6l+3atcsmTJjguumSU9fOkCFDUqzXX7N//etf7fbbb7eCBQu6++np008/tWzZstmwYcNSvG7y7kHdVyZFma/KlSu7bkllzZQpOxtlFlq1auX++lf25Morr7SRI0famTNn0qxx8nc5jhs3zmUR9Dw9X9kFZeKS27x5sztfRYoUce2rW7euffDBBym2+/bbb917pK6aMmXKuK5SL5ku1bUo0/TWW2+57EZyOm9qY/369e2XX35xNT06V3qdokWLukxH8nolf3fvsmXL3PbFixd3bQp+LPg5Xs+lurzUDfXdd9+5LI8yn6VLl7axY8emaLcypf/4xz9cN7PO2+WXX2533XWXbdu2LbCNzs/EiROtevXqbhv9zP7973+333///aznTVnYgwcPuoxPMO1L3XPBdEzKkv7666/2xx9/WHr8/r399tv21Vdf2ZNPPmmNGzdOsX2BAgVct1twprddu3ZWsmRJd6x6P5T5O3LkSJLnKTOmYzt06NA5tRNZA111gAf+Lxx9WYq+vPXlqS91r1atWmU//vijvfLKK65LQV9kClqCa0TO5vjx4+4LK7lChQq5riR9wejLevTo0a675Nprr7U9e/ZYr1693JfcQw89lOR5+nKfM2eO6xrRF5yKY1u2bGmrV692X9KpUQCgmhLVheh/BWwK1lRz8txzz531OBSQ6EtUX9QKJPTlr/Oh7hfVm/iDIdUXKThQF4rqx9588013XPrivPPOO912e/fudYGEuoX82yko0/vjtbtO3TwLFy50Aa2fuoXUNesPQhXYLV++3H3h6otXwY8CUQU0Cmb8Xbh+eh8uu+wy9/z4+Ph0OZcKavT+6Fy1b9/eBXyq56lZs6bdeuutbhsFXDqOJUuWuLb27t3bnevFixe741FgJjr3em11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hB04aUJJAACArCjsmcMBAACyqnOaAFMj2d58801XvK1RdsHeeeed9GobAABAZGecNGpNo9u+//57N9Gk5k369ttv3bXqVFgFAAAQrcIOnEaNGmXPP/+8ffjhh24Sy0mTJrlry7Vv396uuOKKjGklAABAJAZO27ZtC1zORIGTJqzUaLq+ffsGJqIEAACIRmEHToULF7Y//vjD3das3v4pCQ4fPmzHjx9P/xYCAABEanF4kyZN3PXhatasaXfffbebEFP1TVp38803Z0wrAQAAIjFwmjx5sp04ccLdfvLJJ93M4cuXL7d27dq5S6EAAABEq7ADpyJFigRu6zpyAwcOTO82AQAARG7gpGu4+K/dottpyYhruwEAAERM4KSC8D179ljx4sWtUKFCIa9Jp2sFa/2ZM2cyop0AAACRETip+NvfRce16gAAQFblKXBq2rSp+//06dO2bNky69q1q5UpUyaj2wYAABC58zjlyJHDnnvuORdAAQAAZDVhT4B50003uawTAABAVhP2dAS33nqrm4Lgm2++sTp16li+fPmSPN66dev0bB8AAEDkBk4PP/yw+3/ChAkpHmNUHQAAiGZhB06JiYkZ0xIAAIBoq3ECAADIqsLOOEl8fLwrEN+xY4edPHkyyWOPPvpoerUNAAAgsgOnDRs22G233WbHjx93AZQmxjx48KBdcsklbmZxAicAABCtwu6q69u3r91xxx32+++/W968eW3lypX2yy+/uBF248aNy5hWAgAARGLgtHHjRuvfv79ly5bNsmfPbgkJCVa2bFkbO3asDR48OGNaCQAAEImBU86cOV3QJOqaU52TFCxY0Hbu3Jn+LQQAAIjUGqdrrrnG1qxZY5UqVXLXsBs2bJircXr99detRo0aGdNKAACASMo4+Se2HDVqlF1++eXu9jPPPGOFCxe2Hj162IEDB2zatGkZ11IAAIBIyTiVLl3a7r//fuvatavVrVs30FW3YMGCjGwfAABA5GWcHnnkEXvrrbesatWqdsMNN9irr77qpiQAAADIKjwHTkOHDrUff/zRlixZYhUqVLCePXu6Lrvu3bvbqlWrMraVAAAAkTiqrlmzZvbvf//b9u7da+PHj7fvv//eGjZsaNWrVw954V8AAADL6teqy58/vz3wwAP23//+1z788EMXSA0YMCB9WwcAABANgZPqm1TnpCkJWrdu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zZ8/P9VtH3roITfTORN3AgCATL9WnYrC77rrLrv66qvP6flz5syxfv36uYsHr1+/3mrVqmUtWrSw/fv3h9x++fLl1rFjR+vWrZsL1tq2beuWTZs2pdj23XfftZUrV7oRfwAAABdkVN0LL7zgeYf+bJRXEyZMsO7du7suQHnxxRdt3rx59vLLL7uuwOQmTZpkLVu2DHQLjhw50hYvXmyTJ092z/XbtWuX9erVyxYuXGitWrUKq00AAADnda06L9QlFk7gpFnH161bZ4MGDQqsy5Ytm+sCXLFiRcjnaL0yVMGUoXrvvfcC9xMTE61Tp04uuKpevbrn9gAAAJx34OQfRZfeDh48aGfOnLESJUokWa/7qp0KZe/evSG313q/Z5991nLkyOE5iEtISHCL39GjR8M8EgAAkBWcV42Tz+dzy8VEGSx157366qsuA+bF6NGjrWDBgoGlbNmyGd5OAACQRQKnl156yWrUqOFGtWnRbV16JVzFihWz7Nmz2759+5Ks1/2SJUuGfI7Wp7X9F1984QrLr7jiCpd10vLLL79Y//793ci9UNRVeOTIkcCyc+fOsI8FAABEv7ADp2HDhrlpB+644w43LYAW3dY0BXosHLly5bI6derYkiVLktQn6X7Dhg1DPkfrg7cXFYf7t1dt09dff20bN24MLBpVp3onFYqHomvuaRb04AUAAOC8r1Wni/tOnz7dTQng17p1azcdgUaxPfXUU2HtT4XecXFxVrduXatXr56bbyk+Pj4wyq5z585WunRp150mCtqaNm1q48ePd6PlZs+ebWvXrrVp06a5x4sWLeqWYDlz5nQZqcqVK4d7uAAAAOceOJ06dcoFOckpc3T69Olwd2cdOnSwAwcOuGyVCrxr165tCxYsCBSA79ixw42082vUqJGbcHPIkCE2ePBgq1SpkhtRp+5CAACAjBTjC7O6W1klZXA0/1Kwxx57zP788083C3ik06g6FYmr3ikjuu1iB85L930C0W77mOiaj43PAeDi+RwI53s/7IyTvzh80aJF1qBBA3d/1apVLjOkbrXgOZaSB1cAAACRLOzASZc2ufbaa93tbdu2BUbHaQm+7InXqQAAAACiNnBaunRpxrQEAAAg2qYjUCF3ar755pvzbQ8AAED0BE41a9Z0F+FNbty4cW46AQAAgGgVduCk4u927dpZjx493Ci6Xbt2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q6/OwBbjYkVXHaJevnz53PDjK664IvBhKfqL84cffnAjZ0Kl848cOXKBWwrgYv4cGDt2rI0cOdJdNF7TFSBrInBCltW+fXs3mkZDjEeNGmVr1661X375xaXuVbegYceiAlINT9ai2xp+rNs//vhjZh8CgAv0OfDss8+6KQpefvllN7p27969bjl27FhmHwIuMKYjQJYbhhxMtQ6a+E4fhproUn+JVqpUyQ0v7t69uxt5s337ditfvnyK5zZt2tTVOACI/s8BBUsKqJIbPny4q5VC1kHgBAAA4BFddQAAAB4ROAEAAHhE4AQAAOARgRMAAIBHBE4AAAAeETgBAAB4ROAEAADgEYETAACARwROADzT7MkTJ05M1xmd27Zta+lJs7nHxMS4maIBIL0ROAFZkAIWBRdadLV4Xfz0qaeestOnT6f5vDVr1tiDDz6Ybu2YNGmSvfrqq5YZNmzYYHfffbeVKFHC8uTJ4y6xoctr6IKvyLhgGYh0BE5AFtWyZUvbs2ePbd261fr37++ut/Xcc8+F3FYXN5bLLrvMLrnkknRrQ8GCBa1QoUJ2oekCrg0aNLCEhASbOXOmff/99/bGG2+49uhCrgCQGgInIIvKnTu3lSxZ0sqVK2c9evRwV4L/4IMPknShPfPMM1aqVCmrXLlyyOyDMlYzZsywO++80wVUytr49+Gni6befvvtVqBAAbv00kvthhtusG3btiV5Hb9mzZpZz5493aIgplixYi6QCb6k5uuvv25169Z1+1L777nnHtu/f7/n4z5+/Lh16dLFbrvtNtdWHbcu4ly/fn0bN26c/etf/wpsu2zZMqtXr547V5dffrkNHDgwSVZO7e3Vq5f16dPHChcu7LJX06dPt/j4ePcaaqOyeR9//HGKrsR58+bZ1Vdf7bJdCuI2bdqUpJ1vv/22Va9e3b22zvv48eOTPK51o0aNsq5du7rXueKKK9yFaoPt3LnT2rdv74LTIkWKWJs2bdxFq/3851/HreMrWrSoPfLII3bq1KnA8enCtn379g1kKIGsjsAJgKMrwPszS7JkyRLbsmWLLV682GVoUjNixAj35fz111+7YOTee++1Q4cOucd27dplTZo0cV/+n376qa1bt8590afVJfjvf//bXZ1+9erVritvwoQJLjjz05f6yJEj7auvvnJXu1cgoADAq4ULF9rBgwft8ccfD/m4PwOmtut4rrvuOvdaU6dOtZdeesmefvrpFO1VgKf2KohSEKouwEaNGtn69evtlltusU6dOrmALdiAAQNcMKTuT2Xy7rjjjkDAovOkc/q3v/3NvvnmG5cNVACZvFtTz1cQqW7Hhx9+2L223jP/eWrRooULqr744gv78ssvLX/+/C7TGPw+L1261AWy+l/Hotfwv84777xjZcqUcd24yk5qAbI8H4AsJy4uztemTRt3OzEx0bd48WJf7ty5fY899ljg8RIlSvgSEhKSPK9cuXK+559/PnBfHyFDhgwJ3D927Jhb9/HHH7v7gwYN8pUvX9538uTJs7ZDmjZt6qtataprk98TTzzh1qVmzZo17jX/+OMPd3/p0qXu/u+//x5y+2effdY9fujQoTTP0eDBg32VK1dO0pYpU6b48ufP7ztz5kygvY0bNw48fvr0aV++fPl8nTp1Cqzbs2ePe70VK1Ykad/s2bMD2/z222++vHnz+ubMmePu33PPPb6//OUvSdozYMAAX7Vq1ZK8F/fdd1/gvtpZvHhx39SpU939119/PUX79X7qdRYuXBg4/9qP2u139913+zp06JDqew5kdWScgCxKWSRlINRVdOutt1qHDh1cZsOvZs2arnD8bNTd5JcvXz7XJefvOtu4caPrmsuZM6fndqnbKrhLqGHDhq4O68yZM4FsjLIz6ppSNqVp06Zu/Y4dOzztP7jbLy2qe9JrB7fl+uuvt2PHjtmvv/4a8vizZ8/uurt07vzUfSfJuxO1bz91o6k7VK/pf229VjDdDz4PyV9b7VTXpf91lCX78ccf3TnS+6xFr3PixIlAV6moO1Dt9lOXXThdn0BWkyOzGwAgc9x4442u+0nBkeqY1D0WTEGQF8mDIn2BJyYmBrr/0pNqh9T9pEVF3eriUsCk+8HdT2m56qqr3P+bN29OErycq1DHH7zOH3j5z0l6SuvcK8CrU6eOO0/J6bx52QeAlMg4AVmUAiMVLitzkzxoSi/KiKi+xl+748WqVauS3F+5cqUrOldWRMHOb7/9ZmPGjHGZrCpVqoSdHVHNkWqSxo4dG/Jx//xPVatWtRUrViTJUKlOSBkc1f2cLx2X3++//+6mQdBr+l9brxVM9xX0BWeH0nLttde6DFXx4sXd+xy8qPDeKwXWwVkuIKsjcAKQYTQ67ujRo67Iee3ate6LXKPi/AXMoSiD1K9fP7fNf/7zH/vnP/9pvXv3do8pyNMXudb99NNPblScCsXDDRhVbK5Rba1bt7ZPPvnEFZirfSoYf+ihh9x2KrbWqDQVfCtge//992348OGubdmynf9HpwquVYCv0XQqblcw5x9hqOkh9JiOTQGVirYnT55sjz32mOf9q0hf+9RIOgWvP//8sxvR9+ijjybpajwbjd77/PPPXbG8iuqBrI7ACUCGUb2PRtOp20i1SOo60nD9tGqeOnfubH/++aebBkBD4xU0+SfdVBeTRnzNnTvXqlWr5jJPGkofLgUTy5cvd+3QdAbKXHXs2NGOHDkSGDVXunRpmz9/vhstV6tWLRdQdevWzYYMGWLpQW3Xsemc7N271z788MNATZmyRW+++abNnj3batSoYcOGDXOBVjijBzU9hAIeBZt33XWXy2Kp/apxUh2aV3pdBZZXXnllki4+IKuKUYV4ZjcCAPzzBtWuXTuqZ6pW1kf1Zeqey4zJPwGcHzJOAAAAHhE4AQAAeERXHQAAgEdknAAAADwicAIAAPCIwAkAAMAjAicAAACPCJwAAAA8InACAADwiMAJAADAIwInAAAAjwicAAAAzJv/DxJsGGRJVIdBAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAHqCAYAAADyPMGQAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAm5RJREFUeJztnQeYE2XbhU+2sgssvYsUC0iz00RFPhSkqmBXwMJvAQU7+KmIDeyIKFYQbNgBESmKiNI/EWmiooBKr7vUbcl/PW92liQ7M3nTdlPOzbVXyGR2ZpJNJmeech6Hy+VygRBCCCGE+CXJ/yqEEEIIIUSgcCKEEEII0YTCiRBCCCFEEwonQgghhBBNKJwIIYQQQjShcCKEEEII0YTCiRBCCCFEEwonQgghhBBNKJwIIYQQQjShcCKEhJUBAwagYcOGpb7fTZs2weFw4J133in1fXfs2BEtWrRAIjJ//nz1usttvL2nCDGDwomQMCJf2vIlYvyUK1cOJ598MgYPHowdO3aUWF+W3XvvvWjatCkyMzNRvnx5nHnmmXjiiSewf/9+0320bt1abXv8+PEBiwrjJzk5GccffzwuvfRSrFy5ErHEBx98gDFjxiAROXjwIEaMGKFEmrxXqlWrhtNOOw1DhgzB1q1by/rwCEkIHJxVR0h4hdMNN9yAxx57DI0aNcLRo0fx448/4t1330WDBg2wZs0aJZCE5cuXo1u3burL8LrrrlOCSfjf//6HKVOmoH379pgzZ47X9v/44w8lxOTqu169emrbusJJjufqq69W+ywsLMSvv/6qxFdubi6WLFmivoDDQX5+PpxOJ9LT0xEJevTooV5HeU6eyKlMnktqaqoShqUdcdq9e7c6rkghr2ubNm2wfv169O/fX/295L2zdu1afPnll/jkk0/UcZQ28rfOy8tDWloakpKSIhZxkoiW79+ckLIgpUz2Skicc/HFF+Oss85S/7/55ptVZOCFF17AtGnTlHiRaJJEe+QL/ueff1YRJ0+efPJJvPnmmyW2+95776FmzZp4/vnn0bdvX/VFEkgK44wzzlAizeCcc85Br169lIB6/fXXTX/n0KFDKrqhiwiXssCI8MUrU6dOVe+V999/H9dcc43XYyLQRbyEg4KCAiWGRAjpIGIpnl93Qnxhqo6QUqBTp07qduPGjepWRMqWLVuUmPIVTUKtWrXw0EMPmaapRDBJ1KVSpUrqfjiPy0g1fv/997j99tuVSDvuuOOK13/11VfRvHlzFU2qW7cuBg0aVCKlaFaPIl/Ekl6T35UvWXl+t9xyC/bt21fimL7++mucf/75qFixIrKysnD22WcXP0+JqHz11VfYvHlzcdrR2JdVjdO8efNw7rnnKvFXuXJl9O7dW0XbPHn00UfV727YsEEdv6wnr69EDw8fPqz9ev70008qUpiRkaEifK+99lrxYxIdkmOQtJov//77rxLRo0aNstz2n3/+WSx2fZHXVF4rA3mdzKJPvn8b4zV77rnn1N/nhBNOUH9bEWgpKSkYOXJkiW389ttv6nfGjRtnWuMkaekKFSqYvm5y0VC7dm0V8RTkQqJ79+7qvST7lf0//vjjxY8TEo1QOBFSChhfehJ5EqZPn66+XEUE6bJ06VL1xS5fPhINuOyyy1T0IZzHZSCiad26dXjkkUcwbNiwYnEhQkm+5CTi1adPHyUAL7roIpVGskNE0n333ae+9F966SUlSOTYu3Tp4vW7Inrki3Tv3r0YPnw4Ro8erVJSs2bNUo//97//VferV6+u0p/yY1fv9M0336h97Ny5Ux3/3XffjUWLFqnjMEv7XHHFFThw4IASMPJ/OR4z8WCGiEBJg0rK9ZlnnlGC87bbbsOECRPU4yImJMr40UcflRAGH374oUo1XnvttZbbl1SvMHnyZLVuOJk4cSJefvll/N///Z/629apU0eJ148//rjEunL8IvIuv/xy021deeWVKkopAtcTEVKSUpT3vJFKlddXXhf5u8j7Ql47z/ccIVGJ1DgRQsLDxIkT5RvN9c0337h27drl+ueff1xTpkxxVatWzZWRkeH6999/1XpVqlRxnXrqqQFte/Dgwa769eu7nE6nuj9nzhy1r59//tnv727cuFGtO3LkSHVc27dvd82fP991+umnq+WfffaZ1/F36NDBVVBQUPz7O3fudKWlpbkuuugiV2FhYfHycePGqfUnTJhQvKx///6uBg0aFN//4Ycf1Drvv/++1zHNmjXLa/n+/ftdFStWdLVp08Z15MgRr3WN5yx0797da/u+z1Geg8Fpp53mqlmzpmvPnj3Fy3755RdXUlKSq1+/fsXLRowYoX73xhtv9NrmpZdeqv52/jj//PPV7z///PPFy3Jzc4v3n5eXp5bNnj1brff11197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FY899pjX7wlvvPGG+l3fSF7v3r1x4403Ft+X117+DvK6ypDqkSNHegnYqK4VigKR5w/T6JkxNkXhK56K7ncdTTNLQkjIUDiFETmRy9WwXBUPmbLS+uq4FJDUlgiAzz//3PTxgwcPqohUs2bN8NNPPynxce+992ptWwYg/ve//1Xi4tChQ6brSC2VRL3uuecerFmzBrfccgtuuOEGfPfdd+rx5cuXq9uJEyeqaJlx3xcRTfK4RJtC5dtvv8Vvv/2GuXPnYsaMGbj22muVePzzzz+L11m7di1WrVqFa665psTvX3755dizZ0/xcxD27t2LWbNmqW0JP/zwA/r166eeu0TLXn/9dSVeRbBFGtsaoCDWi+TFgz+RZ4dl9Kx4bIpPHZdEomhFQAgJExROcVxb0rRpU5W+M+ODDz5QkZO3334bzZs3VyLqvvvu09727bffriIqL7zwgunjzz33nIrWyHonn3wy7r77blx22WVqueFfJEgaTMSRcd9MrEiE6/zzz0edOnVUhGrcuHFqknWglC9fHm+99ZZ6vsaPiEt5LQzef/99FYU68cQTS/x+lSpVVI2Y5/qffvopqlevrtKjgkSXhg0bpmqwJNok9WaPP/64ElCRRpy2w7lepC4eROws3LArpP1YRs9EHA1dA/SfAfR52307dDVFEyEkbFA4xXFtibihW7W7//rrr2jVqpUSPwbt2rULKD0oEScRQrt37zbd/jnnnOO1TO7L8kAQJ3eJSv37778qXSfpyKeeekqJHolEBULLli1L+HRJpMgQQvJ6ffjhh8XRIzPksc8++wy5ubnFQuuqq64qdpr/5Zdf1OtSoUKF4p+BAweqYxWD1Ugi40mke86mykc9LuuV1cWDIaykXikcmEbPjLEpLfu6b5meI4SEEQqnOK4tEZEi9gKR4rrrrkODBg3wxBNPINKIYLr++utVtEnSaUePHsVrr72mHhPR4jv02axwXSJOvkg0S9J3K1aswKJFi/DPP//gyiuvtDyOnj17qn199dVXal1JzXkKLUmBStRp5cqVxT9S0P7HH394idRIIDPdxHLApspHPR7w7LcwXTwM/3w1bjURVqEQyegZIYSYQR+nOKot8WTevHnqC/uuu+4yffyUU05RxdoiQIwv9CVLlgS0DxEso0aNUim42267rcT2Fy5cqFJWBnJfaqoMxD4hmM44SZlJ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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 1. Select and standardize numeric columns\n", + "num_cols = final_df.drop(columns=\"Survived\").select_dtypes(include=\"number\").columns\n", + "X_num = final_df[num_cols].values\n", + "X_scaled = StandardScaler().fit_transform(X_num)\n", + "\n", + "# 2. Fit PCA\n", + "pca = PCA(n_components=2)\n", + "X_pca2 = pca.fit_transform(X_scaled)\n", + "\n", + "# 3. Explained variance\n", + "print(\"Explained variance ratio (2 PCs):\", pca.explained_variance_ratio_)\n", + "\n", + "# 4. Plot explained-variance ratio\n", + "plt.figure(figsize=(6,4))\n", + "plt.bar([1, 2], pca.explained_variance_ratio_)\n", + "plt.xlabel('Principal Component')\n", + "plt.ylabel('Explained Variance Ratio')\n", + "plt.title('PCA Explained Variance (2 PCs)')\n", + "plt.xticks([1,2], ['PC1','PC2'])\n", + "plt.tight_layout()\n", + "plt.show()\n", + "\n", + "# 5. Scatter plot of the first two PCs, colored by survival\n", + "survived = final_df['Survived'].values\n", + "plt.figure(figsize=(6,5))\n", + "plt.scatter(\n", + " X_pca2[survived == 0, 0],\n", + " X_pca2[survived == 0, 1],\n", + " label='Did Not Survive'\n", + ")\n", + "plt.scatter(\n", + " X_pca2[survived == 1, 0],\n", + " X_pca2[survived == 1, 1],\n", + " label='Survived'\n", + ")\n", + "plt.xlabel('PC1')\n", + "plt.ylabel('PC2')\n", + "plt.title('PCA Projection by Survival')\n", + "plt.legend()\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "0c43001a", + "metadata": {}, + "source": [ + "### t-Distributed Stochastic Neighbor Embedding (t-SNE)\n", + "t-SNE is a **non-linear** technique that excels at preserving **local** structure (neighborhoods) in a 2D embedding.\n", + "\n", + "1. Compute pairwise similarities in high-dim space using Gaussian probabilities.\n", + "\n", + "2. Define pairwise similarities in low-dim space with a heavy-tailed Student’s t distribution.\n", + "\n", + "3. Optimize the embedding by minimizing the Kullback–Leibler divergence between the two distributions via gradient descent.\n", + "\n", + "**Why it helps in EDA/preprocessing**\n", + "\n", + "- It often reveals clusters or subpopulations that PCA (linear) might miss.\n", + "\n", + "- Good for visualization, but not typically used as a direct input to models (it doesn’t preserve global distances).\n", + "\n", + "- Requires tuning perplexity (roughly, neighborhood size) and learning rate." + ] + }, + { + "cell_type": "code", + "execution_count": 209, + "id": "dc302f50", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "t-SNE embedding shape: (891, 2)\n" + ] + }, + { + "data": { + "image/png": "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mxNxJOefjEvG+/XXX6t/Rbi88cYbSuSJ9ebKlSum94rQb9q0qRJTcvMSUSOiS76/d999N8O+RFD+/PPP6qYl7lV7lrZVq1apz0TEq8QByvcgokSsFXqQMVr/NjRhLq5R2bbcQCXuUMYh4ll+f5s3b7awjohrXj4DOVclXnD16tVKaGrxh7IdcQUKIo6177N69erICiKY5JjlHJJzXpDtiUiShxj5LYwdO1atc+edd1oIIjmnRVCLWJAHBBmXfA7Hjx/PdL+pqanqnBfhK+dAgwYN1GcjL0GEhFi25TcQHx9v8V4RKfJZOrJ8a9dEETdyXXEl8n2KWHnsscfU+Se/EQmBEIu/9fVQ5skDjL34tq5du6pj/eabbzIsk3lyvRARL3z77bfqPBg0aBDef/99da2Uf22FTRAbGInXMm3aNLlDGY8cOaJr/evXrxurVq2q3lO2bFlj3759jZ988onxzJkzGdYdP368Wu/cuXPGtWvXqr/ffvtt03J5f8eOHS3eI+vYe3355ZcOx/bZZ5+p9X799Ve1zxMnThi/+uorY2RkpDEkJMT433//qfX69Omj1hs1apTF+5csWaLmT5w40WJ+ly5djAaDwfjvv/9ajF22o/Haa68Z8+fPb/znn38s3iv78Pf3Nx4/flxNr1mzRu1j6NChGcaflpZm+lu2Zb5962PUvq+zZ88ag4KCjG3btjWmpqaa1psxY4Za79NPPzXNu+uuu9S8+fPnm+YlJiYao6KijI888ojDz3bHjh3qvf3797eY/8ILL6j5clwaMm4Zvx7M1503b57a1vfff29aLtODBw+2e/wav/32m5ov/1of7xdffGGat3//fjXPz8/PuHHjRtP8FStWqPmyfY1+/foZS5QoYTx//rzFvrp162YsVKiQ+i2Y77tChQqmefbGlZKSYixfvrw6fy5evGj3+7eFti1bL/k85P2VK1c2tmvXzmJbMibZZ5s2bSzmWRMbG5vh/Pj2228zfK4aMl9+49ZY/za07+zOO+9Ux69x5coVY+HChY0DBgyweH9cXJz6fLX58jnJ++Va5Szab/3ZZ581zZPPRq478ruR64Rw4MABtd6sWbMs3t+5c2djuXLlHH43skw714oXL27s3r278YMPPjAeO3bM5njk87F3rTRHO0/37t1rMV87V5cuXWoxv0OHDuoc1JBzwvqcjomJMTZo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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 1. Fit t-SNE on your standardized numeric data\n", + "tsne = TSNE(n_components=2, random_state=42)\n", + "X_tsne2 = tsne.fit_transform(X_scaled)\n", + "\n", + "# 2. Report the shape\n", + "print(\"t-SNE embedding shape:\", X_tsne2.shape)\n", + "\n", + "# 3. Scatter plot of the embedding, colored by survival\n", + "survived = final_df['Survived'].values\n", + "\n", + "plt.figure(figsize=(6, 5))\n", + "plt.scatter(\n", + " X_tsne2[survived == 0, 0],\n", + " X_tsne2[survived == 0, 1],\n", + " label='Did Not Survive'\n", + ")\n", + "plt.scatter(\n", + " X_tsne2[survived == 1, 0],\n", + " X_tsne2[survived == 1, 1],\n", + " label='Survived'\n", + ")\n", + "plt.xlabel('t-SNE Component 1')\n", + "plt.ylabel('t-SNE Component 2')\n", + "plt.title('t-SNE Projection of Numeric Features by Survival')\n", + "plt.legend()\n", + "plt.tight_layout()\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "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 +}