Python机器学习之数据预处理

# -*- coding: utf-8 -*-
"""
Created on Sat Sep 29 22:39:26 2018

@author: Lxiao217
email:[email protected]
"""

#数据预处理
#CSV(comma-srpared values,以逗号为分隔符的数值)
#如果数据以csv文件的形式存储在硬盘上,就可以通过StringIO以字符串的方式从文件中
#读取数据,并将其转换为DataFrame的格式赋给csv_data
import pandas as pd
from io import StringIO
csv_data = '''A,B,C,D
,2.0,,4.0
5.0,6.0,7.0,8.0
0.0,,12.0,'''
df = pd.read_csv(StringIO(csv_data))
print(df)
print(df.isnull().sum())
#isnull()返回一个bool型的DataFrame值,有缺失值返回True,没有返回False
#sum()方法统计缺失值个数

#在使用sklearn处理数据之前,可以通过DataFrame的value属性来访问相关的Numpy数组:
print(df.values)
print()

'''缺失值的处理方法'''
#将存在缺失值的特征或样本删除
#缺点:会丢失有价值的数据
print(df.dropna()) #删除包含缺失数据的行
print()
print(df.dropna(axis=1)) #删除包含缺失数据的列
print()
print(df.dropna(thresh = 2))
print()

#缺失数据填充
#常用的差值技术之一是:均值插补
#sklearn的Imputer类可以实现此方法。
'''
strategy = 'mean'时,首先计算各特征列的值,后取均值替换相应的NaN.
axis=1则计算相应的行;
'''
#Imputer类属于sklearn的转换器类,用于数据转换,常用方法为fit和transform
#fit用于对数据集中的参数进行识别并构建相应的数据补齐模型
#transform方法则使用刚构建的数据补齐模型对数据集中相应的参数的缺失值进行补齐。
from sklearn.preprocessing import Imputer
imr = Imputer()
imr = imr.fit(df)
Imputed_data = imr.transform(df.values)
print(Imputed_data)





猜你喜欢

转载自blog.csdn.net/lxiao428/article/details/82990272