使用Pandas和有效值列表检测CSV列中的拼写错误
我有一些数据在一个CSV文件里,我想对这些数据进行分析,以检查数据的质量。我使用Pandas是因为从CSV文件中加载数据非常简单。
我想知道有什么最有效的方法来比较一个系列中的所有值,看看它们是否存在于另一个值的列表中?这样做是为了检查CSV文件中的错误。之后我会用这些值来清理数据。数据可能会非常庞大。
举个例子。
我有一个CSV文件,里面包含了人们填写的居住的郊区名称。很多这些名称是手动输入的,可能会有拼写错误、打字错误等问题。
为了检查这些,我有一个包含有效郊区名称的列表。我会遍历系列中的每个值,并将其与有效郊区名称列表中的每个值进行比较。然后返回所有不合法的唯一值。
从CSV文件中读取值
df = read_csv(“user_address”)
提取我想要处理的系列(郊区),并获取系列中的所有唯一字符串,以减少需要比较的数量
series = df['Suburb'].unique()
遍历每个唯一字符串,看看它是否与列表中的有效郊区名称匹配
L = ......list of suburbs for value in series: if value not in L: print value #Will use value for something more in reality
返回那些与有效郊区名称不匹配的字符串
1 个回答
1
isin()
方法是 pandas 库里的一部分,它的作用是把某一列的数据和一组值进行比较。如果 pandas 数据框中的某个值在这组值里,就返回 True
,如果不在,就返回 False
。
values_not_in_array = df[~df.Suburb.isin(L)].Suburb
values_in_array = df[df.Suburb.isin(L)].Suburb