天天看点

Pandas 缺失值填充的方法直接用代码来展示[基于泰坦尼克数据]

直接用代码来展示[基于泰坦尼克数据]

  • 真实数据往往某些变量会有缺失值。
  • 这里,cabin有超过70%以上的缺失值,我们可以考虑直接丢掉这个变量。 – 删除某一列数据
  • 像Age这样的重要变量,有20%左右的缺失值,我们可以考虑用中位值来填补。-- 填补缺失值
  • 我们一般不提倡去掉带有缺失值的行,因为其他非缺失的变量可能提供有用的信息。-- 删除带缺失值的行

普通的方法(直接根据所需要的值来进行填充)

# 重新载入原始数据
titanic_df=pd.read_csv("titanic.csv")

# 计算所有人年龄的均值
age_median1 = titanic_df.Age.median()

# 使用fillna填充缺失值,inplace=True表示在原数据titanic_df上直接进行修改
titanic_df.Age.fillna(age_median1, inplace=True)

# 查看Age列的统计值
titanic_df.Age.describe()
           

考虑性别因素,分别用男女乘客各自年龄的中位数来填补(需要建立索引)

titanic_df = pd.read_csv("titanic.csv")
# 分组计算男女年龄的中位数, 得到一个Series数据,索引为Sex
age_median2 = titanic_df.groupby("Sex").Age.median()
# 设置索引为Sex
titanic_df.set_index("Sex",inplace=True)
# 使用fillna填充缺失值,根据索引值填充
titanic_df["Age"].fillna(age_median2,inplace=True)
# 重置索引,即取消Sex索引
titanic_df.reset_index(inplace=True)
titanic_df["Age"].describe()
           

同时考虑性别和舱位因素

# 重新载入原始数据
titanic_df=pd.read_csv("titanic.csv")

# 分组计算不同舱位男女年龄的中位数, 得到一个Series数据,索引为Pclass,Sex
age_median3 = titanic_df.groupby(['Pclass', 'Sex']).Age.median()

# 设置Pclass, Sex为索引, inplace=True表示在原数据titanic_df上直接进行修改
titanic_df.set_index(['Pclass','Sex'], inplace=True)
# 使用fillna填充缺失值,根据索引值填充
titanic_df.Age.fillna(age_median3, inplace=True)
# 重置索引,即取消Pclass,Sex索引
titanic_df.reset_index(inplace=True)

# 查看Age列的统计值
titanic_df.Age.describe()
           

继续阅读