value_counts()上的Pandas数据错误未正确显示计数以清理数据

eyh26e7m  于 2023-04-19  发布在  其他
关注(0)|答案(2)|浏览(155)

清理数据时,需要识别必须清理的特定列中的任何拼写错误,值为1或0,表示是或否。
查看错别字我尝试print(df["Column Name"].value_counts())
结果是
我尝试对Y使用replace命令,但结果是为一组1添加3,并且只显示1组和单个0组。
为什么相同的类型被分为两种类型?如何将字符串修改为Numbers并得到以下结果
我尽力了

df["Column Name"].str.strip()
df["Column Name"].replace(" 1","1")
df["Column Name"].replace("Y","1")
l7mqbcuq

l7mqbcuq1#

转换数据的可靠方法可能是:

df = pd.DataFrame({'Column Name': [0, 1, '1', '1 ', '  1 ', 'Y', 'N']})

mapper = {'Y': 1, 'N': 0}

df['out'] = df['Column Name'].astype(str).str.strip().replace(mapper)#.astype(int)

输出:

Column Name out
0           0   0
1           1   1
2           1   1
3          1    1
4          1    1
5           Y   1
6           N   0
up9lanfz

up9lanfz2#

使用pd.to_numeric

df['Column Name'] = pd.to_numeric(df["Column Name"].str.strip().replace({'Y': 1, 'N': 0}))
df.value_counts()

尝试使用np.unique检查 Dataframe :

import numpy as np

np.unique(df['Column Name'], return_counts=True)

未经修改:

>>> df['Column Name'].value_counts(sort=False)
1     40
1     67
0     89
0     33
Y      3
Name: Column Name, dtype: int64

修改后:

>>> pd.to_numeric(df["Column Name"].str.strip().replace({'Y': 1, 'N': 0})).value_counts()
0    122
1    110
Name: Column Name, dtype: int64

相关问题