使用Python和Pandas的最简单的数据清理方法
在本文中,我們將學(xué)習(xí)如何使用Python包Pyjanitor簡(jiǎn)化數(shù)據(jù)預(yù)處理工作。具體來(lái)說(shuō),我們將學(xué)習(xí)如何:
-
向一個(gè)Pandasdataframe(數(shù)據(jù)幀)中添加一個(gè)列
-
刪除缺失的值
-
刪除一個(gè)空列
-
清洗列名稱
也就是說(shuō),我們將學(xué)習(xí)如何使用Pyjanitor清理Pandas數(shù)據(jù)幀。在所有Python數(shù)據(jù)操作示例中,我們還將看到如何僅使用Pandas的功能來(lái)實(shí)現(xiàn)這些操作。
Pyjanitor是什么?
Pyjanitor是什么?在我們繼續(xù)學(xué)習(xí)如何使用Pandas和Pyjanitor來(lái)清理數(shù)據(jù)集之前,我們將學(xué)習(xí)這個(gè)包。Python包Pyjanitor使用基于文本的API擴(kuò)展了Pandas。這個(gè)易于使用的API為我們提供了方便的數(shù)據(jù)清理技術(shù)。顯然,它一開(kāi)始是R包 janitor的一部分。此外,它的靈感來(lái)自于R包 dplyr的易用性和表現(xiàn)力。注意,有一些不同的方式可以使用這些方法,本文不會(huì)涵蓋所有方式(請(qǐng)參閱文檔:https://pyjanitor.readthedocs.io/ )。
如何安裝 Pyjanitor
有兩種比較容易的方法來(lái)安裝Pyjanitor:
1.使用Pip安裝Pyjanitor
2.使用Conda安裝Pyjanitor:
既然我們已經(jīng)知道了Pyjanitor是什么以及如何安裝這個(gè)包,那我們很快就可以繼續(xù)學(xué)習(xí)Python數(shù)據(jù)清理教程了,學(xué)習(xí)如何從Pandas中刪除缺失的值。注意,本Pandas教程將詳細(xì)介紹如何使用Pandas和Pyjanitor來(lái)實(shí)現(xiàn)這一點(diǎn)。最后,我們將有一個(gè)完整的只使用Pyjanitor的數(shù)據(jù)清理示例和一個(gè)鏈接到包含所有代碼的Jupyter Notebook的鏈接。
使用Pandas進(jìn)行數(shù)據(jù)操作:簡(jiǎn)明教程(https://www.marsja.se/data-manipulation-pandas-tutorial/ )
假數(shù)據(jù)
在第一個(gè)Python數(shù)據(jù)操作示例中,我們將使用一個(gè)假數(shù)據(jù)集。更具體地說(shuō),我們將創(chuàng)建一個(gè)數(shù)據(jù)幀,其中有一個(gè)空列和一些缺失的值。在本文的這一部分中,我們將進(jìn)一步使用Python包SciPy和NumPy。也就是說(shuō),我們還需要安裝這些包。
在這個(gè)例子中,我們要?jiǎng)?chuàng)建三個(gè)列;Subject, RT (響應(yīng)時(shí)間)和 Deg。要?jiǎng)?chuàng)建響應(yīng)時(shí)間列,我們將使用SciPy的norm來(lái)創(chuàng)建正態(tài)分布的數(shù)據(jù)。
使用Scipy創(chuàng)建Python正態(tài)分布
在下一個(gè)代碼塊中,我們使用正態(tài)分布為響應(yīng)時(shí)間創(chuàng)建一個(gè)變量。
重新排列列表并添加缺失的值
此外,我們?cè)偬砑右恍┤笔У闹?#xff0c;并重新排列正態(tài)分布的數(shù)據(jù)列表:
從字典創(chuàng)建數(shù)據(jù)幀
最后,我們將為我們的兩個(gè)變量創(chuàng)建一個(gè)字典,并使用該字典來(lái)創(chuàng)建一個(gè)Pandas數(shù)據(jù)幀:
從字典創(chuàng)建DataFrame
在Python中使用Pandas和Pyjanitor進(jìn)行數(shù)據(jù)清理
如何向Pandas Dataframe添加一個(gè)列
現(xiàn)在我們已經(jīng)從一個(gè)字典創(chuàng)建了我們的數(shù)據(jù)幀,我們準(zhǔn)備向它添加一個(gè)列。在下面的示例中,我們將使用Pandsa和Pyjanitors方法。
1. 向Pandas Dataframe追加一個(gè)列
使用Pandas向一個(gè)數(shù)據(jù)幀添加一個(gè)列是非常容易的。在下面的例子中,我們將向Pandas 數(shù)據(jù)幀中追加一個(gè)空列:
向數(shù)據(jù)幀中添加列
2. 使用Pyjanitor向Pandas Dataframe添加一個(gè)列
現(xiàn)在,我們將使用add_column方法向該數(shù)據(jù)幀中追加一個(gè)列。添加一個(gè)空列不像使用上面的方法那么容易。然而,正如您將在本文末尾看到的,我們可以在創(chuàng)建我們的數(shù)據(jù)幀時(shí)使用所有方法:
向數(shù)據(jù)幀中追加列
如何刪除Pandas Dataframe中的缺失值
我們的數(shù)據(jù)集遠(yuǎn)遠(yuǎn)不夠完整,這是很常見(jiàn)的。這可能是由于測(cè)量?jī)x器的錯(cuò)誤,人們忘記或拒絕回答某些問(wèn)題,以及許多其他事情。盡管缺失的信息背后有各種原因,但這些行被稱為缺失值。在Pandas的框架中,缺失值由符號(hào)NA編碼,這與在R統(tǒng)計(jì)環(huán)境中很像。Pandas有isna()函數(shù)來(lái)幫助我們識(shí)別數(shù)據(jù)集中的缺失值。如果我們想刪除缺失值,Pandas有一個(gè)函數(shù)dropna()。
1.使用Pandas dropna方法刪除缺失值
在下面的代碼示例中,我們刪除所有具有缺失值的行。注意,如果我們想修改該數(shù)據(jù)幀,我們應(yīng)該添加inplace參數(shù)并將其設(shè)置為true。
2.使用PyJanitor從Pandas Dataframe中刪除缺失值
使用Pyjanitor從Pandas Dataframe中刪除缺失值的方法與上面的方法相同。也就是說(shuō),我們將使用dropna方法。但是,當(dāng)我們使用Pyjanitor從該數(shù)據(jù)幀中刪除缺失數(shù)據(jù)時(shí),我們還會(huì)使用subset參數(shù)來(lái)選擇要使用哪些列:
如何從Pandas Dataframe中刪除一個(gè)空列
在下一個(gè)Pandas數(shù)據(jù)操作示例中,我們將從數(shù)據(jù)幀中刪除空列。首先,我們將使用Pandas刪除空列,然后,我們將使用Pyjanitor。請(qǐng)記住,在本文的最后,我們將有一個(gè)完整的示例,其中我們?cè)趯?shí)際創(chuàng)建Pandas Dataframe的同時(shí)對(duì)所有數(shù)據(jù)進(jìn)行清理。
1. 從Pandas Dataframe中刪除一個(gè)空列
當(dāng)我們想刪除一個(gè)空列(例如,帶有缺失值)時(shí),我們將再次使用Pandas的dropna方法。然而,我們還將使用axis方法并將其設(shè)置為1(針對(duì)列)。此外,我們還必須使用參數(shù)how并將其設(shè)置為’ all '。如果我們不這樣做,它將刪除任何帶有缺失值的列。
刪除空列
2. 使用Pyjanitor從Pandas Dataframe中刪除一個(gè)空列
使用Pyjanitor刪除一個(gè)空列要更容易一點(diǎn):
如何在Pandas Dataframe中重命名列
現(xiàn)在我們知道了如何刪除缺失值、向一個(gè)Pandas 數(shù)據(jù)幀中添加一個(gè)列以及如何刪除一個(gè)列,我們將繼續(xù)這個(gè)數(shù)據(jù)清理教程來(lái)學(xué)習(xí)如何重命名列。
例如,在我們學(xué)習(xí)了《如何將數(shù)據(jù)從一個(gè)JSON文件加載到一個(gè)Pandas數(shù)據(jù)幀》的文章中,我們重新命名了列,以便稍后更容易地使用該數(shù)據(jù)幀。在下面的示例中,我們將讀取一個(gè)JSON文件,并使用Pandas 數(shù)據(jù)幀方法rename和Pyjanitor來(lái)重命名列。
更多關(guān)于將數(shù)據(jù)加載到數(shù)據(jù)幀的文章:
如何使用Python和Pandas讀寫JSON文件
https://www.marsja.se/how-to-read-and-write-json-files-using-python-and-pandas/
Pandas讀取CSV教程 https://www.marsja.se/pandas-read-csv-tutorial-to-csv/
Pandas Excel教程:如何讀寫Excel文件
https://www.marsja.se/pandas-excel-tutorial-how-to-read-and-write-excel-files/
1.在Pandas Dataframe中重命名列
如上圖所示,我們想要?jiǎng)h除一些空格和特殊字符。在第一個(gè)重命名列的例子中,我們將使用Pandas的 rename方法和正則表達(dá)式一起來(lái)重命名列(即,我們將用下劃線替換空格和)。
2. 如何使用Pyjanitor和clean_names重命名列
使用Pyjanitor重命名一個(gè)列(或多個(gè)列)要容易得多。實(shí)際上,當(dāng)我們導(dǎo)入了這個(gè)Python包之后,我們就可以使用clean_names方法,它將給出與使用Pandas的rename方法相同的結(jié)果。事實(shí)上,使用clean_names,我們還可以將列名稱中的所有字母轉(zhuǎn)換為小寫:
當(dāng)從磁盤加載數(shù)據(jù)時(shí),如何清理數(shù)據(jù)
使用Pyjanitor清理我們的數(shù)據(jù)的一個(gè)很酷的地方是,我們可以在加載數(shù)據(jù)時(shí)使用上述所有方法。例如,在最后一個(gè)數(shù)據(jù)清理示例中,我們將向該數(shù)據(jù)幀添加一個(gè)列,刪除空列,刪除缺失的數(shù)據(jù),并清理列名稱。這就是與Pyjanitor一起工作使我們的生活更容易的原因。
使用Pyjanitor聚合數(shù)據(jù)
在最后一個(gè)例子中,我們將使用Pandas方法agg、groupby和reset_index,以及Pyjanitor方法collapse_levels來(lái)計(jì)算每個(gè)扇區(qū)的平均值和標(biāo)準(zhǔn):
更多關(guān)于使用Python和Pandas對(duì)數(shù)據(jù)進(jìn)行分組和聚合的文章:
Python Pandas分組教程
https://www.marsja.se/python-pandas-groupby-tutorial-examples/
使用Python進(jìn)行描述性統(tǒng)計(jì)
https://www.marsja.se/pandas-python-descriptive-statistics/
結(jié)論
在這篇文章中,我們學(xué)習(xí)了一些數(shù)據(jù)清理方法。具體來(lái)說(shuō),我們學(xué)習(xí)了如何向一個(gè)Pandas數(shù)據(jù)幀追加一個(gè)列、刪除空列、處理缺失值以及重命名列(即,獲得更好的列名)。當(dāng)然,當(dāng)我們使用Pandas和Pyjanitor時(shí),還有更多的數(shù)據(jù)清理方法可用。
總之,此Python包所增加的方法與R包janitor和dplyr中的方法是相似的。在預(yù)處理數(shù)據(jù)時(shí),這些方法將使我們的生活更容易。
你最喜歡的數(shù)據(jù)清理方法和/或包是什么?不管你使用的是R、Python或任何其他編程語(yǔ)言。請(qǐng)?jiān)谙路搅粞?
英文原文:https://www.marsja.se/easiest-data-cleaning-method-using-python-pandas-pyjanitor/
譯者:野生大熊貓
總結(jié)
以上是生活随笔為你收集整理的使用Python和Pandas的最简单的数据清理方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python 为了提升性能,竟运用了共享
- 下一篇: 将Python字符串生成PDF