欢迎加入python学习交流群 667279387

Pandas学习(一)–数据的导入

pandas学习(二)–双色球数据分析

pandas学习(三)–NAB球员薪资分析

pandas学习(四)–数据的归一化

pandas学习(五)–pandas学习视频

归一化方法有两种形式,一种是把数变为(0,1)之间的小数,一种是把有量纲表达式变为无量纲表达式。主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理。

常见归一化算法

1、min-max标准化(Min-Max Normalization)

也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间。转换函数如下:

x^=x−xminxmax−xmin" role="presentation">x^=x−xminxmax−xminx^=x−xminxmax−xmin

其中max为样本数据的最大值,min为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

2、Z-score标准化方法

这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,转化函数为:

x^=x−μσ" role="presentation">x^=x−μσx^=x−μσ

其中为μ" role="presentation" style="position: relative;">μμ所有样本数据的均值,σ" role="presentation" style="position: relative;">σσ为所有样本数据的标准差。该种归一化方式要求原始数据的分布可以近似为高斯分布,否则处理的效果会变差。

pandas归一化方法

1、min-max标准化

import numpy as np
import pandas as pd np.random.seed(1)
df = pd.DataFrame(np.random.randn(4, 4) * 4 + 3)
print(df)
"""
0 1 2 3
0 9.497381 0.552974 0.887313 -1.291874
1 6.461631 -6.206155 9.979247 -0.044828
2 4.276156 2.002518 8.848432 -5.240563
3 1.710331 1.463783 7.535078 -1.399565 """
df_norm = (df - df.min()) / (df.max() - df.min())
print(df_norm)
"""
0 1 2 3
0 1.000000 0.823413 0.000000 0.759986
1 0.610154 0.000000 1.000000 1.000000
2 0.329499 1.000000 0.875624 0.000000
3 0.000000 0.934370 0.731172 0.739260
"""
df_norm2=df.apply(lambda x: (x - np.min(x)) / (np.max(x) - np.min(x)))
print(df_norm2)
"""
0 1 2 3
0 1.000000 0.823413 0.000000 0.759986
1 0.610154 0.000000 1.000000 1.000000
2 0.329499 1.000000 0.875624 0.000000
3 0.000000 0.934370 0.731172 0.739260
"""

2、Z-score标准化方法

import numpy as np
import pandas as pd np.random.seed(1)
df = pd.DataFrame(np.random.randn(4, 4) * 4 + 3)
print(df)
"""
0 1 2 3
0 9.497381 0.552974 0.887313 -1.291874
1 6.461631 -6.206155 9.979247 -0.044828
2 4.276156 2.002518 8.848432 -5.240563
3 1.710331 1.463783 7.535078 -1.399565
"""
df_norm = (df - df.mean()) / (df.std())
print(df_norm)
"""
0 1 2 3
0 1.213741 0.287871 -1.454237 0.312166
1 0.295115 -1.481492 0.777218 0.866440
2 -0.366215 0.667324 0.499679 -1.442906
3 -1.142640 0.526297 0.177340 0.264301
""" df_norm2 = df.apply(lambda x: (x - np.mean(x)) / (np.std(x)))
print(df_norm2)
"""
0 1 2 3
0 1.401507 0.332405 -1.679208 0.360458
1 0.340769 -1.710680 0.897454 1.000479
2 -0.422869 0.770560 0.576980 -1.666125
3 -1.319407 0.607716 0.204774 0.305188
"""

比较好奇为啥上面df.std()和np.std()算出来的值不一样,估计哪里有点不一样的地方,还需要研究研究。下面做了一个简单的实验,不知道df.std()具体是怎么算的。

import numpy as np
import pandas as pd data = [(1, 2), (3, 4)]
df = pd.DataFrame(data)
print(df)
"""
0 1
0 1 2
1 3 4
"""
df_std1 = df.std(axis=0)
print(df_std1)
"""
0 1.414214
1 1.414214
"""
df_std2 = df.apply(lambda x: np.std(x), axis=0)
print(df_std2)
"""
0 1.0
1 1.0
"""

经过后续学习这篇帖子找到了答案:

https://stackoverflow.com/questions/24984178/different-std-in-pandas-vs-numpy

import numpy as np
import pandas as pd data = [(1, 2), (3, 4)]
df = pd.DataFrame(data)
print(df)
"""
0 1
0 1 2
1 3 4
"""
df_std1 = df.std(axis=0)
print(df_std1)
"""
0 1.414214
1 1.414214
"""
df_std2 = df.apply(lambda x: np.std(x,ddof=1), axis=0)
print(df_std2)
"""
0 1.414214
1 1.414214
"""

ddof : int, optional

Means Delta Degrees of Freedom. The divisor used in calculations is N - ddof, where N represents the number of elements. By default ddof is zero.

这个是numpy对ddof的解释。

简单点说np.std()计算的是标准差,df.std()计算的是标准差的无偏估计

参考资料

1、https://stackoverflow.com/questions/12525722/normalize-data-in-pandas

