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