首页 > 解决方案 > 根据另一列中的值估算熊猫数据框的缺失列?

问题描述

我正在对来自 Kaggle 的 Titanic 数据集进行一些数据清理。我目前正在尝试做的是估算缺失的年龄值。我没有尝试使用年龄列的通用中位数进行估算,而是尝试通过根据共享相同标题的行的年龄列的中位数估算缺失的年龄来更具体。

我尝试了以下方法(引发“SettingWithCopyWarning”消息):

# import data
train_df = pd.read_csv('Data/train.csv', header=0)

# create title field
train_df['Title'] = train_df['Name'].str.extract(' ([A-Za-z]+)\.', expand=False)

# create boolean of rare titles
rare_titles = (train_df['Title'].value_counts() < 10)

# replace rare title values
df['Title'] = df['Title'].replace({x: 'Rare' for x in rare_titles[rare_titles].index})

# impute missing age values based on title
# ignore the for loop indent error, can't format it correctly on stackoverflow for some reason
title_list = df.Title.unique()
for title in title_list:
train_df.loc[train_df['Title']==title].Age.fillna(train_df.loc[train_df['Title']==title].Age.median(), inplace=True)

有没有更好的方法来做到这一点?我使用的代码会引发警告消息,而且读/写/查看也很混乱,所以我希望在某个地方有更优雅的解决方案!

标签: pythonpandas

解决方案


推荐阅读