十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買(mǎi)多久送多久,劃算不套路!

這篇文章將為大家詳細(xì)講解有關(guān)python做數(shù)據(jù)清洗的方法,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
1.數(shù)據(jù)清洗的代碼:
import pandas as pd
import numpy as np
# 創(chuàng)建空的df,保存測(cè)試數(shù)據(jù)
test_df = pd.DataFrame({'K1':['C1','C1','C2','C3','C4','C2','C1'],'K2':['A','A','B','C','D',np.NaN,np.NaN]})
# 按K1列進(jìn)行分組,組內(nèi)進(jìn)行unique操作(去除重復(fù)元素,返回元組或列表)
test_df_unique = pd.DataFrame(test_df.groupby(['K1'])['K2'].agg('unique'))
# 自定義函數(shù)判斷元組中是否含有nan
def has_nan(list):
flag = False
for x in list:
if x is np.NaN:
flag = True
break
return flag
# 自定義函數(shù)判斷元組中是否不含有nan
def no_nan(list):
flag = True
for x in list:
if x is np.NaN:
flag = False
break
return flag
# 獲取k2列含有nan的數(shù)據(jù)
test_df_unique_has_nan = test_df_unique[test_df_unique['K2'].apply(has_nan)]
# 獲取k2列不含有nan的數(shù)據(jù)
test_df_unique_no_nan = test_df_unique[test_df_unique['K2'].apply(no_nan)]
# 管理測(cè)試數(shù)據(jù),獲取源數(shù)據(jù)
test_df_get = test_df[test_df['K1'].isin(test_df_unique_has_nan.index.tolist())]
test_df_alone = test_df[test_df['K1'].isin(test_df_unique_no_nan.index.tolist())]
# 去除含nan的重復(fù)數(shù)據(jù)
test_df_get_nonan = test_df_get[~test_df_get['K2'].isna()]
# 組合數(shù)據(jù)
result = test_df_get_nonan.append(test_df_alone)
# 去重,得到最終結(jié)果
result_save = result.drop_duplicates(subset=['K1','K2'],keep='last')
# 結(jié)果落地
result_save.to_excel('C:/Users/zhen/Desktop/數(shù)據(jù)清洗之去重.xlsx')2、測(cè)試數(shù)據(jù):

3、結(jié)果:

關(guān)于python做數(shù)據(jù)清洗的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。