过滤异常和复杂的数据集

Ali*_*inx 5 python filter dataframe pandas

我有一个关于如何从大型 df 中过滤和选择异常数据集的问题。例如,我有一个 df:

import pandas as pd
import numpy as np

data = {"code": ['a', 'a', 'a', 'b', 'b', 'c', 'c', 'c', 'd', 'd'],
"number": [7, 5, 2, 4, 6, 9, 6, 2, 8, 2]}

df = pd.DataFrame(data=data)

  code  number
0    a       7
1    a       5
2    a       2
3    b       4
4    b       6
5    c       9
6    c       6
7    c       2
8    d       8
9    d       2
Run Code Online (Sandbox Code Playgroud)

在这个 df 中,大部分数据都遵循这样一个规则,即在同一个“代码”组中,更大的数字出现在开头。例如,在'a'组中,它在dataframe中的值如下:7>5>2;在'c'组中,它的值如下:9>6>2,'d'组8>2中的相同模式。但只是不在'b'组中,因为4比6更小。所以我想过滤仅异常子集 b 并具有如下输出:

  code  number
0    b       4
1    b       6
Run Code Online (Sandbox Code Playgroud)

有人会有什么想法吗?非常感谢您的帮助。

WeN*_*Ben 2

我们可以filter这样做diff

df.groupby('code').filter(lambda x : (x.number.diff()>0).any())                        
  code  number
3    b       4
4    b       6
Run Code Online (Sandbox Code Playgroud)