目錄
我們有下面的乙個資料,利用其做簡單的資料分析。
這是一家服裝店統計的會員資料。最上面的一行是列座標,最左側一列是行座標。列座標中,第 0 列代表的是序號,第 1 列代表的會員的姓名,第 2 列代表年齡,第 3 列代表體重,第 4~6 列代表男性會員的三圍尺寸,第 7~9 列代表女性會員的三圍尺寸。
資料清洗規則總結為以下 4 個關鍵點,統一起來叫「完全合一」,下面來解釋下:
一般情況下,由於資料量巨大,在採集資料的過程中,會出現有些資料單元沒有被採集到,也就是資料存在缺失。通常面對這種情況,我們可以採用以下三種方法:
比如我們相對data[『age']中缺失的數值使用平均年齡進行填充,可以寫:
df['age'].fillna(df['age'].mean(), inplace=true)
如果我們用最高頻的資料進行填充,可以先通過 value_counts 獲取 age 字段最高頻次 age_maxf,然後再對 age 欄位中缺失的資料用 age_maxf 進行填充:
age_maxf = train_features['age'].value_counts().index[0]
train_features['age'].fillna(age_maxf, inplace=true)
我們發現資料中有乙個空行,除了 index 之外,全部xfvduna的值都是 nan。pandas 的 read_csv() 並沒有可選引數來忽略空行,這樣,我們就需要在資料被讀入之後再使用 dropna() 進行處理,刪除空行。
# 刪除全空的行
df.dropna(how='all',inplace=true)
如果某一列資料其單位並不統一,比如weight列,有的單位為千克(kgs),有的單位是磅(lbs)。
這裡我們使用千克作為統一的度量單位,將磅轉化為千克:
# 獲取 weight 資料列中單位為 lbs 的資料
rows_with_lbs = df['weight'].str.contains('lbs').fillna(false)
print df[rows_with_lbs]
# 將 lbs轉換為 kgs, 2.2lbs=1kgs
for i,lbs_row in df[rows_with_lbs].iterrows():
# 擷取從頭開始到倒數第三個字元之前,即去掉lbs。
weight = int(float(lbs_row['weight'][:-3])/2.2)
df.at[i,'weight'] = '{}kgs'.format(weight)
假設在資料集中 firstname 和 lastname 有一些非 ascii 的字元。我們可以採用刪除或者替換的方式來解決非 ascii 問題,這裡我們使用刪除方法,也就是用replace方法:
# 刪除非 ascii 字元
df['first_name'].replace(, regex=true, inplace=true)
df['last_name'].replace(, regex=true, inplace=true)
假設姓名(name)包含了兩個引數 firstname和lastname。為了達到資料整潔的目的,我們將 name 列拆分成 firstname 和 lastname 兩個字段。我們使用 python 的 split 方法,str.split(expand=true),將列表拆成新的列,再將原來的 name 列刪除。
# 切分名字,刪除源資料列
df[['first_namexfvduna','last_name']] = df['name'].str.split(expand=true)
df.drop('name', axis=1, inplace=true)
我們校驗一下資料中是否存在重覆記錄。如果存在重覆記錄,就使用 pandas 提供的 drop_duplicates() 來刪除重複資料。
# 刪除重複資料行
df.drop_duplicates(['first_name','last_name'],inplace=true)
這樣,我們就將上面案例中中的會員資料進行了清理,來看看清理之後的資料結果。
使用Pandas進行資料清洗
資料清洗的目的是修正異常值,以更好地進行運算和觀察結果。通過pandas對序列或資料幀的清洗分為兩個步驟 異常檢測和資料修正。1.異常檢測 pandas中的空值用 nan 表示,可以通過呼叫isnull和notnull來檢測序列物件和資料幀物件是否為異常值。2.資料修正資料檢測完畢之後,需要對資料進...
利用Python進行資料分析 Pandas 4
層次化索引 hierarchical indexing 是pandas的一項重要功能,它使你能在乙個軸上擁有多個 兩個以上 索引級別。抽象點說,它使你能以低維度形式處理高維度資料。我們先來看乙個簡單的例子 建立乙個series,並用乙個由列表或陣列組成的列表作為索引。from pandas impo...
利用python進行資料分析pandas 字串
coding utf 8 created on mon oct 28 17 30 22 2019 author weiping val a,b gudd tt val.split pp x.strip for x in val.split pp 字串連線 a,b,c,d pp a b c d 字串可...