Pandas數據處理與分析實戰:Pandas數據清洗與處理入門

數據清洗:Pandas數據處理入門

學習目標

本課程將引導學員了解數據清洗的基本概念,掌握使用Pandas庫處理數據集中的缺失值、重復數據和異常值的方法,確保數據的質量,為后續的數據分析和機器學習任務打下堅實的基礎。

相關知識點

  • Pandas數據清洗

學習內容

1 Pandas數據清洗

1.1 處理缺失值

在數據處理中,缺失值是一個常見的問題。缺失值可能由多種原因造成,如數據收集過程中的錯誤、數據錄入時的遺漏等。處理缺失值的方法有很多,包括刪除含有缺失值的行或列、填充缺失值等。Pandas庫提供了多種處理缺失值的函數,使得這一過程變得簡單高效。

1.1.1 檢測缺失值

在處理缺失值之前,首先需要檢測數據集中哪些位置存在缺失值。Pandas中的isnull()函數可以用來檢測數據集中的缺失值,返回一個布爾值的DataFrame,其中True表示該位置存在缺失值,False表示該位置數據完整。

import pandas as pd# 創建一個包含缺失值的示例數據集
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', None],'Age': [25, 30, None, 35, 40],'Salary': [50000, 60000, 70000, None, 80000]}
df = pd.DataFrame(data)# 檢測缺失值
missing_values = df.isnull()
print(missing_values)
1.1.2 刪除缺失值

如果數據集中的缺失值較少,且刪除這些缺失值不會對分析結果產生顯著影響,可以考慮刪除含有缺失值的行或列。Pandas中的dropna()函數可以用來刪除含有缺失值的行或列。

import pandas as pd# 創建一個包含缺失值的示例數據集
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', None],'Age': [25, 30, None, 35, 40],'Salary': [50000, 60000, 70000, None, 80000]}
df = pd.DataFrame(data)
# 刪除含有缺失值的行
df_cleaned = df.dropna()
print(df_cleaned)# 刪除含有缺失值的列
df_cleaned_columns = df.dropna(axis=1)
print(df_cleaned_columns)
1.1.3 填充缺失值

在某些情況下,刪除含有缺失值的行或列可能會導致數據集的樣本量大幅減少,影響分析結果的準確性。此時,可以考慮使用填充的方法來處理缺失值。Pandas中的fillna()函數可以用來填充缺失值,常見的填充方法包括使用固定值、前向填充、后向填充等。

import pandas as pd# 創建一個包含缺失值的示例數據集
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', None],'Age': [25, 30, None, 35, 40],'Salary': [50000, 60000, 70000, None, 80000]}
df = pd.DataFrame(data)
print("===================")
# 使用固定值填充缺失值
df_filled = df.fillna(0)
print(df_filled)
print("===================")
# 使用前向填充(csdn的運行環境可能有問題,到自己本地執行!)
df_ffilled = df.fillna(method='ffill')
print(df_ffilled)
print("===================")
# 使用后向填充(csdn的運行環境可能有問題,到自己本地執行!)
df_bfilled = df.fillna(method='bfill')
print(df_bfilled)
  • 前向填充(ffill):df.fillna(method=‘ffill’) 會使用當前缺失值的前一個非缺失值來填充該缺失值。可以理解為
    “向前看”,用前面的有效值延續下來。 例如,如果某列數據是[1, NaN, 3],前向填充后會變為[1, 1, 3]。
  • 后向填充(bfill):df.fillna(method=‘bfill’) 會使用當前缺失值的后一個非缺失值來填充該缺失值。可以理解為
    “向后看”,用后面出現的有效值往前補充。 例如,如果某列數據是[1, NaN, 3],后向填充后會變為[1, 3, 3]。
    這兩種方法適用于有連續性的數據(如時間序列),能保留數據的趨勢性,但如果缺失值位于開頭(前向填充)或結尾(后向填充),則可能無法被填充。
1.2 處理重復數據

重復數據是指數據集中存在完全相同的記錄。重復數據可能會導致數據分析結果的偏差,因此在數據清洗過程中需要特別注意。Pandas提供了duplicated()drop_duplicates()函數來檢測和刪除重復數據。

