정말 널 어쩌면 좋니

오늘은 파이썬이 날 미치게한다. 사전캠프 때 공부한 건 거진 사라진 것만 같다. 하지만 난 괜찮다. 난 죽지 않는다. 그깟 뱀 이름의 언어가 날 죽일 수는 없는 거라고. 조금 제정신이 아니지만, 오늘 배운 내용은 어느 정도 기억하고 있으니 다행이다.

오늘은 틸도 2개를 작성해야 했기에 급하게 작성한 3월 5일 TIL 대신에라도 조금 더 길게 작성해볼 예정이다. 오늘 하루로 돌아가보도록 하자.

SQL 세션 끝...이라곤 하지만...

오늘로 SQL 입문 세션이 종료됐다. 아쉽다고 하기엔 앞으로 진행될 세션을 담당하시는 튜터님이 동일하게 전소현 튜터님이시기 때문에, 아쉬움을 느낄 틈이 없었다. 아쉬움이라고 한다면, 이번 세션에서 배운 것이 앞으로 캠프에서 배울 그 어떤 것보다 쉬울 것이라는 점 뿐이었다.

select user_id, MAX(review_date) 
from 테이블
group by user_id
;

select user_id, chat_text, review_Date
from(    select user_id, chat_text, review_Date
       , row_number() over(partition by USER_ID order by  REVIEW_DATE desc )as rown
         from 테이블
     )as a
where rown=1

게다가 마지막으로 배운 개념들이 날 상당히 겁먹게 했다. 윈도우 함수의 경우, 적혀있는 쿼리 자체를 이해 못하는 건 아닌데, 이걸 내가 자연스럽게 쓸 수 있을지 걱정이다. 원리는 이해하는데, 그걸 내것으로 만들기 위해서는 무수한 실습과 공부가 필요해보인다. 난 내가 어떻게든 원리를 이해하지 못하면 사용을 못하는 타입이니까.

반대로 생각하면 오늘 배운 내용들이 다 어려웠다는 점은, 내가 쿼리 작성을 지금까지 너무 쉽게 봤음을 방증한다고도 본다. 코드카타 좀 쓸 줄 알고, 세션 과제 좀 해봤다고 우쭐했을 자신을 반성하며, 쿼리 작성 실력을 조금 더 날카롭게 가져가도록 노력해보자.

리텐션과 지표 - 데이터 리터러시

만약 우리가 데이터 분석가로 취직하게 된다면, 가장 많이 보게될 것은 역시 고객, 혹은 유저에 대한 데이터일 것이다. 플랫폼을 예로 들자면, 우리 플랫폼을 한 번 쓴 유저가 다시 우리 플랫폼에 접속하거나, 또 한 번 소비를 하는 등의 행동을 분석하여 어떻게 하면 고객이 계속해서 우리 플랫폼에 잔류할 것인지를 고민하는 것이 데이터 분석가의 역할 중 하나가 될 것이다.

이 이야기에서 어떤 기준에서든 우리의 플랫폼을 사용하는 유저를 Active User, 활성 유저라고 할 수 있다. 확실한 것은 플랫폼, 서비스, 상품을 사용하기만 했다고 냅다 활성유저라고 딱지를 붙여버린다면 좋은 데이터는 물론이고, 좋은 동료도 될 수 없을 것이다. 활성 유저 정의는 환경과 맥락에 따라 상대적이므로, 때에 따라 적절하게 정의 및 설정하여 분석할 수 있도록 하자.

이러한 활성 유저들 중에는 우리 플랫폼을 마음에 들어하거나, 혹은 다른 선택지가 없기에 다시 사용하는 사람들이 있을 것이다. 이처럼 기존의 사용자들 중에 다시 한 번 서비스 영역으로 들어온 유저들의 비율을 재방문률, Retention Ratio에서 앞 단어만 따와서 Retention이라고 한다. 리텐션 비율은 투자금 및 비용 회수를 위해 필수적인 지표이다. 리텐션이 높다면 그 회수가 더 빠를테니 말이다. 활성 유저와 마찬가지로 리텐션 설정 기준도 상대적이다.

N-day 측정법은 가장 고전적인 리텐션 측정 방법이다. 이 방법은 유저가 활성 유저로 책정된 날을 Day 0으로 잡고, 해당 유저의 이후, N일차 리텐션을 계산하여 그 추이를 관측하는 방법이다. 따라서 주기적으로 방문하는 앱, SNS나 게임 등의 유저 분석에 유용하다. 필요에 따라서는 D-week, month 등 더 크게 잡고 분석도 가능하다. 다만 위에서 튜브(오리)의 경우, 1월 3일을 제외하고 모두 방문을 했는데, 3일 재방문률 측정에는 튜브가 포함되지 않는다. 반대로 라이언(사자?)이나 프로도(개)는 각각 이틀만 방문했음에도 각각 두 날의 리텐션 측정에 포함된다. 따라서 리텐션 비율의 측면에서 상대적으로 누군가는 저평가를, 누군가는 고평가를 받음으로 객관성에 의심을 받을 수 밖에 없다.

