数据集
UPDATE [dbo].[Test]
SET [Name] =
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE([Name], 'A', '#')
, 'B', '$'),
'C', '^'),
'D', 'A'),
'E', 'B'),
'F', 'C'),
'#', 'D'),
'$', 'E'),
'^', 'F')
代码
store id,revenue ,profit
101,779183,281257
101,144829,838451
101,766465,757565
101,353297,261071
101,1615461,275760
101,246731,949229
101,951518,301016
101,444669,430583
import pandas as pd
import seaborn as sns
dummies = pd.read_csv('1.csv')
dummies.sort_values(by=['revenue'], inplace=True)
fea = dummies[['storeid']]
lab = dummies[['revenue']]
param = 'revenue'
qv1 = lab[param].quantile(0.25)
qv2 = lab[param].quantile(0.5)
qv3 = lab[param].quantile(0.75)
qv_limit = 1.5 * (qv3 - qv1)
un_outliers_mask = (lab[param] > qv3 + qv_limit) | (lab[param] < qv1 - qv_limit)
un_outliers_data = lab[param][un_outliers_mask]
un_outliers_name = fea[un_outliers_mask]
un_outliers_data
#41 54437
# 44 89269
# 40 1942989
# 6 1951518
dummies.boxplot(by='storeid', column=['revenue'], grid=False)
输出的异常值越来越高,但是在图中仅显示更高的值
我的图只显示较高的离群值
答案 0 :(得分:0)
un_outliers_data
具有全局离群值,即您正在考虑来自dummies
数据帧的完整数据的均值。但是您的箱形图通过storeid
过滤数据,然后计算该数据子集的中位数,百分位数等。
如果您只是执行dummies['revenue'].plot(kind='box')
示例: 考虑下面的小型数据集:
store id,revenue
101, 10
102, 190
103, 200
104, 210
105, 300
应该清楚的是,收入= 10和300是离群值,但是如果分别查看商店ID 101和105的数据,则它们不是离群值。