Удаление выбросов из набора данных KeyError: False in pandas - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь удалить выбросы из моего набора данных, используя zscore. Просто один из моих столбцов, «Сумма» - это число c, поэтому я хочу удалить всю строку, если «Сумма» содержит число, классифицированное как выброс. Вот мой код, я называю весь набор данных «Данные»

'' '

#Change 'Amount' data to numeric
Data['Amount'] = pd.to_numeric(Data['Amount'])

#Calculating and printing zscore
z = np.abs(stats.zscore(Data['Amount']))
print(z)

#Identifying and printing the outliers
threshold = 3
print(np.where(z > 3))

#Removing the outliers
Data = Data[Data['Amount'][(z < 3).all()]]

' ''

Вот ошибка появляется: Файл " pandas_libs \ index.pyx ", строка 81, в pandas ._ libs.index.IndexEngine.get_value файле" pandas_libs \ index.pyx ", строка 89, в pandas ._ libs.index.IndexEngine.get_value файле" pandas_libs \ index.pyx ", строка 129, в pandas ._ файле libs.index.IndexEngine.get_loc" pandas_libs \ index_class_helper.pxi ", строка 91, в pandas ._ libs.index.Int64Engine._check_type KeyError: False

Я не понимаю, почему я получаю эту ошибку, ошибка происходит в последней строке кода. Есть ли лучший, более простой способ удалить выбросы

1 Ответ

0 голосов
/ 20 апреля 2020

Я не могу сказать, где именно ваша ошибка, но я могу сказать, что ниже это более стандартная практика, и я смог сделать то, что вы искали, когда я ее протестировал.

Я говорю, что это больше стандартная практика по двум основным причинам:

  1. Вы сохраняете zscores для каждой записи в одном и том же DataFrame, а не в отдельном объекте.
  2. При внесении изменений в DataFrame, особенно для условных Подобные удаления, лучше по возможности использовать операцию «на месте», если это возможно. Выполнение этого в обычном порядке помогает минимизировать возможные ошибки, когда DataFrame не меняется точно так, как вы ожидаете.
Data["z"] = np.abs(stats.zscore(Data["amount"]))
Data.drop(Data.loc[Data["z"]>3].index,inplace=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...