码迷,mamicode.com
首页 > 其他好文 > 详细

5-pandans之数据离散化

时间:2021-06-08 23:30:04      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:src   不同的   span   toc   efi   筛选   编码   ima   股票   

1 为什么要离散化

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

2 什么是数据的离散化

连续属性的离散化就是在连续属性的值域上,将值域划分为若干个离散的区间,最后用不同的符号或整数 值代表落在每个子区间中的属性值。

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

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

这样我们将数据分到了三个区间段,我可以对应的标记为矮、中、高三个类别,最终要处理成一个"哑变量"矩阵

3 股票的涨跌幅离散化

我们对股票每日的"p_change"进行离散化

3.1 读取股票的数据

先读取股票的数据,筛选出p_change数据

data = pd.read_csv("./data/stock_day.csv")
p_change= data[p_change]

使用的工具:

  • pd.qcut(data, bins):
    • 对数据进行分组将数据分组 一般会与value_counts搭配使用,统计每组的个数
  • series.value_counts():统计分组次数

 

# 自行分组
qcut = pd.qcut(p_change,10)
qcut.head()

2018-02-27    (1.738, 2.938]
2018-02-26     (2.938, 5.27]
2018-02-23    (1.738, 2.938]
2018-02-22     (0.94, 1.738]
2018-02-14    (1.738, 2.938]
Name: p_change, dtype: category
Categories (10, interval[float64]): [(-10.030999999999999, -4.836] < (-4.836, -2.444] < (-2.444, -1.352] < (-1.352, -0.462] ... (0.94, 1.738] < (1.738, 2.938] < (2.938, 5.27] < (5.27, 10.03]]

qcut.value_counts()
(5.27, 10.03]                    65
(0.26, 0.94]                     65
(-0.462, 0.26]                   65
(-10.030999999999999, -4.836]    65
(2.938, 5.27]                    64
(1.738, 2.938]                   64
(-1.352, -0.462]                 64
(-2.444, -1.352]                 64
(-4.836, -2.444]                 64
(0.94, 1.738]                    63
Name: p_change, dtype: int64

自定义区间分组:

  • pd.cut(data, bins)

 

bins = [-100, -7, -5, -3, 0, 3, 5, 7, 100]
p_counts = pd.cut(p_change, bins)
p_counts.value_counts()

(0, 3]        215
(-3, 0]       188
(3, 5]         57
(-5, -3]       51
(7, 100]       35
(5, 7]         35
(-100, -7]     34
(-7, -5]       28
Name: p_change, dtype: int64

 

3.3 股票涨跌幅分组数据变成one-hot编码

  • 什么是one-hot编码

    把每个类别生成一个布尔列,这些列中只有一列可以为这个样本取值为1.其又被称为热编码。

 

  • pandas.get_dummies(dataprefix=None)

    • data:array-like, Series, or DataFrame

    • prefix:分组名字

# 得出one-hot编码矩阵
dummies = pd.get_dummies(p_counts, prefix="rise")
dummies.head()

 

技术图片

 

5-pandans之数据离散化

标签:src   不同的   span   toc   efi   筛选   编码   ima   股票   

原文地址:https://www.cnblogs.com/Live-up-to-your-youth/p/14863234.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!