700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 四大会计师事务所python数据分析_数据分析|Python处理数据(4)

四大会计师事务所python数据分析_数据分析|Python处理数据(4)

时间:2023-07-31 06:12:29

相关推荐

四大会计师事务所python数据分析_数据分析|Python处理数据(4)

Python系列第一节讲了python基本数据结构:

python系列第二节讲了python文件处理:

Python系列第三节讲了python函数:

本文是Python系列第四节,想从数据处理的角度简要介绍一些方法:无量纲化(数据规范化)

最大最小【0,1】归一化

标准化(也叫Z-score standardization,均值为0方差为1)(对列向量处理)

Normalizer,将同一行数 据的不同特征进行规范化,这样一个数据的不同特征具有相同的量纲

对定量特征二值化(对列向量处理)

对定性特征哑编码(对列向量处理)

缺失值处理

多项式变换(对行向量处理)

Box-Cox变换(对因变量处理)

接下来以 sklearn中的IRIS(鸢尾花)数据集来对特征处理功能进行说明:

from sklearn.datasets import load_iris

#导入IRIS数据集

iris = load_iris()

#特征矩阵

iris.data

#目标向量

iris.target

无量纲化(数据规范化)

from sklearn.preprocessing import StandardScaler

#标准化,返回值为标准化后的数据

StandardScaler().fit_transform(iris.data)

# --- 例子就是如下,他是对列也就是同一特征下进行缩放,而不是对一个数据的不同特征之间(行)进行缩放 --

from sklearn.preprocessing import StandardScaler

import numpy as np

data = np.array([[1,2],[3,4],[5,6]]).reshape(3,2)

print(data)

print (np.mean(data,axis=0)) #计算每一列均值

print (np.std(data,axis=0)) # 计算每一列标准差

#规范化处理

print(StandardScaler().fit_transform(data))

最大最小【0,1】归一化

# 最大最小【0,1】归一化

import numpy as np

import pandas as pd

#方法一

def autoNorm(dataSet):

norm_data=(dataSet-dataSet.min(axis=0))/(dataSet.max(axis=0)-dataSet.min(axis=0))

return norm_data

train_data=np.arange(16).reshape(4,4)

print(autoNorm(train_data))

#Python自带的【0,1】归一化

from sklearn import preprocessing

import numpy as np

# 初始化数据,每一行表示一个样本,每一列表示一个特征

x = np.array([[ 0., -3., 1.],

[ 3., 1., 2.],

[ 0., 1., -1.]])

# 将数据进行 [0,1] 规范化

min_max_scaler = preprocessing.MinMaxScaler()

minmax_x = min_max_scaler.fit_transform(x)

print (minmax_x)

标准化(也叫Z-score standardization,均值为0方差为1)(对列向量处理)

def autoNorm(dataSet):

norm_data=(dataSet-dataSet.mean(axis=0))/dataSet.std(axis=0)

return norm_data

train_data=np.arange(16).reshape(4,4)

print(autoNorm(train_data))

from sklearn import preprocessing

import numpy as np

# 初始化数据

x = np.array([[ 0., -3., 1.],

[ 3., 1., 2.],

[ 0., 1., -1.]])

# 将数据进行 Z-Score 规范化

scaled_x = preprocessing.scale(x)

print (scaled_x)

Normalizer,将同一行数 据的不同特征进行规范化,这样一个数据的不同特征具有相同的量纲

from sklearn.preprocessing import Normalizer

#归一化,返回值为归一化后的数据

Normalizer().fit_transform(iris.data)

from sklearn.preprocessing import Normalizer

import math

data = np.array([[1,2],[3,4],[5,6]]).reshape(3,2)

print(data)

print (data[0][0]/math.sqrt((data[0][0])**2 + (data[0][1])**2)) # 计算第一个元素L2正则化后的值

# 规范化

Normalizer().fit_transform(data)

对定量特征二值化(对列向量处理)

'''

定性与定量区别 定性:博主很胖,博主很瘦

定量:博主有80kg,博主有60kg

'''

from sklearn.preprocessing import Binarizer

#二值化,阈值设置为3,返回值为二值化后的数据 ;>3显示为1,否则为0

print(iris.data)

Binarizer(threshold=3).fit_transform(iris.data)

对定性特征哑编码(对列向量处理)

from sklearn.preprocessing import OneHotEncoder

#哑编码,对IRIS数据集的目标值,返回值为哑编码后的数据

print(OneHotEncoder().fit_transform(iris.target.reshape((-1,1))))

#

import numpy as np

import pandas as pd

data=pd.read_excel("C://Users//baihua//Desktop//1.xlsx")

data.head()

ori=pd.Categorical(data.朝向)

print(ori)

print(ori.codes)

缺失值处理

import numpy as np

from sklearn.preprocessing import Imputer

imp = Imputer(missing_values='NaN', strategy='mean', axis=0) # 使用特征的均值进行填充,其余还有 使用众数填充等,只需要把mean改成median即可

data = np.array([np.nan, 2, 6, np.nan, 7, 6]).reshape(3,2)

print(data)

print (imp.fit_transform(data))

多项式变换(对行向量处理)

'''

在多元回归分析中,当特征不满足线性,可以多特征进行多项式变换

'''

from sklearn.preprocessing import PolynomialFeatures

#多项式转换

#参数degree为度,默认值为2

PolynomialFeatures().fit_transform(iris.data)

from numpy import log1p

from sklearn.preprocessing import FunctionTransformer

#自定义转换函数为对数函数的数据变换

#第一个参数是单变元函数

FunctionTransformer(log1p).fit_transform(iris.data)

Box-Cox变换(对因变量处理)

'''

改变数据特征分布:特征变换(对列向量展开)对y进行box-cox变换

正态分布的偏度为0;

偏度为负,即负偏离(左偏离)

'''

import pandas as pd

test=pd.DataFrame({'A':[1,2,3,4],'B':[2,4,5,2]})

test.skew(axis=0)

test['c']=[4,5,6,7]

print(test)

test.skew(axis=0)

from scipy.stats import boxcox_normmax

from scipy.special import boxcox1p

lambda_2=boxcox_normmax(test.B)

print(lambda_2)

test.B=boxcox1p(test.B,lambda_2)

print(test)

print(test.skew(axis=0))

参考文献:

最后,欢迎关注我的【数据分析】专栏,这里已经汇聚了将近1000名爱好数据分析的小伙伴了,跟着他们一起学习吧!数据分析​

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。