熊猫菲尔纳模式

Jim*_*Jim 7 python pandas fillna

我有一个数据集,其中有一个名为Native Country的列包含30000记录.有些人缺少代表,NaN所以我想用它来填补它mode().我写了这样的东西:

data['Native Country'].fillna(data['Native Country'].mode(), inplace=True)
Run Code Online (Sandbox Code Playgroud)

但是,当我计算缺失值时:

for col_name in data.columns: 
    print ("column:",col_name,".Missing:",sum(data[col_name].isnull()))
Run Code Online (Sandbox Code Playgroud)

它仍然NaN为列原生国家提供相同数量的值.

zip*_*ipa 19

只需调用系列的第一个元素:

data['Native Country'].fillna(data['Native Country'].mode()[0], inplace=True)
Run Code Online (Sandbox Code Playgroud)

或者你可以用assisgnment做同样的事情:

data['Native Country'] = data['Native Country'].fillna(data['Native Country'].mode()[0])
Run Code Online (Sandbox Code Playgroud)

  • 当然,需要像“mode()[0]”中那样对单个数据列使用“[0]”进行切片是一个错误:“mode()”假设一个数据帧,即使在系列上调用也是如此。它应该像“mean()”那样工作,在 Series 上调用时返回单个浮点,在 DataFrame 上调用时返回一个 Series...不同行为的唯一理由是覆盖多模态分布。 (4认同)

小智 6

请注意,NaN 可能是您的数据帧的模式:在这种情况下,您将用另一个 NaN 替换 NaN。

  • Pandas 0.24.0+ 默认不计算 NaN:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.mode.html (5认同)