/
AlexEly
/
Course_proj_ead
Обзор
Документация
Войти
/
AlexEly
/
Course_proj_ead
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
chap1-4.py
56 строк
4 KB
AlexEly
create: chap1-11.py, chap1-10.py, chap1-9.py, chap1-8.py, chap1-7.py, chap1-6.py, chap1-5.py, chap1-4.py, chap1-3.py, chap1-2.py, chap1-1.py, chap1-0.py
19 апр 2026, 14:12
Верифицирован
19 апр 2026, 14:12
feb66de
Код
Авторство
О чём код?
import pandas as pd ''' df.duplicated() → создаёт булевый массив, где True означает, что строка полностью совпадает с одной из предыдущих. df.drop_duplicates(ignore_index=True) → удаляет все повторяющиеся строки, оставляя только первое вхождение. Параметр ignore_index=True гарантирует, что после удаления индекс будет непрерывным (0, 1, 2, ...), что критично для корректной работы алгоритмов ML. Точность чисел с плавающей запятой → стандартный метод ищет точное совпадение. Если в вашем датасете есть "почти дубликаты" (различаются на 1e-7), потребуется округление признаков перед удалением: # Пример: округление до 5 знаков после запятой перед поиском дубликатов df_rounded = df.round({'max':5, 'min':5, 'mean':5, 'sd':5, 'rms':5, 'skewness':5, 'kurtosis':5, 'crest':5, 'form':5}) df_cleaned = df.drop_duplicates(subset=df_rounded.columns, ignore_index=True) ''' # ============================================================================= # 1. Загрузка исходного датасета # ============================================================================= input_file = 'feature_time_48k_2048_load_1.csv' df = pd.read_csv(input_file) print(f"📊 Исходный размер датасета: {df.shape[0]} строк, {df.shape[1]} столбцов") # ============================================================================= # 2. Выявление дубликатов # ============================================================================= # Метод .duplicated() возвращает булеву маску: True для строк, которые уже встречались ранее duplicate_mask = df.duplicated() num_duplicates = duplicate_mask.sum() print(f"🔍 Найдено полных дубликатов строк: {num_duplicates}") # ============================================================================= # 3. Удаление дубликатов # ============================================================================= # drop_duplicates() по умолчанию: # - subset=None (проверяет все столбцы) # - keep='first' (оставляет первое вхождение, удаляет последующие) # - ignore_index=True (сбрасывает индекс, чтобы он шёл последовательно 0, 1, 2...) df_cleaned = df.drop_duplicates(ignore_index=True) print(f"✅ Размер датасета после удаления дубликатов: {df_cleaned.shape[0]} строк") # ============================================================================= # 4. Сохранение очищенного датасета # ============================================================================= output_file = 'feature_time_48k_2048_load_1_cleaned.csv' df_cleaned.to_csv(output_file, index=False) print(f"💾 Очищенный датасет успешно сохранён: {output_file}") # ============================================================================= # Дополнительная проверка (опционально) # ============================================================================= if df_cleaned.duplicated().any(): print("⚠️ ВНИМАНИЕ: После очистки остались дубликаты! Проверьте тип данных или точность чисел.") else: print("✔️ Проверка завершена: дубликаты отсутствуют.")