第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Pandas 重復(fù)值的處理

1. 前言

上一小節(jié)我們學(xué)習(xí)了 Pandas 庫中對于缺失值 NaN 的檢測、過濾和填充操作,對于數(shù)據(jù)完整性的提升有著十分重要的意義,除了缺失數(shù)據(jù)的存在,源數(shù)據(jù)經(jīng)常還會存在重復(fù)性數(shù)據(jù),尤其是在數(shù)據(jù)量越大的情況下,重復(fù)的概率也越大,數(shù)據(jù)中存在重復(fù)值,是常見的現(xiàn)象,這些數(shù)據(jù)只是根據(jù)我們的分析需要不同,而產(chǎn)生的價(jià)值不同,有時(shí)我們希望排除這些數(shù)據(jù)進(jìn)行分析,而有時(shí)我們又需要對這部分?jǐn)?shù)據(jù)進(jìn)行單獨(dú)的分析,那對于重復(fù)數(shù)據(jù)的不同分析需要,Pandas 庫又提供了怎樣的操作呢?

本小節(jié)我們將學(xué)習(xí) Pandas 庫對于重復(fù)數(shù)據(jù)的查找操作和重復(fù)數(shù)據(jù)的刪除操作,為數(shù)據(jù)的進(jìn)一步分析打下基礎(chǔ)。

2. 重復(fù)值的查找

在講解程序操作之前,我們先處理一下數(shù)據(jù)源,修改一部分重復(fù)數(shù)據(jù)出來,為下面的操作做準(zhǔn)備:
圖片描述

2.1 duplicated () 函數(shù)

該函數(shù)用于檢測數(shù)據(jù)的重復(fù)值,返回值是一個(gè)布爾序列,如果某個(gè)值存在重復(fù),則返回的為 True。該函數(shù)有兩個(gè)參數(shù),一個(gè)是參數(shù) subset ,用于指定檢測的某個(gè)列,另一個(gè)是 keep 指定如何控制如何檢測重復(fù)值,有三個(gè)值可選擇:

  • first:表示將第一次出現(xiàn)重復(fù)的值視為唯一的,后面重復(fù)的值標(biāo)記為 True ,默認(rèn)是這種方式;
  • last:表示將最后一次出現(xiàn)重復(fù)的值視為唯一的,前面的重復(fù)值標(biāo)記為 True ;
  • False:表示將所有的重復(fù)項(xiàng)都標(biāo)記為 True ;

下面我們通過實(shí)際代碼操作來演示重復(fù)數(shù)據(jù)的檢測操作:

# 導(dǎo)入pandas包
import pandas as pd
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第12小節(jié)/execl數(shù)據(jù)demo.xlsx"
# 解析數(shù)據(jù)
data = pd.read_excel(data_path)
print(data)
# --- 輸出結(jié)果 ---
        編程語言   推出時(shí)間    價(jià)格            主要創(chuàng)始人
0           java  198345.6               James Gosling
1         python  199167.0           Bjarne Stroustrup
2         python  197245.6  Dennis MacAlistair Ritchie
3             js  198345.6                          js
4  James Gosling  201245.6              Rasmus Lerdorf
5            C++   java  75.0           Bjarne Stroustrup

# duplicated() 重復(fù)數(shù)據(jù)的判斷
new_data= data.duplicated()
print(new_data)
# --- 輸出結(jié)果 ---
0    False
1    False
2    False
3    False
4    False
5    False
dtype: bool
# 結(jié)果解析:這里的  duplicated() 函數(shù)我們什么參數(shù)也沒設(shè)置,所有默認(rèn)會以正行值作為判斷,也就是判斷是否有重復(fù)行的數(shù)據(jù)內(nèi)容。

# duplicated() 設(shè)置 subset
new_data= data.duplicated(subset="價(jià)格")
print(new_data)
# --- 輸出結(jié)果 ---
0    False
1    False
2     True
3     True
4     True
5    False
dtype: bool
# 結(jié)果解析:這里程序設(shè)置 subset="價(jià)格",則只對標(biāo)簽為"價(jià)格"的列進(jìn)行重復(fù)數(shù)據(jù)的檢測,可以看到結(jié)果中重復(fù)數(shù)據(jù)值除了第一個(gè)重復(fù)值被視為唯一的,后面出現(xiàn)的重復(fù)值檢測結(jié)果均被設(shè)置為了 True,因?yàn)?keep 參數(shù)如果不設(shè)置,默認(rèn)是 first 方式檢測。

# duplicated() 設(shè)置 keep 為 last
new_data= data.duplicated(subset="價(jià)格",keep="last")
print(new_data)
# --- 輸出結(jié)果 ---
0     True
1    False
2     True
3     True
4    False
5    False
dtype: bool
# 結(jié)果解析:這里指定 keep="last" ,表示最后一次出現(xiàn)的重復(fù)值視為唯一的,之前出現(xiàn)的重復(fù)值被檢查為重復(fù),結(jié)果為 True 。

# duplicated() 設(shè)置 keep 為 False
new_data= data.duplicated(subset="價(jià)格",keep=False)
print(new_data)
# --- 輸出結(jié)果 ---
0     True
1    False
2     True
3     True
4     True
5    False
dtype: bool
# 結(jié)果解析:這里通過設(shè)置 keep=False ,將檢測出的所有重復(fù)值均表示為 True 。   

3. 重復(fù)值的刪除

3.1 drop_duplicates () 函數(shù)