반대로 Unbounded 리텐션 측정 방법은 그와는 조금 반대다. 단순 방문한 날만을 측정하는 것이 아니라, 활성 유저가 된 날을 기준으로 이후에 재방문이 이루어졌다면, 그 사이의 날에도 해당 유저는 방문한 것으로 본다. 그렇기에 N-day와는 같은 데이터로 다른 결과가 나온다. 방문이 주기적이지 않은 상품, 채용 사이트나 쇼핑몰, 부동산 플랫폼 등에서 사용하기 적합한 방법이다. 다만 위 표를 예로 들어, 무지(토끼?)는 1월 1일 이후로 방문을 하지 않았는데, 저 지표 이후인 1월 6일에 갑자기 방문을 할 경우, 이전 리텐션 값까지 모조리 수정을 해야 한다는 번거로움이 있다. 따라서 언바운디드 지표는 결론을 내기보다는 이용자 추세나 트렌드 등 거시적인 관점에서 사용할 것이 권장된다.

이외에도 브래켓 지표, 퍼널, LTV나 북극성 지표 등 다양한 지표가 데이터 분석가들을 기다리고 있다. 중요한 건 이런 다양한 지표를 통해, 당장 눈앞에 데이터에 매몰되기 보다는, 전략적으로 데이터에 접근할 준비를 하는 것이 데이터 분석가의 자세일 것이다.

[리스트], (튜플), {딕셔너리}? 예?

파이썬은 SQL과 확연히 다르다. SQL은 (적어도 우리 관점에선) 만들어져있는 테이블에서 데이터를 가져와 주물럭거리는 느낌이라면, 파이썬은 테이블처럼 자료가 담겨있는 집합도 우리가 직접 만들어줘야 하는 느낌이다. 따라서 이 집합, 자료형을 어떻게 만들 것이냐가 관건인데, 오늘 내운 배용에는 3가지 집합을 우리가 만들 수있다고 말한다.

리스트는 가장 유연한 집합이다. [대괄호]를 사용하며, 집합 내의 데이터들의 위치 정보라고 할 수 있는 인덱스가 존재한다. 물론 자릿값이 있을 뿐, 각 데이터가 객체값을 갖지 않기 때문에, 중복되는 데이터도 얼마든지 가질 수 있다. 데이터의 인앤아웃이나 수정도 자유로운 가변형 자료형이기 때문에, 쇼핑 목록이나 학생 목록처럼 가변성이 높은 경우에 쓰기 용이하다.

튜플은 반대로 매우 보수적인 집합이다. (소괄호)를 사용하며, 리스트와 마찬가지로 인덱스를 가지지만, 보유한 데이터를 변경하는 것은 불가능한 불변형 자료형이다. 이건 데이터들이 객체값을 가져서라기보다는, 튜플이라는 집합의 울타리가 강력한 경우라고 생각하는게 맞는 것으로 보인다. 중복된 데이터가 존재할 수 있다는 점이 이를 방증하는 게 아닐까? 변화하면 안되는 데이터가 저장된다는 점에서, GPS 좌표나 고객 개인 정보같이 보안이 중요한 경우에 용이하다.

마지막으로 딕셔너리는 다른 두 자료형과는 조금 이질적이다. {중괄호}를 사용하며, 인덱스를 갖지는 않는데, 자료의 수정은 가능하다. 이질적인 이유는 데이터의 형태에 있다. 딕셔너리의 데이터는 데이터의 객체값인 'key'와 그에 대응하는 데이터의 내용인 'Value'로 구성되어있다. 따라서 인덱싱이나 슬라이싱을 하려면 key만 입력하면 value는 알아서 딸려오는 구조다. key는 고유값이기 때문에 따라서 중복이 불가하지만, Value는 데이터의 내용이기 때문에 중복되어도 무방하다. 따라서 회원 정보, 제품 정보처럼 구분값과 내용이 분리될 필요가 있을 때 용이하다.

오늘 배운 이 세가지를 정리하면서, 내용이 확실히 정리가 된 것 같다. 물론 여기에 각각의 자료형에 해당하는 다양한 매서드도 배웠지만, 이거 다 쓰면 내용이 너무 많음으로 생략하도록 하자.

파이썬, 두고보자

파이썬은 어렵다. 그래서 날 좌절하게 하고, 산만하게 하고, 겁먹게 하며, 망설이게도 하고, 분노를 유발하면서, 자괴감에 날 내던지기도 한다. 절망의 구렁텅이에 날 빠뜨리기도, 의지를 복돋아주기도 하면서도, 대부분의 경우 짜증을 유발한다. 하지만 안다. 이것도 언젠가 SQL처럼 점령할 수 있을 것임을.

중요한 것은 기술적인 영역을 어느 정도 수준으로 높여놔야, 데이터 리터러시를 비롯한, 나의 전문 분야인 인문학의 영역에서 싸울 수 있다는 것이다. 따라서 파이썬은 두고두고 족칠 필요가 있는 녀석이다. 화이팅해보자.

profile
데이터 분석 애송이의 유쾌한 반란

0개의 댓글

관련 채용 정보