python离群值Nutri函数

时间:2018-11-15 10:05:35

标签: python

嗨,我必须创建一个在所有列上应用函数“ delete_outliers ”的函数。

首先我的数据是:

pnns_groups_1     ................................  object

pnns_groups_2     ................................  object

proteins_100g     ................................  float64

fiber_100g        ................................  float64

salt_100g         ................................  float64

fat_100g          ................................  float64

trans-fat_100g    ................................  float64

carbohydrates_100g ................................  float64

sugars_100g  ................................  float64

starch_100g  ................................  float64

omega-3-fat_100g ................................  float64

nutrition_grade_fr ................................  float64

nutrition-score-fr_100g  ................................  float64

energy_100g   ................................  float64

dtype:对象

我创建了此函数:

*def delete_outliers(col):*

    inf = (col.quantile(0.25)-(1.5* (col.quantile(0.75)-col.quantile(0.25))))
    sup = (col.quantile(0.75)+(1.5*(col.quantile(0.75)-col.quantile(0.25))))
    return col.between(inf,sup)*col

即使我从数据框中删除了 pnns_groups_1 pnns_groups_2 ,我也无法对所有数据框应用 detect_outlier 功能 float64 数据

我有一个属性错误:

  

AttributeError: 'DataFrame' object has no attribute 'between'

1 个答案:

答案 0 :(得分:1)

您很可能会将DataFrame传递给函数,而不仅仅是传递列。 要将功能应用于多列,请使用

result = df.apply(delete_outliers, axis=0)

这会将您的函数应用于每个列(可以使用切片),并以DataFrame的形式返回结果。

有关完整方法的参考,请咨询Pandas documentation