I want to remove outliers from my dataset "train" for which purpose I've decided to use z-score or IQR.
I'm running Jupyter notebook on Microsoft Python Client for SQL Server.
I've tried for z-score:
from scipy import stats
train[(np.abs(stats.zscore(train)) < 3).all(axis=1)]
for IQR:
Q1 = train.quantile(0.02)
Q3 = train.quantile(0.98)
IQR = Q3 - Q1
train = train[~((train < (Q1 - 1.5 * IQR)) |(train > (Q3 + 1.5 *
IQR))).any(axis=1)]
...which returns...
for z-score:
TypeError: unsupported operand type(s) for /: 'str' and 'int'
for IQR:
TypeError: unorderable types: str() < float()
My train dataset looks like:
# Number of each type of column
print('Training data shape: ', train.shape)
train.dtypes.value_counts()
Training data shape: (300000, 111) int32 66 float64 30 object 15 dtype: int64
Help would be appreciated.