Предположим, у меня есть фрейм данных
import pandas as pd
data = pd.DataFrame()
data["name"] = ["A","B","C","D","E","F","G","H","I","J"]
data["age"] = [22,9,505,39,50,17,26,33,-43,48]
data["marks"] = [422,59,75,3,50,47,2,83,63,48]
data
Теперь я хочу удалить все выбросы из числовых переменных. Я могу сделать это, используя формулу 1,5 + - IQR.
Q1 = data.age.quantile(0.25)
Q3 = data.age.quantile(0.75)
IQR = Q3 - Q1
d=data.loc[~((data.age < (Q1 - 1.5 * IQR)) | (data.age > (Q3 + 1.5 * IQR))),]
d
Я хочу создать пользовательскую функцию, чтобы я мог ввести имя переменной и автоматически удалить выбросы. Я пытался написать пользовательскую функцию:
def outlier (data,age):
Q1 = data.age.quantile(0.25)
Q3 = data.age.quantile(0.75)
IQR = Q3 - Q1
data.loc[~((data.age < (Q1 - 1.5 * IQR)) | (data.age > (Q3 + 1.5 * IQR))),]
return data
outlier(data,marks)
Однако он говорит, что оценки не определены. Пожалуйста, помогите мне решить эту проблему.