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')
설명
- 데이터 크기 및 변수 타입 확인
- 데이터셋의 크기는 (7043, 21)
- 결측값 확인
- 모든 변수를 대상으로 결측값 개수를 확인한 결과, 결측값 없음
- 상세 파악 중 TotalCharges 변수에서 이상이 발견됨.
- TotalCharges가 object 타입으로 저장되어 있어, 숫자 데이터에 빈칸이 포함된 것으로 의심됨.
- TotalCharges 변수 처리
- TotalCharges의 값 중 일부가 빈 문자열(" ")로 되어 있어 pd.NA로 변환.
- 변환 후 결측값 개수를 확인한 결과, 가입 기간(tenure)이 0인 경우 TotalCharges가 결측값으로 나타남.
- 따라서 가입 기간이 0인 경우 월 요금(MonthlyCharges) 값을 총 요금(TotalCharges)으로 대체하여 결측값을 해결함.
- 결측값이 없어진 총요금(TotalCharges) 변수를 수치형으로 타입변환.
이제 데이터를 파악하였으며, 이후 분석을 진행할 준비 완료!
'학습 > PYTHON' 카테고리의 다른 글
캐글 통신사 고객 데이터로 데이터 분석 - 유지고객과 이탈고객 간의 계약기간 차이 분석 (0) | 2025.03.13 |
---|---|
캐글 통신사 고객 데이터로 데이터 분석 - 계약 기간/유형에 따른 이탈율 분석 (시각화 및 통계검정) (1) | 2025.03.06 |
캐글 통신사 고객 데이터로 데이터 분석 - 고객 유형별 이탈율 분석 (시각화) (0) | 2025.03.03 |