0

我正在处理一个数据集,其中一列中的几个值是字符串。因此,我在对数据集执行操作时遇到错误。

样本数据集:-

1.99    LOHARU  0.3 2   0   2   0.3 5   2   0   2   2
1.99    31  0.76    2   0   2   0.76    5   2   7.48    4   2
1.99    4   0.96    2   0   2   0.96    5   2   9.45    4   2
1.99    14  1.26    4   0   2   1.26    5   2   0   2   2
1.99    NUH 0.55    2   0   2   0.55    5   2   0.67    2   2
1.99    99999   0.29    2   0   2   0.29    5   2   0.06    2   2

完整的数据集可以在这里找到:- https://www.kaggle.com/sid321axn/audit-data?select=trial.csv

我需要在数据集中找到缺失值和异常值。下面是我用来查找缺失值的代码:-

#Replacing zeros and 99999 with `np.NaN`

dataset[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]]=dataset[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]].replace(99999,np.NaN)

#if 12,14 and 17 can have zeroes then
dataset[[0,1,2,3,4,5,6,7,8,9,10,11,13,15,16]]=dataset[[0,1,2,3,4,5,6,7,8,9,10,11,13,15,16]].replace(0,np.NaN)

print(Dataset.isnull().sum())

但这不会用 NaN 替换 99999

并找出异常值:-

我正在计算 zscore

import scipy.stats as stats
array = Dataset.values
Z=stats.zscore(array)

但它给了我以下错误:

- TypeError: unsupported operand type(s) for /: 'str' and 'int'
4

1 回答 1

0

尽可能用于pd.to_numeric将列转换为数值数据类型:

dff = df.replace({0: np.nan, 99999: np.nan}).apply(pd.to_numeric, errors="coerce")
zscores = (dff-dff.mean())/dff.std()

>>> zscores
   Sector_score  LOCATION_ID    PARA_A  ...  Detection_Risk  Audit_Risk  Risk
0           NaN          NaN -1.008963  ...             NaN   -0.726564   NaN
1           NaN     1.074450  0.191355  ...             NaN    1.034549   NaN
2           NaN    -0.903515  0.713232  ...             NaN    1.507377   NaN
3           NaN    -0.170935  1.496048  ...             NaN   -0.473018   NaN
4           NaN          NaN -0.356616  ...             NaN   -0.621491   NaN
5           NaN          NaN -1.035057  ...             NaN   -0.720853   NaN

注意:对于所有行具有相同值的列没有标准偏差,因此显示为 NaN。

输入 df:
>>> df
   Sector_score LOCATION_ID  PARA_A  ...  Detection_Risk  Audit_Risk  Risk
0          1.99      LOHARU    0.30  ...             0.5      0.2920     0
1          1.99          31    0.76  ...             0.5      0.9088     0
2          1.99           4    0.96  ...             0.5      1.0744     1
3          1.99          14    1.26  ...             0.5      0.3808     0
4          1.99         NUH    0.55  ...             0.5      0.3288     0
5          1.99       99999    0.29  ...             0.5      0.2940     0
于 2021-09-29T19:22:39.300 回答