【发布时间】:2020-07-21 21:46:43
【问题描述】:
我创建了一个函数来查看带有箱线图的异常值,但我无法从数据集中删除它们。有人知道如何更改函数,以便我获得没有异常值的整个数据框吗?现在我只得到一列。我希望你能理解我。
def outliers(variable):
'''Funktion um die Zahl der mathematisch definierten Ausreißer zu analysieren. Es werden die Features mit und ohne Ausreißer angezeigt'''
# Calculate 1st, 3rd quartiles and iqr.
global filtered
q1, q3 = variable.quantile(0.25), variable.quantile(0.75)
iqr = q3 - q1
# Berechne den unteren Zaun und den oberen Zaun der Ausreißer
# Jeder Wert unter l_fence und größer u_fence werden als Ausreißer analysiert.
l_fence, u_fence = q1 - 1.5*iqr , q3 + 1.5*iqr
# Beobachtungen der Ausreißer
outliers = variable[(variable<l_fence) | (variable>u_fence)]
print('Total Outliers of', variable.name,':', outliers.count())
# Hier werden die beobachteten Ausreißer gelöscht
filtered = variable.drop(outliers.index, axis = 0)
# Subplot erstellen
out_variables = [variable, filtered]
out_titles = [' Verteilung mit Ausreißer', ' Verteilung ohne Ausreißer']
title_size = 10
font_size = 8
plt.figure(figsize = (20, 5))
for ax, outlier, title in zip(range(1,3), out_variables, out_titles):
plt.subplot(2, 1, ax)
plt.subplots_adjust(bottom=0.2, right=0.8, top=0.9, hspace=.5)
sns.boxplot(outlier).set_title('%s' %outlier.name + title, fontsize = title_size)
plt.xticks(fontsize = font_size)
plt.xlabel('%s' %outlier.name, fontsize = font_size)
´´´
´´´´
outliers(variable=daten["Alter"])
´´´´
【问题讨论】:
标签: python-3.x function boxplot outliers