數(shù)據(jù)清洗主要是把有用的數(shù)據(jù)留下挖藏,無用的數(shù)據(jù)刪掉议惰。
1.去除重復的數(shù)據(jù)
Pandas庫:duplicated():找到重復數(shù)據(jù)揽咕,重復的數(shù)據(jù)方法返回false意狠。
? ? ? ? ? ? ? ? drop_duplicates(): 找到重復數(shù)據(jù)粟关,刪除掉重復數(shù)據(jù)。
舉例說明:df.duplicated(“name”); 找到name行中的重復數(shù)據(jù)环戈,并且標記為false闷板。
? ? ? ? ? ? df.drop_duplicates(‘age’);結果處理為 刪除掉age列中的重復數(shù)據(jù)。
2.對于缺少數(shù)據(jù)的處理
1)先要找到缺少的數(shù)據(jù)
from pandas import DataFrame
df.isnull(): 判斷數(shù)據(jù)是否為空值院塞。
df.notnull(): 判斷數(shù)據(jù)是否不為空值遮晚。
2)找到缺失值后要如何處理
你可以選擇刪除:df.dropna()
? ? ? ? ? ? ? ? ? ? ? ? 標記當行里數(shù)據(jù)全部為空時,才選擇刪除:df.dropna(how=‘all’)
? ? ? ? ? ? ? ? ? ? ? ? 當以列為單位刪除時: df.dropna(how=‘all’,axis=1)
你可以選擇用其他數(shù)值進行填補:
? ? ? ? ? ? ? ? ? ? ? ? 用問號填補空白數(shù)據(jù):df.fillna(‘?’)?
? ? ? ? ? ? ? ? ? ? ? ? 用同一列上的前一個數(shù)據(jù)來填補:df.fillna(method = 'pad')
? ? ? ? ? ? ? ? ? ? ? ? 用同一列上的后一個數(shù)據(jù)來填補:df.fillna(method = 'bfill')
? ? ? ? ? ? ? ? ? ? ? ? 問題:如何用limit限制每列可以替代NAN的數(shù)目。
你可以選擇用統(tǒng)計性數(shù)值的數(shù)據(jù)來替代:
? ? ? ? ? ? ? ? ? ? ? ? 用列上除控制之外的平均數(shù)來替代:df.fillna(df.mean()) (個數(shù)不包括空值)
? ? ? ? ? ? ? ? ? ? ? ? 用其他的列的統(tǒng)計數(shù)據(jù)來替代:df.fillna(df.mean()['高代':'解幾'])(用解幾列的平均值來替代高代列上的空值)
你可以選擇指定數(shù)據(jù)來填補:
? ? ? ? ? ? ? ? ? ? ? ? df.fillna({‘數(shù)分':100,'高代':0}) (意思是:數(shù)分列上的空值填補為100,高代列上填補的空值為0)
你需要清除字符型數(shù)據(jù)左右首尾的字符rstrip():
????????????????????????df['name'].str.rstrip('n') ? //刪除最右邊的字符窍霞。如果是n,則刪除n;否則葡秒,就刪除最右邊字符就OK。
????????????????????????