我有一个大的数据框架(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上的第一个问题,所以任何建设性的建议都很感激。
1条答案
按热度按时间mzmfm0qo1#
此时,这是一个新问题,因此我建议您设置为“已回答”并开始新的查询。
也就是说,要设置新的列类型,您可以执行以下操作:
或:
这取决于你想达到什么目的。