1. 程式人生 > >Python機器學習之資料預處理

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)