数据说明
-
本次演练的数据集为某企业业务部门的客户数据,将对该数据集进行数据预处理等操作。
-
从返回信息可知,数据结构为(1000,5),1000条数据,5个字段,分别是:
- 用户ID(USER_ID)
- 平均用户订单数量(AVG_ORDERS)
- 平均订单价值(AVG_MONEY)
- 是否活跃(IS_ACTIVE)
- 性别(SEX),0(未知),1(男),2(女)
-
通过以上数据说明,可以发现有几个字段需要做相关预处理
- USER_ID字段,不参与计算分析,分割出来
- AVG_ORDERS,AVG_MONEY这两个字段,单位不一样,也就是存在量纲差异,不能直接参与分析,需要标准化处理
- IS_ACTIVE字段,是字符串类型,为方便后面分析计算,需对其进行转换为分类类型数据
- SEX字段,其实际应属于分类类型数据
缺失值判断及处理
# 设置cell多行输出
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all' #默认为'last'
# 导入相关库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import os
os.chdir(r'E:\python_learn\data\python_book_v2\chapter4')
file_name = 'cluster.txt'
data = pd.read_table(file_name,sep=',')
print(data.head())
USER_ID AVG_ORDERS AVG_MONEY IS_ACTIVE SEX
0 1 3.58 40.43 活跃 1
1 2 4.71 41.16 不活跃 1
2 3 3.80 39.49 不活跃 2
3 4 2.85 38.36 不活跃 1
4 5 3.71 38.34 活跃 1
data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000 entries, 0 to 999
Data columns (total 5 columns):
USER_ID 1000 non-null int64
AVG_ORDERS 1000 non-null float64
AVG_MONEY 1000 non-null float64
IS_ACTIVE 1000 non-null object
SEX 1000 non-null int64
dtypes: float64(2), int64(2), object(1)
memory usage: 39.1+ KB
# 缺失值判断(其实就data.info()返回信息看出不存在缺失值)
data.isna().sum() # 不存在缺失值,不需要处理缺失值
data.isna().sum().sum()
USER_ID 0
AVG_ORDERS 0
AVG_MONEY 0
IS_ACTIVE 0
SEX 0
dtype: int64
0
分割数据,提取需要处理的字段
# 分割数据
data_id = data['USER_ID']
data_numeric