我有一个包含城市名称和犯罪数量的数据集。数据很脏,例如“纽约”这样的城市名称被写成“纽约”,“纽约我们”,#39;纽约市'曼哈顿纽约'我如何将所有这些城市组合在一起并总结他们的罪行?
我尝试过' difflib'在python中匹配字符串的包,并给你一个分数。它不能很好地工作。我也在python中尝试过geocode包。它限制了您访问api的次数,也无法正常工作。有什么建议?
答案 0 :(得分:1)
也许这可能会有所帮助:
http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/
另一种方式:如果一个字符串包含'new'和'york',那么将它标记为'new york city'。
另一种方法:创建所有可能出现的模糊词的字典,并手动标记每个词。并使用该标签将这些模糊单词替换为标签。
答案 1 :(得分:0)
另一种方法是遍历每个条目并剥离空白区域,看它们是否包含基本城市名称。例如'newyork','new york us','new york city','manhattan new york',当剥去白色空间时,将是'newyork','newyorkus','newyorkcity','manhattannewyork',这些都包含单词'newyork'。
这种方法有两种方法,您可以通过并将所有'new york'字符串替换为没有空格且只是'newyork'的字符串,或者您可以即时查看它们。
我在下面写下了一个例子,但由于我不知道你的数据是如何格式化的,所以我不确定它有多大帮助。
crime_count = 0
for (key, val) in dataset:
if 'newyork' in key.replace(" ", ""):
crime_count = crime_count + val