数据预处理总结1

特征缩放

标准化

使数据服从标准正态分布,均值为0,方差为1。

做数据挖掘,pandas和numpy库肯定是要引入的,这里就省略了。

from sklearn.preprocessing import StandardScaler
import warnings
warnings.filterwarnings("ignore")

mydata = pd.DataFrame([[-1,2],[-0.5,6],[0,10],[1,18]])

sca = StandardScaler()
res = sca.fit_transform(mydata)
print(res)

StandardScaler: 缺失值保持不变;不能传入一维数组;比较常用,因为异常值对其影响小。

归一化

把数据缩放到一个特定的取值范围,默认[0,1]

from sklearn.preprocessing import MinMaxScaler

mydata = pd.DataFrame([[-1,2],[-0.5,6],[0,10],[1,18]])

# 归一化到[0,1]
sca = MinMaxScaler()
res = sca.fit_transform(mydata)
print(res)

# 归一化到其他范围
sca = MinMaxScaler(feature_range=(10,20))
res = sca.fit_transform(mydata)
print(res)

MinMaxScaler: 缺失值保持不变;不能传入一维数组;适用于数据范围需要转化到特定区间。

不破坏稀疏性的缩放

用每个数除以最大的绝对值,把数据缩放到[-1,1],0保持不变。

from sklearn.preprocessing import MaxAbsScaler

mydata = pd.DataFrame([[-1,2],[-0.5,6],[0,10],[1,18]])

sca = MaxAbsScaler()
res = sca.fit_transform(mydata)
print(res)

MaxAbsScaler: 适用于数据范围压缩到[-1,1],且不破坏数据的稀疏性。

减少异常值影响的缩放

使用的是中位数、四分位数范围(IQR),可以减小异常值、极端值的影响。

from sklearn.preprocessing import RobustScaler

mydata = pd.DataFrame([[-1,2],[-0.5,6],[0,10],[1,18]])

sca = RobustScaler()
res = sca.fit_transform(mydata)
print(res)

适用于异常值多、噪声多的情况。

 

缺失值处理

读取数据

mydata = pd.read_csv("xxx.csv",index_col=0)
mydata.head()

查看缺失值(空值)分布在哪些列

mydata.info()

查看缺失值的比例

mydata.Age.isnull().value_counts()
mydata.Age.isnull().value_counts(normalize = True)

填充缺失值

以下两种写法都可以,我个人偏好第二种。

mydata.Age = mydata.Age.fillna(mydata.Age.median())
mydata.Age.fillna(mydata.Age.median(), inplace=True)

复习一下中位数、平均值、众数的写法:

mydata.median() # 默认按列求
mydata.median(axis=1) # 按行求
mydata.median(numeric_only=True)

mydata.mean()

mydata.mode()

删除缺失值

df.dropna() # 默认删除带有空值的行
df.dropna(axis = 1) # 删除带有空值的列
df.dropna(inplace = True) # 直接修改原数据
df.dropna(how = ‘all’) # 只有所有值都为空时,才删除该行(列)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值