zoukankan      html  css  js  c++  java
  • Python数据分析4------------数据变换

    1、简单变换:

      开方、平方、对数等

    2、数据规范化:

    (1)离差标准化(最小最大标准化):消除量纲(单位)影响以及变异大小因素的影响。

      x1=(x-min)/(max-min)

      代码:data1=(data-min())/(data.max()-data.min())

    (2)标准差标准化(0-均值标准化)------消除单位影响以及变量自身变异影响。

      x1=(x-mean)/std

      代码:data2=(data-data.mean())/data.std()

    它有个特性,得到的数据负数较正数多,且得到的平均数为0,标准差为1.

    (3)小数定标规范化------消除单位影响

      x1=x/10**(k)

      k=log10(x的绝对值的最大值)

      代码:k=numpy.ceil(numpy.log10(data.abs().max()))

         data3=data/10**k

    3、离散化:

    (1)等宽离散化:将属性的值域分为具有相同宽度的区间。

      代码:采用pandas.cut()函数,cut有三个参数,第一个是数据,第二个参数表示分为k份,第三个参数为标签labels。

      pandas.cut(data,3,labels=["便宜","适中","贵"])#将数据data分为3等份,标签为便宜、适中、贵

    如:

      非等宽离散化:pandas.cut ( data, [ 0,50,150,300,500,data.max() ] ,labels)

    (注意:将列表[0,50,……]可以换成分位数,就可以进行等频率离散化。

    (2)等频率离散化:将相同数据的记录放进每个区间 ①求分位数②cut函数

      过程主要将k份的分位数求出来,dataframe可以用describe函数求,属性采用percentile就可以了。列表可以用numpy的percentile来求。比如np.percentile(data,75)是求四分位数(3/4)。

      ①dataframe结构

      #k为分的份数,w作为分位数,可以运用dataframe.describe(percentiles=w)来计算分位数

      w=[ i/k for i in range(k+1)]

      w=data.describe (percentiles=w) [ 4:4+k+1] #取几个分位数的值作为不等长列表,用于cut函数

      d2=pd.cut(data,w,labels=range(k))

      ②列表、数组结构

      #用np.percentile(data,百分比)来求

      temp=[ i/k*100 for i in range(k+1)]

      w=[ ]

      for item in temp:

        w.append(np.percentile(data,item))

      d3=pd.cut(data,w,labels=range(k))

    (3)一维聚类离散化:先聚类(如k-means),然后对每一类的连续值进行标记。

      ①k-means求聚类中心,并排序,将相邻两项的中点作为边界点,把首末边界点加上,整合成w列表②cut函数

      k-means:

      from sklearn.cluster import KMeans

      kmodel=KMeans(n_clusters=k)  #k为聚成几类

      kmodel.fit(data.reshape(len(data),1))) #训练模型

      c=pd.DataFrame(kmodel.cluster_centers_) #求聚类中心

      c=c.sort_values(by=’列索引') #排序

      w=pd.rolling_mean(c,2).iloc[1:] #用滑动窗口求均值的方法求相邻两项求中点,作为边界点

      w=[0] +list(w[0] + [ data.max() ]  #把首末边界点加上

      d3= pd.cut(data,w,labels=range(k)) #cut函数

    4、小波变换

    小波变换是一种新的数据分析方法,主要对信号数据进行特征提取。

    5、属性构造:

    也就是构造新的属性再写入原数据中。

  • 相关阅读:
    使用SharePoint PeopleEditor控件
    python快排的三种写法
    js获取浏览器屏幕高度、宽度等
    Spring总结> 第一结 概述
    js设置body高度、宽度为浏览器窗口高度、宽度
    简单的Spring调用jdbc.porperties配置信息,以mysql为例
    SSM(Spring + Spring MVC + MyBatis)整合
    【原创】MS SQL2005 存储过程分页(简洁型)后续完善更新中......
    【转载】动态sql语句基本语法
    Provider模式Demo
  • 原文地址:https://www.cnblogs.com/Lee-yl/p/8671924.html
Copyright © 2011-2022 走看看