1.2.1 檢測重復數據

使用duplicated()函數可以檢測數據集中是否存在重復的記錄。該函數返回一個布爾值的Series,其中True表示該行是重復的,False表示該行是唯一的。

import pandas as pd# 創建一個包含重復數據的示例數據集
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Alice'],'Age': [25, 30, 35, 40, 25],'Salary': [50000, 60000, 70000, 80000, 50000]}
df = pd.DataFrame(data)# 檢測重復數據
duplicates = df.duplicated()
print(duplicates)
1.2.2 刪除重復數據

使用drop_duplicates()函數可以刪除數據集中的重復記錄。該函數默認保留第一次出現的記錄,刪除后續的重復記錄。

import pandas as pd# 創建一個包含重復數據的示例數據集
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Alice'],'Age': [25, 30, 35, 40, 25],'Salary': [50000, 60000, 70000, 80000, 50000]}
df = pd.DataFrame(data)
# 刪除重復數據
df_unique = df.drop_duplicates()
print(df_unique)# 保留最后一次出現的記錄
df_unique_last = df.drop_duplicates(keep='last')
print(df_unique_last)
1.3 處理異常值

異常值是指數據集中明顯偏離其他值的數據點。異常值可能是由于數據收集過程中的錯誤或極端情況導致的。處理異常值的方法包括刪除異常值、替換異常值等。Pandas提供了多種方法來檢測和處理異常值。

1.3.1 檢測異常值

檢測異常值的方法有很多,常見的方法包括使用統計學方法(如標準差、四分位數等)和可視化方法(如箱線圖)。Pandas中的describe()函數可以用來獲取數據集的基本統計信息,幫助初步判斷是否存在異常值。

import pandas as pd
# 創建一個包含異常值的示例數據集
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 30, 35, 40, 100],'Salary': [50000, 60000, 70000, 80000, 1000000]}
df = pd.DataFrame(data)# 獲取數據集的基本統計信息
stats = df.describe()
print(stats)
##### 1.3.2 刪除異常值
如果確定某些數據點是異常值,可以考慮刪除這些異常值。Pandas中的布爾索引可以用來篩選出正常的數據點。
import pandas as pd
# 創建一個包含異常值的示例數據集
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 30, 35, 40, 100],'Salary': [50000, 60000, 70000, 80000, 1000000]}
df = pd.DataFrame(data)
# 刪除年齡大于60的異常值
df_cleaned = df[df['Age'] <= 60]
print(df_cleaned)# 刪除薪水大于500000的異常值
df_cleaned_salary = df[df['Salary'] <= 500000]
print(df_cleaned_salary)
1.3.3 替換異常值

在某些情況下,刪除異常值可能會導致數據集的樣本量減少,影響分析結果的準確性。此時,可以考慮使用替換的方法來處理異常值。常見的替換方法包括使用中位數、平均值等。

import pandas as pd
# 創建一個包含異常值的示例數據集
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 30, 35, 40, 100],'Salary': [50000, 60000, 70000, 80000, 1000000]}
df = pd.DataFrame(data)
# 使用中位數替換年齡大于60的異常值
median_age = df['Age'].median()
df['Age'] = df['Age'].apply(lambda x: median_age if x > 60 else x)
print(df)# 使用平均值替換薪水大于500000的異常值
mean_salary = df['Salary'].mean()
df['Salary'] = df['Salary'].apply(lambda x: mean_salary if x > 500000 else x)
print(df)

通過本課程的學習,學員將掌握使用Pandas庫處理數據集中缺失值、重復數據和異常值的方法,確保數據的質量,為后續的數據分析和機器學習任務打下堅實的基礎。

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

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

相關文章

Python爬蟲實戰:研究ScrapyRT框架,構建圖書商城數據采集系統

1. 引言 1.1 研究背景 在當今數字化時代,互聯網已成為全球最大的信息庫,蘊含著海量的有價值數據,涵蓋商業、教育、科研、醫療等各個領域。根據 IDC(國際數據公司)預測,到 2025 年全球數據圈將增長至 175ZB,其中網絡數據占比超過 60%。這些數據不僅是企業制定商業策略、…

