LESSON

Kaggleデータセットの取得と理解

「仮説はできた。次はデータだ。今回はKaggleのTelco Customer Churnデータセットを使う。」

田中VPoEがKaggleのページを開く。

「通信会社の顧客データで、業界標準のベンチマークデータセットだ。まずはデータを取得して、カラムの意味を完全に理解するところから始めよう。」

データセットの概要

Telco Customer Churnは、IBM Sample Data Setsとして公開されている通信会社の顧客データである。7,043件の顧客レコードと21列のカラムで構成される。

データ取得方法

# Kaggle APIを使った取得
# pip install kaggle
# kaggle datasets download -d blastchar/telco-customer-churn

# または直接読み込み
import pandas as pd

df = pd.read_csv('WA_Fn-UseC_-Telco-Customer-Churn.csv')
print(f"データサイズ: {df.shape}")
print(f"行数: {df.shape[0]}, 列数: {df.shape[1]}")
# 出力: データサイズ: (7043, 21)

データ辞書

顧客属性

カラム名説明値の例
customerIDstring顧客ID7590-VHVEG
genderstring性別Male, Female
SeniorCitizenint高齢者フラグ0, 1
Partnerstringパートナー有無Yes, No
Dependentsstring扶養家族有無Yes, No

契約・サービス情報

カラム名説明値の例
tenureint利用月数0〜72
PhoneServicestring電話サービスYes, No
MultipleLinesstring複数回線Yes, No, No phone service
InternetServicestringインターネットサービスDSL, Fiber optic, No
OnlineSecuritystringオンラインセキュリティYes, No, No internet service
OnlineBackupstringオンラインバックアップYes, No, No internet service
DeviceProtectionstringデバイス保護Yes, No, No internet service
TechSupportstringテックサポートYes, No, No internet service
StreamingTVstringストリーミングTVYes, No, No internet service
StreamingMoviesstringストリーミング映画Yes, No, No internet service

支払い情報

カラム名説明値の例
Contractstring契約形態Month-to-month, One year, Two year
PaperlessBillingstringペーパーレス請求Yes, No
PaymentMethodstring支払い方法Electronic check, Mailed check, Bank transfer, Credit card
MonthlyChargesfloat月額料金18.25〜118.75
TotalChargesstring*総支払額18.8〜8684.8

目的変数

カラム名説明値の例
Churnstring離反フラグYes, No

*注: TotalChargesはstringとして格納されており、型変換が必要。

初期データ確認

# 基本情報の確認
print(df.info())
print()
print(df.describe())
print()

# 目的変数の分布
print("離反率:")
print(df['Churn'].value_counts(normalize=True))
# No     0.7346
# Yes    0.2654
# → 約26.5%が離反(不均衡データ)

# TotalChargesの型問題
print(f"\nTotalChargesの型: {df['TotalCharges'].dtype}")
# object型 → 数値変換が必要

# 欠損値の確認
print(f"\n欠損値:\n{df.isnull().sum()}")

データの注意点

Telco Customer Churnデータの注意点:
1. TotalChargesがstring型 → float変換時にエラーが発生する行がある
2. 約26.5%が離反 → やや不均衡だが極端ではない
3. SeniorCitizenのみ0/1の数値、他はYes/Noの文字列
4. "No internet service"や"No phone service"の扱いを決める必要あり
5. customerIDは分析には不要(識別用)

まとめ

項目ポイント
データサイズ7,043行 × 21列
目的変数Churn(Yes/No、離反率約26.5%)
特徴量顧客属性5列、サービス9列、支払い4列
注意点TotalChargesの型変換、カテゴリ値の統一
不均衡度約3
(極端ではないが考慮が必要)

チェックリスト

  • データセットの取得方法を理解した
  • 全21カラムの意味を説明できる
  • 目的変数の分布(離反率約26.5%)を把握した
  • TotalChargesの型問題を認識した
  • データの注意点を理解した

次のステップへ

データの全体像を把握したところで、次はEDA(探索的データ分析)を実施し、データの分布やパターンを詳しく分析していこう。

推定読了時間: 30分