데이터 마이닝하는 경우, 실험을 할 때, 모든 데이터가 유효한 것은 아니다. 전처리를 하다보면 어떤 데이터(DB 레코드)는 기록이 잘못되었거나 포맷이 잘못되어, 또는 사용하지 않는 특징 (feature) 만 갖고 있어 필요 없는 경우가 있다(즉, null 이 너무 많을 때). 필요없는 얘들을 추려낼 때 파이썬(python)에서 데이터프레임(pandas를 사용) 형태로 읽어와 시각화로 알아 볼 수 있는 방법이 있고, 엑셀에서 직접 확인하는 방법도 있다.


아래 예제에서는 엑셀로 100여 개 정도의 파일 이름을 추려냈을 때, 이 파일명 만을 vi 를 사용하여 파이썬 변수로 변환하는 과정을 보이고자 한다.


아래 그림처럼 실험에 사용하고자 하는 파일 이름을 추렸다. 


이 파일 이름을 파이썬 리스트(list)로 만드려면

file_list = ["brux2.edf", "ins2.edf", ... ]

와 같이 바꾸어야 한다. 그러면, 이걸 하나 하나 손으로 바꾸어야 할까? vi 를 쓰면 간편하다.


vi 에 앞서 파일 목록을 복사해온다.



아래 명령어를 써서 모든 줄의 가장 앞에 쌍따옴표(")를 추가한다.

:%s/^/"

(명령어는 맨 앞 글자(^)를 쌍따옴표(")로 치환(%s) 한다는 의미)


맨 뒤에는 쌍따옴표(")와 쉼표(,)를 추가한다.

:%s/$/",

(명령어는 맨 뒷 글자($)를 쌍따옴표와 쉼표(",)로 치환(%s) 한다는 의미)


줄바꿈을 없애기 위해 :%s/\n// 를 사용한다.

(명령어는 줄바꿈(\n)를 nothing(//)으로 치환(%s) 한다는 의미)


맨 뒤에 쓸 데 없는 문자를 지우고, 가장 앞 뒤에 대괄호로 감싸서 복사&붙여넣기로 파이썬 변수에 쓴다.


file_list = ["brux2.edf","ins2.edf","ins3.edf","ins4.edf","ins5.edf","ins6.edf","ins7.e    df","ins8.edf","n1.edf","n10.edf","n11.edf","n2.edf","n3.edf","n5.edf","nar    co1.edf","narco2.edf","narco3.edf","narco4.edf","narco5.edf","nfle1.edf","n    fle10.edf","nfle11.edf","nfle12.edf","nfle13.edf","nfle14.edf","nfle15.edf"    ,"nfle16.edf","nfle17.edf","nfle18.edf","nfle19.edf","nfle2.edf","nfle20.ed    f","nfle21.edf","nfle22.edf","nfle23.edf","nfle24.edf","nfle26.edf","nfle27    .edf","nfle28.edf","nfle29.edf","nfle3.edf","nfle30.edf","nfle31.edf","nfle    32.edf","nfle34.edf","nfle35.edf","nfle36.edf","nfle37.edf","nfle38.edf","n    fle39.edf","nfle4.edf","nfle40.edf","nfle5.edf","nfle6.edf","nfle7.edf","pl    m10.edf","plm2.edf","plm3.edf","plm4.edf","plm5.edf","plm6.edf","plm7.edf",    "plm8.edf","plm9.edf","rbd1.edf","rbd10.edf","rbd11.edf","rbd12.edf","rbd13    .edf","rbd14.edf","rbd15.edf","rbd17.edf","rbd18.edf","rbd19.edf","rbd2.edf    ","rbd20.edf","rbd21.edf","rbd22.edf","rbd3.edf","rbd4.edf","rbd5.edf","rbd    6.edf","rbd7.edf","rbd8.edf","rbd9.edf","sdb2.edf","sdb3.edf"]


다음으로는 정규식을 사용하여 탭(tab) 단위나 쉼표(comma) 단위로 구분 된 문서를 수정하는 예제를 살펴보기로 한다.


출처:

1. [완료]vi 에디터로 편집할때 모든 줄에 단어 입력하는 방법 알려주세요

2. UNIX VI editor에서 줄바꿈(line break) 한번에 없애기



Posted by 도전하는 공돌이pooh

댓글을 달아 주세요