Beta v.1.0
This commit is contained in:
+40
-98
@@ -2,8 +2,8 @@
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"id": "83693ad7",
|
||||
"execution_count": 5,
|
||||
"id": "b92e0213",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
@@ -14,119 +14,61 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"id": "99850a99",
|
||||
"id": "1763c51e",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Читаем файл аннотаций: ../dataset/DEAM/DEAM_Annotations/annotations/annotations per each rater/song_level/static_annotations_songs_1_2000.csv\n"
|
||||
"✅ УСПЕХ! База создана: ../../dataset/DEAM/music_db.csv\n",
|
||||
"Всего треков в базе: 1744\n",
|
||||
"Пример данных:\n",
|
||||
" song_id valence arousal\n",
|
||||
"0 2 3.1 3.0\n",
|
||||
"1 3 3.5 3.3\n",
|
||||
"2 4 5.7 5.5\n",
|
||||
"3 5 4.4 5.3\n",
|
||||
"4 7 5.8 6.4\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# 1. Ищем файл (поднимаемся из src на уровень выше)\n",
|
||||
"deam_root = Path(\"../dataset/DEAM\")\n",
|
||||
"# Точный путь к оригинальным аннотациям\n",
|
||||
"source_path = Path(\"../../dataset/DEAM/DEAM_Annotations/annotations/annotations averaged per song/song_level/static_annotations_averaged_songs_1_2000.csv\")\n",
|
||||
"# Путь, куда сохраним очищенную базу для движка\n",
|
||||
"output_path = Path(\"../../dataset/DEAM/music_db.csv\")\n",
|
||||
"\n",
|
||||
"# Ищем файл статичных аннотаций. Берем первый попавшийся.\n",
|
||||
"csv_files = list(deam_root.rglob(\"*static_annotations*.csv\"))\n",
|
||||
"if not csv_files:\n",
|
||||
" # Если не нашел static, берем вообще любой csv с аннотациями\n",
|
||||
" csv_files = list(deam_root.rglob(\"*.csv\"))\n",
|
||||
"\n",
|
||||
"if not csv_files:\n",
|
||||
" # Если путь неверный или файлов нет, скрипт сразу скажет об этом и покажет полный путь\n",
|
||||
" raise FileNotFoundError(f\"В папке {deam_root.resolve()} не найдено ни одного CSV файла! Проверьте пути.\")\n",
|
||||
"\n",
|
||||
"anno_path = csv_files[0]\n",
|
||||
"print(f\"Читаем файл аннотаций: {anno_path}\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"id": "5fbc493f",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Оригинальные колонки в файле: ['workerID', ' SongId', ' Valence', ' Arousal']\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# 2. Загружаем и чистим колонки\n",
|
||||
"df = pd.read_csv(anno_path)\n",
|
||||
"print(\"Оригинальные колонки в файле:\", df.columns.tolist())\n",
|
||||
"\n",
|
||||
"# Сносим пробелы по краям и переводим в нижний регистр\n",
|
||||
"df.columns = [str(c).strip().lower() for c in df.columns]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"id": "1e28fece",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Успешно найдены колонки -> ID: 'workerid', Valence: 'valence', Arousal: 'arousal'\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# 3. Умный поиск колонок\n",
|
||||
"# Ищем первую колонку, где есть 'id' или 'song'\n",
|
||||
"song_col = next((c for c in df.columns if 'song' in c or 'id' in c), df.columns[0])\n",
|
||||
"# Ищем valence (желательно mean, но сойдет любой)\n",
|
||||
"v_col = next((c for c in df.columns if 'valence' in c and 'mean' in c), \n",
|
||||
" next((c for c in df.columns if 'valence' in c), None))\n",
|
||||
"# Ищем arousal\n",
|
||||
"a_col = next((c for c in df.columns if 'arousal' in c and 'mean' in c), \n",
|
||||
" next((c for c in df.columns if 'arousal' in c), None))\n",
|
||||
"\n",
|
||||
"if not v_col or not a_col:\n",
|
||||
" raise ValueError(f\"Не смог найти Valence или Arousal! Доступные колонки: {df.columns.tolist()}\")\n",
|
||||
"\n",
|
||||
"print(f\"Успешно найдены колонки -> ID: '{song_col}', Valence: '{v_col}', Arousal: '{a_col}'\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"id": "469f651c",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Готово! Музыкальная база сохранена: ../dataset/DEAM/music_db.csv\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# 4. Сохраняем результат\n",
|
||||
"clean_df = df[[song_col, v_col, a_col]].copy()\n",
|
||||
"clean_df.columns = ['song_id', 'valence', 'arousal']\n",
|
||||
"\n",
|
||||
"output_path = deam_root / \"music_db.csv\"\n",
|
||||
"clean_df.to_csv(output_path, index=False)\n",
|
||||
"print(f\"Готово! Музыкальная база сохранена: {output_path}\")"
|
||||
"if not source_path.exists():\n",
|
||||
" print(f\"❌ Исходный файл не найден по пути: {source_path}\")\n",
|
||||
"else:\n",
|
||||
" # skipinitialspace=True уберет лишние пробелы в названиях колонок, если они есть\n",
|
||||
" df = pd.read_csv(source_path, skipinitialspace=True)\n",
|
||||
" \n",
|
||||
" # Берем только нужные колонки (по твоему примеру)\n",
|
||||
" clean_df = df[['song_id', 'valence_mean', 'arousal_mean']].copy()\n",
|
||||
" \n",
|
||||
" # Переименовываем для простоты кода в движке\n",
|
||||
" clean_df.columns = ['song_id', 'valence', 'arousal']\n",
|
||||
" \n",
|
||||
" # Приводим ID к целому числу (2, 3, 4...), чтобы искать файлы '2.mp3'\n",
|
||||
" clean_df['song_id'] = clean_df['song_id'].astype(int)\n",
|
||||
" \n",
|
||||
" # Сохраняем финальный файл\n",
|
||||
" clean_df.to_csv(output_path, index=False)\n",
|
||||
" \n",
|
||||
" print(f\"✅ УСПЕХ! База создана: {output_path}\")\n",
|
||||
" print(f\"Всего треков в базе: {len(clean_df)}\")\n",
|
||||
" print(\"Пример данных:\")\n",
|
||||
" print(clean_df.head())"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python (my-python-project)",
|
||||
"display_name": "Python (thesis)",
|
||||
"language": "python",
|
||||
"name": "my-python-project"
|
||||
"name": "thesis"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
|
||||
Reference in New Issue
Block a user