數據源:
df= pd.DataFrame({'k1': [ 's1']* 3 + ['s2']* 5,'k2' : [1, 1, 2, 3, 3, 4, 4,4]})
df

1 重復值判斷和查看
df.duplicated(subset=None, keep='first')
功能:
指定列數據重復項判斷,返回指定列重復行boolean Series.
參數說明:
- subset=None:列標簽或標簽序列,可選,只考慮某些列來識別重復項;默認使用所有列。
- keep='first':{'first','last',False}
- first:將第一次出現重復值標記為True。
- last:將最后一次出現重復值標記為True。
- False:將所有重復項標記為True。
# 默認判斷所有列,只有第一條不標記為true,后面重復出現的都是true
df.duplicated()
# subset=[list],只判斷指定列
df.duplicated(subset=['k1'])
# keep='last',只最后一次不標記為true,前面的都標記為true
df.duplicated(keep='last')
# keep=false,所有重復項都標記為true
df.duplicated(keep=False)

# 查看記錄重復數量,不包括首次出現那條記錄
df.duplicated().value_counts()
# 查看記錄重復的所有數量
df.duplicated(keep=False).value_counts()
# 查看所有重復記錄
df[df.duplicated(keep=False)]
# 查看除首條外的所有重復記錄
df[df.duplicated()]
2 重復值刪除
df.drop_duplicates(subset=None, keep='first', inplace=False)

3 異常值初步查看代碼
for col_name in df.columns[:-1]:
s=users_df[col_name].value_counts().sort_index().reset_index()
if s.shape[0] > 20:
print(pd.concat([s[:10],s[-10:]]))
else:
print(s)