Если вы хотите, чтобы код был динамическим, вы можете сначала проверить столбцы, которые не являются категориальными, с помощью приведенного ниже кода:
cols = df.columns
num_cols = df._get_numeric_data().columns
##num_cols will contains list of column names which are numeric
## In your case, it should come Age,Height etc.
В качестве альтернативы, вы также можете использовать параметры include
или exclude
, используяdf.select_dtypes
в соответствии с вашим фреймом данных
После этого запустите приведенный ниже код из столбцов сверху:
df[np.abs(df.Data-df.Data.mean()) <= (3*df.Data.std())]
## Df is the dataframe and Data is the name of the column.
#In your case, it will be Age,Height etc.
ИЛИ
Если вы хотите сделатьновый df только с числовыми столбцами и узнайте выбросы за один выстрел, ниже код:
df[df.apply(lambda x: np.abs(x - x.mean()) / x.std() < 3).all(axis=1)]