Pandas數據清洗實戰:精準捕捉并優雅過濾異常值,讓數據分析更可靠!

在這里插入圖片描述

1.describe():查看每一列的描述性統計量

# 導包
import numpy as np
import pandas as pddf = pd.DataFrame(data=np.random.randint(0,10,size=(5,3)),index=list("ABCDE"),columns=["Python","NumPy","Pandas"])
dfdf.describe()
PythonNumPyPandas
count5.0000005.0000005.000000
mean5.6000002.8000005.400000
std2.0736442.1679482.408319
min4.0000000.0000002.000000
25%4.0000001.0000004.000000
50%5.0000004.0000006.000000
75%6.0000004.0000007.000000
max9.0000005.0000008.000000
# 自定義百分數
df.describe([0.01,0.3,0.4,0.9,0.99])
PythonNumPyPandas
count5.0000005.0000005.000000
mean5.6000002.8000005.400000
std2.0736442.1679482.408319
min4.0000000.0000002.000000
1%4.0000000.0400002.080000
30%4.2000001.6000004.400000
40%4.6000002.8000005.200000
50%5.0000004.0000006.000000
90%7.8000004.6000007.600000
99%8.8800004.9600007.960000
max9.0000005.0000008.000000
# 行列轉置
df.describe([0.01,0.3,0.4,0.9,0.99]).T
countmeanstdmin1%30%40%50%90%99%max
Python5.05.62.0736444.04.004.24.65.07.88.889.0
NumPy5.02.82.1679480.00.041.62.84.04.64.965.0
Pandas5.05.42.4083192.02.084.45.26.07.67.968.0

2.df.std():可以求得DataFrame對象每一列的標準差

df.std()
Python    2.073644
NumPy     2.167948
Pandas    2.408319
dtype: float64

3.df.drop():刪除特定索引

df2 = df.copy()
df2
PythonNumPyPandas
A908
B512
C657
D446
E444
# 默認刪除行
df2.drop("A")
PythonNumPyPandas
B512
C657
D446
E444
df2.drop(index="A")
PythonNumPyPandas
B512
C657
D446
E444
# 刪除列
df2.drop("Python",axis=1)
NumPyPandas
A08
B12
C57
D46
E44
df2.drop(columns="Python")
NumPyPandas
A08
B12
C57
D46
E44
# 刪除多列或多行
df2.drop(columns=["NumPy","Python"])
Pandas
A8
B2
C7
D6
E4
df2.drop(index=["A","B"])
PythonNumPyPandas
C657
D446
E444
# inplace修改原數據
df2.drop(index=["A","B"],inplace=True)
df2
PythonNumPyPandas
C657
D446
E444

4.unique():唯一,去重(只能用于Series一維數組)

# DataFrame沒有unique屬性,Series調用unique
df["Python"].unique()
array([9, 5, 6, 4])

5.df.query:按條件查詢

# 找到Python列中等于6的所有行
df.query("Python == 6")
PythonNumPyPandas
C657
df.query("Python > 6")
PythonNumPyPandas
A908
df.query("Python < 6")
PythonNumPyPandas
B512
D446
E444
# and,&
df.query("Python > 4 and NumPy == 5")
PythonNumPyPandas
C657
df.query("Python > 4 & NumPy == 5")
PythonNumPyPandas
C657
# or,|
df.query("Python > 6 or NumPy == 8")
PythonNumPyPandas
A908
df.query("Python > 6 | NumPy == 8")
PythonNumPyPandas
A908
# in(成員運算符)
df.query("Python in [5,6,9]")
PythonNumPyPandas
A908
B512
C657
# 使用變量@符號
n = 6
df.query("Python == @n")
PythonNumPyPandas
C657
m = [5,6,9]
df.query("Python in @m")
PythonNumPyPandas
A908
B512
C657

6.df.sort_values():根據值排序

# sort_values:默認按照列名排序,默認升序(常用)
df.sort_values("Python")
PythonNumPyPandas
D446
E444
B512
C657
A908
# ascending:是否升序,默認是True
df.sort_values("Python",ascending=False)
PythonNumPyPandas
A908
C657
B512
D446
E444
# 根據行索引名排序,會把列進行排序(不常用)
df.sort_values("B",axis=1)
NumPyPandasPython
A089
B125
C576
D464
E444

7.df.sort_index():根據索引排序

# 按照索引名排序,默認是對行索引進行排序,默認是升序
df.sort_index(ascending=False)
PythonNumPyPandas
E444
D446
C657
B512
A908
# 按照列索引排序
df.sort_index(ascending=False,axis=1)
PythonPandasNumPy
A980
B521
C675
D464
E444

8.df.info():查看數據信息

# info:常用
df.info()
<class 'pandas.core.frame.DataFrame'>
Index: 5 entries, A to E
Data columns (total 3 columns):#   Column  Non-Null Count  Dtype
---  ------  --------------  -----0   Python  5 non-null      int321   NumPy   5 non-null      int322   Pandas  5 non-null      int32
dtypes: int32(3)
memory usage: 272.0+ bytes

