Не удается найти выбросы (точнее IQR) моего набора данных - PullRequest
1 голос
/ 19 февраля 2020

Попытка найти выбросы листа Excel с помощью pandas в python. Я могу найти первый и третий квартили, но не могу вычесть одно из другого, не возвращая NaN.

Вот необходимый код:

absent = pd.read_excel('Absenteeism_at_work.xls')

print("\nOUTLIERS:")
# q1 = (absent.loc[:741, ['Distance from Residence to Work']].quantile([0.25]))
# q3 = (absent.loc[:741, ['Distance from Residence to Work']].quantile([0.75]))

#print(absent.loc[:741, 'Distance from Residence to Work'].quantile([0.25])) #quartile

#print(q1)
# q1, q3 = absent.loc[:741, ['Distance from Residence to Work', 'Transportation expense', 'Month of absence',
  #                       'Social smoker', 'Social drinker', 'Education']].quantile([0.25 - 0.75])

print(absent.loc[:741, ['Distance from Residence to Work', 'Transportation expense', 'Month of absence',
                      'Social smoker', 'Social drinker', 'Education']].quantile([0.75])
   - absent.loc[:741, ['Distance from Residence to Work', 'Transportation expense', 'Month of absence',
                    'Social smoker', 'Social drinker', 'Education']].quantile([0.25]))

ВЫХОД:

OUTLIERS:
      Distance from Residence to Work  Transportation expense  \
0.25                              NaN                     NaN   
0.75                              NaN                     NaN   

      Month of absence  Social smoker  Social drinker  Education  
0.25               NaN            NaN             NaN        NaN  
0.75               NaN            NaN             NaN        NaN  

1 Ответ

0 голосов
/ 19 февраля 2020
  1. Ваш код - это просто расчет квартильного диапазона. если это может работать для вас, это будет хорошо. Если вам нужно точное обнаружение выбросов, которое сложнее, чем режим на основе квартиля, особенно многовариантные, вы можете прибегнуть к пакету python, например, sklearn или pyod.

  2. с использованием функций квантиля, вам нужно очистить необработанные данные, чтобы убедиться, что это только число. В частности, вы импортируете файл Excel в качестве источника данных.

  3. проверьте данные по

    tmp_df = absent.iloc [: 741]

    cols = [' Расстояние от места жительства до работы »,« Транспортные расходы »,« Месяц отсутствия »,« Социальный курильщик »,« Социальный пьющий »,« Образование »]

    print (tmp_df [col] .quantile (0.25,0.75 ))

    print (tmp_df [col] .describe (include = 'all'))

Удачи.

WY

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...