擅长:python、mysql、java
<p>使用pandas时,如果可能,最好不要使用循环。在您的例子中,我们可以使用<code>groupby()</code>来执行相似家族的操作。以下是一种通过使用不同于组中值的值来查找异常值的方法:</p>
<h3>代码:</h3>
<pre><code>df['median'] = df.groupby('Product_Family').transform('median')
df['outlier'] = ((df.Prices - df['median']) / df['median']).abs() > 0.5
</code></pre>
<h3>测试代码:</h3>
^{pr2}$
<h3>结果:</h3>
<pre><code> Prices Product_Family median outlier
4 7.99 Yoplait 1.99 True
7 2.99 Hunts 12.74 True
Prices Product_Family median outlier
0 1.99 Yoplait 1.99 False
1 1.89 Yoplait 1.99 False
2 1.59 Yoplait 1.99 False
3 1.99 Yoplait 1.99 False
4 7.99 Yoplait 1.99 True
5 12.99 Hunts 12.74 False
6 12.99 Hunts 12.74 False
7 2.99 Hunts 12.74 True
8 12.49 Hunts 12.74 False
</code></pre>