[index]
00. Analysis background
01. 데이터 불러오기(w. pandas)
02. 데이터 살펴보기
03. 데이터 정제 (column 추가/제거)

 

00. Analysis background

  • 분석 목적
    python을 활용한 RFM 분석을 통해 마케팅 전략을 수립하고자 함

  • 데이터 정보
    • 데이터 기간: 2020.10~2022.08
    • 분석 시점: 2023.01
  • 사용 모듈
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

 


01. 데이터 불러오기

df = pd.read_csv('파일 위치/customer_data.csv',sep='\t')
  • 파일 위치: data 폴더 안
  • 파일명: customer_data.csv
  • 파일 형태: csv
    탭으로 구분된 파일이므로 sep 파라미터 추가 필요

 

 

02. 데이터 살펴보기


2-1. 데이터 크기 파악

customer_df.shape()

 

2-2. 데이터 파악(1) - 샘플 보기

pd.set_option('display.max_columns',None)
customer_df.head()
  • 데이터 샘플 살펴보기
    • set_option() 함수 사용 →display.max_columns 옵션 None 설정 시, 모든 열 호출 가능

 

2-2. 데이터 파악(2) - 자료형 & 결측치 유무 

customer_df.info()
  • 현재 데이터의 경우,
    전체 row는 2,240개이나, 특정 컬럼에서 non-null count가 2,216개로 확인됨(=결측치 있음)

 

2-2. 데이터 파악(3) - 통계적 정보 확인

customer_df.describe(include='all')

 

2-2. 데이터 파악(4) - unique 값 확인

columns_object_dtype = customer_df.columns[customer_df.dtypes == 'object']

for col in columns_object_dtype:
    unique_values = sorted(customer_df[col].unique())
    print(f'{col}:{len(unique_values)}개')
    print(unique_values, '\n')
  • object 형태의 column에 어떤 값들이 있는지 살펴보기
    • for 문: object type의 열들에 어떤 unique 값이 있는지 확인
      1. columns_object_dtype 변수: 자료형이 object인 컬럼만 불러오도록 설정
      2. unique_values 변수: unique()함수를 사용해 중복 없이 값 불러오기
      3. f-string: 문자열에 변수 값 삽입
      4. print(unique_values, '\n'): 각 칼럼별 줄 바꿈해서 결과 보기

 

 

3. 데이터 정제


3-1. Column 결측값 처리

customer_df = customer_df.dropna()
customer_df.isna().sum()
  • dropna(): 결측값 있는 row 삭제
  • isna().sum(): 결측값 있는 row 개수

 

3-2. 필요 형태로 Column 가공/추가(1)

customer_df['birth_year'] = 2023 - customer_df['birth_year']
customer_df = customer_df.rename(columns={'birth_year': 'age'})
customer_df
  • 목적
    birth_year 칼럼을 나이로 활용하고자 함

  • 로직
    1. 현재 시점 (2023)에서 birth_year 뺀 값을 birth_year 칼럼에 바꿔 넣어주고
    2. age로 칼럼명 변경

 

3-2. 필요 형태로 Column 가공/추가(2)

data_amount_total = (
    customer_df['amount_alcohol']
    + customer_df['amount_fruit']
    + customer_df['amount_meat']
    + customer_df['amount_fish']
    + customer_df['amount_snack']
    + customer_df['amount_general']
)

index_amount_general = customer_df.columns.get_loc('amount_general')

customer_df.insert(
    loc = index_amount_general + 1,
    column='amount_total',
    value=data_amount_total,
)
  • 목적
    결제값 total 칼럼 추가

  • 로직
    1. data_amount_total 변수: 모든 결제값을 더해서 넣어줌
    2. amount_general 칼럼 뒤에 넣고자
      index_amount_general 변수에 현재 amount_general 칼럼의 위치 넣어줌
    3. insert() 함수
    4. a. `loc`: 몇 번째 열에 넣을건지 b. `column`: 칼럼명 c. `value` : 해당 칼럼에 들어갈 데이터

 

3-3. 불필요 컬럼 제거

customer_df['annual_income'].describe()
customer_df['revenue'].describe()

customer_df = customer_df.drop(columns=['revenue'])
customer_df.head()
  • 목적
    분석에 필요 없는 컬럼 확인 및 제거
  • 로직
    1.revenue는 평균,max, min이 모두 11인 것으로 확인됨 = 자료 분석 시 활용 불가
    1. drop(): revenue 칼럼 제거


🎯 이 글은데이터 분석 관련직무를 꿈꾸는대학생/취업 준비생에게 추천해요.
📌데이터 분석의 학습 목적을 생각해보고, 그에 맞는 프로그램을 학습할 수 있도록 목차를 구성했어요.


[Index]
  (1) 데이터 분석과 데이터 과학의 차이
  (2) 데이터 분석가와 데이터 사이언티스트의 역할 비교
  (3) 데이터 분석 방식의 유형
  (4) 데이터 분석을 위한 필수 도구

 


(1) 데이터 분석 vs 데이터 과학

데이터 분석과 데이터 과학은 서로 다른 범주와 목표를 가지고 있습니다.

