您的位置:首页 > 其它

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

2016-10-26 16:30 771 查看
在特征工程中,对于数值型数据(比如年龄为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]]
"""
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习