标签:outliers python pandas dataframe filtering
我有一个包含少量列的pandas数据帧.
现在我知道某些行是基于某个列值的异常值.
例如列 – ‘Vol’的所有值都大约为12xx,一个值为4000(异常值).
现在我想排除那些有’Vol’列的行.
因此,基本上我需要在数据框上放置一个过滤器,以便我们选择所有行,其中某列的值在与平均值相差3个标准差的范围内.
实现这一目标的优雅方式是什么?
解决方法:
如果数据框中有多个列,并且想要删除至少有一列中具有异常值的所有行,则以下表达式将一次性执行此操作.
df = pd.DataFrame(np.random.randn(100, 3))
from scipy import stats
df[(np.abs(stats.zscore(df)) < 3).all(axis=1)]
描述:
>对于每一列,首先计算每个值的Z分数
列,相对于列平均值和标准偏差.
>然后是Z分数的绝对值,因为方向不是
只有当它低于阈值时才重要.
> all(axis = 1)确保对于每一行,所有列都满足
约束.
>最后,此条件的结果用于索引数据帧.
标签:outliers,python,pandas,dataframe,filtering 来源: https://codeday.me/bug/20190915/1805036.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。