数据处理方法

目录

✅一、缺失值

1.缺失值检查

isnull()

2.缺失值删除

dropna

3.缺失值替换 / 填充

fillna(PRO10/8C)

interpolate

SimpleImputer(PRO11)

随机森林等方式(PRO11)

✅二、重复值

1.查找重复值

2.处理重复值

删除

统计

✅三、异常值

1.查找异常值

query(用法类似于SQL中的where)(PRO_8C)

2.处理异常值

删除异常值

当作缺失值处理,以新值填充

当作特殊情况分析出现原因

3.特征缩放(PRO9)

4.数据类型转化

✅四、索引设置

添加索引

更改索引

重命名索引

✅五、数据修改与替换

1.按列增加数据

insert

loc

iloc

2.按行增加数据

loc

append

iloc

✅六、时间数据

1.分割时间

2.转换成日期格式

✅七、非数值型数据

1.编码非数值型数据(map函数)

2.自定义编码函数

3.pd.factorize()

✅八、特征重要性排序

随机森林

✅九、标签不平衡问题

PCA降维


  • ✅一、缺失值

    • 1.缺失值检查

      • isnull()

    • 2.缺失值删除

      • dropna

        • data.dropna( subset = ['CustomerID'], how='any', inplace=True)
        • 删除 CustomerID 列为空 的 行数据 默认axis=0(按行)
    • 3.缺失值替换 / 填充

      • fillna(PRO10/8C)

        • data.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
        • method: ffill(用前一个非空值填充)、bfill(后一个)
        • axis: 指定填充的轴,行轴0 列轴1
      • interpolate

        • data.interpolate(method='linear', axis=0, limit=None, inplace=False,limit_direction=None, limit_area=None, downcast=None, **kwargs)
        • axis: 0 (按列插值)(默认);1(按行插值)
      • SimpleImputer(PRO11)

        • imputer = SimpleImputer(missing_values=np.nan,strategy="constant",fill_value=0)
        • data_new = imputer.fit_transform(data)
      • 随机森林等方式(PRO11)

        • 将缺失值的列作为标签
        • 该列缺失值作为验证数据集,其余作为训练测试集
  • ✅二、重复值

    • 1.查找重复值

      • duplicated : duplicated(self, subset=None, keep='first')
      • data.duplicated(全部是否有重复) / data['user_id'].duplicated (某列的值是否有重复)
    • 2.处理重复值

      • 删除

        • .drop_duplicates()
        • PRO12 ==> data[~data['user_id'].isin(del_id)] / del_id:重复的值 data[data['user_id'].duplicated()]['user_id'].values
      • 统计

      •       .value_counts()
  • ✅三、异常值

    • 1.查找异常值

      • query(用法类似于SQL中的where)(PRO_8C)

        • data.query ( expr , inplace=False )
        • expr: 字符串表达式,表示筛选的条件 (表达式语法,使用布尔运算符==、!=、> 等)
        • .query() 函数只能用于筛选DataFrame对象,不能用于Series对象或其他类型的数据
    • 2.处理异常值

      • 删除异常值

        • drop
          • data.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')
          • label:要删除的行或列的标签
          • axis:0为删除行,1为删除列
          • index, columns:与label相同功能,在不指定axis情况下使用
          • data.drop(data.query("UnitPrice == 0 ").index, inplace=True) 先用query查找出索引,在进行删除(PRO_8C)
      • 当作缺失值处理,以新值填充

      • 当作特殊情况分析出现原因

    • 3.特征缩放(PRO9)

      • col = [ 'Amount' , 'Hour' ]
      • sc = StandardScaler() # Z-score归一化
      • data[col] = sc.fit_transform( data[col] )
    • 4.数据类型转化

      • type、astype、dtype
      • 转换整数:data['CustomerID'] = data['CustomerID'] . astype( np.int32 )
  • ✅四、索引设置

    • 添加索引

      • index=
    • 更改索引

      • set_index
        • data.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)
        • keys:设置索引的行名或者列名
        • append:指示是否将新的索引添加到原有的索引之后。默认为False,表示不添加。
        • drop:指示是否在新索引中保留原有的列。默认为True,表示将原有的列从DataFrame中删除。
    • 重命名索引

      • reindex
        • data.reindex(index=None, columns=None, fill_value=None)
  • ✅五、数据修改与替换

    • 1.按列增加数据

      • insert

        • list.insert(index,name, element)
        • index:插入的索引位置
        • name:插入的列名
        • element:插入列的元素
      • loc

        • data.loc [ : , 'name' ] = [ element ] 等同于 data['name' ] = [ element ]
        • 默认插入在最后一列
        • name:插入的列名
        • element:插入列的元素
      • iloc

        • data.iloc[ : , 2] = [ 10,20,30 ]
        • 将第三列替换为10 20 30
    • 2.按行增加数据

      • loc

        • data.loc [ 'name' ] = [ element ]
        • 默认插在最后一行
      • append

        • data.append(element)
      • iloc

        • data.iloc[ 2 , : ] = [ 10,20,30 ]
        • 将第三行替换为10 20 30
  • ✅六、时间数据

    • 1.分割时间

    • (年月日和时分秒分开,2017-01-21 22:11:48.556739)
      • PRO12:df_new['timestamp'].str.split(' ').str[0]==>2017-01-21
      • df_new['timestamp'].str.split(' ')[0]==>2017-01-21 22:11:48.556739(指第一条数据)
    • 2.转换成日期格式

      • data['InvoiceDate'] = pd.to_datetime ( data['InvoiceDate'] )(PRO_8C)
  • ✅七、非数值型数据

    • 1.编码非数值型数据(map函数)

      • PRO11 :mappings={ 'No':0 , 'Yes':1 }
      • data['Stage']= data['Stage'].map(mappings)
    • 2.自定义编码函数

    • (PRO 5)(较麻烦)
    • 3.pd.factorize()

    • (PRO 2)
      • data .loc [ : , 'Embarked' ] , uniques = pd .factorize( data [ 'Embarked' ] )
      • 返回两个值 ①编码后的值 ②原数据的唯一值
      • 返回0,1,2等,空值返回-1
  • ✅八、特征重要性排序

    • 随机森林

    • (PRO9)

      • clf = RandomForestClassifier ()
      • clf . fit(X,y)
      • clf . feature_importances_
  • ✅九、标签不平衡问题

    • 过采样

    • (PRO9)

      • smote_data = SMOTE()
      • X,Y是原数据
      • X_new , Y_new = smote_data . fit_resample (X , Y)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值