<jupyter_start><jupyter_text>드랍시킬 것들- 가사가 없는 행- 가수가 없는 행 특수한 경우들 1. 언어가 한국어가 아닌 노래 제거- Japanese Chniese English2. Instrumental 제거3. Remix 혹은 가사는 동일한 중복곡 제거4. 프로그램에서 부른 노래 제거- 불후의 명곡, 나는 가수다 등- 본인의 곡이 아닌 경우가 많아서 반드시 제거해주어야 함<jupyter_code>import pandas as pd
import numpy as np
import re
from plotnine import *
df = pd.read_csv('song_data_fixed.csv')
df
# 인덱스칼럼, 가사가 없는 행, 가수가 없는 행 드랍
df = df.drop(df.columns[0], axis=1)
df = df[pd.notnull(df['lyrics'])]
df = df[pd.notnull(df['artist'])]
df
df['lyrics'] = df['lyrics'].str.replace(r'\r\r\n','<br>')
df['creator'] = df['creator'].str.replace(r'\r|\n',' ')
# is_title이 nan일 때 = '수록곡' 
df['is_title'] = df['is_title'].fillna('수록곡')
df
# 제목에 리믹스,라이브,inst,영일중,ver 인 행 제거
df2 = df[df.title.str.contains(r'\(.*\s*([Rr]emix|[Mm]ix|[Ll]ive|[Ii]nst|[Cc]hn|[Jj]ap|[Ee]ng|[Vv]er)\s*.*\)') == False]
df2
# 앨범에 나가수, 불명, 복면인 행 제거
df3 = df2[df2.album.str.contains(r'(가수다|불후의|복면가왕)') == False]
df3
# 타이틀에 히라가나/가타카나가 들어간 행 삭제
df4 = df3[df3.title.str.contains(u'[\u3040-\u309F\u30A0-\u30FF\u31F0-\u31FF]+') == False]
df4
# 가사에 히라가나/가타카나가 들어간 행 삭제
df5 = df4[df4.lyrics.str.contains(u'[\u3040-\u309F\u30A0-\u30FF\u31F0-\u31FF]+') == False]
df5
# 앨범에 히라가나/가타카나가 들어간 행 삭제
df6 = df5[df5.album.str.contains(u'[\u3040-\u309F\u30A0-\u30FF\u31F0-\u31FF]+') == False]
df6
df6
df6.to_csv('song_data_yewon_ver01.csv', index=False)<jupyter_output><empty_output><jupyter_text>-----------------------------------  contains 확인<jupyter_code>df.loc[df['title'].str.contains((r'\(.*\s*([Rr]emix|[Mm]ix|[Ll]ive|[Ii]nst|[Cc]hn|[Jj]ap|[Ee]ng|[Vv]er)\s*.*\)'), regex=True)]
df.loc[df['title'].str.contains((r'(와타시)'), regex=True)] 
df.loc[df['album'].str.contains((r'(가수다|불후의|복면가왕)'), regex=True)]  
df.loc[df['album'].str.contains((u'[\u3040-\u309F\u30A0-\u30FF\u31F0-\u31FF]+'), regex=True)]<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.2442622950819672, 'fraction_numerical': 0.05245901639344262, 'mean_word_length': 4.794303797468355, 'pattern_counts': {'":': 0, '<': 10, '<?xml version=': 0, '>': 10, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '389056', 'license': 'MIT', 'n_tokens_mistral': 1144, 'n_tokens_neox': 1250, 'n_words': 144, 'path': 'SongTidy/song_tidy_yewon_ver01.ipynb', 'repo_name': 'jyw7664/M5_Idol_lyrics', 'size': '1830'}