플로틀리를 이용한 멋진 차트 작성

JOOYEUN SEO·2024년 12월 26일

100 Days of Python

목록 보기
76/76
post-thumbnail

🗂️ Day76 프로젝트: 안드로이드 앱 스토어 분석

구글 플레이스토어의 앱을 비교 분석하기

1. 데이터 정제: NaN 값과 중복값 제거

🔍 유의 사항

  •  .sample(n) 메소드로 임의의 행 n개를 반환하여 데이터프레임 검사
  • Last_Updated와 Android_Version 열 삭제하기
    •  .drop() 메소드로 제거하려는 열 이름 전달
      • axis=1 으로 '열'을 삭제하도록 설정
      • inplace=True 로 기존 데이터베이스에 덮어쓰기
  • NaN 값(Rating 열에 포함)이 없는 새 데이터프레임 생성하기
    • .dropna() 메소드로 삭제
  • 중복된 앱 제거하기
    •  .duplicated() 메소드로 중복된 행만 뽑아 확인 (변수에 저장해야 함)
    •  .drop_duplicates() 메소드로 중복된 행 삭제
      • 중복 항목을 식별하기 위해 비교해야 할 열 이름이 필요

2. 예비 탐색: 최고 평점, 가장 많은 리뷰, 가장 큰 크기의 앱

🔍 유의 사항

  • 가장 높은 평가를 받는 앱
    → 리뷰가 거의 없고 설치 횟수가 적은 앱들이 5점 만점
  • 가장 큰 앱의 크기
    → 앱 크기의 상한선이 100MB인 것을 확인 가능
  • 리뷰가 가장 많은 앱과 상위 50개에서 유료 앱의 비중
    → 리뷰 수 상위 50개 앱은 중 유료 앱은 없음

3. 플로틀리를 이용한 데이터 시각화: 파이 차트, 도넛 차트

🔍 유의 사항

  • .value_counts() 로 각 컨텐츠 등급별 횟수를 계산해서 변수에 저장
  • 맷플롯립 대신 플로틀리(plotly) 사용
    • import plotly.express as px 코드 추가
    •  px.pie() 를 호출하여 파이 차트 생성
      • hole 인자를 추가하면 도넛 차트가 됨
      • 차트 객체에  .update_traces() 메소드로 각 속성마다 이름 및 % 표시

4. 설치 및 가격 데이터의 숫자 형식 변환

🔍 유의 사항

  • Installs 열에서 10억 회 이상 설치된 앱 개수 구하기
    • .describe().info()로 데이터 형식 확인
    • 데이터 유형이 object 이므로 숫자 데이터로 변환 (다시 해당 열에 덮어씌워야 함)
      1. 먼저 문자열의 replace() 메소드로 쉼표 제거(빈 문자열로 변환)
      2. .to_numeric() 으로 숫자로 변환
    • .groupby().count()로 설치 횟수당 항목 수를 계산하고 순서대로 나열
  • 가장 높은 수익을 올린 앱 상위 10개와 그 중 몇 개가 게임인지 조사
    1. Price 열의 데이터에서 $ 기호를 제거하고 숫자로 변환
    2. .sort_values()로 앱 가격이 비싼 순으로 나열
    3. 250불 이상의 앱을 데이터프레임에서 제거
      (단순 재력 과시용으로 비싼 가격의 앱들은 데이터셋에 잘못된 영향을 주기 때문)
    4.  mul() 메소드로 데이터프레임에 새 열(price×installsprice \times installs) 추가

5. 플로틀리 막대그래프 및 산점도 플롯: 가장 경쟁력 있고 인기 있는 앱 카테고리

🔍 유의 사항

  • 어떤 카테고리가 가장 경쟁이 심한지 조사 (범주별 앱 수)
    •  .nunique() 메소드로 Category 열에서 고유값들의 수를 출력
    • 플로틀리의  .bar() 메소드로 수직 막대 차트 생성
  • 어떤 카테고리가 가장 인기가 많은지 조사 (범주별 앱 다운 수)
    • .groupby() .agg() 메소드를 추가하여 카테고리별로 그룹화 후, 그룹별 연산하기
    • .agg()에 합계함수  pd.Series.sum 사용
    • 플로틀리의  .bar()에 매개변수로 방향을 추가하여 수평 막대 차트 생성
  • 플로틀리의  .scatter()로 범주별 앱 수 옆에 범주별 앱 다운 수를 표시한 산점도 차트 만들기
    1. 카테고리(범주)를 인덱스로 하고, 인덱스별 앱 수를 열로 가진 데이터프레임 생성
    2. .merge()로 생성한 데이터프레임에 범주별 앱 다운 수 데이터프레임 병합

6. 중첩 열 데이터 추출

🔍 유의 사항

  • 장르(카테고리보다 조금 더 세분화됨)의 종류 조사
  • 하나의 앱이 2개 이상의 장르에 속하는 경우 중첩된 값이 발생하게 됨
  •  .split() .stack()을 연결하여 정확히 몇 가지의 장르가 있는지 확인하기
    1. .split()으로 장르 이름 구분(해당 데이터베이스의 경우 ;으로 각 이름 구분)
    2. .stack()으로 구분한 장르 이름을 단일 열에 추가(변수에 저장해야 함)
    3.  .value_counts() 로 단일 항목이 있는 값 확인
  • 플로틀리로 장르 데이터가 포함된 색깔 차트 생성 (내장된 색 활용)
    • color_continuous_scale 매개변수로 색상 스케일 설정
    • coloraxis_showscale 매개변수로 오른쪽에 뜨는 색깔 스펙트럼 삭제

7. 플로틀리로 그룹화한 막대그래프 및 상자그림

🔍 유의 사항

  • 무료 앱과 유료 앱 구분하기
  • 범주별로 데이터를 그룹화하고, 이를 타입(유료 여부)별로 다시 그룹화
  • .groupby() 메소드에서 as_index=False 매개변수로 인덱스 없이 모든 데이터를 열에 표시
  • 범주별 무료, 유료 앱의 총 개수를 보여주는 플로틀리 막대차트 생성
    • .bar() 메소드의 color, barmode 매개변수로 타입별 막대 색상 및 배치 위치 조정
    •  .update_layout() 의 축 매개변수에 딕셔너리를 전달하여 특정 순서로 가져오기
  • 플로틀리  .box() 메소드로 상자 플롯(통계 수치를 그래프화) 생성
    • 무료 앱과 유료 앱의 설치 횟수를 조사하고 중간값 찾기
    • 범주별 앱 수익(매출 추정치)의 중간값 찾기
      • {categoryorder':'min descending'} 으로 범주 정렬
    • 유료 앱의 중간값 찾기
      • {categoryorder':'max descending'} 으로 범주 정렬




▷ Angela Yu, [Python 부트캠프 : 100개의 프로젝트로 Python 개발 완전 정복], Udemy, https://www.udemy.com/course/best-100-days-python/?couponCode=ST3MT72524

0개의 댓글