springboot接口請求參數校驗

參數校驗 參數校驗可以防止無效或錯誤的數據進入系統。通過校驗前端輸入的參數&#xff0c;可以確保數據的完整性&#xff0c;避免因為缺少必要的信息而導致程序錯誤或異常。例如&#xff0c;對于密碼字段&#xff0c;可以通過校驗規則要求用戶輸入至少8個字符、包含字母和數字…

Docker部署 Neo4j 及集成 APOC 插件:安裝與配置完整指南(docker-compose)

Docker部署 Neo4j 及集成 APOC 插件&#xff1a;分步驟指南 摘要 &#xff1a;本文將分兩部分詳細介紹相關內容。第一部分講解如何使用 Docker Compose 部署 Neo4j 圖數據庫&#xff0c;提供完整配置文件及常見問題解決方案&#xff1b;第二部分在前者基礎上&#xff0c;介紹 A…

TLSv1.2協議與TCP/UDP協議傳輸數據內容差異

一、Wireshark中常見的TLSv1.2在用Wireshark抓包時&#xff0c;除了看到課堂上教過的經典的TCP/UDP協議&#xff0c;還有一個協議經常出現——TLSv1.2。并且這個協議的Info解釋是Application data&#xff0c;其實看到這個解釋&#xff0c;我大概猜出來了TLSv1.2是用來給用戶數…

51c自動駕駛~合集14

自己的原文哦~ https://blog.51cto.com/whaosoft/11707335 #Text2LiDAR 文本引導的無條件點云生成新SOTA 論文題目&#xff1a;《Text2LiDAR: Text-guided LiDAR Point Cloud Generation via Equirectangular Transformer》 論文地址&#xff1a;https://arxiv.o…

k8s基本概念

k8s 的基本概念 Kubernetes是一個可以移植、可擴展的開源平臺&#xff0c;使用 聲明式的配置 并依據配置信息自動地執行容器化應用程序的管理。在所有的容器編排工具中&#xff08;類似的還有 docker swarm / mesos等&#xff09;&#xff0c;Kubernetes的生態系統更大、增長更…

Easysearch 數據遷移之數據比對

上一篇我們通過 INFINI Gateway 進行了索引數據遷移&#xff0c;對索引遷移結果進行了初步且直觀的校驗--對比索引的文檔數是否一致。今天介紹個實實在在的數據比對方法&#xff0c;通過網關對比索引文檔的內容在兩個集群是否一致。話不多說&#xff0c;就拿上次遷移的兩個索引…

Codeforces Round 1042 (Div. 3)

ABCD 略E注意到每個操作最多執行一次&#xff0c;ifa[i]!b[i]&#xff0c;要么a[i]^a[i1]要么a[i]^b[i1]G設消除1~i的數的操作次數為f[i]&#xff0c;可以推出f[i]2*f[i-1]1&#xff0c;那么消除1~i的數的分數乘的數為g[i]&#xff0c;g[i]g[i-1]*g[i-1]*i s雖然很大&#xff0…

AJAX:讓你的網頁“靜悄悄”變聰明,體驗絲滑升級

大家好&#xff0c;今天想聊聊一個讓網頁“活”起來的小秘密——AJAX。你可能遇到過這種情況&#xff1a;點個按鈕&#xff0c;頁面就刷新&#xff0c;等得心急火燎。但用了AJAX的網站&#xff0c;比如購物車更新或搜索建議&#xff0c;數據嗖嗖就來了&#xff0c;整個頁面卻紋…

【iOS】Block基礎知識和底層探索

文章目錄前言Block的聲明和創建問題引入Block的底層結構Block的執行流程Block的創建與存儲Block的傳遞與調用Block的捕獲機制捕獲局部變量捕獲全局變量小結Block的類型__block修飾符__block變量的包裝結構體block的實例結構體block的執行邏輯Block循環引用造成的原因解決方法小…

1.Ansible 自動化介紹

