In [2]:
import pandas as pd
In [226]:
titanic_data = pd.read_csv('resources/titanic.csv')
In [227]:
print(titanic_data.shape)
In [228]:
print(titanic_data.Pclass.value_counts())
In [229]:
#Какое количество мужчин и женщин ехало на корабле? В качестве ответа приведите два числа через пробел.
print(titanic_data.Sex.value_counts())
In [231]:
#Какой части пассажиров удалось выжить?
#Посчитайте долю выживших пассажиров.
#Ответ приведите в процентах (число в интервале от 0 до 100, знак процента не нужен), округлив до двух знаков.
died = titanic_data.Survived.value_counts()[0]
surv = titanic_data.Survived.value_counts()[1]
print(titanic_data.Survived.value_counts())
print("Выжили %d" % surv)
print("Погибли %d" % died)
print("Процент выживаемости %.2f" % (100.0 * surv / (died + surv)))
In [51]:
# Какую долю пассажиры первого класса составляли среди всех пассажиров?
# Ответ приведите в процентах (число в интервале от 0 до 100, знак процента не нужен), округлив до двух знаков.
total = len(titanic_data)
first_class = len(titanic_data[titanic_data.Pclass == 1])
print("%.2f" % (100.0 * first_class / total))
In [246]:
#Какого возраста были пассажиры? Посчитайте среднее и медиану возраста пассажиров.
#В качестве ответа приведите два числа через пробел.
import numpy as np
avg = titanic_data.Age.mean(skipna=True)
meadian = titanic_data.Age.median(skipna=True)
print("%.2f %.2f" % (avg, meadian))
In [147]:
# Коррелируют ли число братьев/сестер/супругов с числом родителей/детей?
# Посчитайте корреляцию Пирсона между признаками SibSp и Parch.
print("%.2f" % np.corrcoef(titanic_data.SibSp, titanic_data.Parch)[0, 1])
In [212]:
# Какое самое популярное женское имя на корабле?
# Извлеките из полного имени пассажира (колонка Name) его личное имя (First Name).
# Это задание — типичный пример того, с чем сталкивается специалист по анализу данных.
# Данные очень разнородные и шумные, но из них требуется извлечь необходимую информацию.
# Попробуйте вручную разобрать несколько значений столбца Name и выработать правило для извлечения имен, а также
# разделения их на женские и мужские.
def normilize_name1(n = None):
if '(' in n:
return n.split("(")[1].replace(")", "")
return n
def normilize_name2(n = None):
if ' ' in n:
return n.strip().split(" ")[-1].replace(")","")
return n
def normilize_name3(n = None):
if '"' in n:
n = n.replace('"',"")
if '(' in n:
n = n.replace('(',"")
if ')' in n:
n = n.replace(')',"")
return n
titanic_data['Name1'] = titanic_data.Name.str.split(", ").str.get(1).str.split("\.\s").str.get(1);
titanic_data['Name2'] = titanic_data.Name1.apply(normilize_name1)
titanic_data['ClearedName'] = titanic_data.Name2.apply(normilize_name2).apply(normilize_name3)
names = titanic_data[titanic_data.Sex == 'female']["ClearedName"];
print(names.describe())