資料清洗 利用python進行缺失值處理

2021-09-24 22:23:02 字數 1674 閱讀 3905

處理缺失值的方法有3種:刪除、不處理、資料插補。

而資料插補主要有5種:

1)利用均值、中位數、眾數插補

2)使用固定值進行插補

3)最近臨插補

4)回歸方法

5)插值法

而主要的插值法分為牛頓插值法、拉格朗日插值法、hermite插值、分段插值、樣條插值法等。

對數學好的可以看一下拉格朗日插值法的數學公式,不感興趣的直接略過看後續python **。

拉格朗日插值法是以法國十八世紀數學家約瑟夫·拉格朗日命名的一種多項式插值方法。拉格朗日插值法可以找到乙個多項式,其恰好在各個觀測的點取到觀測到的值。

從數學上來說就是,對於平面上已知的n個點,可以找到乙個n-1次多項式 y = a_ +a_x +a_x^2 +·····+a_x^n-1 使得多項式曲線能夠過這n個點,從而求出缺失值,補上缺失值。

已知的過n個點的n-1次多項式為:y = a_ +a_x +a_x^2 +·····+a_x^n-1

將n個點的座標(x_,y_ ),(x_,y_ ),···(x_,y_ )代入多項式函式,得

y_ = a_ +a_x_ +a_x_^2 +·····+a_x_^n-1

y_ = a_ +a_x_ +a_x_^2 +·····+a_x_^n-1

y_ = a_ +a_x_ +a_x_^2 +·····+a_x_^n-1

解出拉格朗日插值多項式為:

l(x) = y_ \frac )(x-x_)···(x-x_)}-x_)(x_-x_)(x_-x_)} +y_ \frac )(x-x_)···(x-x_)}-x_)(x_-x_)(x_-x_)}+···+y_ \frac )(x-x_)···(x-x_)}-x_)(x_-x_)(x_-x_)}=\sum_^ny_ \prod_^n \frac }-x_}

將缺失值的函式值對應的點代入插值多項式就可以得到趨勢值的近似值l(x)。

接下來就是本文的核心部分了,好累。。。。

#拉格朗日插值**

import pandas as pd #匯入資料分析庫pandas

from scipy.interpolate import lagrange #匯入拉格朗日插值函式

inputfile = 『path』 #銷量資料路徑

outputfile = 『path』 #輸出資料路徑

data = pd.read_excel(inputfile) #讀入資料

#自定義列向量插值函式

#s為列向量,n為被插值的位置,k為取前後的資料個數,預設為5

def ployinterp_column(s, n, k=5):

y = s[list(range(n-k, n)) + list(range(n+1, n+1+k))] #取數

y = y[y.notnull()] #剔除空值

return lagrange(y.index, list(y))(n) #插值並返回插值結果

#逐個元素判斷是否需要插值

for i in data.columns:

for j in range(len(data)):

if (data[i].isnull())[j]: #如果為空即插值。

data[i][j] = ployinterp_column(data[i], j)

data.to_excel(outputfile) #輸出結果,寫入檔案

使用python進行資料清洗

1 在資料清洗前,我們需要先檢視資料概況,了解我們需要清洗的資料大概包含什麼字段 每個字段下面資料範圍大概如何,資料清洗常用到的函式和語法分別有 info函式 用於了解資料總體情況,包括行數,列數,各列名稱等,比如 shape函式 用於檢視資料矩陣的行和列 describe函式 了解datafram...

利用pandas進行資料清洗的方法

目錄 我們有下面的乙個資料,利用其做簡單的資料分析。這是一家服裝店統計的會員資料。最上面的一行是列座標,最左側一列是行座標。列座標中,第 0 列代表的是序號,第 1 列代表的會員的姓名,第 2 列代表年齡,第 3 列代表體重,第 4 6 列代表男性會員的三圍尺寸,第 7 9 列代表女性會員的三圍尺寸...

使用python指令碼進行資料清洗(1)

1.原始表create table ml 100k userid int,movieid int,rating int unixtime string row format delimited fields terminated by t lines terminated by n stored a...