9.練習

  • 新建一個形狀為10000*3的標準正態分布的DataFrame(np.random.randn),去除掉所有滿足以下情況的行:其中任一元素絕對值大約3陪標準差
df = pd.DataFrame(np.random.randn(10000,3))
df
012
00.786386-0.204965-0.152465
10.4005261.4477330.310461
2-0.363709-0.989258-1.093327
3-2.8569782.3366451.474821
4-0.8477571.141278-0.230877
............
99950.3310520.2630590.469468
99961.172189-1.3803370.648793
9997-0.544049-0.509627-0.224698
9998-0.034967-0.085575-0.687314
99990.007202-0.069250-0.803754

10000 rows × 3 columns

# 過濾掉 大于3陪標準差的行
# 標準差 df.std(),絕對值 df.abs()
# cond:找到每一個元素是否大于3陪標準差
cond = df.abs() > df.std()*3
cond
012
0FalseFalseFalse
1FalseFalseFalse
2FalseFalseFalse
3FalseFalseFalse
4FalseFalseFalse
............
9995FalseFalseFalse
9996FalseFalseFalse
9997FalseFalseFalse
9998FalseFalseFalse
9999FalseFalseFalse

10000 rows × 3 columns

# 找到存在大于3陪標準差的行
cond2 = cond.any(axis=1)
cond2
0       False
1       False
2       False
3       False
4       False...  
9995    False
9996    False
9997    False
9998    False
9999    False
Length: 10000, dtype: bool
# bool值索引,過濾異常值(大于3陪標準差)
df.loc[~cond2]
012
00.786386-0.204965-0.152465
10.4005261.4477330.310461
2-0.363709-0.989258-1.093327
3-2.8569782.3366451.474821
4-0.8477571.141278-0.230877
............
99950.3310520.2630590.469468
99961.172189-1.3803370.648793
9997-0.544049-0.509627-0.224698
9998-0.034967-0.085575-0.687314
99990.007202-0.069250-0.803754

9904 rows × 3 columns

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/39814.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39814.shtml
英文地址,請注明出處:http://en.pswp.cn/web/39814.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2024年7月5日 十二生肖 今日運勢

小運播報&#xff1a;2024年7月5日&#xff0c;星期五&#xff0c;農歷五月三十 &#xff08;甲辰年庚午月庚午日&#xff09;&#xff0c;法定工作日。 紅榜生肖&#xff1a;狗、羊、虎 需要注意&#xff1a;雞、牛、鼠 喜神方位&#xff1a;西北方 財神方位&#xff1a;正…

聯合查詢(多表查詢)

多表查詢是對多張表的數據取笛卡爾積&#xff08;關聯查詢可以對關聯表使用別名&#xff09; 數據準備 insert into classes(name, desc) values (計算機系2019級1班, 學習了計算機原理、C和Java語言、數據結構和算法), (中文系2019級3班,學習了中國傳統文學), (自動化2019級5…

土地規劃與文化遺產保護:在發展浪潮中守護歷史的脈絡

在這個日新月異的時代&#xff0c;城市化進程如火如荼&#xff0c;土地規劃作為引導城市發展方向的關鍵&#xff0c;承載著平衡發展與保護的重任。在追求現代化的同時&#xff0c;保護文化遺產不僅是對過去的尊重&#xff0c;更是對未來負責。本文旨在深入探討如何在土地規劃實…

uniapp----- 判斷小程序版本有沒有更新

const updateManager uni.getUpdateManager();// 當向小程序后臺請求完新版本信息&#xff0c;會進行回調updateManager.onCheckForUpdate(function (res) {console.log(是否有新版本, res.hasUpdate);});// 當新版本下載完成&#xff0c;會進行回調updateManager.onUpdateRea…

為了SourceInsight從Linux回到Windows

什么是SourceInsight 現在上網搜索這個軟件&#xff0c;大多數說他是一個代碼閱讀軟件&#xff1b;但是在官方的說法里面&#xff0c;這是一款支持多語言的編輯器。大概長這樣&#xff1a; 看起來十分老舊是吧&#xff0c;但是他其實他已經是第四代了哈哈哈。其實這個軟件是我…

字典樹模板+位運算

P3879 [TJOI2010] 閱讀理解 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) trie樹板子題&#xff0c;稍微有一丟丟不一樣&#xff0c;套用字典樹模板稍加修改就能過 手搓字典樹代碼&#xff1a; char ch[1010][26], cnt[1010], idx; void insert(string s)//插入 {int p 0…

高校搭建AIGC新媒體實驗室,創新新聞教育教學模式

高校作為人才培養的重要陣地&#xff0c;必須緊跟時代步伐&#xff0c;不斷創新教育教學模式&#xff0c;提升跨界融合育人水平&#xff0c;通過AIGC新媒體實驗室探索創新人才培養模式。AIGC新媒體實驗室不僅能夠高效賦能高校宣傳媒體矩陣&#xff0c;也可以助力教學實踐與AIGC…