2、https://stackoverflow.com/questions/26414913/normalize-columns-of-pandas-data-frame

3、https://en.wikipedia.org/wiki/Unbiased_estimation_of_standard_deviation

欢迎加入python学习交流群 667279387

pandas学习(四)--数据的归一化的更多相关文章

  1. Pandas学习1 --- 数据载入

    import numpy as np import pandas as pd 数据加载 首先,我们需要将收集的数据加载到内存中,才能进行进一步的操作.pandas提供了非常多的读取数据的函数,分别应用 ...

  2. Pandas学习(一)——数据的导入

    欢迎加入python学习交流群 667279387 学习笔记汇总 Pandas学习(一)–数据的导入 pandas学习(二)–双色球数据分析 pandas学习(三)–NAB球员薪资分析 pandas学 ...

  3. pandas学习(创建多层索引、数据重塑与轴向旋转)

    pandas学习(创建多层索引.数据重塑与轴向旋转) 目录 创建多层索引 数据重塑与轴向旋转 创建多层索引 隐式构造 Series 最常见的方法是给DataFrame构造函数的index参数传递两个或 ...

  4. 【转】Pandas学习笔记(四)处理丢失值

    Pandas学习笔记系列: Pandas学习笔记(一)基本介绍 Pandas学习笔记(二)选择数据 Pandas学习笔记(三)修改&添加值 Pandas学习笔记(四)处理丢失值 Pandas学 ...

  5. 【转】Pandas学习笔记(二)选择数据

    Pandas学习笔记系列: Pandas学习笔记(一)基本介绍 Pandas学习笔记(二)选择数据 Pandas学习笔记(三)修改&添加值 Pandas学习笔记(四)处理丢失值 Pandas学 ...

  6. pandas学习(数据分组与分组运算、离散化处理、数据合并)

    pandas学习(数据分组与分组运算.离散化处理.数据合并) 目录 数据分组与分组运算 离散化处理 数据合并 数据分组与分组运算 GroupBy技术:实现数据的分组,和分组运算,作用类似于数据透视表 ...

  7. pandas学习(常用数学统计方法总结、读取或保存数据、缺省值和异常值处理)

    pandas学习(常用数学统计方法总结.读取或保存数据.缺省值和异常值处理) 目录 常用数学统计方法总结 读取或保存数据 缺省值和异常值处理 常用数学统计方法总结 count 计算非NA值的数量 de ...

  8. pandas学习(创建数据,基本操作)

    pandas学习(一) Pandas基本数据结构 Series类型数据 Dataframe类型 基本操作 Pandas基本数据结构 两种常用数据结构: Series 一维数组,与Numpy中的一维ar ...

  9. Java开发学习(四十一)----MyBatisPlus标准数据层(增删查改分页)开发

    一.标准CRUD使用 对于标准的CRUD功能都有哪些以及MyBatisPlus都提供了哪些方法可以使用呢? 我们先来看张图: 1.1 环境准备 这里用的环境就是Java开发学习(四十)----MyBa ...

随机推荐

  1. Dev 日志 | 一次 Segmentation Fault 和 GCC Illegal Instruction 编译问题排查 NebulaGraph

    摘要 笔者最近在重新整理和编译 Nebula Graph 的第三方依赖,选出两个比较有意思的问题给大家分享一下. Flex Segmentation Fault--Segmentation fault ...

  2. JQury自动切换图片

    [标签]Jquery图片自动切换<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...

  3. Linux注意事项

    一.学习 Linux 的注意事项 1. Linux 严格区分大小写 Linux 是严格区分大小写的,这一点和 Windows 不一样,所以操作时要注意区分大小写的不同,包括文件名和目录名.命令.命令选 ...

  4. android逆向总结

    首先项目里的java文件,以及项目引用到的第三方jar或aar包里面的class,统统都编译成classes.dex放在apk包的根目录,项目的资源目录和AndroidManifest.xml被处理生 ...

  5. SQL中Truncate的用法

    SQL中Truncate的用法转自:http://www.studyofnet.com/news/555.html本文导读:删除表中的数据的方法有delete,truncate, 其中TRUNCATE ...

  6. beego框架学习--beego orm映射

    什么是ORM 即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作 ...

  7. IDEA连接Redis

    1.创建一个Maven项目 2.在src下的pom.xml文件里,添加相关包引用 <?xml version="1.0" encoding="UTF-8" ...

  8. 新闻实时分析系统-Flume数据采集准备

    Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据进行简单处理,并 ...

  9. 视频转GIF+GIF录制

    GIF录制 Windows--oCam oCam使用非常简便,它还可以用来录音,录制视频,并且是单文件版,很小,使用也非常方便,如果用来录制GIF,大家导出录制的视频选择GIF格式就可以了: Wind ...

  10. 手动模拟实现Spring IOC功能(基于javaConfig风格)

    以下文中spring特指spring frameWork项目,不含其它:如spring cloud等. 作为刚开始研究spring源码的小白,对于spring两大核心功能之一的IOC,虽说大致了解了B ...