pandas学习(四)--数据的归一化
来源:互联网 发布:美术教学网络系统 编辑:程序博客网 时间:2024/05/14 03:59
欢迎加入python学习交流群 667279387
Pandas学习(一)–数据的导入
pandas学习(二)–双色球数据分析
pandas学习(三)–NAB球员薪资分析
pandas学习(四)–数据的归一化
归一化方法有两种形式,一种是把数变为(0,1)之间的小数,一种是把有量纲表达式变为无量纲表达式。主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理。
常见归一化算法
1、min-max标准化(Min-Max Normalization)
也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间。转换函数如下:
2、Z-score标准化方法
这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,转化函数为:
其中为
pandas归一化方法
1、min-max标准化
import numpy as npimport pandas as pdnp.random.seed(1)df = pd.DataFrame(np.random.randn(4, 4) * 4 + 3)print(df)""" 0 1 2 30 9.497381 0.552974 0.887313 -1.2918741 6.461631 -6.206155 9.979247 -0.0448282 4.276156 2.002518 8.848432 -5.2405633 1.710331 1.463783 7.535078 -1.399565"""df_norm = (df - df.min()) / (df.max() - df.min())print(df_norm)""" 0 1 2 30 1.000000 0.823413 0.000000 0.7599861 0.610154 0.000000 1.000000 1.0000002 0.329499 1.000000 0.875624 0.0000003 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 30 1.000000 0.823413 0.000000 0.7599861 0.610154 0.000000 1.000000 1.0000002 0.329499 1.000000 0.875624 0.0000003 0.000000 0.934370 0.731172 0.739260"""
2、Z-score标准化方法
import numpy as npimport pandas as pdnp.random.seed(1)df = pd.DataFrame(np.random.randn(4, 4) * 4 + 3)print(df)""" 0 1 2 30 9.497381 0.552974 0.887313 -1.2918741 6.461631 -6.206155 9.979247 -0.0448282 4.276156 2.002518 8.848432 -5.2405633 1.710331 1.463783 7.535078 -1.399565"""df_norm = (df - df.mean()) / (df.std())print(df_norm)""" 0 1 2 30 1.213741 0.287871 -1.454237 0.3121661 0.295115 -1.481492 0.777218 0.8664402 -0.366215 0.667324 0.499679 -1.4429063 -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 30 1.401507 0.332405 -1.679208 0.3604581 0.340769 -1.710680 0.897454 1.0004792 -0.422869 0.770560 0.576980 -1.6661253 -1.319407 0.607716 0.204774 0.305188"""
比较好奇为啥上面df.std()和np.std()算出来的值不一样,估计哪里有点不一样的地方,还需要研究研究。下面做了一个简单的实验,不知道df.std()具体是怎么算的。
import numpy as npimport pandas as pddata = [(1, 2), (3, 4)]df = pd.DataFrame(data)print(df)""" 0 10 1 21 3 4"""df_std1 = df.std(axis=0)print(df_std1)"""0 1.4142141 1.414214"""df_std2 = df.apply(lambda x: np.std(x), axis=0)print(df_std2)"""0 1.01 1.0"""
经过后续学习这篇帖子找到了答案:
https://stackoverflow.com/questions/24984178/different-std-in-pandas-vs-numpy
import numpy as npimport pandas as pddata = [(1, 2), (3, 4)]df = pd.DataFrame(data)print(df)""" 0 10 1 21 3 4"""df_std1 = df.std(axis=0)print(df_std1)"""0 1.4142141 1.414214"""df_std2 = df.apply(lambda x: np.std(x,ddof=1), axis=0)print(df_std2)"""0 1.4142141 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学习(四)--数据的归一化
- pandas 数据归一化以及行删除例程
- 机器学习的数据归一化方法
- Matlab与机器学习-- 数据的归一化
- MATLAB数据归一化汇总(最全面的归一化介绍)
- NumPy学习笔记(4)--数据归一化
- NumPy学习笔记(4)--数据归一化
- 机器学习-数据归一化
- scikit-learn的基本用法(四)——数据归一化
- python数据分析pandas包入门学习(四)处理缺失数据
- pandas入门学习四
- 学习Pandas(四)
- 数据的归一化处理
- 数据的归一化
- 数据的归一化处理
- 数据的归一化
- 数据归一化的作用
- 数据的归一化处理
- Swift-UIScrollView 应用
- html 的src加时间戳
- Subresource Integrity 介绍--SRI (Subresource Integrity) 的检查
- 使用sessionStorage解决刷新后自动定点登陆的问题
- 早安!
- pandas学习(四)--数据的归一化
- Laravel入门教程(一)
- webpack 模块打包器
- wpf记录
- [转]【OpenCV入门教程之十六】OpenCV角点检测之Harris角点检测
- Android探索之旅(第二十四篇)进阶Android高级开发工程师你需要掌握的知识体系
- recyclerview的点击条目删除
- 11-22C/C++/python程序编程
- 几行代码理解Python变量访问的LEGB顺序