데이터 분석은 소규모 데이터를 기반으로 시각화 등을 통한 통찰을 제공합니다.
반면, 데이터 과학은  데이터 과학은 대규모 데이터를 활용하여 문제 해결에 최적의 솔루션을 찾습니다.

  특징   데이터 분석   데이터 과학
  범주   비교적 소규모   대규모
  목표   의사결정을 돕기 위한 통찰 제공   문제 해결을 위한 최선의 솔루션 제공
  주요 기술   컴퓨터 과학, 통계학, 시각화   컴퓨터 과학, 통계학, 머신러닝
  빅데이터 사용 여부   사용   사용

일반적으로 사용하는 데이터 애널리스트와 데이터 사이언티스트를 떠올리면 이해가 좀 더 용이할 것 같습니다.


(2) 데이터 분석가와 데이터 사이언티스트의 역할 비교

데이터 분석가

데이터 분석가는 데이터 클리닝, 시각화, 분석이 주된 업무입니다. 

일반적으로 데이터 분석가는 비즈니스의 의사결정을 돕는 인사이트를 제공하는 역할을 합니다. 따라서 데이터 기반의 원활한 의사소통을 위해 시각화나 리포팅 역량도 매우 중요하다고 할 수 있습니다.

 

 

데이터 사이언티스트

 

데이터 사이언티스트의 업무는 미래 예측에 좀 더 초점이 맞춰져 있습니다.

우측 드류 콘웨이의 '데이터 과학 벤 다이어그램'은 데이터 사이언티스트의 역량을 명쾌하게 설명하고 있는데요,

데이터 사이언티스트는 프로그래밍, 수학/통계, 도메인 지식에 대한 이해가 바탕이 되어야 합니다.

수학/통계 없이는 통찰이라고 할 수 없으며, 도메인 지식과 수학/통계만 사용한다면 전통적 분석만 수행한 것이 됩니다.반대로 프로그래밍과 수학/통계만 사용한다면 비즈니스 목표는 고려되지 않은 솔루션이 되겠죠.

 


(3) 데이터 분석 방식

위에서 언급한 좁은 의미의 데이터 분석을 좀 더 구체화 해보자면,
데이터 분석은 통계적 관점에서 보면 아래 세 가지로 나눌 수 있습니다.

① 기술 통계
관측이나 실험을 통해 수집한 데이터를 정량화하거나 요약.

② 탐색적 데이터 분석
데이터를 시각적으로 표현하여 주요 특징을 찾고 분석.
즉, 데이터 자료를 통해 트렌드를 찾고 인사이트를 도출하는 것입니다.

③ 가설 검정
주어진 데이터를 기반으로 특정 가정이 합당한 지 평가


(4) 데이터 분석 도구_SQL, R, 파이썬

SQL, R, 파이썬...들어는 봤지만 어떤 것부터 학습해야 할지 고민되셨을 것 같습니다.
데이터 분석 단게별로 필요한 도구를 살펴보면서 학습 순서를 함께 추천드려 보겠습니다.

 

① 데이터 추출 → SQL
 올바른 데이터를 뽑는 게 데이터 업무에서 가장 중요하다고 생각합니다. 실무를 하다 보면 간혹 잘못된 데이터로 분석에 착수해서 리소스를 낭비하는 일이 있습니다. 혹여 누군가 뽑아 주더라도 추출 방식을 알아야 오류를 인지할 수 있기 때문에 SQL을 가장 먼저 학습하시길 추천드립니다. 실제로 그로스마케터 기준, 실무의 80%는 SQL만으로 충분히 해결 가능합니다. 

② 데이터 가공 및 분석 →  SQL, 엑셀, 파이썬, R
 데이터나 추출 쿼리가 무겁다면 SQL, 엑셀을 통한 가공은 매우 복잡하기도 하고 프로세싱에 불필요한 시간이 많이 들어갑니다. 따라서, SQL 학습을 하셨다면 파이썬 학습을 통해 전반적 업무 효율을 높일 수 있습니다. 

데이터 시각화 →  엑셀, 파이썬, R
 개인적으로 협업 이해관계자들을 위한 리포팅용 데이터 작업일 경우, 공유와 수정이 편리해야 하기 때문에 엑셀 사용을 선호합니다만, 엑셀로 구현이 어려운 그래프가 필요할 때는 파이썬으로 작업합니다. 데이터 분석은 결국 '인사이트 전달'에 목적이 있기 때문에 업무의 전반적 퀄리티를 높이고자 하신다면 시각화 툴을 익혀두시는 걸 추천드립니다.

데이터 관련 툴 학습을 고민하고 계신 분들을 위해 관련 링크도 함께 첨부드립니다.

[데이터 분석가가 되려면 SQL, Python, R 다 배워야 하나요?]

[데이터 분석 R과 파이썬 중 어떤 것을 선택할까?]

[R vs 파이썬, 빅데이터 분석엔 무엇이 더 좋을까?]

 

 

데이터 분석은 결국 인사이트 또는 솔루션을 만들기 위해 진행됩니다. 
따라서, 어떤 툴을 배워야 할 지를 고민하기에 앞서 데이터 분석의 목적이 어디에 있는지 먼저 고민해보시길 바랍니다.

 

'Base > Python' 카테고리의 다른 글

[python 실습] 대형마트고객 데이터 RFM 분석(1)  (0) 2024.08.25

+ Recent posts