Pandas 如何插入或填充汽车品牌的缺失价格值?
Pandas how to interpolate or fillna missing price values for car makes?
我正在使用此 automobile dataset,但我不确定使用哪种方法来填充缺失的价格值。由于价格是主观的,这甚至值得担心吗?
只删除这些行是否更好?
我想我可以计算每个特定品牌的平均价格并用它填充 - 这会给我一个足够接近的缺失值插值吗?
distinctNullMakes = automobile.loc[automobile.Price.isna() , 'Make'].unique()
for make in distinctNullMakes:
mask = automobile.Make == make
mean = round(automobile.Price[mask].mean())
automobile[mask] = automobile[mask].fillna(mean)
另外这段代码看起来不是很优雅,有没有更好的方法(我是菜鸟)?
关于用平均分数或中位数分数替换缺失的问题,需要进行整个讨论(想想公司的净资产并加上来自亚马逊的 Jeff Bazos,它会移动均值而不是中位数) .
完成讨论并确定均值后,如何以更整洁的 Python 方式进行操作?这是在下面的一行函数中完成的,它按顺序做了五件事。
Groupby + Apply + Lambda + Fillna + Mean
automobile['Price']=automobile.groupby('Make')['Price'].apply(lambda x:x.fillna(x.mean()))
尽管实现了与上面相同的效果,但它有点短。它所做的主要事情是删除 make 的循环并隐式地允许 pandas 的代码对结果进行向量化。
如果您想按多个项目分组(如 'make' 和 'body type'),请将 groupby('Make')
更改为 groupby(['Make','BodyType')
我正在使用此 automobile dataset,但我不确定使用哪种方法来填充缺失的价格值。由于价格是主观的,这甚至值得担心吗?
只删除这些行是否更好?
我想我可以计算每个特定品牌的平均价格并用它填充 - 这会给我一个足够接近的缺失值插值吗?
distinctNullMakes = automobile.loc[automobile.Price.isna() , 'Make'].unique()
for make in distinctNullMakes:
mask = automobile.Make == make
mean = round(automobile.Price[mask].mean())
automobile[mask] = automobile[mask].fillna(mean)
另外这段代码看起来不是很优雅,有没有更好的方法(我是菜鸟)?
关于用平均分数或中位数分数替换缺失的问题,需要进行整个讨论(想想公司的净资产并加上来自亚马逊的 Jeff Bazos,它会移动均值而不是中位数) .
完成讨论并确定均值后,如何以更整洁的 Python 方式进行操作?这是在下面的一行函数中完成的,它按顺序做了五件事。
Groupby + Apply + Lambda + Fillna + Mean
automobile['Price']=automobile.groupby('Make')['Price'].apply(lambda x:x.fillna(x.mean()))
尽管实现了与上面相同的效果,但它有点短。它所做的主要事情是删除 make 的循环并隐式地允许 pandas 的代码对结果进行向量化。
如果您想按多个项目分组(如 'make' 和 'body type'),请将 groupby('Make')
更改为 groupby(['Make','BodyType')