Pandas去重方法大揭秘:快速、高效的數(shù)據(jù)去重方式,需要具體代碼示例
在數(shù)據(jù)分析和處理過(guò)程中,經(jīng)常會(huì)遇到數(shù)據(jù)中存在重復(fù)的情況。重復(fù)數(shù)據(jù)可能會(huì)對(duì)分析結(jié)果產(chǎn)生誤導(dǎo),因此去重是一個(gè)非常重要的工作環(huán)節(jié)。在Pandas這個(gè)強(qiáng)大的數(shù)據(jù)處理庫(kù)中,提供了多種方法來(lái)實(shí)現(xiàn)數(shù)據(jù)去重,本文將介紹一些常用的去重方法,并附上具體的代碼示例。
- 基于單列去重
最常見(jiàn)的情況是根據(jù)某一列的值是否重復(fù)來(lái)進(jìn)行去重。在Pandas中,可以使用.duplicated()方法來(lái)判斷某一列的值是否重復(fù),然后使用.drop_duplicates()方法來(lái)去除重復(fù)值。
例如,我們有一個(gè)包含了學(xué)生信息的DataFrame,其中有一個(gè)列是學(xué)生的學(xué)號(hào),我們希望根據(jù)學(xué)號(hào)去除重復(fù)的行:
import pandas as pd
data = {'學(xué)號(hào)': [1001, 1002, 1003, 1002, 1004, 1003],
'姓名': ['張三', '李四', '王五', '李四', '趙六', '王五'],
'年齡': [18, 19, 20, 19, 21, 20]}
df = pd.DataFrame(data)
df.drop_duplicates(subset='學(xué)號(hào)', inplace=True)
print(df)
登錄后復(fù)制
運(yùn)行結(jié)果:
學(xué)號(hào) 姓名 年齡 0 1001 張三 18 1 1002 李四 19 2 1003 王五 20 4 1004 趙六 21
登錄后復(fù)制登錄后復(fù)制
這樣就去除了學(xué)號(hào)重復(fù)的行,只保留了第一次出現(xiàn)的行。
- 基于多列去重
有時(shí)候我們需要根據(jù)多個(gè)列的值是否重復(fù)來(lái)進(jìn)行去重。在.drop_duplicates()方法中可以通過(guò)subset參數(shù)指定要根據(jù)哪些列進(jìn)行去重。
例如,我們還是使用上面的學(xué)生信息的DataFrame,現(xiàn)在根據(jù)學(xué)號(hào)和姓名去除重復(fù)的行:
import pandas as pd
data = {'學(xué)號(hào)': [1001, 1002, 1003, 1002, 1004, 1003],
'姓名': ['張三', '李四', '王五', '李四', '趙六', '王五'],
'年齡': [18, 19, 20, 19, 21, 20]}
df = pd.DataFrame(data)
df.drop_duplicates(subset=['學(xué)號(hào)', '姓名'], inplace=True)
print(df)
登錄后復(fù)制
運(yùn)行結(jié)果:
學(xué)號(hào) 姓名 年齡 0 1001 張三 18 1 1002 李四 19 2 1003 王五 20 4 1004 趙六 21
登錄后復(fù)制登錄后復(fù)制
這樣就根據(jù)學(xué)號(hào)和姓名同時(shí)去除了重復(fù)的行。
- 基于所有列去重
有時(shí)候我們希望根據(jù)整個(gè)DataFrame的所有列的值是否重復(fù)來(lái)進(jìn)行去重。可以使用.duplicated()方法的keep參數(shù)設(shè)置為False,則會(huì)標(biāo)記所有重復(fù)的行。然后使用.drop_duplicates()方法去除這些重復(fù)的行。
例如,我們還是使用上面的學(xué)生信息的DataFrame,現(xiàn)在根據(jù)整個(gè)DataFrame的所有列去除重復(fù)的行:
import pandas as pd
data = {'學(xué)號(hào)': [1001, 1002, 1003, 1002, 1004, 1003],
'姓名': ['張三', '李四', '王五', '李四', '趙六', '王五'],
'年齡': [18, 19, 20, 19, 21, 20]}
df = pd.DataFrame(data)
df.drop_duplicates(keep=False, inplace=True)
print(df)
登錄后復(fù)制
運(yùn)行結(jié)果:
學(xué)號(hào) 姓名 年齡 0 1001 張三 18 4 1004 趙六 21
登錄后復(fù)制
這樣就去除了整個(gè)DataFrame中所有重復(fù)的行。
總結(jié):
本文介紹了Pandas中的三種常用的去重方法:基于單列去重、基于多列去重、基于所有列去重。根據(jù)實(shí)際需求選擇適合的方法,可以快速、高效地去除重復(fù)的數(shù)據(jù)。在實(shí)際應(yīng)用中,可以根據(jù)具體的數(shù)據(jù)和需求靈活運(yùn)用這些方法,提高數(shù)據(jù)處理和分析的效率。






