Pandas異常值處理小結(jié)
在Pandas中,異常值(或稱為離群值)是數(shù)據(jù)中那些與其他數(shù)據(jù)點顯著不同的點。這些異常值可能是由于錯誤、異常事件或數(shù)據(jù)的自然變異產(chǎn)生的。處理異常值的方法取決于數(shù)據(jù)的性質(zhì)、分析的目的以及異常值對分析的影響。
在異常值處理的時候可能會用到的函數(shù)
①、describe():查看每一列的描述性統(tǒng)計量
②、df.info():查看數(shù)據(jù)信息
③、df.std():可以求得DataFrame對象每一列的標準差
④、df.drop():刪除特定索引
⑤、unique():唯一,去重
⑥、query():按條件查詢
⑦、df.sort_values():根據(jù)值排序
⑧、sort_index():根據(jù)索引排序...
1、describe()
describe()
函數(shù)在 Pandas 中是一個用于生成 DataFrame 或 Series 中數(shù)值列統(tǒng)計摘要的便捷方法。它提供了豐富的描述性統(tǒng)計信息,幫助用戶快速了解數(shù)據(jù)的分布情況??梢岳?T轉(zhuǎn)置。
默認參數(shù)下的輸出
默認情況下,describe()
函數(shù)會計算以下統(tǒng)計量(對于數(shù)值型列):
- count:非缺失值的數(shù)量。
- mean:均值。
- std:標準差。
- min:最小值。
- 25%:第一四分位數(shù)(或稱為25%分位數(shù))。
- 50%:第二四分位數(shù)(中位數(shù))。
- 75%:第三四分位數(shù)。
- max:最大值。
import pandas as pd data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] a = pd.DataFrame(data, index=['a', 'b', 'c']) print(a.describe())
2、std
DataFrame.std()
方法可以用來計算DataFrame對象每一列的標準差(standard deviation)。默認情況下,這個方法會忽略NaN值,只計算非空值的標準差。
import pandas as pd # 創(chuàng)建一個簡單的DataFrame data = { 'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 20, 50], 'C': [pd.np.nan, 2, 4, 4, 6] # 包含NaN值 } df = pd.DataFrame(data) # 計算每一列的標準差 std_values = df.std() print(std_values)
3、drop
在Pandas中,DataFrame.drop()
方法用于刪除行或列。這個方法非常有用,特別是當(dāng)你需要清理數(shù)據(jù)或去除某些不需要的行/列時。
方法簽名
DataFrame.drop(labels=None, axis=0, index=None, columns=None, inplace=False, level=None, errors='raise')
參數(shù)說明
labels
:要刪除的行或列的標簽。axis
:指定刪除行(axis=0
或axis='index'
)還是列(axis=1
或axis='columns'
)。index
和columns
:這些是labels
的別名,用于分別指定要刪除的行和列。但是,通常建議直接使用labels
和axis
。inplace
:如果為True,則在原始DataFrame上進行修改并返回None。否則,返回一個新的DataFrame。level
:對于具有多級索引的DataFrame,指定要刪除的級別。errors
:指定如何處理錯誤。默認為 'raise',表示出現(xiàn)錯誤時拋出異常。如果設(shè)置為 'ignore',則忽略錯誤。
import pandas as pd data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] a = pd.DataFrame(data, index=['a', 'b', 'c']) print(a.drop('a')) # 默認的情況下刪除一行 print(a.drop(0, axis=1)) # 刪除一列
4、unique()
在Pandas中,unique()
是一個常用的方法,它主要用于獲取Series對象列的唯一值(unique values)。這個方法返回一個NumPy數(shù)組,其中包含Series的唯一值。DataFrame沒有unidue。
import pandas as pd data = [[4, 2, 3], [4, 5, 6], [7, 8, 9]] a = pd.DataFrame(data, index=['a', 'b', 'c']) print(a[0].unique())
5、query()
在Pandas庫中,query()
方法是DataFrame對象的一個功能強大的工具,用于根據(jù)特定的條件篩選和查詢數(shù)據(jù)。以下是關(guān)于 query()
方法的詳細解釋:
1. 功能概述
query()
方法允許用戶根據(jù)邏輯表達式(可以是單個條件或組合條件)來篩選DataFrame中的數(shù)據(jù)。- 它返回一個新的DataFrame,其中僅包含滿足給定條件的數(shù)據(jù)行。
- 與
loc
和iloc
相比,query()
方法提供了更直觀、類似于SQL的語法,使得篩選條件更易讀、易寫。
2. 語法結(jié)構(gòu)
DataFrame.query(expr, inplace=False, **kwargs)
expr
: 表示查詢條件的字符串。inplace
: 默認為False,表示不修改原始DataFrame,而是返回一個新的DataFrame。如果設(shè)置為True,則直接在原始DataFrame上進行修改。**kwargs
: 其他關(guān)鍵字參數(shù),通常與eval()
方法的參數(shù)相關(guān)。
import pandas as pd data = [[4, 2, 3], [4, 5, 6], [7, 8, 9]] a = pd.DataFrame(data, index=['a', 'b', 'c'], columns=list("ABC")) print(a.query(' A== 4')) # 把A == 4篩選出來 n = 4 print(a.query('A == @n')) # 這里寫一個@ 在能說明n為標量 # 這里的“ ” 里面可以有and or in ...
3. 注意事項
query()
方法只能用于篩選行,不能用于篩選列。- 查詢條件字符串中的列名必須與DataFrame中的列名完全匹配(包括大小寫)。
- 在使用變量時,請確保變量在調(diào)用
query()
方法之前已經(jīng)被定義并賦值。 - 當(dāng)使用復(fù)雜的查詢條件時,建議使用括號來明確運算符的優(yōu)先級,以避免潛在的錯誤。
6、df.sort_values()
在Pandas庫中,DataFrame.sort_values()
方法是用于對DataFrame中的數(shù)據(jù)按照一個或多個列的值進行排序的。這個方法非常有用,特別是當(dāng)你需要按照某個或某些列的值對數(shù)據(jù)進行排序以便進一步分析或可視化時。
方法簽名
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None)
參數(shù)說明
by
: 需要依據(jù)其值進行排序的列名或列名列表。axis
: 排序的軸。0
或'index'
表示沿著行進行排序(即按列的值排序),1
或'columns'
表示沿著列進行排序(DataFrame中不支持按列排序,因此這個參數(shù)通常設(shè)置為0或'index')。ascending
: 排序方向,默認為True(升序),如果為False則為降序。inplace
: 是否在原地進行修改,默認為False(返回新的DataFrame),如果為True則直接在原DataFrame上進行修改。kind
: 排序算法的類型,默認為'quicksort'。對于大型數(shù)據(jù)集,'mergesort'和'heapsort'可能更為合適。na_position
: 缺失值(NaN)的位置,默認為'last'(在末尾),如果為'first'則在開頭。ignore_index
: 重新設(shè)置結(jié)果的索引,默認為False。如果為True,則結(jié)果索引將會是整數(shù)型的默認索引。key
: 應(yīng)用于每一列元素在進行比較之前的函數(shù)。
import pandas as pd data = [[9, 2, 3], [4, 5, 6], [1, 8, 9]] a = pd.DataFrame(data, index=['a', 'b', 'c'], columns=list("ABC")) print(a.sort_values('A')) # 默認的是升序 print(a.sort_values('A', ascending=False)) # 通過修改ascending=False 變?yōu)榻敌? print(a.sort_values('a', axis=1))
7、sort_index()
sort_index()
是 Pandas 庫中 DataFrame 和 Series 對象的一個方法,用于根據(jù)索引值對數(shù)據(jù)進行排序。以下是關(guān)于 sort_index()
方法的詳細解釋:
方法功能
sort_index()
主要用于對 DataFrame 或 Series 對象進行索引排序。- 默認情況下,它會根據(jù)索引的升序(ascending=True)進行排.
方法簽名
DataFrame.sort_index(*, axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, ignore_index=False, key=None)
參數(shù)說明
axis:
- 默認為 0,表示按行索引(index)進行排序。
- 如果設(shè)置為 1 或 'columns',則按列索引(columns)進行排序(但實際應(yīng)用中按列索引排序的情況較少)。
level:
- 當(dāng)索引是多重索引時,可以指定按哪一個或多個級別進行排序。
- 默認為 None,表示按多重索引的第一個級別排序。
ascending:
- 排序順序,默認為 True,表示升序排序。
- 如果設(shè)置為 False,則進行降序排序。
inplace:
- 是否直接在原對象上進行修改,默認為 False。
- 如果設(shè)置為 True,則直接在原 DataFrame 或 Series 上進行排序,不返回新的對象。
kind:
- 排序算法的種類,默認為 'quicksort'。
- 對于大型數(shù)據(jù)集,可以選擇其他算法,如 'mergesort'。
na_position:
- 缺失值(NaN)的位置,默認為 'last',表示將 NaN 值放在最后。
- 如果設(shè)置為 'first',則將 NaN 值放在前面。
sort_remaining:
- 當(dāng)對多重索引的特定級別進行排序時,此參數(shù)控制是否對非指定級別進行排序。
- 默認為 True。
ignore_index:
- 當(dāng)對多重索引進行排序時,此參數(shù)控制是否重置排序后的索引。
- 默認為 False,即保留多重索引。
key:
- 應(yīng)用于索引值進行排序前的函數(shù)。
import pandas as pd data = [[9, 2, 3], [4, 5, 6], [1, 8, 9]] a = pd.DataFrame(data, index=['d', 'b', 'c'], columns=list("DBC")) print(a.sort_index()) # 按照行索引排序 print(a.sort_index(axis=1)) # 按照列索引進行排序 li = [1, 2, 3] b = pd.Series(li, index=['c', 'b', 'a']) print(b.sort_index())
到此這篇關(guān)于Pandas異常值處理小結(jié)的文章就介紹到這了,更多相關(guān)Pandas異常值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Python 3中緩存Exception對象會造成什么后果?
這篇文章主要介紹了在Python 3中緩存Exception對象到底會造成什么后果?下面帶著這個問題一起看看文章的解析,需要的朋友可以參考一下2021-12-12使用虛擬環(huán)境打包python為exe 文件的方法
這篇文章主要介紹了關(guān)于使用虛擬環(huán)境打包python為exe 文件的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08matplotlib之Pyplot模塊繪制三維散點圖使用顏色表示數(shù)值大小
在撰寫論文時常常會用到matplotlib來繪制三維散點圖,下面這篇文章主要給大家介紹了關(guān)于matplotlib之Pyplot模塊繪制三維散點圖使用顏色表示數(shù)值大小的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2022-08-08