File size: 1,312 Bytes
1a0e6e8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import pandas as pd
import re
# Load data
scores = pd.read_csv('hasil_batch_multi_layer.csv')
ratings = pd.read_csv('ratings_rows Yunan.csv')
# Preprocess scores: extract numeric ID from 'Peserta'
def get_peserta_id(p):
match = re.search(r'\d+', p)
return int(match.group()) if match else None
scores['ID_Peserta'] = scores['Peserta'].apply(get_peserta_id)
scores['ID_Frasa'] = scores['File']
# Preprocess ratings
ratings['ID_Peserta'] = ratings['peserta_id']
ratings['ID_Frasa'] = ratings['audio_filename']
# Select relevant columns from scores
score_cols = [f'Score L{i}' for i in range(1, 13)]
scores = scores[['ID_Peserta', 'ID_Frasa'] + score_cols]
# Select relevant columns from ratings
ratings = ratings[['ID_Peserta', 'ID_Frasa', 'rating']]
# Merge
final = pd.merge(scores, ratings, on=['ID_Peserta', 'ID_Frasa'], how='inner')
# Create ID_Pasangan
final['ID_Pasangan'] = final['ID_Peserta'].astype(str) + '_' + final['ID_Frasa']
# Rearrange columns
cols = ['ID_Pasangan', 'ID_Peserta', 'ID_Frasa'] + score_cols + ['rating']
final = final[cols]
# Drop duplicates if any and non-matching rows are already dropped by inner join
final = final.dropna().sort_values(['ID_Peserta', 'ID_Frasa'])
# Save
final.to_csv('dataset_final.csv', index=False)
print('Shape dataset final:', final.shape)
|