今天就給大家接一下資料清洗,在資料探勘專案中資料清洗大要佔到整個專案週期的60%的
時間。並且資料清洗的效果很大程度上影響著模型的效果,因此資料清洗數分析和資料探勘中占有的地位不言而喻。
話不多,開始講資料清洗。
首先什麼是資料清洗,資料清洗就是根據實際的專案需要,對要用到的資料進行清理。
資料清洗主要進行的處理
一:對資料中的缺失值進行處理。一般有兩種方法,(1)直接刪除(2)對缺失值進行補充。
二:對異常值得處理。異常值的處理和確實值得處理基本上差不多,進行刪除或者替換。
三:資料編碼。就是對類別,或者名義變數的值轉化為何是的數值,以便後期進行計算。
資料清洗的工具很多,但是pandas 是運用很多的資料清洗的工具,接下來介紹使用pandas 進行
資料清洗。
#讀取資料
score_df=pd.read_csv("./學生成績單.csv",index_col="序號",chunksize=10000,sep=",",skiprows=[1],encoding="utf-8",error_bad_lines=false)
'---------------------進行資料清洗--------------------'
#處理刪除含有控制的行
socre_df=score_df.dropna()
但是只有少數情況下我們是可以直接刪除含有空缺值的樣本,大多數情況是要對空缺進行填補的。
這裡我只講使用常見的統計量進行填補。
#使用均值進行填充
cloumn_names=score_df.columns.values.tolist()
for cloumn_name in cloumn_names:
column_mean=score_df.mean
score_df[cloumn_name]=score_df.fillna(column_mean)
``
for cloumn_name in cloumn_names:
column_mean=score_df.mode
score_df[cloumn_name]=score_df.fillna(column_mean)
當然根據實際的需求也可是使用中位數,最大最小值進行替換。
#最大值,
score_df[cloumn_name].max()
#最小值
score_df[cloumn_name].min()
二 異常值得處理
要對異常值進行處理,首要知道什麼是異常值。一般異常值為錯誤值或者是不需要的值。錯誤值比較很理解,接比如年齡是10000肯定是錯誤值,異常值可能只是不是我們要研究的物件比如在分析低收入喏人群的收入是有乙個樣本 的收入是100萬這個就是一樣值了。
在實際的運用的過程中,異常值得判斷通常的方法是
1:對於連續性的變數,一般使用3 simga 原則。
2:對於模擬性的變數通常使用聚類講數量很少的簇中的樣本第一位異常資料。
#使用3sigma判斷異常值
#去其中的一作為例子
data=score_df[cloumn_name].values.tolist()
u=np.mean(data)
std=np.std(data)
error =score_df[(score_df[「英語」]-u>=3std) | (3std+u<=score_df[「英語」])][「英語」].to_list()
異常值的處理,可以使用蓋帽發法,使用
一下是所有的**:
#encoding=「itf-8」
import pandas as pd
import numpy as np
#讀取資料
score_df=pd.read_csv("./學生成績單.csv",encoding=「gbk」,error_bad_lines=false)
『---------------------進行資料清洗--------------------』
#處理刪除含有控制的行
socre_df=score_df.dropna
#使用均值進行填充
column_names=score_df.columns.values.tolist()
for column_name in column_names:
column_mean=score_df.mean
score_df[column_name]=score_df[column_name].fillna(column_name)
score_df=score_df.where(score_df.notnull(),none)
for column_name in column_names:
column_mean=score_df.mode
score_df[column_name]=score_df[column_name].fillna(column_mean)
score_df[column_name].median()
#最大值,
score_df[column_name].max()
#最小值
score_df[column_name].min()
#使用3sigma判斷異常值
#去其中的一作為例子
data=score_df[「英語」].values.tolist()
u=np.mean(data)
std=np.std(data)
#q1=quantile(result$tot_derog, 0.001)
std=np.std(data)
error =score_df[(score_df[「英語」]-u>=3std) | (3std+u<=score_df[「英語」])][「英語」].to_list()
資料分析 pandas
pandas是乙個強大的python資料分析的工具包,它是基於numpy構建的,正因pandas的出現,讓python語言也成為使用最廣泛而且強大的資料分析環境之一。pandas的主要功能 具備對其功能的資料結構dataframe,series 整合時間序列功能 提供豐富的數 算和操作 靈活處理缺失...
python資料分析 Pandas
import pandas as pd series 可以看做乙個定長的有序字典。基本任意的一維資料都可以用來構造 series 物件 s pd.series 1,2,3.0,abc s1 pd.series data 1,3,5,7 index a b x y 通過下標獲取資料 s1 a seri...
資料分析之Pandas
from pandas import series,dataframe import pandas as pd import numpy as np states california ohio oregon texas year 2000,2001,2002,2003 value 35000,71...