首页 > 其他 > 详细

Pandas数据离散化

时间:2020-05-14 00:12:17      阅读:56      评论:0      收藏:0      [点我收藏+]
  • 连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数。离散化方法经常作为数据挖掘的工具。
  • 连续属性的离散化就是将连续属性的值域上,将值域划分为若干个离散的区间,最后用不同的符号或整数 值代表落在每个子区间中的属性值。

离散化有很多种方法,这使用一种最简单的方式去操作,例如:

  • 原始人的身高数据:165,174,160,180,159,163,192,184
  • 假设按照身高分几个区间段:150~165, 165~180,180~195

1、使用pd.qcut:对数据进行分组

data = pd.Series([0,8,1,5,3,7,2,6,10,4,9])

# qcut()方法第一个参数是数据, 第二个参数定义区间的分割方法, 比如这里把数字分成两半, 那就是[0, 0.5, 1]
# 如果要分成4份, 就是[0, 0.25, 0.5, 0.75, 1], 也可以不是均分, 比如[0, 0.1, 0.2, 0.3, 1], 这就就会按照1:1:1: 7
# 如果是小的数,值就变成‘small number‘,大的数,值就变成‘large number‘:
qcut = pd.qcut(data,[0,0.5,1],labels=[small number,large number])

# 自行分组,分成10组
qcut = pd.qcut(data,10)
print(qcut)

# 统计分组次数
print(qcut.value_counts())

2、使用pd.cut(data, bins)自定义区间分组:

  • pd.cut(data, bins)
data = pd.Series([0,8,1,5,3,7,2,6,10,4,9])

# 自己指定分组区间
bins = [1, 2, 4,7,10]
counts = pd.cut(data, bins)
print(counts)
c = counts.value_counts()
print(c)

3、get_dummies实现哑变量矩阵

哑变量:也叫虚拟变量,引入哑变量的目的是,将不能狗定量处理的变量量化,如职业、性别对收入的影响,战争、自然灾害对GDP的影响,这种“量化”通常是通过引入“哑变量”来完成的。根据这些因素的属性类型,构造只取“0”或“1”的人工变量

1、离散特征的取值之间没有大小的意义,比如color:[red,blue],那么就使用one-hot编码

2、离散特征的取值有大小的意义,比如size:[X,XL,XXL],那么就使用数值的映射{X:1,XL:2,XXL:3}

df = pd.DataFrame([
    [green, M, 10.1, class1],
    [red, L, 13.5, class2],
    [blue, XL, 15.3, class1]])

df.columns = [color, size, prize, class label]

size_mapping = {
    XL: 3,
    L: 2,
    M: 1}
df[size] = df[size].map(size_mapping)
#
class_mapping = {label: idx for idx, label in enumerate(set(df[class label]))}
df[class label] = df[class label].map(class_mapping)
print(df)
print(pd.get_dummies(df))

 

 

 

Pandas数据离散化

原文:https://www.cnblogs.com/caijunchao/p/12885380.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!