ISA95-Part3-通訊協議的解析與開發指南

在 MES/MOM 系統中實現 ISA-95 標準的通信協議部分,通常涉及以下幾個關鍵步驟和應用場景: 一、關鍵步驟和應用場景: 1. ~協議選擇~: - MES/MOM 系統需選擇符合 ISA-95 標準的通信協議,常用的有 OPC UA(OLE for Process Control Unified Architecture)、XML、以及基于 H…

5分鐘讀懂GPS-RTK實時動態技術,建議收藏!

由于”智慧工地“理念的興起和發展&#xff0c;目前越來越多的企業將信息技術手段融合于施工現場安全管理&#xff0c;構建智能化的安全監管模式。基于此&#xff0c;藍牙LORA融合定位技術、UWB超寬帶定位技術、GPS-RTK定位技術等信息技術也越來越頻繁出現在大眾視野。然而&…

記錄通過Cloudflare部署屬于自己的docker鏡像源

引言 由于最近國內無法正常拉取docker鏡像&#xff0c;然而找了幾個能用的docker鏡像源發現拉取回來的docker鏡像不是最新的版本&#xff0c;部署到Cloudflare里Workers 和 Pages&#xff0c;拉取docker 鏡像成功&#xff0c;故記錄部署過程。 部署服務 登錄Cloudflare后&…

Android Gradle開發與應用(一): Gradle基礎

Gradle是一種基于Groovy語言的構建工具&#xff0c;用于自動化構建、測試和部署Android應用程序。它提供了一種靈活和可擴展的方式來管理項目的構建過程&#xff0c;并且可以輕松地集成到Android開發工作流程中。 本文將介紹Gradle的基礎知識&#xff0c;包括Gradle的安裝和配…

軟設之面向對象開發流程

面向對象開發流程分為 1.面向對象分析 2.面向對象設計 3.面向對象程序設計 4.面向對象測試 其中 面向對象分析包括 認定對象 組織對象 對象間的互相租用 基于對象的操作 識別類及對象&#xff1a; 識別類及對象 定義屬性 定義服務 識別關系 識別包 面向對象程…

C++ 智能指針內存泄漏問題

shared_ptr相互嵌套導致循環引用 代碼示例 #include <iostream> #include <memory> using namespace std;class B;class A { public:std::shared_ptr<B> b_ptr;~A() { std::cout << "A destroyed\n"; } };class B { public:std::shared_pt…

數據結構 1.1 數據結構的基本概念

本章總覽&#xff1a; 一.什么是數據 1.數據 數據是信息的載體&#xff0c;是描述客觀事物屬性的數、字符及所有能輸入到計算機中并被計算機程 序識別和處理的符號的集合。數據是計算機程序加工的原料。 早期計算機只能處理純數值的問題&#xff0c;如世界第一題計算機ENI…

轉讓北京文化傳媒公司帶營業性演出經紀許可證

影視文化傳播倡導將健康的影視文化有效傳播給觀眾&#xff0c;從而構建觀眾與電影制作者的良 性溝通與互動&#xff0c;是溝通電影制作者與電影受眾的重要橋梁。影視文化泛指以電影&#xff0c;電視方式所進行的全部文化創造&#xff0c;即體現為電影&#xff0c;電視全部的存在…

Java-List集合堆內存溢出

Java-List集合堆內存溢出 情況一情況二對照分析對照規定堆內存 情況一 往List<Object>的集合中不斷插入元素&#xff0c;集合底層的數組會不斷擴容&#xff0c;從0 -> 10 -> 10 10>>1…。最終出現堆內存溢出&#xff0c;是在擴容數組大小的時候。這里的過程…

【應屆應知應會】SQL常用知識點50道

SueWakeup 個人主頁&#xff1a;SueWakeup 系列專欄&#xff1a;借他一雙眼&#xff0c;愿這盛世如先生所愿 個性簽名&#xff1a;人生乏味啊&#xff0c;我欲令之光怪陸離 本文封面由 凌七七~? 友情提供 目錄 數據庫的概念 (什么是數據庫) RDBMS NOSQL 數據庫的分類 …

Qt涂鴉板

Qt版本&#xff1a;Qt6 具體代碼&#xff1a; 頭文件 dialog.h #ifndef DIALOG_H #define DIALOG_H#include <QDialog>QT_BEGIN_NAMESPACE namespace Ui { class Dialog; } QT_END_NAMESPACEclass Dialog : public QDialog {Q_OBJECTpublic:Dialog(QWidget *parent n…

0145__contain_of的原理與實現

contain_of的原理與實現_contain of-CSDN博客

從零開始!Jupyter Notebook的安裝教程

引言 Jupyter Notebook作為一種交互式的開發環境&#xff0c;已經成為數據科學和機器學習領域中不可或缺的工具之一。它能夠將代碼、文本、圖像和數據結合在一個靈活的文檔中&#xff0c;使得數據分析和可視化變得更加直觀和高效。 本文將詳細介紹Jupyter Notebook的安裝過程…