목록분류 전체보기 (81)
tak's data blog
전에 작성했었던 자료에 이어서 분석을 진행하도록 하겠습니다! https://taek98.tistory.com/66 피파온라인4 이탈, 진성유저 분석_이탈유저는 nextfield에 적응할까? 배경 선정 이탈 분석이라는 주제를 잡고 진성, 이탈 유저들의 플레이 특징을 위주로 파악해보려고 하였다. 우선 피파온라인4는 특성상 nextfield라는 체감 개선 업데이트가 거의 반기별로 이루어 taek98.tistory.com 우선 아래와 같은 방법을 위해 ncsoft의 데이터분석 블로그를 참고했다는 점을 말씀드리고 싶습니다. 참고: https://danbi-ncsoft.github.io/works/2020/06/17/works-pk_analysis.html PK를 당한 유저는 게임에서 이탈할까? danbi-ncso..
데이터가 아래와 같을 때 (cust: 고객) 고객별로 order_stack(주문누적횟수)를 1씩늘려가며 작성하려고 한다. 순간 groupby를 잊어버려서 비효율적인 코드를 작성하였다. 진짜 단순하게 생각해서 고객(cust)을 unique하게 따로 뽑아둔다음 고객에따라 데이터프레임을 재생성해 rank함수로 순위를 매기고 다시 데이터프레임을 합치려고 하였다... 참 1차원적인 생각이었는데 데이터가 상당수가 되다보니 이렇게하면 1시간 이상의 시간이 소요되기 때문에 apply를 사용해서 해결할 수는 없을까 고민했다. 상품재구매기간_final['order_stack'] = 0 cust = 상품재구매기간_final['cust'].unique() df = 상품재구매기간_final[['index', 'cust', 'o..
'면접왕 이형'이라는 유튜브 채널을 통해 추천받은 책입니다. 유튜브나 이곳저곳에서 많은 추천이 있었던 책인데 주변 도서관에는 없어서 구매를 했네요! 일본전산의 실화를 바탕으로 한 책으로 읽고나서 많은 생각을 하게 된 책입니다.... 그럼 책을 읽으면서 느꼈던 점이나 내용 정리를 순서없이 생각나는대로 나아가보겠습니다. 이 책은 일본전산이라는 회사가 어떻게 세워졌고, 수많은 어려움을 어떤 마인드로 극복해내어 성공까지 이루었는지의 과정으로 나아갑니다. 일본전산의 모토는 크게 3가지가 있습니다. 1. 즉시 한다. 2. 반드시 한다. 3. 될 때까지 한다. 1) 포기하지 않고 일단 해보기 어떠한 프로젝트나 일을 진행할 때 무작정 안된다는(주어진 환경때문에 진행할 수 없다. 등) 생각을 가지지 않고, 어떻게든 해내..
보통 고객이 이탈할 때, 재구매를 할 때 등 기간을 구하기 위해 고유한 인덱스를 기준으로 정렬해 위아래의 차이로 계산한다. 여태까지 아래와 같이 비효율적이게 for문으로 조건을 주어 해결했었다. 새로운 데이터프레임, 고유한 유저별 데이터프레임을 생성해 계산한 후 concat하는 방식으로 진행했었다... from tqdm import tqdm reorder_day = pd.DataFrame() de_lp['reorder_day'] = 0 u_list = de_lp[de_lp['reorder'] == 'O']['cust'].unique() for i in tqdm(u_list): reorder_df = de_lp[de_lp['cust'] == i] reorder_df[['reorder_day']] = reo..
배경 선정 이탈 분석이라는 주제를 잡고 진성, 이탈 유저들의 플레이 특징을 위주로 파악해보려고 하였다. 우선 피파온라인4는 특성상 nextfield라는 체감 개선 업데이트가 거의 반기별로 이루어진다. 침투 플레이, 중거리 슛, 헤딩, 패스 등의 개선이 이루어지는 것이다. 피파4를 이탈했다가 돌아올 때가 되면 nextfield 업데이트가 이루어져 있고, 이로 인해 나의 플레이타입도 변화를 주어야 이길 가능성이 높아져 또 적응의 시간이 필요하다. 그래서 적응을 하지 못해 다시 이탈한 경험이 있기 때문에 이탈 유저는 nextfield에 적응을 잘 할 것인가?를 가설로 세우게 되었다. 실제로 아래는 7차 nextfield가 이루어졌을 때 유저들의 반응이다. 다수의 유저들도 비슷한 생각을 가지고 있었음을 확인하였..
#1795 select * from (select product_id, 'store1' as store, store1 as price from Products union select product_id, 'store2' as store, store2 as price from Products union select product_id, 'store3' as store, store3 as price from Products) t where price is not null store1, store2, store3 각각의 칼럼을 전체적인 store과 price로 피벗테이블로 만드는 것과 동일한 문제이다. 각각의 store칼럼별로 새롭게 테이블을 만든 후 union으로 결합해 해결할 수 있다. 여기까지 무료로 제..
#1393 SELECT stock_name, SUM( CASE WHEN operation = 'Buy' THEN -price ELSE price END) AS 'capital_gain_loss' FROM Stocks GROUP BY stock_name 물품별 총 판매 + 구매 가격을 구하는 문제이다. case when으로 조건을 주어 총합을 구할 수 있었다. 아래는 일부러 꼬아서 with문을 통해 판매한 물품 테이블, 구매한 물품 테이블을 따로 구해서 합을 구한 방법이다. 아래의 방법은 추후에 어려운 문제들이 나오고 테이블 생성이 필요할 때 언젠가 쓰이지 않을까 생각해보았다. # Write your MySQL query statement below WITH MINUS AS (SELECT stock_nam..
#626 연속된 id 2개를 바꾸는 문제이다. 특이 조건으로 홀수행으로 끝나면 마지막 행은 그대로 둔다는 점이다. SELECT (CASE WHEN id % 2 != 0 and counts != id THEN id + 1 WHEN id % 2 != 0 and counts = id THEN id ELSE id -1 END )AS id, student FROM Seat, (SELECT count(*) as 'counts' FROM Seat ) as s_count order by id asc 처음 마지막 행 조건을 안두고 풀었을 땐 잘 풀렸는데 마지막 조건을 생각하느라 시간이 걸렸다. 서브쿼리로 따로 count 테이블을 만들어주고 id 갯수와 원래 테이블과의 마지막 id숫자가 같은지 다른지 조건을 주어 해결하였..