資料分析實戰之資料清洗

2021-09-10 03:32:44 字數 2043 閱讀 7366

在資料分析過程中不論是時間還是功夫,資料清洗大概佔到了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...