STEP1:泰坦尼克号生存数据特征处理 本作业只需按照要求处理原始数据,将最终处理完成的数据保存到数据框中,然后提交就可;
时间: 2023-12-07 16:02:48 浏览: 92
首先,读入Titanic数据集:
```python
import pandas as pd
titanic = pd.read_csv('titanic.csv')
```
查看数据集的前几行和数据类型:
```python
print(titanic.head())
print(titanic.dtypes)
```
得到以下结果:
```
PassengerId Survived Pclass ... Fare Cabin Embarked
0 1 0 3 ... 7.2500 NaN S
1 2 1 1 ... 71.2833 C85 C
2 3 1 3 ... 7.9250 NaN S
3 4 1 1 ... 53.1000 C123 S
4 5 0 3 ... 8.0500 NaN S
[5 rows x 12 columns]
PassengerId int64
Survived int64
Pclass int64
Name object
Sex object
Age float64
SibSp int64
Parch int64
Ticket object
Fare float64
Cabin object
Embarked object
dtype: object
```
可以看到,数据集中有12个特征,其中有数值型特征和字符串型特征。
接下来,我们需要对这些特征进行处理。
首先,我们将PassengerId这一特征删除,因为它对于预测乘客是否幸存没有任何帮助:
```python
titanic.drop('PassengerId', axis=1, inplace=True)
```
然后,我们将Name特征进行处理。Name特征中包含了乘客的称呼,例如Mr、Mrs、Miss等,这些称呼有可能与乘客的幸存与否有关系。因此,我们需要从Name特征中提取出这些称呼,并将它们进行分类。
```python
# 从Name特征中提取称呼
titanic['Title'] = titanic['Name'].apply(lambda x: x.split(',')[1].split('.')[0].strip())
# 将称呼进行分类
title_dict = {'Mr': 'Mr', 'Miss': 'Miss', 'Mrs': 'Mrs', 'Master': 'Master', 'Dr': 'Dr', 'Rev': 'Rev', 'Mlle': 'Miss', 'Col': 'Other', 'Major': 'Other', 'Ms': 'Miss', 'Lady': 'Other', 'Capt': 'Other', 'Sir': 'Other', 'Mme': 'Mrs', 'Countess': 'Other', 'Don': 'Other', 'Jonkheer': 'Other'}
titanic['Title'] = titanic['Title'].map(title_dict)
titanic.drop('Name', axis=1, inplace=True)
```
接着,我们将Sex特征进行处理。将其转换为数值型特征,0表示女性,1表示男性。
```python
titanic['Sex'] = titanic['Sex'].map({'female': 0, 'male': 1})
```
然后,我们需要对缺失数据进行处理。在数据集中,Age、Cabin和Embarked这三个特征存在缺失值。
对于Age特征,我们可以使用中位数或平均数来填充缺失值。在这里,我们选择使用中位数来填充。
```python
titanic['Age'].fillna(titanic['Age'].median(), inplace=True)
```
对于Cabin特征,由于缺失值太多,我们可以将其删除。
```python
titanic.drop('Cabin', axis=1, inplace=True)
```
对于Embarked特征,由于缺失值很少,我们可以将其填充为出现次数最多的值。
```python
titanic['Embarked'].fillna(titanic['Embarked'].mode()[0], inplace=True)
```
最后,我们需要对Ticket特征进行处理。由于这个特征的取值种类很多,我们可以将其转换为数值型特征,用其出现次数来表示。
```python
ticket_counts = titanic['Ticket'].value_counts()
titanic['Ticket'] = titanic['Ticket'].apply(lambda x: ticket_counts[x])
```
最终,我们得到了处理完成的数据:
```python
print(titanic.head())
print(titanic.dtypes)
```
得到以下结果:
```
Survived Pclass Sex Age SibSp Parch Ticket Fare Embarked Title
0 0 3 1 22.0 1 0 1 7.2500 S Mr
1 1 1 0 38.0 1 0 2 71.2833 C Mrs
2 1 3 0 26.0 0 0 1 7.9250 S Miss
3 1 1 0 35.0 1 0 2 53.1000 S Mrs
4 0 3 1 35.0 0 0 1 8.0500 S Mr
Survived int64
Pclass int64
Sex int64
Age float64
SibSp int64
Parch int64
Ticket int64
Fare float64
Embarked object
Title object
dtype: object
```
阅读全文