Вижу, что в publication_date появилось два пропущенных значения. Так как подобных строк всего две, я могу их удалить.
Запись выше надо читать так. В таблице db выбрать только те строки, у которых в столбце «publication_date» нет значения NaT. Значок тильды ~ означает «не». Метод isin проверяет наличие указанных данных в ячейке.
Здесь также важно, что я могу взять изначальную таблицу, отфильтровать ее, как мне это необходимо, а затем заменить изначальную таблицу отфильтрованной. Другими словами, изначально у меня была таблица db, после изменений я получаю таблицу с тем же названием db, но уже отфильтрованную.
Теперь я должен заняться дубликатами строк. Я могу искать либо полные дубликаты (данные в каждом столбце для строки полностью совпадают), либо искать дубликаты выборочно. Здесь надо обратить внимание, что isbn является уникальным идентификатором каждой изданной книги. Поэтому логично искать дубликаты только по этому признаку, так как книги вполне могут совпадать по иным признакам и это нормально.
Дубликатов по isbn13 нет. Но все-таки посмотрю дубликаты по названию и имени автора.
Такой подход позволяет понять, почему могут совпадать имя автора и название при различных isbn. Вижу, что, как правило, такие дубликаты – это аудиокниги. С этим придется разобраться отдельно. Для начала посмотрю, есть ли нулевое количество страниц у книг.
Таких книг 76. Что их объединяет? Посмотрю издательства.
Вижу, что в основном это издательства, которые выпускают аудиокниги. Это логично. Если у книги нет страниц, то это просто аудиокнига. Но посмотрим количество страниц для тех книг, которые выпускали эти издательства.
Код выше весьма любопытен. Как его прочитать? Берем таблицу db. В этой таблице ищем такие строки, в которых столбец равен 0. Далее, в отфильтрованной таким образом таблице, берем столбец ’publisher’. После этого вызываем value_counts для подсчета количества и head для ограничения вывода результатов.
Вижу, что аудиоиздательства издают нечто, что имеет страницы, даже 1162 страницы! Посмотрю на это.
*Заметка к коду*
Код выше очень похож на предыдущий и может быть аналогично прочитан. Однако обращает внимание, что при первоначальной фильтрации таблицы я могу добавить дополнительные методы, например str и т. п.
В интернете, например, на сайте Amazon, можно обнаружить эту книгу. И она оказывается аудиокнигой! Таким образом, количество «страниц» еще не говорит нам, что это бумажная книга. Это может быть, например, вес дисков. Более верный признак – это именно издательство. Как же поступить? Ведь сравнить книги аудио и бумажные по количеству страниц не получится. Следовательно, в одном признаке смешаны различные числа – количество страниц и вес дисков. Удалю все аудиокниги, но сначала сравню оценки по бумажным и аудиокнигам.
Вижу, что медиана не отличается, хотя разброс оценок для бумажных книг больше, чем для аудиокниг. Удалю вспомогательный признак, а также все аудиокниги. Надо учитывать, что такой подход, когда сравниваются две категории книг по графикам, является довольно грубым. Здесь бы стоило применить, например, t-тест. Но у меня нет специальной задачи исследовать аудио- и бумажные книги, поэтому ограничусь графиками.
*Заметка к коду*
Как прочитать np. where? Здесь я беру исходные данные признака, нахожу один из них, например названия с «audio», и присваиваю значение «audio», а если это не выполняется, то присваиваю значение «paper».
Еще раз посмотрю на таблицу, но выберу только количество страниц до 10. Посмотрю издательства.