강의 이해를 위해 요구되는 사전 지식들.
필수 요건으로 못박고 싶지만 그랬다간 망할까봐 권장으로 타협. 출강 기관 측은 아예 빼자고 하는데 그러고 싶진 않다. 내 강의 정체성이기 때문.
세상 모든 데이터는 문자열
SQL이든 (엘라스틱/스플렁크 등의) NoSQL이든, 세상 모든 DB는 문자열 데이터를 깎고 다듬어 테이블 구조로 바꾸는 전처리 작업을 필수로 거친다. 그래야 데이터 분석을 시작할 수 있으니까.
데이터는 테이블이다
데이터를 분석하려면
프로젝트에서 데이터의 공간 변환, 공간 탐색 등의 전문적 단계에 진입하기 전에 학생들에게 데이터를 가지고 온갖 자질구레한 관찰을 해보도록 강제한다. 데이터의 질감을 느끼는 단계다. 이 과정에서 통찰과 관점이 생긴다
이런 경험을 가장 쉽게 할 수 있는 환경이 바로 리눅스. 목적에 맞는 셋팅을 시도하는 과정에서 기본 편집기인 VIM을 사용할 수밖에 없으니까.
문자열 데이터를 다루는 감을 익히는 데 문자열 편집기보다 더 좋은 툴이 있을까?
꼭 VIM 때문에만 리눅스 경험을 주문하는 것도 아니다. 사실 리눅스는 운영체제 자체가 문자열 데이터 처리를 위한 종합선물세트라고 해도 과언이 아니기 때문.
웹로그 메소드 발생 내역
root@MHKANG:~# awk '{print $6}' 2014.log | > awk -F '"' '{print $2}' | > sort -u - CONNECT GET HEAD POST quit | cs |
메소드 고유개수1
root@MHKANG:~# awk '{print $6}' 2014.log | > awk -F '"' '{print $2}' | > sort -u | > wc -l 6 | cs |
메소드 고유개수2
root@MHKANG:~# awk '{print $6}' 2014.log | > awk -F '"' '{print $2}' | > awk 'arr[$1]=="" {arr[$1]="x"} END {print length(arr)}' 6 | cs |
변수 고유개수
root@MHKANG:~# awk '{if ($7 ~ /\?/) print $7}' 2014.log | > awk -F '?' '{print $2}' | > sort -u | > wc -l 63349 | cs |
변수 고유개수 차원 축소1
root@MHKANG:~# awk '{if ($7 ~ /\?/) print $7}' 2014.log | > awk -F '?' '{print $2}' | > sed 's/[0-9]//g' | > sort -u | > wc -l 330 | cs |
변수 고유개수 차원 축소2
root@MHKANG:~# awk '{if ($7 ~ /\?/) print $7}' 2014.log | > awk -F '?' '{print $2}' | > awk '{gsub("[0-9]", "")}1' | > sort -u | > wc -l 330 | cs |
이런 경험이 쌓이고 모여 데이터를 다루는 감각을 키워준다. 그런데 이 모든 작업이 VIM이라는 하나의 툴에서 다 가능하다. 정규표현식 지원 범위도 훨씬 넓다.
관련 글
댓글 없음:
댓글 쓰기