1-Ansible 自動化介紹 Ansible 自動化介紹 手動執行任務和自動化執行任務 手動執行任務的麻煩事&#xff1a; 很容易漏掉某個步驟&#xff0c;或者不小心執行錯步驟&#xff0c;而且很難驗證每個步驟是不是真的按預期完成了。管理一大堆服務器時&#xff0c;很容易出現配置…

2025年云手機場景適配的行業觀察

2025年的市場中&#xff0c;云手機品牌百花齊放&#xff0c;不同品牌在性能、功能和場景適配性上的差異日益顯著。隨著云計算技術的快速發展&#xff0c;云手機已從 嘗鮮工具 演變為游戲、辦公、企業運營等場景的剛需工具。現市面上也有著更多的云手機品牌&#xff0c;結合實測…

Date/Calendar/DateFormat/LocalDate

作用說明Date用于定義時間&#xff0c;提供date對象間的比較方法Calendar(日歷類),提供對時間的運算方法DateFormat是接口&#xff0c;它的實現類SimpleDateFormat用來規范時間輸出形式LocalDate&#xff0c;在JDK1.8之后引入&#xff0c;方便了對時間的運算方法介紹Date常用方…

在Python 3.8環境中安裝Python 3.6兼容包的方法

在Python 3.8環境中安裝Python 3.6兼容包的方法 用戶的需求是&#xff1a;在Python 3.8環境中重新安裝原本為Python 3.6設計的包。這通常涉及兼容性問題&#xff0c;因為Python 3.8可能引入了一些語法或API變更&#xff0c;導致舊包無法直接運行。以下是逐步解決方案&#xff…

三種DuckDB電子表格插件的union all查詢性能對比

我選取了最穩定、兼容性最好的三種&#xff1a;官方excel對應函數read_xlsx()、官方spatial對應函數st_read()、rusty_sheet對應函數read_sheet。 1.建立兩個包含前50萬和后54萬的xlsx文件&#xff0c;用于比較。利用官方excel的copy()to進行。 D copy (from v1 order by l_ord…

Python 中使用多進程編程的“三兩”問題

文章目錄一、簡介二、選擇合適的啟動方式三、手動終止所有的進程小結一、簡介 這里簡單介紹在Python中使用多進程編程的時候容易遇到的情況和解決辦法&#xff0c;有助于排查和規避某類問題&#xff0c;但是具體問題還是需要具體分析&#xff0c;后續會補充更多的內容。 二、…

Ansible部署應用

目錄Ansible概述1&#xff1a;什么是Ansible2&#xff1a;Ansible的架構組成3&#xff1a;Ansible與SaltStack的對比安裝部署Ansible服務1&#xff1a;系統環境設置2&#xff1a;安裝Ansible&#xff08;第一臺&#xff09;2&#xff1a;配置主機清單3&#xff1a;修改Ansible配…

疏老師-python訓練營-Day44預訓練模型

浙大疏錦行 知識點回顧&#xff1a; 預訓練的概念常見的分類預訓練模型圖像預訓練模型的發展史預訓練的策略預訓練代碼實戰&#xff1a;resnet18 作業&#xff1a; 嘗試在cifar10對比如下其他的預訓練模型&#xff0c;觀察差異&#xff0c;盡可能和他人選擇的不同嘗試通過ctrl進…

AI入門學習--如何寫好prompt?

寫好Prompt&#xff08;提示詞&#xff09;是駕馭AI模型的核心技能。以下是結合測試工程師需求的 結構化方法論 和 黃金模板一、prompt設計金字塔終極心法&#xff1a; Prompt 對AI的測試需求文檔&#xff0c;需像設計測試用例一樣&#xff1a;可執行&#xff1a;明確輸入輸出…

Linux編程 IO(標準io,文件io,目錄io)

標準IO C語言標準IO概述標準IO&#xff08;Standard Input/Output&#xff09;是C語言中用于處理文件和數據流的一組函數庫&#xff0c;定義在<stdio.h>頭文件中。與低級IO&#xff08;如read/write&#xff09;相比&#xff0c;標準IO提供了緩沖機制&#xff0c;提高了數…