【发布时间】:2021-04-22 18:53:47
【问题描述】:
与post 类似,我正在删除具有 >50% 缺失数据的行以获得更可靠和完整的数据集
# Keep only the rows with at least x% non-NA values
# calculate threshold
numOfFeatures=38 # num of features in dataset
x=round(numOfFeatures*0.5) #50%
dfWithDroppedRows = df.dropna(thresh=x)
但是,我有一个不平衡的数据集,其中多数类占我数据集的近 93%
df['y'].value_counts(normalize=True) * 100
No 92.769441
Yes 7.230559
因此,我想编辑上面的代码,仅从多数类的样本中删除 >50% 缺失数据的行,这样我就不会丢失少数类的样本。
为此,我已经尝试过:
dfWithDroppedRows = df[df['y'] == 'No'].dropna(thresh=x)
但这会导致 dfWithDroppedRows 仅包含来自多数类的减少行,而不是来自少数类的样本。我想我可以通过将 dfWithDroppedRows 与 df[df['y'] == 'Yes'] 连接来解决这个问题,但我觉得应该有一种更直接的方法来做到这一点。有什么建议吗?
【问题讨论】:
标签: python pandas dataframe imbalanced-data