
作者 | 吹牛Z
來源 | 數據不吹牛
原文 | Python數據分析實戰基礎 | 清洗常用4板斧
首先,導入案例數據集。因為案例數據存放在同一個Excel表的不同Sheet下,我們需要指定sheetname分別讀?。?/span>
下面開始清洗的正餐。
01 增——拓展數據維度
1.1 縱向合并
這三個sheet的數據,維度完全一致(每列數據都是一樣),縱向合并起來分析十分方便。說到縱向合并,concat大佬不請自來,他的招式簡單明了——pd.concat([表1,表2,表3]),對于列字段統一的數據,我們只需把表依次傳入參數:
concat大佬繼續說到:“其實把我參數axis設置成1就可以橫向合并.."說時遲那時快,我一個箭步沖上去捂住他的嘴巴“牛逼的人做好一件事就夠了,橫向的就交給merge吧~”
小Z溫馨提示:pandas中很多函數功能十分強大,能夠實現多種功能,但對于萌新來說,過多甚至交叉的功能往往會造成懵B的狀態,所以這里一種功能先只用一種方式來實現。
1.2 橫向合并
橫向合并涉及到連接問題,為方便理解,我們構造一些更有代表性的數據集練手:
兩個DataFrame是兩張成績表,h1是5位同學的數學、英語、語文成績,h2是4位同學的籃球和舞蹈成績,現在想找到并合并兩張表同時出現的同學及其成績,可以用merge方法:
我們來詳解一下merge的參數,left和rgiht分別對應著需要連接的左表和右表,這里語數外成績表是左表,籃球、舞蹈成績是右表。
left_index與right_index是當我們用索引(這兩個表的名字在索引中)連接時指定的參數,設置為on表示用該表的索引作為連接的條件(或者說橋梁)。假設姓名是單獨的一列值,且需要根據姓名進行匹配,那就需要用“left_on = '姓名',right_on = '姓名'”,我們可以分別指定左表的匹配列和右表的匹配列。
how是指定連接方式,這里用的inner,表示我們基于姓名索引來匹配,只返回兩個表中共同(同時出現)姓名的數據。下面詳解一下inner還涉及到的其他參數——left,right,outer。
左右連接(left和right):
左連接(left)和右連接(right),我們可以直觀理解為哪邊的表是老大,誰是老大,就聽誰的(所有行全部保持),先看左連接,左表h1原封不動,右邊根據左表進行合并,如果存在相關的名字,就正常返回數據,如果不存在(韓梅梅、李雷),就返回空(NAN)值;右連接就是聽右表的,左表有則返回無則為空。
外連接(outer):
外連接是兩張表妥協的產物,我的數據全保留,你的也全保留,你有我無的就空著,你無我有的也空著。
02 刪——刪空去重
2.1 刪空
在一些場景,源數據的缺失(空值)對于分析來說是干擾項,需要系統的刪除。上文我們合并后的df數據集就是有缺失數據的:
要刪除空值,一個dropna即可搞定:
dropna函數默認刪除所有出現空值的行,即只要一行中任意一個字段為空,就會被刪除。我們可以設置subset參數,例如dropna(subset = ['city']),來指定當一行中的city字段為空時,才會被刪除。
2.2 去重
說是講去重,但是案例數據比較干凈,沒有兩行數據是完全一樣的,所以我們要制造點困難,增加幾行重復值:
把源數據重復兩遍,賦值給repeat,這樣每一行數據都有重復的數據。要把重復數據刪掉,一行代碼就搞定:
drop_duplicates方法去重默認會刪掉完全重復的行(每個值都一樣的行),如果我們要刪除指定列重復的數據,可以通過指定subset參數來實現,假如我們有個奇葩想法,要基于“流量級別”這列進行去重,則可以:
我們會發現,流量有三個級別,通過指定subset參數,我們刪除了這個字段重復的行,保留了各自不重復的第一行。繼續展開講,在源數據中,流量渠道為“一級”的有7行數據,每行數據其他字段都不相同,這里我們刪除了后6行,只保留了第一行,但如果我們想在去重的過程中刪除前面6行,保留最后一行數據怎么操作?答案很簡單,指定keep參數即可。
keep值等于last,保留最后一行數據,不輸入keep值時,系統默認會給keep賦值為first,就會保留第一行數據而刪掉其他的。
03 查——基于條件查詢
查,不是單純的返回幾行數據,而是根據業務實際需求,基于一定的條件查看和選擇數據。
3.1 按條件索引/篩選
loc獨白:你沒有看錯,哥的分量實在是太重了,所以又來搶個沙發,刷個臉熟。
這次需求是篩選出訪客數大于10000的一級渠道,loc一下:
在行參數設置好同時滿足訪客數大于10000和流量級別等于“一級”這兩個條件即可。
3.2 排序
很多情況下,我們都需要通過排序來觀察數據規律,以及快速篩選出TOP N的數據項。對于案例數據,我們怎么樣按交易金額進行排序并篩選出TOP3的渠道呢?
問題的關鍵就在于排序,這個時候sort_values函數就派上用場了:
整個操作十分簡單,sort_values函數,顧名思義是按照數值進行排序,首先要傳入的參數是列參數,即我們根據哪一列的數值來進行排序,ascending參數決定了排序順序,等于Flase則是從大到小的降序,設置為True則是升序。
排序完之后,篩選TOP3渠道就非常簡單:
補充一個知識點,如果跟著文章操作,會發現無論是刪空的dropna,還是去重的drop_duplicates,或者是排序的sort_values,在對源數據進行操作后,源數據并未改變,這是因為我們沒有對這幾個函數的inplace值進行設置,如果設置成inplace = True,刪空、去重和排序都會在源數據上生效。
但這里為了避免出現不必要的錯誤而無法更改,更建議大家把操作后的源數據賦值給新的變量,如new = df.dropna(),而不是將源數據的inplace參數設置為True。
04 分——分組和切分
話天下大勢,合久必分,數據亦是如此。在分組的版塊中,我們重點介紹groupby分組和cut切分。
4.1分組
在案例數據中,總的流量級別有三級,每一級下又有多個投放地區,如果我們想匯總看每個級別流量所對應的總訪客數和支付金額,就需要用到分組了。
groupby是分組函數,最主要的參數是列參數,即按照哪一列或者哪幾列(多列要用列表外括)進行匯總,這里是按照流量級別:
可以看到,直接分組之后,沒有返回任何我們期望的數據,要進一步得到數據,需要在分組的時候對相關字段進行計算(常用的計算方法包括sum、max、min、mean、std):
后面加上了sum,代表我們先按照流量級別進行分組,再對分組內的字段求和。由于沒有指定求和的列,所以是對所有數值型字段進行了求和。此處我們只想要各級別流量下的訪客數和支付金額,需要指明參數:
流量級別作為匯總的依據列,默認轉化為索引列,如果我們不希望它變成索引,向groupby內傳入參數as_index = False即可:
4.2 切分
切分(分桶)操作常用于一維數組的分類和打標,cut函數能夠高效的完成任務。它的主要參數和用法如下:
不要被復雜的解釋迷惑,一個例子就完全搞懂了。
以案例數據為例,每個渠道都有對應的訪客數,我們現在希望對各渠道訪客級、千級和萬級的渠道。
我們想對流量級別進行百、千、萬的歸類,所以把分組數值標準傳入bins參數。從結果可以看到,在不設置right的情況下,分組區間是默認左開右閉的,而我們希望的是左閉右開,即百級流量渠道訪客數在0-99之間,所以需要將right值設置為False。
下面我們直接對分組后的數據進行打標,訪客數在0-99設置為“辣雞”,100-999設置為百級,千級和萬級以此類推,同時將打好標簽的數據作為新列給到源
非常高效,一行半代碼就搞定了分組、判斷和打標的過程。
總結
本文從增、刪、查、分四個模塊,分別介紹了橫向、縱向合并;刪空、去重;篩選、排序和分組、切分等數據清洗過程中的常見操作。在實際運用中,各操作往往是你中有我,我中有你,共同為了營造一個“干凈”的數據而努力。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25