Для избавления от полных дубликатов duplicated() и drop_duplicates()
1) duplicated()
df.duplicated().sum()
возвращает количество дубликатов
df['col'].duplicated().sum()
возвращает количество дубликатов в столбце col
2) .value_counts()
анализирует столбец, выбирает каждое уникальное значение и подсчитывает частоту его встречаемости в списке
df['col'].value_counts()
Покажет все уникальные значения в столбце "col", а также, сколько раз встречается каждое из них.
3) Для удаления дубликатов в столбце
df['col'] = df['col'].drop_duplicates()
(вместо них остаются NaN)
4)Удаление дубликатов и настройка индексов
df = df.drop_duplicates().reset_index(drop=True)
5) Проверка наличия дубликата столбца и его удаление
df[df['col_dubl'] != df['col']]
df.drop(['col'], axis=1, inplace=True)
О ручной замене https://data-scientists.ru/node/39
Также можно использовать предварительно df.str.lower() для перевода в нижний регистр