数据预处理流程梳理(1)---单要素处理

天池大赛赛题解析梳理数据预处理流程

1.任务变量分析

  • 变量识别使用变量类型和数据类型两方面进行分析。

    • 变量从多个维度进行解析
      • 输入输出变量:输入(feature),输出(target)
      • 数据类型:字符、数值
      • 连续型、类别型
  • 对于数据类型的单要素变量可以采用如下方式进行初步解析

  • 变量分析

    • 单变量分析
      • 缺测值统计
          import pandas as pd
          df.isnull().sum() 
        
      • 异常值
      • 异常值得简单检测可以使用百分位数法来观察
      # dataframe 函数中有可以进行百分位数计算函数
      df.quantile(0.1) 
      # 箱线图
      import seaborn as sns
      sns.boxplot(df['V'], orient='v', width=0.5)
      
      • 利用预测方式检测异常值也是一种方式,可以使用sklearn中得模型继续简单建模
      • 分布特征
        • 原因:
          • 很多算法注入多元线性回归、支持向量机,逻辑回归等算法对于正态分布数据适应性更好
          • 同特征在不同得时段或者数据集中可能特征不同,需要尤为注意
      • 一般采用直方图和Q-Q图来检测数据是否符合正态分布
      import seaborn as sns
      from scipy import stats
      import matplotlib.pyplot as plt
      plt.figure(figsize=(10,5))
      ax = plt.subplot(1,2,1)
      # 绘制直方图,并绘制拟合曲线
      sns.distplot(df[columnName], fit=stats.norm)  
      ax = plt.subplot(1,2,2)
      res = stats.prodplot(df[columnName],plot[plt)
      
  • 单要素预处理

    • 对于数值型变量
    • 若不符合正态分布,需要对数据进行转化,可采用 log、平方、开方转化等方式,但是使用频率较高的为box-cox转化,以下函数为对data进行逐列转化,注意转化前要对数据进行归一化
    from scipy import stats
    def box_cox_trans(data):
        '''
        box-cox 转化
        '''
        data = data.dropna(axis=0)
        data = data+1
        dat = data.apply(stats.boxcox, axis=0)
        lamDic = {}
        for icol in data.columns:
            data[icol] = dat[icol][0]
            lamDic[icol] = dat[icol][1]
        return data, lamDic
    
    • 时间序列分析
      • 对于时间序列数据,还需要对数据进行时间序列分析,以了解时间维度的变化影响,必要时需要提取主要信息
      • 时间序列分析一般采用时间序列分解的方式
      • 根据时间序列分解理论,时间序列可以分为:趋势项、周期项、残差项,python提供了相关库进行操作
from statsmodels.tsa.seasonal import seasonal_decompose
def ts_decopose(timeSeries):
	    '''
	    对时间序列进行分解
	    timeSeries:
	        series index 为 timetamp
	    '''
	    #timeSeries = ser_2_df(timeSeries)
	    decomposition = seasonal_decompose(
	                            timeSeries.values, 
	                            period=24,   # 预设周期
	                            model="additive") #multiplicative,additive 乘法模型和加法模型
	    trend = decomposition.trend         
	    seasonal = decomposition.seasonal
	    residual = decomposition.resid
	    return trend, seasonal, residual
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值