如何编写Python函数为服装数据集color列缺失值按概率赋随机颜色
缺失值填充实现方案
首先不推荐使用逐行遍历的方式处理,pandas向量化操作的执行效率远高于循环,可直接按以下逻辑实现:
- 第一步:先定义颜色候选列表和对应概率列表
import numpy as np import pandas as pd # 按你给出的分布定义 color_list = [ 'white', 'black', 'silver', 'grey', 'blue', 'red', 'green', 'brown', 'custom', 'yellow', 'orange', 'purple' ] prob_list = [ 0.194729, 0.149217, 0.121210, 0.097715, 0.086823, 0.085831, 0.027132, 0.023690, 0.022386, 0.004960, 0.004493, 0.001984 ]
- 第二步:批量填充color列的缺失值
# 计算缺失值的总数量 na_count = data['color'].isna().sum() # 按指定概率生成对应数量的随机颜色 fill_values = np.random.choice(color_list, size=na_count, p=prob_list, replace=True) # 赋值给缺失值位置 data.loc[data['color'].isna(), 'color'] = fill_values
如果你一定要保留原有遍历的写法,可按以下逻辑修改(仅建议小数据量场景使用,数据量超过1万行时执行效率会非常低):
for idx, row in data[data['color'].isnull()].iterrows(): # 每次按概率抽取1个颜色赋值给当前行 data.loc[idx, 'color'] = np.random.choice(color_list, p=prob_list)
内容的提问来源于stack exchange,提问作者Tomboy94
相关产品推荐
相关产品推荐

