Python數(shù)據(jù)分析之?Pandas?Dataframe合并和去重操作
一、之 Pandas Dataframe合并
在數(shù)據(jù)分析中,避免不了要從多個數(shù)據(jù)集中取數(shù)據(jù),那就避免不了要進(jìn)行數(shù)據(jù)的合并,這篇文章就來介紹一下 Dataframe 對象的合并操作。
Pandas 提供了merge()
方法來進(jìn)行合并操作,使用語法如下:
pd.merge(left, right, how="inner", on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False)
常用的參數(shù)說明:
- left、right:指定左右兩個要進(jìn)行合并的 DataFrame 對象
- how:指定合并類型,可以選擇
left、right、outer、inner
,此參數(shù)可以確定以哪邊(左邊、右邊或者左右共有)的鍵為基準(zhǔn),如果出現(xiàn)匹配失敗的用NaN
填充,默認(rèn)為inner
,具體如下:- left:代表左連接,以左DataFrame為基準(zhǔn),右側(cè)匹配失敗的用
NaN
填充 - right:代表右連接,以右DataFrame為基準(zhǔn),左側(cè)匹配失敗的用
NaN
填充 - inner:代表內(nèi)連接,取交集
- outer:代表外連接,取并集,匹配失敗的用
NaN
填充
- left:代表左連接,以左DataFrame為基準(zhǔn),右側(cè)匹配失敗的用
- on:指定用于連接的鍵,也就是列名,傳遞改參數(shù)的話,必須保證傳遞的“鍵”在左右兩邊的DataFrame中都存在
- left_on:指定左側(cè)DataFrame中用于連接的鍵
- right_on:指定右側(cè)DataFrame中用于連接的鍵
- left_index & right_index:表示以行索引作為合并基準(zhǔn),默認(rèn)為False
- sort:指定是否按照字典順序通過連接鍵對結(jié)果DataFrame進(jìn)行排序,默認(rèn)為False
例如,對下面兩個 DataFrame 對象執(zhí)行合并操作:
import pandas as pd data = {"name": ["Alice", "Bob", "Cindy", "David"], "age": [25, 23, 28, 24], "gender": ["woman", "man", "woman", "man"]} df1 = pd.DataFrame(data) df1
data = {"name": ["Alice", "Bob", "Cindy", "Emilie"], "city": ["beijing", "beijing", "jinan", "shanghai"]} df2 = pd.DataFrame(data) df2
使用name
作為連接鍵:
merge_pd = pd.merge(df1, df2, on="name") merge_pd
結(jié)果輸出如下:
設(shè)置為左連接:
merge_pd = pd.merge(df1, df2, on="name", how="left") merge_pd
結(jié)果輸出如下:
在進(jìn)行數(shù)據(jù)分析時,數(shù)據(jù)的質(zhì)量可能并不理想,有可能包含一些重復(fù)數(shù)據(jù),那我們就要進(jìn)行數(shù)據(jù)的“去重”操作,刪除重復(fù)的數(shù)據(jù),保留唯一的數(shù)據(jù)項,從而提高數(shù)據(jù)集整體的精確度,同時也可以節(jié)省空間、提升讀寫性能等,接下來就來介紹一下 Pandas Dataframe 的去重操作。
二、去重操作
Pandas 提供了drop_duplicates()
方法進(jìn)行數(shù)據(jù)的去重操作,具體使用格式如下:
df.drop_duplicates(subset=None, keep="first", inplace=False, ignore_index=False)
參數(shù)說明如下:
- subset:指定要進(jìn)行去重的列名,默認(rèn)為
None
,可以使用列表指定一個或多個列名 - keep:有三個參數(shù)可選:
first、last、False
,默認(rèn)為first
,表示只保留第一次出現(xiàn)的重復(fù)項,刪除其余重復(fù)項;last
表示只保留最后一次出現(xiàn)的重復(fù)項;False
表示刪除所有重復(fù)項 - inplace:是否在原Dataframe對象上進(jìn)行操作
- ignore_index:默認(rèn)為False,設(shè)置為True可以重新生成行索引。
例如,對下面 DataFrame 對象進(jìn)行去重操作:
可以看到該DataFrame 對象中索引為1、3的行是重復(fù)的,下面進(jìn)行去除:
保留第一次出現(xiàn)的重復(fù)項:
df.drop_duplicates(inplace=True) df
結(jié)果輸出如下:
刪除所有重復(fù)項:
df.drop_duplicates(keep=False, inplace=True) df
結(jié)果輸出如下:
ignore_index參數(shù)使用:
df.drop_duplicates(inplace=True, ignore_index=True) df
ignore_index設(shè)置為True后,通過結(jié)果可以看到,行索引進(jìn)行了重排。
當(dāng)然drop_duplicates()
方法也可以根據(jù)指定列名去重,給subset傳遞參數(shù)即可,例如根據(jù)name列進(jìn)行去重:
df.drop_duplicates(subset=["name"], inplace=True)
到此這篇關(guān)于Python數(shù)據(jù)分析之 Pandas Dataframe合并和去重操作的文章就介紹到這了,更多相關(guān)Pandas Dataframe合并去重內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python Pandas Dataframe.describe()使用及代碼實例
這篇文章主要介紹了Python Pandas Dataframe.describe()使用及代碼實例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09python連接數(shù)據(jù)庫后通過占位符添加數(shù)據(jù)
在pymysql中支持對占位符的處理,開發(fā)者需要在SQL中使用“%”定義占位符,在使用excute()方法執(zhí)行時對占位符的數(shù)據(jù)進(jìn)行填充即可,本文給大家介紹python連接數(shù)據(jù)庫后通過占位符添加數(shù)據(jù)的方法,需要的朋友參考下吧2021-12-12為什么黑客都用python(123個黑客必備的Python工具)
python支持功能強大的黑客攻擊模塊,而且Python提供多種庫,用于支持黑客攻擊,Python提供了ctypes庫, 借助它, 黑客可以訪問Windows、OS X、Linux等系統(tǒng)提供 DLL與共享庫,還有Python語言易學(xué)易用,這對黑客攻擊而言是個巨大的優(yōu)勢。2020-01-01Python 網(wǎng)絡(luò)爬蟲--關(guān)于簡單的模擬登錄實例講解
今天小編就為大家分享一篇Python 網(wǎng)絡(luò)爬蟲--關(guān)于簡單的模擬登錄實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06python OpenCV學(xué)習(xí)筆記實現(xiàn)二維直方圖
本篇文章主要介紹了python OpenCV學(xué)習(xí)筆記實現(xiàn)二維直方圖,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02詳解使用python crontab設(shè)置linux定時任務(wù)
本篇文章主要介紹了使用python crontab設(shè)置linux定時任務(wù),具有一定的參考價值,有需要的可以了解一下。2016-12-12