gpt4 book ai didi

python - Pandas:难以填充空值

转载 作者:太空狗 更新时间:2023-10-30 02:53:44 25 4
gpt4 key购买 nike

我正在使用 Kaggle Titanic dataset并尝试填写空值。运行这个:

combined_df.isnull().sum()

给我这个:

Age            263
Embarked 2
Fare 1
Parch 0
PassengerId 0
Pclass 0
Sex 0
SibSp 0
Survived 418
fam_size 0
Title 0
dtype: int64

所以我执行以下操作来填充空值:

combined_df.Age.fillna(combined_df.Age.mean(), inplace=True)
combined_df.Embarked.fillna(combined_df.Embarked.mode(), inplace=True)
combined_df.Fare.fillna(combined_df.Fare.mean(), inplace=True)

所以当我现在运行它时:

combined_df.isnull().sum()

我得到:

Age              0
Embarked 2
Fare 0
Parch 0
PassengerId 0
Pclass 0
Sex 0
SibSp 0
Survived 418
fam_size 0
Title 0
dtype: int64

因此它正确处理了 AgeFare 列,但是 Embarked 仍然像以前一样有两个空值。

有趣的是,当我运行时:

combined_df.Embarked.value_counts()

我回来了:

S    914
C 270
Q 123
Name: Embarked, dtype: int64

所以这使得它看起来没有 Embarked 中的任何空值?

很困惑;有什么建议吗?

谢谢!

最佳答案

您不能使用 mode 返回的值来填充,因为它是一个 Series 对象(当然可以,但这表示要填充哪些索引)。而是使用第一个条目(可能有平局)。

df = pd.DataFrame({'Emb': ['S', 'Q', 'C',  np.nan, 'Q', None]})
df
Emb
0 S
1 Q
2 C
3 NaN
4 Q
5 None
df.fillna(df.Emb.mode())
Emb
0 S
1 Q
2 C
3 NaN
4 Q
5 None
df.fillna(df.Emb.mode()[0])
Emb
0 S
1 Q
2 C
3 Q
4 Q
5 Q

更多说明:

mode = df.Emb.mode()
mode
0 Q
dtype: object
0 S
1 Q
2 C
3 NaN
4 Q
5 NaN
Name: Emb, dtype: object
mode.index = [5]
5 Q
dtype: object
df.Emb.fillna(mode)
0 S
1 Q
2 C
3 NaN
4 Q
5 Q
Name: Emb, dtype: object

关于python - Pandas:难以填充空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48466743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com