Fillna() 未针对 groupby() 估算值
Fillna() not imputing values with respect to groupby()
我正在尝试使用 fillna() 和 transform() 来估算与 phone 的 'release_year' 和 'brand_name' 相关的列中的一些缺失值,但是在 运行 我的代码之后,我仍然有相同的缺失值计数。
这是我在 运行 代码之前的缺失值计数和百分比:
这是我 运行 估算的代码 'main_camera_mp' 和结果(仅供参考,我将上述数据帧复制到 df2):
df2['main_camera_mp'] = df2['main_camera_mp'].fillna(value = df2.groupby(['release_year','brand_name'])['main_camera_mp'].transform('mean'))
我猜你的插补方法不适合你的数据,因为当 main_camera_mp
缺失时,release_year
-brand_name
组中的所有条目都缺失。因此,从作为填充值传递的 groupby 对象派生的系列本身将具有这些组的缺失值。
这里有一个简单的例子来说明这是如何发生的:
import numpy as np
import pandas as pd
df2 = pd.DataFrame({'main_camera_mp': [1, 2, 3, np.nan, 5, 6, np.nan, np.nan],
'release_year': [2000, 2000, 2001, 2001, 2000, 2000, 2001, 2001],
'brand_name': ['a', 'b', 'a', 'b', 'a', 'b', 'a', 'b']})
df2['main_camera_mp'] = df2['main_camera_mp'].fillna(value =
df2.groupby(['release_year', 'brand_name'])['main_camera_mp'].transform('mean'))
df2
main_camera_mp release_year brand_name
0 1.0 2000 a
1 2.0 2000 b
2 3.0 2001 a
3 NaN 2001 b
4 5.0 2000 a
5 6.0 2000 b
6 3.0 2001 a
7 NaN 2001 b
请注意,索引 6 处的值是按预期估算的,但其他两个缺失值不是,因为它们的组没有 non-missing 值。
我正在尝试使用 fillna() 和 transform() 来估算与 phone 的 'release_year' 和 'brand_name' 相关的列中的一些缺失值,但是在 运行 我的代码之后,我仍然有相同的缺失值计数。
这是我在 运行 代码之前的缺失值计数和百分比:
这是我 运行 估算的代码 'main_camera_mp' 和结果(仅供参考,我将上述数据帧复制到 df2):
df2['main_camera_mp'] = df2['main_camera_mp'].fillna(value = df2.groupby(['release_year','brand_name'])['main_camera_mp'].transform('mean'))
我猜你的插补方法不适合你的数据,因为当 main_camera_mp
缺失时,release_year
-brand_name
组中的所有条目都缺失。因此,从作为填充值传递的 groupby 对象派生的系列本身将具有这些组的缺失值。
这里有一个简单的例子来说明这是如何发生的:
import numpy as np
import pandas as pd
df2 = pd.DataFrame({'main_camera_mp': [1, 2, 3, np.nan, 5, 6, np.nan, np.nan],
'release_year': [2000, 2000, 2001, 2001, 2000, 2000, 2001, 2001],
'brand_name': ['a', 'b', 'a', 'b', 'a', 'b', 'a', 'b']})
df2['main_camera_mp'] = df2['main_camera_mp'].fillna(value =
df2.groupby(['release_year', 'brand_name'])['main_camera_mp'].transform('mean'))
df2
main_camera_mp release_year brand_name
0 1.0 2000 a
1 2.0 2000 b
2 3.0 2001 a
3 NaN 2001 b
4 5.0 2000 a
5 6.0 2000 b
6 3.0 2001 a
7 NaN 2001 b
请注意,索引 6 处的值是按预期估算的,但其他两个缺失值不是,因为它们的组没有 non-missing 值。