網站首頁 編程語言 正文
一、之 Pandas Dataframe合并
在數據分析中,避免不了要從多個數據集中取數據,那就避免不了要進行數據的合并,這篇文章就來介紹一下 Dataframe 對象的合并操作。
Pandas 提供了merge()
方法來進行合并操作,使用語法如下:
pd.merge(left, right, how="inner", on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False)
常用的參數說明:
- left、right:指定左右兩個要進行合并的 DataFrame 對象
- how:指定合并類型,可以選擇
left、right、outer、inner
,此參數可以確定以哪邊(左邊、右邊或者左右共有)的鍵為基準,如果出現匹配失敗的用NaN
填充,默認為inner
,具體如下:- left:代表左連接,以左DataFrame為基準,右側匹配失敗的用
NaN
填充 - right:代表右連接,以右DataFrame為基準,左側匹配失敗的用
NaN
填充 - inner:代表內連接,取交集
- outer:代表外連接,取并集,匹配失敗的用
NaN
填充
- left:代表左連接,以左DataFrame為基準,右側匹配失敗的用
- on:指定用于連接的鍵,也就是列名,傳遞改參數的話,必須保證傳遞的“鍵”在左右兩邊的DataFrame中都存在
- left_on:指定左側DataFrame中用于連接的鍵
- right_on:指定右側DataFrame中用于連接的鍵
- left_index & right_index:表示以行索引作為合并基準,默認為False
- sort:指定是否按照字典順序通過連接鍵對結果DataFrame進行排序,默認為False
例如,對下面兩個 DataFrame 對象執行合并操作:
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
結果輸出如下:
設置為左連接:
merge_pd = pd.merge(df1, df2, on="name", how="left") merge_pd
結果輸出如下:
在進行數據分析時,數據的質量可能并不理想,有可能包含一些重復數據,那我們就要進行數據的“去重”操作,刪除重復的數據,保留唯一的數據項,從而提高數據集整體的精確度,同時也可以節省空間、提升讀寫性能等,接下來就來介紹一下 Pandas Dataframe 的去重操作。
二、去重操作
Pandas 提供了drop_duplicates()
方法進行數據的去重操作,具體使用格式如下:
df.drop_duplicates(subset=None, keep="first", inplace=False, ignore_index=False)
參數說明如下:
- subset:指定要進行去重的列名,默認為
None
,可以使用列表指定一個或多個列名 - keep:有三個參數可選:
first、last、False
,默認為first
,表示只保留第一次出現的重復項,刪除其余重復項;last
表示只保留最后一次出現的重復項;False
表示刪除所有重復項 - inplace:是否在原Dataframe對象上進行操作
- ignore_index:默認為False,設置為True可以重新生成行索引。
例如,對下面 DataFrame 對象進行去重操作:
可以看到該DataFrame 對象中索引為1、3的行是重復的,下面進行去除:
保留第一次出現的重復項:
df.drop_duplicates(inplace=True) df
結果輸出如下:
刪除所有重復項:
df.drop_duplicates(keep=False, inplace=True) df
結果輸出如下:
ignore_index參數使用:
df.drop_duplicates(inplace=True, ignore_index=True) df
ignore_index設置為True后,通過結果可以看到,行索引進行了重排。
當然drop_duplicates()
方法也可以根據指定列名去重,給subset傳遞參數即可,例如根據name列進行去重:
df.drop_duplicates(subset=["name"], inplace=True)
原文鏈接:https://juejin.cn/post/7088268650041311269
相關推薦
- 2022-03-20 C語言基礎雙指針移除元素解法_C 語言
- 2022-04-19 C#中IntPtr類型的具體使用_C#教程
- 2023-04-02 go?MethodByName()不能獲取私有方法的解決_Golang
- 2022-06-19 python繪制橫豎條形圖的方法_python
- 2022-09-16 一文詳解Python中復合語句的用法_python
- 2022-05-21 C++實現快捷店會員管理系統_C 語言
- 2022-06-26 Windows?Server?2012?R2安裝與基本配置詳細步驟_win服務器
- 2022-04-16 C#算法之實現阿姆斯特朗數_C#教程
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支