- 데이터 분석
엘리스 수업을 안 들은 것과는 별개로 데이터를 분석하는 방법, 이론을 정말 하나도 모르는 채로 시작했다.
일단 주제 정하고 구체화하기까지 2~3일 소요한 것 같다. 그래서 1주차에 힘이 너무너무 빠진 게 사실이다.
1~2일차에는 단순히 데이터를 눈으로 확인하는 식으로만 코드를 짰다. 예를 들어 머 년도 별로 증가하는 앱의 개수..
그렇게만 해도 되는 줄 알았다 왜냐면 엘리스 측에서 그랬다 간단하게 하라고.

결과 😁 첫 오피스 아워에 데이터분석 코치님께 대차게 털림. 난 이날 멘탈이 너무 갈렸다.
하지만 어떻게 데이터 분석을 해야하는지는 너무 잘 알려주셨다.
- 우리가 1~2일차에 했던 데이터 분석: 음료에 설탕이 많을 수록 맛있다. (당연한 소리)
- 코치님이 말한 데이터 분석: 음료에 설탕이 많으면 맛있지만 당이 높고, 이는 소아비만을 유발하고 그래서 우리회사는 덜 달게 하더라도 설탕을 줄이는 게 어떻겠나. 까지 오는 것이다.
❗ 그래서 데이터 분석을 어떻게 하는지 감을 잡은 우리 팀은 다음과 같은 서비스 제공을 위해 다시 데이터 분석에 돌입했다.
- 앱 다운로드 비율은 적지만 앱 출시를 시도해볼만한 시장 추천
해당 카테고리 안에 그래도 다운로드수가 좀 높은? 시도해볼만한 데이터 추려서 추천해보면 어떨까요? - 안정적인 시장으로 도전해볼만한 앱 시장 추천
music 앱이 다운로드수와 별점이 안정적인 것을 들어 안정적으로 진입해볼만 하다? 이런 제안 데이터 분석이 있다면 요런거 추천 - 가장 많은 사용자 니즈가 분포하고 있어 레드오션이지만 도전해볼만한 시장
교육은 꾸준히 인기가 높은 카테고리로 레드오션이지만, 앱 다운로드 수를 보면 사용자 니즈도 꾸준히 있는 것 같다. 순위권에 든 앱들을 잘 살펴보고 틈새 시장을 노려보자고 제안 - 유저 수요는 높지만, 만족도가 평균치보다 낮아 도전해볼만한 시장
수요는 높지만 만족도가 평균치보다 낮은 어플을 제시하고, 보완점을 찾아 개발을 시작해보세요 제안
그 중에서도 나는 '카테고리별 어플 개수', '카테고리별 어플 전체 설치 수', '카테고리별 어플의 평균 설치 수' 를 이용한 분석을 맡았고, 다음과 같이 분석을 해보았다.
분석 결과
1) 카테고리별 어플 개수는 상위지만, 전체 설치 수는 하위인 경우
ex) Education은 어플 개수는 많고 설치 수는 Top10에 들지 못함, Music & Audio도 어플 개수는 많은데 설치 수는 비교적 하위
--> 공급에 비해 수요가 적다고 판단할 수 있다.
--> 시장 포화상태
--> 하지만 Education과 Music & Audio 특성상(결제?) 한 번 깔았던 어플을 지우고 새로운 어플로 갈아탈 가능성이 적을 확률도 있음.
그렇다고 해도 레드오션인 건 맞으니까?
결국 어플특성상 사용자가 정착하여 사용할 수 있도록 개발해야한다는 메시지 전달 가능 (꾸준하고 빠른 콘텐츠 업데이트, 사용자 피드백 수렴 등)
2) 카테고리별 어플 개수는 비교적 하위지만, 전체 설치 수는 상위인 경우
--> 수요에 비해 공급이 적다고 판단할 수 있다.
--> 여기다가 어플 별 평균 설치수도 상위라면? 완전 시도해볼만하다는 메시지 전달 가능
3) 카테고리별 어플마다 평균 설치 수는 상위지만, 어플 개수가 하위인 경우
ex) Racing(게임) 어플은 개수도 많은 편이 아니지만, 설치 평균 수를 보았을 때 1위로 모든 Racing 어플의 수요가 상당한 것으로 판단.
--> Racing 어플의 사용자는 하나의 어플에 크게 몰리지 않고 이것저것 깔아서 사용해본다는 특성이 있음
--> Racing 게임에 관심 있는 사람들은 새로 출시됐을 시 사용할 가능성 多
--> 즉, 이용자가 많을 카테고리의 어플이므로 개발을 추천하는 메시지 전달 가능
4) 카테고리별 어플마다 평균 설치 수는 비교적 하위지만, 전체 설치 수는 많은 경우
--> 이용자는 같은 카테고리더라도 인기 많을 하나의 어플을 택해 설치할 가능성 多
--> 이미 잘 개발되어있고 메인으로 존재하는 어플이 있다는 의미
--> 경쟁력을 갖춰야해서 시장에서 성공하기 어렵다는 메시지 전달 가능
그리고 내가 분석한 결과를 도출할 수 있도록 새로운 데이터 프레임을 따로 만들었다.
1) df에 사용할 컬럼을 새로운 변수에 저장
# 카테고리별 앱 개수
app_count = data['Category'].value_counts()
# 카테고리별 전체 어플 설치 수
app_total_install = data.groupby('Category')['Maximum Installs'].sum().sort_values(ascending=False)
# 카테고리별 어플 설치 평균
pd.set_option('float_format', '{:.2f}'.format)
app_mean_install = data.groupby('Category')['Maximum Installs'].mean().sort_values(ascending=False)
2) 어떻게 하는지 몰라서 코치님께 물었더니, 먼저 각각의 결과를 df로 만들어야한다고 하셨다.
# 각각의 결과를 df로 만들기
app_count = pd.DataFrame(app_count)
app_total_install = pd.DataFrame(app_total_install)
app_mean_install = pd.DataFrame(app_mean_install)
3) 컬럼명 리스트를 만들어서 먼저 열을 만들어줌. 이유는 모름 저렇게 안 하면 안 됐어서 시도해본 것
그리고 concat을 통해 열 합치기
# df 합치기 위해 임의로 col_name으로 열 생성해줘야 생성이 되더라
col_name = ['Total Installs', 'Mean Installs', 'App Count']
category_anls = pd.DataFrame(columns=col_name)
# df 열 방향으로 합치기. 이때 app_count는 결과셀 생김새가 달라서 안 합쳐지길래 같은 두 개 먼저 합쳐줌.
category_anls = pd.concat([app_total_install, app_mean_install, app_count], axis=1)
category_anls.columns = ['Total Installs', 'Mean Installs', 'App Count']
4) 그리고 나는 카테고리 명을 인덱스로 설정하고 싶었는데 그게 안 돼서 거의 한 시간을 구글링하고 헤맴..
결국엔 아래 방법을 통해 잘 해결됐다.
문제는 무엇이었냐면, 처음에 Category가 컬럼이 아니라 인덱스 그 자체로 존재했다.
그런데 Category 또한 컬럼으로 먼저 만들어준 뒤에 set_index를 통해 인덱스로 변경할 수 있던 것이었다.
category_anls['Category'] = category_anls.index
category_anls = category_anls[['Category', 'App Count','Total Installs', 'Mean Installs']]
category_anls.set_index('Category', inplace = True)
category_anls
이렇게 만든 데이터 프레임은 다음과 같이 생겼다. 🤗
+ 결과를 추천해줄 때 어떤 식으로 쿼리를 사용할지 구체화를 생각해서 분석별로 기준을 확실히 정하는 게
2주차 1일에 바로 행해야할 것
- 백엔드
데이터 분석 한 3~4일 하고 너무 지쳤었다.. 백엔드 구현은 거의 하지 못한 상태였고 그래도 어찌저찌 몽고DB에 데이터 셋까지 적재를 완료했다.
아 그리고 데이터 셋과는 별도로 내가 만든 새로운 데이터 프레임 또한 DB에 저장했다. 아마 이렇게 저장하면 나중에 쿼리를 사용할 때 훨씬 편할 것 같다. 용량 문제도 해결 가능! 그런데 사용법이 확실하진 않아서 백엔드 오피스아워 때 코치님께 물어볼 것임.
+ 주말에 자유게시판 구현 완료 ✌🏻
사랑하는 나의 팀장님이 1주차 회고를 작성해보라고 해서 써보는데 이렇게 쓰는 게 맞나 모르겠다🧐
'Project > 데이터 분석 웹 서비스 프로젝트' 카테고리의 다른 글
[데이터 분석 웹 서비스 프로젝트] 기획서 (0) | 2022.04.25 |
---|