Напишите функцию, которая принимает
pandas.DataFrame и название столбца, а затем возвращает новый DataFrame, в котором выбросы (значения, выходящие за пределы 1.5 межквартильного размаха) удалены.Пример:
import pandas as pd
data = pd.DataFrame({
"values": [10, 12, 15, 100, 14, 13, 11, 102, 16]
})
cleaned_data = remove_outliers(data, "values")
print(cleaned_data)
# Ожидаемый результат:
# values
# 0 10
# 1 12
# 2 15
# 4 14
# 5 13
# 6 11
# 8 16
Решение задачи🔽
import pandas as pd
def remove_outliers(df, column):
Q1 = df[column].quantile(0.25)
Q3 = df[column].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
return df[(df[column] >= lower_bound) & (df[column] <= upper_bound)]
# Пример использования:
data = pd.DataFrame({
"values": [10, 12, 15, 100, 14, 13, 11, 102, 16]
})
cleaned_data = remove_outliers(data, "values")
print(cleaned_data)