【数据挖掘】2022数据挖掘之数据的高级处理(消除缺失值、数据离散化、合并等)

一、缺失值处理

1、导入包

import numpy as np
import pandas as pd

2、相关方法

2.1 判断数据中是否存在NAN

# 如果存在缺失值就返回true,否则返回false
pd.isnull(dataframe)

# 如果不是缺失值标记为true,否则标记为false
pd.notnull(dataframe)

2.2 删除含有缺失值的样式

# 默认按行删除(axis = 'rows')
dataframe.dropna()

# 修改原数据
dataframe.dropna(inplace=True)

# 不会修改原数据,生成新的处理后的对象
dataframe.dropna(inplace=False)

2.3 替换\插入并补充

# 向原数据中的NAN替换成自己指定的value值,inplace策略和上述一样
dataframe.fillna(value, inplace=False)

3、实例

3.1 技巧1 通过返回true或false来判断是否有缺失值

(1)通过true判断是否有缺失值
# 首先将缺失值标记为true
data1 = pd.isnull(dataframe)

# 通过numpy的any来生成返回值(true代表存在NAN,false代表不存在NAN)
np.any(data1)

# 或者更简单一点,返回true代表存在NAN
data1.any() 
(2)通过false判断是否有缺失值
# 首先将缺失值标记为true
data2 = pd.notnull(dataframe)

# 通过numpy的all来生成返回值(false代表存在NAN,true代表不存在NAN)
np.all(data12)

# 或者更简单一点,返回false代表存在NAN
data1.all()

3.2 技巧2 填补缺失值

food["含有NAN的字段名"].fillna(food["含有NAN的字段名"].mean(), inplace=True)

4、处理其它标记的缺失值

4.1 针对不是NAN也不是数字的特殊字符

# 先将特殊字符转换成NAN,之后再逐一处理
data_new = data.replace(to_replace="特殊字符", value=np.nan)

二、数据离散化

1、概念

连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数,离散化方法经常作为数据挖掘的工具

2、分组

2.1 自动分组

pd.qcut(data,bins)

例子

data = ['一堆数据....']

# 首先自动分组(将数据分成了三组)
sr = pd.qcut(data, 3)

# 查看每一组的分组情况
sr.value_counts()

2.2 自定义分组

pd.cut(data,[])

例子

data = ['一堆数据....']

# 首先自定义范围
bins = [150,165,180,195]

# 再自定义分组
sr = pd.cut(data, bins)

# 查看每一组的分组情况
sr.value_counts()

3、将分组好的结果转换成one-hot编码

# 数据离散化
pd.get_dummies(sr, prefix="height")

三、合并操作

1、概念

当数据由多张表组成,有时候需要将不同的内容合并在一起分析

2、按方向合并(pd.concat())

2.1 竖直拼接(axis=0,默认情况)

pd.concat([data1, data2], axis=1)

2.2 水平拼接(axis=1)

pd.concat([data1, data2], axis=0)

3、按索引合并(pd.merge())

3.1 合并策略

left:左连接 主要根据左表索引合并
right:右连接 主要根据右表索引合并
outer:外连接 根据两表所有的索引合并
inner:内连接 根据两表共同的索引合并

3.2 例子

# left左表,right右表,how合并策略:inner内连接,on:按哪个索引合并
pd.merge(left, right, how="inner", on=['索引..'])

四、交叉表与透视表

1、交叉表

1.1 概念

交叉表用于计算一列数据对于另外一列数据的分组个数(寻找两个列之间的关系)

pd.crosstab(value1, value2)

例子

pd.crosstab(food["土豆"], food["天"])

2、透视表

和交叉表差不多

# dataframe:表数据
dataframe.pivot_table(["土豆"], index=["天"])

五、分组与聚合

1、用dataframe的方法进行分组聚合

# col:数据对象    color:字段   prices:字段
# 根据color字段分组,再按prices中最大值进行聚合
col.groupby(by="color")["prices"].max()

2、用Series的方法进行分组聚合

# 根据color字段分组,再按prices中最大值进行聚合
col["prices"].groupby(col["color"]).max()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊凯瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值