該函數(shù)用于刪除特定列下的重復(fù)數(shù)據(jù)行,并返回一個(gè)新的數(shù)據(jù)集對象,其中有兩個(gè)重要的參數(shù),一是 subset ,該參數(shù)用來指定判定重復(fù)的數(shù)據(jù)的列,默認(rèn)是所有的列;二是 keep 參數(shù),該參數(shù)是用來控制如何刪除重復(fù)值的,有三個(gè)參數(shù)值選項(xiàng):

  • first:表示將第一次出現(xiàn)的重復(fù)值視為唯一的,刪除后面出現(xiàn)重復(fù)值的數(shù)據(jù)行 ,默認(rèn)是這種方式;
  • last:表示將最后一次出現(xiàn)重復(fù)的值視為唯一的,刪除前面出現(xiàn)重復(fù)值的數(shù)據(jù)行 ;
  • False:表示將刪除重復(fù)值所在的所有數(shù)據(jù)行 ;

下面我們通過實(shí)際代碼操作來演示重復(fù)數(shù)據(jù)的刪除操作:

# 導(dǎo)入pandas包
import pandas as pd
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第12小節(jié)/execl數(shù)據(jù)demo.xlsx"
# 解析數(shù)據(jù)
data = pd.read_excel(data_path)
print(data)
# --- 輸出結(jié)果 ---
        編程語言   推出時(shí)間    價(jià)格               主要創(chuàng)始人
0           java  198345.6               James Gosling
1         python  199167.0           Bjarne Stroustrup
2         python  197245.6  Dennis MacAlistair Ritchie
3             js  198345.6                          js
4  James Gosling  201245.6              Rasmus Lerdorf
5            C++   java  75.0           Bjarne Stroustrup

# drop_duplicates()
data_res=data.drop_duplicates()
print(data_res)
# --- 輸出結(jié)果 ---
            編程語言   推出時(shí)間    價(jià)格            主要創(chuàng)始人
0           java  198345.6               James Gosling
1         python  199167.0           Bjarne Stroustrup
2         python  197245.6  Dennis MacAlistair Ritchie
3             js  198345.6                          js
4  James Gosling  201245.6              Rasmus Lerdorf
5            C++   java  75.0           Bjarne Stroustrup
# 結(jié)果解析:這里我們直接使用了 drop_duplicates() 函數(shù),但是沒有傳入任何的參數(shù),默認(rèn)則是以整行進(jìn)行判斷是否存在重復(fù)行,要是存在則進(jìn)行刪除操作。這里因?yàn)闆]有重復(fù)行,因此返回的數(shù)據(jù)集和原數(shù)據(jù)集內(nèi)容一樣。

# 設(shè)置 subset="編程語言"
data_res=data.drop_duplicates(subset="編程語言")
print(data_res)
# --- 輸出結(jié)果 ---
            編程語言   推出時(shí)間    價(jià)格    主要創(chuàng)始人
0           java  198345.6      James Gosling
1         python  199167.0  Bjarne Stroustrup
3             js  198345.6                 js
4  James Gosling  201245.6     Rasmus Lerdorf
5            C++   java  75.0  Bjarne Stroustrup
# 結(jié)果解析:這里設(shè)置了 subset="編程語言" ,以編程語言列為標(biāo)準(zhǔn)查找重復(fù)值,默認(rèn) keep="first" 表示第一次的重復(fù)值視為唯一的不進(jìn)行刪除,通過輸出結(jié)果可以看到,第3行的數(shù)據(jù)被刪除了。

# 設(shè)置 keep="last"
data_res=data.drop_duplicates(subset="編程語言",keep="last")
print(data_res)
# --- 輸出結(jié)果 ---
            編程語言   推出時(shí)間    價(jià)格            主要創(chuàng)始人
0           java  198345.6               James Gosling
2         python  197245.6  Dennis MacAlistair Ritchie
3             js  198345.6                          js
4  James Gosling  201245.6              Rasmus Lerdorf
5            C++   java  75.0           Bjarne Stroustrup
# 結(jié)果解析:這里設(shè)置了 keep="last" 表示將最后一個(gè)出現(xiàn)的重復(fù)值視為唯一的,因此這里刪除了第2行的數(shù)據(jù)。

# 設(shè)置 keep=False
data_res=data.drop_duplicates(subset="編程語言",keep=False)
print(data_res)
# --- 輸出結(jié)果 ---
            編程語言   推出時(shí)間    價(jià)格      主要創(chuàng)始人
0           java  198345.6      James Gosling
3             js  198345.6                 js
4  James Gosling  201245.6     Rasmus Lerdorf
5            C++   java  75.0  Bjarne Stroustrup
# 結(jié)果解析:通過設(shè)置 keep=False 可以看到所有重復(fù)值所在的行都被刪除了。

3. 小結(jié)

本節(jié)課程我們主要學(xué)習(xí)了 Pandas 庫對于重復(fù)數(shù)據(jù)的處理,包括查詢重復(fù)數(shù)據(jù)值,以及對出現(xiàn)重復(fù)的數(shù)據(jù)進(jìn)行刪除操作,根據(jù)我們實(shí)際的應(yīng)用需要,我們可以方便的去處理重復(fù)數(shù)據(jù),從而進(jìn)一步的對數(shù)據(jù)開展分析工作。本節(jié)課程的重點(diǎn)如下:

  • 使用 duplicated () 函數(shù)去檢測重復(fù)數(shù)據(jù)值的操作以及其中參數(shù)的設(shè)置;
  • 使用 drop_duplicates () 函數(shù)去刪除重復(fù)的數(shù)據(jù)值。

圖片描述