본문 바로가기

학습/PYTHON

캐글 통신사 고객 데이터로 데이터 분석 - 데이터 파악하기

 

https://www.kaggle.com/datasets/blastchar/telco-customer-churn/data

 

Telco Customer Churn

Focused customer retention programs

www.kaggle.com

캐글 데이터 분석: 통신사 고객 이탈 분석

데이터 개요

이번 분석에서는 캐글(Kaggle)의 통신사 고객 데이터를 활용하여 고객 이탈 여부(Churn) 를 예측하는 분석을 진행합니다.
데이터셋은 총 7043개 행, 21개 변수로 이루어져 있으며, 변수는 아래와 같이 구성됩니다.

  • 고객 정보: 성별, 고령 여부, 배우자 여부, 부양가족 여부
  • 서비스 정보: 휴대폰 서비스(2개), 인터넷 서비스(7개)
  • 계약 및 요금 정보: 계약 기간, 계약 유형, 결제 방법, 요금
  • 타겟 변수: 고객 이탈 여부

데이터 파악 및 전처리

import pandas as pd

# 데이터 불러오기 (예시)
df = pd.read_csv("telecom_customer_churn.csv")

# 데이터 크기 확인
print(df.shape)

# 데이터 타입 확인
print(df.dtypes.value_counts())

# 결측값 개수 파악
for i in df.columns:
  print(i, "결측값 갯수 : " , df[i].isnull().sum())

#TotalCharges 변수만 파악해보기
print(df['TotalCharges'].dtypes)
print(df['TotalCharges'].unique())  

#TotalCharges 의 빈칸을 NA 로 대체 후 결측값 처리
df['TotalCharges'] = df['TotalCharges'].replace(" ", pd.NA)
print('총 요금 변수의 결측값 갯수 : ' , df['TotalCharges'].isna().sum())
df[df['TotalCharges'].isna()][['tenure','MonthlyCharges','TotalCharges']]

#결측값 처리 : TotalCharges 의 결측값을 월요금으로 대체 
df['TotalCharges'] = df['TotalCharges'].fillna(df['MonthlyCharges'])

# TotalCharges 변수타입 수치형으로 변환
df['TotalCharges'] = pd.to_numeric(df['TotalCharges'], errors='coerce')

 

 

설명

  1. 데이터 크기 및 변수 타입 확인
    • 데이터셋의 크기는 (7043, 21)
  2. 결측값 확인
    • 모든 변수를 대상으로 결측값 개수를 확인한 결과, 결측값 없음
    • 상세 파악 중 TotalCharges 변수에서 이상이 발견됨.
    • TotalCharges가 object 타입으로 저장되어 있어, 숫자 데이터에 빈칸이 포함된 것으로 의심됨.
  3. TotalCharges 변수 처리
    • TotalCharges의 값 중 일부가 빈 문자열(" ")로 되어 있어 pd.NA로 변환.
    • 변환 후 결측값 개수를 확인한 결과, 가입 기간(tenure)이 0인 경우 TotalCharges가 결측값으로 나타남.
    • 따라서 가입 기간이 0인 경우 월 요금(MonthlyCharges) 값을 총 요금(TotalCharges)으로 대체하여 결측값을 해결함.
    • 결측값이 없어진 총요금(TotalCharges) 변수를 수치형으로 타입변환.

 

이제 데이터를 파악하였으며, 이후 분석을 진행할 준비 완료!