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