机器学习(七)使用pandas库进行数据分析_——统计信息和离散化

 在特征工程中,对于数值型数据(比如年龄为25岁、31岁。。,商店某个时间段的销量为20W件等等),

通常要对这些数值型数据进行统计分析,比如求取它们的最大最小值、期望方差等,pandas库在数据分析中非常好用。
对 数值型数据进行离散化,也用到pandas的cut函数,具体操作如下代码:

# -*- coding: utf-8 -*-
"""
Created on Wed Oct 26 15:34:48 2016

@author: sirius
"""

import pandas as pd
import numpy as np

"""
数据的统计值
"""
series=pd.Series(np.random.randn(500))
series.describe(percentiles=[0.05,0.25,0.75,0.95]) #分位数,用于取 把向量从小到大排列,取向量5%、25%...分界点的数据
                                                   #可通过分位数来了解这一段数据的大小怎么样,从而了解某个数据在整体的定位

mean=series.mean()
s_min=series.min()
s_max=series.max()
s_std=series.std()


"""
数据的离散化,把连续值赋予一个离散化的操作~~
   比如,有个电商商铺,他有一个10块钱的爱奇艺账户,也有一辆100万的车,这是一个跨度很大的值。
离散化的操作就是就是这个商铺的所有价格分为100个价格段,那么离散化之后的价格就是一个100维的向量,
当你的价格落在这个区段时,这个向量的这个点值为1,其它值为0.

------当数据不均衡时,比如数据分布为0-100,但数据大多集中在0-10(占80%),
 此时可以把0-10的段细分为很多小段,虽然这样会产生很多[1,0,0,...],但不影响离散化编码
"""

arr=np.random.randn(20)
factor=pd.cut(arr,5) #用cut函数来分段向量,在把数据映射到其中,得到0-1向量
print factor
"""
结果如下:
>>>[(-0.133, 0.396], (-0.133, 0.396], (-0.663, -0.133], (-0.663, -0.133], (-0.663, -0.133], ..., (-0.133, 0.396], (-0.663, -0.133], (-0.133, 0.396], (-1.193, -0.663], (0.396, 0.926]]
Length: 20
Categories (5, object): [(-1.726, -1.193] < (-1.193, -0.663] < (-0.663, -0.133] < (-0.133, 0.396] <
                         (0.396, 0.926]]
"""

arr2=np.random.randint(0,10,size=30) #范围0-10,共30个数
arr3=pd.Series(arr2) #先转换为series格式
print arr3.value_counts() #统计频数

"""
结果如下:
>>> print arr3.value_counts()
0    8
9    5
3    4
1    4
6    3
2    3
8    1
7    1
5    1
dtype: int64
"""
arr4=np.sort(arr3)
arr5=pd.Series(arr4)
fac=pd.cut(arr5,4)
print fac
"""
>>> print fac           值 
0     (-0.009, 2.25]    0
1     (-0.009, 2.25]    0
2     (-0.009, 2.25]    0
3     (-0.009, 2.25]    0
4     (-0.009, 2.25]    1
5     (-0.009, 2.25]    1 
6     (-0.009, 2.25]    2
7     (-0.009, 2.25]    2
8     (-0.009, 2.25]    2
9        (2.25, 4.5]    3
10       (2.25, 4.5]    3
11       (2.25, 4.5]    3
12       (2.25, 4.5]    3
13       (2.25, 4.5]    3
14       (2.25, 4.5]    4
15       (2.25, 4.5]    4
16       (4.5, 6.75]    5
17       (4.5, 6.75]    5
18       (4.5, 6.75]    6
19       (4.5, 6.75]    6
20       (4.5, 6.75]    6
21         (6.75, 9]    7
22         (6.75, 9]    7
23         (6.75, 9]    7
24         (6.75, 9]    7
25         (6.75, 9]    8
26         (6.75, 9]    8
27         (6.75, 9]    8
28         (6.75, 9]    9
29         (6.75, 9]    9
dtype: category
Categories (4, object): [(-0.009, 2.25] < (2.25, 4.5] < (4.5, 6.75] < (6.75, 9]]
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值