In [ ]:
import pandas as pd
In [ ]:
# 4.2.1 数据导入、预览: read_csv、head
data = pd.read_csv("WA_Fn-UseC_-Telco-Customer-Churn.csv")
data
Out[ ]:
customerID | gender | SeniorCitizen | Partner | Dependents | tenure | PhoneService | MultipleLines | InternetService | OnlineSecurity | ... | DeviceProtection | TechSupport | StreamingTV | StreamingMovies | Contract | PaperlessBilling | PaymentMethod | MonthlyCharges | TotalCharges | Churn | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 7590-VHVEG | Female | 0 | Yes | No | 1 | No | No phone service | DSL | No | ... | No | No | No | No | Month-to-month | Yes | Electronic check | 29.85 | 29.85 | No |
1 | 5575-GNVDE | Male | 0 | No | No | 34 | Yes | No | DSL | Yes | ... | Yes | No | No | No | One year | No | Mailed check | 56.95 | 1889.5 | No |
2 | 3668-QPYBK | Male | 0 | No | No | 2 | Yes | No | DSL | Yes | ... | No | No | No | No | Month-to-month | Yes | Mailed check | 53.85 | 108.15 | Yes |
3 | 7795-CFOCW | Male | 0 | No | No | 45 | No | No phone service | DSL | Yes | ... | Yes | Yes | No | No | One year | No | Bank transfer (automatic) | 42.30 | 1840.75 | No |
4 | 9237-HQITU | Female | 0 | No | No | 2 | Yes | No | Fiber optic | No | ... | No | No | No | No | Month-to-month | Yes | Electronic check | 70.70 | 151.65 | Yes |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
7038 | 6840-RESVB | Male | 0 | Yes | Yes | 24 | Yes | Yes | DSL | Yes | ... | Yes | Yes | Yes | Yes | One year | Yes | Mailed check | 84.80 | 1990.5 | No |
7039 | 2234-XADUH | Female | 0 | Yes | Yes | 72 | Yes | Yes | Fiber optic | No | ... | Yes | No | Yes | Yes | One year | Yes | Credit card (automatic) | 103.20 | 7362.9 | No |
7040 | 4801-JZAZL | Female | 0 | Yes | Yes | 11 | No | No phone service | DSL | Yes | ... | No | No | No | No | Month-to-month | Yes | Electronic check | 29.60 | 346.45 | No |
7041 | 8361-LTMKD | Male | 1 | Yes | No | 4 | Yes | Yes | Fiber optic | No | ... | No | No | No | No | Month-to-month | Yes | Mailed check | 74.40 | 306.6 | Yes |
7042 | 3186-AJIEK | Male | 0 | No | No | 66 | Yes | No | Fiber optic | Yes | ... | Yes | Yes | Yes | Yes | Two year | Yes | Bank transfer (automatic) | 105.65 | 6844.5 | No |
7043 rows × 21 columns
In [ ]:
# 4.2.2 数据结构、列标签: shape、columns
data.shape
Out[ ]:
(7043, 21)
In [ ]:
data.columns
Out[ ]:
Index(['customerID', 'gender', 'SeniorCitizen', 'Partner', 'Dependents', 'tenure', 'PhoneService', 'MultipleLines', 'InternetService', 'OnlineSecurity', 'OnlineBackup', 'DeviceProtection', 'TechSupport', 'StreamingTV', 'StreamingMovies', 'Contract', 'PaperlessBilling', 'PaymentMethod', 'MonthlyCharges', 'TotalCharges', 'Churn'], dtype='object')
In [ ]:
data.columns = ['用户ID', '性别', '是否老人', '是否有伴侣', '是否有孩子',
'合同期限', '通话服务', '多线程', '网络服务',
'在线安全', '在线备份', '设备安全', '技术支持',
'流媒体电视', '流媒体电影', '合同类型', '电子账单',
'支付方式', '月消费', '总消费', '是否流失'] # 设置字段名为中文
data
Out[ ]:
用户ID | 性别 | 是否老人 | 是否有伴侣 | 是否有孩子 | 合同期限 | 通话服务 | 多线程 | 网络服务 | 在线安全 | ... | 设备安全 | 技术支持 | 流媒体电视 | 流媒体电影 | 合同类型 | 电子账单 | 支付方式 | 月消费 | 总消费 | 是否流失 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 7590-VHVEG | Female | 0 | Yes | No | 1 | No | No phone service | DSL | No | ... | No | No | No | No | Month-to-month | Yes | Electronic check | 29.85 | 29.85 | No |
1 | 5575-GNVDE | Male | 0 | No | No | 34 | Yes | No | DSL | Yes | ... | Yes | No | No | No | One year | No | Mailed check | 56.95 | 1889.5 | No |
2 | 3668-QPYBK | Male | 0 | No | No | 2 | Yes | No | DSL | Yes | ... | No | No | No | No | Month-to-month | Yes | Mailed check | 53.85 | 108.15 | Yes |
3 | 7795-CFOCW | Male | 0 | No | No | 45 | No | No phone service | DSL | Yes | ... | Yes | Yes | No | No | One year | No | Bank transfer (automatic) | 42.30 | 1840.75 | No |
4 | 9237-HQITU | Female | 0 | No | No | 2 | Yes | No | Fiber optic | No | ... | No | No | No | No | Month-to-month | Yes | Electronic check | 70.70 | 151.65 | Yes |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
7038 | 6840-RESVB | Male | 0 | Yes | Yes | 24 | Yes | Yes | DSL | Yes | ... | Yes | Yes | Yes | Yes | One year | Yes | Mailed check | 84.80 | 1990.5 | No |
7039 | 2234-XADUH | Female | 0 | Yes | Yes | 72 | Yes | Yes | Fiber optic | No | ... | Yes | No | Yes | Yes | One year | Yes | Credit card (automatic) | 103.20 | 7362.9 | No |
7040 | 4801-JZAZL | Female | 0 | Yes | Yes | 11 | No | No phone service | DSL | Yes | ... | No | No | No | No | Month-to-month | Yes | Electronic check | 29.60 | 346.45 | No |
7041 | 8361-LTMKD | Male | 1 | Yes | No | 4 | Yes | Yes | Fiber optic | No | ... | No | No | No | No | Month-to-month | Yes | Mailed check | 74.40 | 306.6 | Yes |
7042 | 3186-AJIEK | Male | 0 | No | No | 66 | Yes | No | Fiber optic | Yes | ... | Yes | Yes | Yes | Yes | Two year | Yes | Bank transfer (automatic) | 105.65 | 6844.5 | No |
7043 rows × 21 columns
In [ ]:
# 4.2.3 汇总统计(数量、分布指标):describe
data.describe(include='all')
Out[ ]:
用户ID | 性别 | 是否老人 | 是否有伴侣 | 是否有孩子 | 合同期限 | 通话服务 | 多线程 | 网络服务 | 在线安全 | ... | 设备安全 | 技术支持 | 流媒体电视 | 流媒体电影 | 合同类型 | 电子账单 | 支付方式 | 月消费 | 总消费 | 是否流失 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
count | 7043 | 7043 | 7043.000000 | 7043 | 7043 | 7043.000000 | 7043 | 7043 | 7043 | 7043 | ... | 7043 | 7043 | 7043 | 7043 | 7043 | 7043 | 7043 | 7043.000000 | 7043 | 7043 |
unique | 7043 | 2 | NaN | 2 | 2 | NaN | 2 | 3 | 3 | 3 | ... | 3 | 3 | 3 | 3 | 3 | 2 | 4 | NaN | 6531 | 2 |
top | 7590-VHVEG | Male | NaN | No | No | NaN | Yes | No | Fiber optic | No | ... | No | No | No | No | Month-to-month | Yes | Electronic check | NaN | No | |
freq | 1 | 3555 | NaN | 3641 | 4933 | NaN | 6361 | 3390 | 3096 | 3498 | ... | 3095 | 3473 | 2810 | 2785 | 3875 | 4171 | 2365 | NaN | 11 | 5174 |
mean | NaN | NaN | 0.162147 | NaN | NaN | 32.371149 | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 64.761692 | NaN | NaN |
std | NaN | NaN | 0.368612 | NaN | NaN | 24.559481 | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 30.090047 | NaN | NaN |
min | NaN | NaN | 0.000000 | NaN | NaN | 0.000000 | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 18.250000 | NaN | NaN |
25% | NaN | NaN | 0.000000 | NaN | NaN | 9.000000 | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 35.500000 | NaN | NaN |
50% | NaN | NaN | 0.000000 | NaN | NaN | 29.000000 | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 70.350000 | NaN | NaN |
75% | NaN | NaN | 0.000000 | NaN | NaN | 55.000000 | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 89.850000 | NaN | NaN |
max | NaN | NaN | 1.000000 | NaN | NaN | 72.000000 | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 118.750000 | NaN | NaN |
11 rows × 21 columns
In [ ]:
# 4.2.4 缺失值查询与处理:isnull.sum、dropnan
data.isnull
Out[ ]:
<bound method DataFrame.isnull of 用户ID 性别 是否老人 是否有伴侣 是否有孩子 合同期限 通话服务 多线程 \ 0 7590-VHVEG Female 0 Yes No 1 No No phone service 1 5575-GNVDE Male 0 No No 34 Yes No 2 3668-QPYBK Male 0 No No 2 Yes No 3 7795-CFOCW Male 0 No No 45 No No phone service 4 9237-HQITU Female 0 No No 2 Yes No ... ... ... ... ... ... ... ... ... 7038 6840-RESVB Male 0 Yes Yes 24 Yes Yes 7039 2234-XADUH Female 0 Yes Yes 72 Yes Yes 7040 4801-JZAZL Female 0 Yes Yes 11 No No phone service 7041 8361-LTMKD Male 1 Yes No 4 Yes Yes 7042 3186-AJIEK Male 0 No No 66 Yes No 网络服务 在线安全 ... 设备安全 技术支持 流媒体电视 流媒体电影 合同类型 电子账单 \ 0 DSL No ... No No No No Month-to-month Yes 1 DSL Yes ... Yes No No No One year No 2 DSL Yes ... No No No No Month-to-month Yes 3 DSL Yes ... Yes Yes No No One year No 4 Fiber optic No ... No No No No Month-to-month Yes ... ... ... ... ... ... ... ... ... ... 7038 DSL Yes ... Yes Yes Yes Yes One year Yes 7039 Fiber optic No ... Yes No Yes Yes One year Yes 7040 DSL Yes ... No No No No Month-to-month Yes 7041 Fiber optic No ... No No No No Month-to-month Yes 7042 Fiber optic Yes ... Yes Yes Yes Yes Two year Yes 支付方式 月消费 总消费 是否流失 0 Electronic check 29.85 29.85 No 1 Mailed check 56.95 1889.5 No 2 Mailed check 53.85 108.15 Yes 3 Bank transfer (automatic) 42.30 1840.75 No 4 Electronic check 70.70 151.65 Yes ... ... ... ... ... 7038 Mailed check 84.80 1990.5 No 7039 Credit card (automatic) 103.20 7362.9 No 7040 Electronic check 29.60 346.45 No 7041 Mailed check 74.40 306.6 Yes 7042 Bank transfer (automatic) 105.65 6844.5 No [7043 rows x 21 columns]>
In [ ]:
data.isnull().sum()
Out[ ]:
用户ID 0 性别 0 是否老人 0 是否有伴侣 0 是否有孩子 0 合同期限 0 通话服务 0 多线程 0 网络服务 0 在线安全 0 在线备份 0 设备安全 0 技术支持 0 流媒体电视 0 流媒体电影 0 合同类型 0 电子账单 0 支付方式 0 月消费 0 总消费 0 是否流失 0 dtype: int64