Ближе познакомиться с нашими данными мы можем при помощи функции под названием describe – она собирает сводные данные и формирует их в удобную таблицу:
train.describe ()
В пакете тренировочных данных содержится 891 запись. В 714 из них содержатся данные о возрасте пассажира. Согласно имеющимся у нас данным, средний возраст пассажира – 29,699118 лет; обычный человек сказал бы, что средний возраст пассажира составляет около 30.
Некоторые представленные данные требуют дополнительного пояснения: минимальное значение в колонке Survived составляет 0, максимальное – 1. Другими словами, это булевы значения: либо кто-то выжил (1), либо нет (0). Таким образом мы можем посчитать среднее значение – 0,38. Мы также можем посчитать среднее значение Pclass, пассажирского класса. Также цены билетов для 1-го, 2-го и 3-го класса. Здесь среднее значение не означает буквально, что кто-то путешествовал классом 2,308.
Выяснив кое-что о данных, которыми мы располагаем, обратимся к анализу. Посчитаем прежде всего количество пассажиров: для этого мы можем воспользоваться функцией value_counts. Она покажет, каково количество значений переменных для каждой категории в колонках. Иначе говоря, мы выясним, сколько пассажиров путешествовало каждым классом. Выясним:
train [ «Pclass»].value_counts ()
1 216
2 184
3 491
Name: Pclass, dtype: int64
Согласно обучающим данным, 491 пассажир путешествовал 3-м классом, 184 человек было во 2-м и 216 – в 1-м.
Теперь посмотрим на число выживших:
train [ «Survived»].value_counts ()
0 549
1 342
Name: Survived, dtype: int64
Обучающие данные показывают, что 549 человек погибли, 342 – выжили.
Посмотрим теперь на данные в процентном соотношении:
print (train [ «Survived»].value_counts (normalize = True))
0 0.616162
1 0.383838
Name: Survived, dtype: float64
62 % пассажиров погибли, 38 % остались в живых. Большинство погибло в крушении. Если бы мы собирались прогнозировать выживание случайного пассажира из нашего списка, то с бо́льшей вероятностью программа бы выдала отрицательный ответ.
И можно было бы закончить на этом, ведь мы только что пришли к выводу, позволяющему сделать вполне логичные прогнозы. Но мы можем больше, так что продолжим. Есть ли какие-либо факторы, с помощью которых мы могли бы уточнить наш прогноз? Ведь кроме данных выживших у нас есть информация о классе пассажиров, имена, пол, возраст, данные о родственниках и членах семьи на борту, стоимость их билетов, номера кают и города отправления.
Теперь проведем несколько сравнений и посмотрим, сможем ли мы обнаружить другие переменные, в потенциале обладающие предсказательной силой:
# Выжившие и погибшие пассажиры
print (train [ «Survived»].value_counts ())
0 549
1 342
Name: Survived, dtype: int64
# В пропорции
print (train [ «Survived»].value_counts (normalize = True))
0 0.616162
1 0.383838
Name: Survived, dtype: float64
# Мужчины выжившие и погибшие
print (train [ «Survived»] [train [ «Sex»] = ‘male’].value_counts ())
0 468
1 109
Name: Survived, dtype: int64
# Женщины выжившие и погибшие
print (train [ «Survived»] [train [ «Sex»] = ‘female’].value_counts ())
1 233
0 81
Name: Survived, dtype: int64
# Усредненное выживание мужчин
print (train [ «Survived»] [train [ «Sex»] = ‘male’].value_counts (normalize=True))
0 0.811092
1 0.188908
Name: Survived, dtype: float64
# Усредненное выживание женщин