在資料分析過程中不論是時間還是功夫,資料清洗大概佔到了80%。
一、資料質量的準則:「完全合一」
1)完整性:單條字段是否存在空值,統計的字段是否完善
2)全面性:觀察某一列的全部數值,根據常識判斷該列是否有問題,比如:資料定義、單位標識、數值本身。
3)合法性:資料的型別、內容、大小的合法性
4)唯一性:資料是否存在重覆記錄,行、列的資料都需要是唯一的
二、資料清洗
匯入資料:
import pandas as pd
df = pd.read_excel(r'c:\users\hzjy\desktop\data.xlsx')
1、完整性:
1)空行:資料中有一組空行,除了index,其他都是nan,使用dropna函式刪除空行
df.dropna(how = 'all',inplace=true) #刪除全空的行
也可以用drop刪除
df.drop(index = 8,inplace=true)
2)缺失值:缺失值的處理一般可以刪除、用均值或眾數填充
df['age'].fillna(df['age'].mean(),inplace = true) #用平均值填充缺失值
age_max = df['age'].value_counts().index[0] #用眾數填充缺失值
df['age'].fillna(age_max)
weight_max = df['weight'].value_counts().index[0] #用眾數填充缺失值
df['weight'].fillna(weight_max,inplace =true)
womansize2_max = df['womansize2'].value_counts().index[0] #用眾數填充缺失值
df['womansize2'].fillna(womansize2_max,inplace =true)
2、全面性:
問題:列的單位不統一
row_with_lbs = df['weight'].str.contains('lbs').fillna(false) #獲取weight資料列中單位為lbs的資料
df[row_with_lbs]
for index,row in df[row_with_lbs].iterrows(): #將 lbs 轉換為 kgs, 2.2lbs=1kgs
weight = int(float(row['weight'][:-3])/2.2) #擷取從頭開始到倒數第三個字元之前,即去掉lbs
df.at[index,'weight'] = '{}kgs'.format(weight)
3、合理性
4、唯一性
問題1:一列有多個引數 name列包含了firstname和lastname。可以將name列拆分,並將name列刪除
df[['firstname','lastname']] = df['name'].str.split(expand = true) #expand=true,直接將分列後的結果轉換成dataframe。
df.drop('name',axis = 1,inplace=true)
問題2:重複資料 用drop_duplicates() 來刪除重複資料。
df.drop_duplicates(['firstname','lastname'],inplace=true)
三、養成資料審核的習慣 Python資料分析之資料清洗
good data decides good analyse 資料清洗,是資料分析中不可缺少的乙個環節,其處理的好壞在很大程度上影響著資料分析的結果。而且以前聽老師說過資料清洗佔整個的資料分析的一半時間以上 汗。資料清洗也是乙個大學問啊 首先讀入檔案 我們可以看出有乙個nan,李四的數學成績也是不符...
資料分析實戰45筆記(11)資料清洗
做完採集資料的工作後要進行的就是資料清洗工作。在資料探勘中,資料清洗就是這樣的前期準備工作。對於資料科學家來說,我們會遇到各種各樣的資料,在分析前,要投入大量的時間和精力把資料 以上資料要直接進行資料分析的話是不可行的。首先這些資料缺少標註。我們在收集整理資料的時候,一定要對資料做標註,資料表頭很重...
資料清洗總結 python資料分析
匯入相應的庫和資料import numpy as np import pandas as pd import seaborn as sns read the data df pd.read csv sberbank.csv shape and data types of the data print...