更新pandas数据框中的缺失值

dy2hfwbg  于 2023-03-28  发布在  其他
关注(0)|答案(1)|浏览(127)

我有一个大的数据框架(df),分为数值数据(num_data)和分类数据(cat_data)。
当我填充缺失值,然后重新计算缺失值时,我得到相同的缺失值,即使我在填充时没有得到任何错误。
我就是这样分割数据的。

cat_data = df.select_dtypes(include='object')
num_data = df.select_dtypes(exclude='object')

这是所讨论的数据的一个样本

我正在使用它来评估缺失值

num_data.isna().sum().sort_values(ascending=False)

我用它来替换那些缺失的值

# 3a. Fill missing lot frontage values with mean value
df['LotFrontage']=df['LotFrontage' ].fillna(df['LotFrontage' ].mean() )
# 3a. Fill missing MasVnrArea with 0
df['MasVnrArea']=df['MasVnrArea'].fillna(0)

我运行这个程序时没有任何错误。
但是当我在填充这些值后再次计算缺失的变量时,我得到了这些变量相同数量的缺失值。我觉得我误解了这个过程的某些部分,我怀疑这与主df的更改和更新num_data中的信息有关。

编辑:
在@AlexandreDaly的一些建议之后,我似乎有一些空字符串,而不是缺少值。
当我查找值计数来确定丢失的字符串的来源时,我得到
enter image description here
奇怪的是,这个值70.049958出现了259次,因为这和我使用

num_data.isna().sum().sort_values(ascending=False)

那么,为什么这个值会注册为NAN呢?或者这只是巧合,而我要查找的真实的值在数据的其他地方?有人知道如何展开列表以显示所有111个唯一值吗?看起来这一列中的所有内容都是一个值,但我还不能看到所有内容。
DISCOVERY!我的LotFrontage变量是一个Int 64数据类型(整数),重复输入的一个值(70.04)是一个浮点数。
所以现在我的问题变成了,在pandas中更改特定列的数据类型的最佳方法是什么?或者这是我应该采取的方法吗?
谢谢你提前善良的互联网陌生人,这是我在StackOverflow上的第一个问题,所以任何建设性的建议都很感激。

mzmfm0qo

mzmfm0qo1#

此时,这是一个新问题,因此我建议您设置为“已回答”并开始新的查询。
也就是说,要设置新的列类型,您可以执行以下操作:

df['col_to_ints'] = df['col_to_ints'].astype(int)

或:

df['col_to_floats'] = df['col_to_floats'].astype(float)

这取决于你想达到什么目的。

相关问题