Часть 6: Пушистик за работой
Ранее в этой серии мы установили библиотеку fuzzywuzzy и импортировали модули fuzz и process из библиотеки fuzzywuzzy.
В сегодняшнем обсуждении мы будем использовать эти библиотеки для обнаружения повторений и опечаток.
$ process.extract('George R.R. Martin', df.author, limit=5)
Мы использовали process.extract, чтобы найти наиболее близкие совпадения с именем нашего автора и вернуть первые пять результатов.
Мы получаем
[('George R.R. Martin', 100, 118), ('George R.R. Martin', 100, 119), ('George R.R. Martin', 100, 120), ('George R. R. Martin', 97, 5), ('George R. R. Martin', 97, 6)]
Следовательно, в имени автора Р. Р. Мартин есть опечатка: пробел между двумя буквами «Р».
Мы можем просмотреть каждое имя, чтобы найти то, в котором есть опечатка. Другим полезным методом pandas для поиска уникальных значений в нашем столбце author будет value_counts(); проверить это.
Еще один автор с такой же проблемой — автор книги «Гарри Поттер и самый худший поход на свете», моей любимой книги из этой серии. Это напоминает мне о тьме в наших сердцах и о том, как мы все страдаем из-за «больших ожиданий» — еще одна книга, которую стоит прочитать.
$ process.extract('J.K. Rowling', df.author, limit=10)
На этот раз мы получим десять ближайших совпадений в нашем выводе;
[('J.K. Rowling', 100, 102), ('J.K. Rowling', 100, 153), ('J.K. Rowling', 100, 154), ('J.K. Rowling', 100, 156), ('J.K. Rowling', 100, 157), ('J.K. Rowling', 100, 353), ('J. K. Rowling', 96, 155), ('J. K. Rowling', 96, 159), ('Jim Collins', 52, 139), ('Jim Collins', 52, 140)]
Мы можем исправить эти опечатки с помощью метода replace(). То есть;
$ df = df.replace('George R. R. Martin', 'George R.R. Martin') $ df = df.replace('J. K. Rowling', 'J.K. Rowling')
Мы можем обратить внимание на другие столбцы, чтобы проверить уникальность значений в каждом столбце. Мы используем метод unique().
$ df.genre.unique()
Это возвращает массив и тип данных в нашем столбце жанра.
array(['Non Fiction', 'Fiction'], dtype=object)
Следующий столбец временной. Работа с набором временных данных значительно усложняет наш анализ, начиная с разделения данных для обучения. Для этой модели мы можем выделить время как фактор в нашей модели. Тем не менее, меньше проверять уникальность этой колонки.
$ df.year.sort_values().unique()
Еще раз, он возвращает массив.
array([2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019])
Следующим шагом будет проверка повторных книг. Наши данные должны иметь одну уникальную книгу, а годы еще больше усложнят наш анализ, поскольку повторения могут происходить ежегодно.
Мы удаляем нашу колонку года.
$ del df['year']
Как только столбец года будет удален, давайте снова удалим дубликаты в нашем наборе данных.
$ df = df.drop_duplicates(keep = 'first')
Этот код удаляет дубликаты во всем наборе данных и сохраняет только первую запись для записей с копиями.
Помните, для нашей модели; нам не нужны дубликаты, нам нужна просто уникальная запись для каждых данных в строках.
В следующей части мы продолжим подготовку данных и начнем анализировать наши данные.
Приближается:
Часть 7: Процесс очистки и повторение