数据预处理流程总结
下面分享一下自己通常会用到的一些数据预处理的方法和步骤,用Kaggle平台上的elo用户忠诚度预测的数据集作为应用案例。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
merchant = pd.read_csv(r'\原始数据\elo-merchant-category-recommendation\merchants.csv', header=0)
一、初步探索
拿到一份数据,首先要确定样本大小、特征个数、字段类型这些基本信息。用.info()可以初步得到数据集的这些信息
merchant.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 334696 entries, 0 to 334695
Data columns (total 22 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 merchant_id 334696 non-null object
1 merchant_group_id 334696 non-null int64
2 merchant_category_id 334696 non-null int64
3 subsector_id 334696 non-null int64
4 numerical_1 334696 non-null float64
5 numerical_2 334696 non-null float64
6 category_1 334696 non-null object
7 most_recent_sales_range 334696 non-null object
8 most_recent_purchases_range 334696 non-null object
9 avg_sales_lag3 334683 non-null float64
10 avg_purchases_lag3 334696 non-null float64
11 active_months_lag3 334696 non-null int64
12 avg_sales_lag6 334683 non-null float64
13 avg_purchases_lag6 334696 non-null float64
14 active_months_lag6 334696 non-null int64
15 avg_sales_lag12 334683 non-null float64
16 avg_purchases_lag12 334696 non-null float64
17 active_months_lag12 334696 non-null int64
18 category_4 334696 non-null object
19 city_id 334696 non-null int64
20 state_id 334696 non-null int64
21 category_2 322809 non-null float64
dtypes: float64(9), int64(8), object(5)
memory usage: 56.2+ MB
用.info()搞清楚哪些是分类变量,哪些是数值型变量,分类进行处理。可以先把变量名分类放入category_cols、numeric_cols两个列表中,等待后续操作。
由于object类型变量中有一些离散型变量,之后要把它们的取值映射到数值上(比如category_1有3个取值,分别是A 、B、C,无法直接对它们进行建模计算,要把它们分别转化成0、1、2),也可以把这样的object型变量名存放起来。
category_cols = ['merchant_id', 'merchant_group_id', 'merchant_category_id',
'subsector_id', 'category_1',
'most_recent_sales_range', 'most_recent_purchases_range',
'category_4', 'city_id', 'state_id', 'category_2']
numeric_cols = ['numerical_1', 'numerical_2',
'avg_sales_lag3', 'avg_purchases_lag3', 'active_months_lag3',
'avg_sales_lag6', 'avg_purchases_lag6', 'active_months_lag6