我试图在海量数据集中找到某些ID和代码的值,我试图通过获取每个唯一对最近使用的值来获得这些值。我目前正在使用下面的代码获取最近使用的代码
data.head()
ID Code value
15 13513 X2784 30.0
16 12665 X2744 65.0
17 16543 X2744 65.0
19 15761 X2100 29.0
21 14265 X2750 48.0
df = data.pivot_table(index='ID', columns='Code', values='value', aggfunc = 'first')
df.head()
ID X2784 X2744 X2100 X2750
13271 30.0 65.0 29.0 35.0
16343 30.0 65.0 29.0 35.0
19342 30.0 65.0 29.0 35.0
15437 30.0 65.0 29.0 35.0
14359 30.0 65.0 29.0 48.0
问题在于,由于数据异常,其中一些值是错误的。我们的想法是查看最近的值,确定它是否代表该对所有值的某个百分比,然后分配它。问题的一个例子如下:
data[(data['ID'] == '14359') & (data['Code'] == 'X2750')]['value'].value_counts()
35.0 2530
48.0 2
值29.0是最近发生的事件,但它发生的次数非常少,因此应将其视为异常。有没有办法将pivot_表aggfunc“first”与某种阈值结合起来
我可以使用aggfunc的lambda函数来计算它
谢谢大家的帮助
如果您确信多数始终是您希望的值,则可以使用中值聚合来获得“中间”或“50%分位数”值。这将切断所有异常情况
尝试此功能:
相关问题 更多 >
编程相关推荐