數據分析必備:一步步教你如何用Pandas做數據分析(15)

1、Pandas 數據丟失

Pandas 數據丟失的操作實例
在現實生活中,數據丟失始終是一個問題。機器學習和數據挖掘等領域在模型預測的準確性方面面臨嚴重問題,因為缺少值會導致數據質量較差。在這些領域中,缺失值處理是使模型更準確和有效的主要重點。

1.1、什么時候以及為什么會丟失數據?

讓我們考慮一項產品的在線調查。很多時候,人們不會共享與他們有關的所有信息。很少有人會分享他們的經驗,但是不會分享他們使用該產品有多長時間;很少有人分享他們使用該產品的時間,他們的經歷而不是他們的聯系信息。因此,以某種方式或其他方式總是會丟失一部分數據,這在實時情況下非常普遍。
現在讓我們看看如何使用熊貓處理缺失值(例如NA或NaN)。

# import the pandas libraryimport pandas as pdimport numpy as npdf = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'],columns=['one', 'two', 'three'])df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])print(df)

運行結果

       one        two     three
a  -0.576991  -0.741695  0.553172
b        NaN        NaN       NaN
c   0.744328  -1.735166  1.749580NaN replaced with '0':one        two     three
a  -0.576991  -0.741695  0.553172
b   0.000000   0.000000  0.000000
c   0.744328  -1.735166  1.749580

使用重新索引,我們創建了一個缺少值的DataFrame。在輸出中,NaN表示不是數字。

1.2、檢查缺失值

為了使檢測的缺失值更容易(和不同陣列dtypes),熊貓提供ISNULL()和NOTNULL()功能,這也是對系列和數據幀的對象的方法-

 import pandas as pdimport numpy as npdf = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'],columns=['one', 'two', 'three'])df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])print(df['one'].isnull())

運行結果

 a  Falseb  Truec  Falsed  Truee  Falsef  Falseg  Trueh  FalseName: one, dtype: bool
**import pandas as pdimport numpy as npdf = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'],columns=['one', 'two', 'three'])df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])print(df['one'].notnull())**

運行結果

 a  Trueb  Falsec  Trued  Falsee  Truef  Trueg  Falseh  TrueName: one, dtype: bool

1.3、缺少數據的計算

匯總數據時,NA將被視為零
如果數據均為不適用,則結果為不適用

 import pandas as pdimport numpy as npdf = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'],columns=['one', 'two', 'three'])df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])print(df['one'].sum())

運行結果

  2.02357685917
 import pandas as pdimport numpy as npdf = pd.DataFrame(index=[0,1,2,3,4,5],columns=['one','two'])print(df['one'].sum()

運行結果:

   nan

1.4、清理/填充丟失的數據

Pandas 提供了多種清除缺失值的方法。fillna函數可以通過以下幾種方法用非空數據“填充” NA值。

1.5、用標量值替換NaN

以下程序顯示了如何將“ NaN”替換為“ 0”。

 import pandas as pdimport numpy as npdf = pd.DataFrame(np.random.randn(3, 3), index=['a', 'c', 'e'],columns=['one','two', 'three'])df = df.reindex(['a', 'b', 'c']))print(df)print(("NaN replaced with '0':"))print(df.fillna(0))

運行結果

       one        two     three
a  -0.576991  -0.741695  0.553172
b        NaN        NaN       NaN
c   0.744328  -1.735166  1.749580NaN replaced with '0':one        two     three
a  -0.576991  -0.741695  0.553172
b   0.000000   0.000000  0.000000
c   0.744328  -1.735166  1.749580

在這里,我們填充零值;相反,我們還可以填充其他任何值。

1.6、向前和向后填充NA

使用“重新索引”一章中討論的填充概念,我們將填充缺少的值。
在這里插入圖片描述

import pandas as pdimport numpy as npdf = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'],columns=['one', 'two', 'three'])df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])print(df.fillna(method='pad'))

運行結果

 one        two      three
a   0.077988   0.476149   0.965836
b   0.077988   0.476149   0.965836
c  -0.390208  -0.551605  -2.301950
d  -0.390208  -0.551605  -2.301950
e  -2.000303  -0.788201   1.510072
f  -0.930230  -0.670473   1.146615
g  -0.930230  -0.670473   1.146615
h   0.085100   0.532791   0.887415
import pandas as pdimport numpy as npdf = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'],columns=['one', 'two', 'three'])df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])print(df.fillna(method='backfill'))

運行結果

      one        two      three
a   0.077988   0.476149   0.965836
b  -0.390208  -0.551605  -2.301950
c  -0.390208  -0.551605  -2.301950
d  -2.000303  -0.788201   1.510072
e  -2.000303  -0.788201   1.510072
f  -0.930230  -0.670473   1.146615
g   0.085100   0.532791   0.887415
h   0.085100   0.532791   0.887415

1.7、刪除缺失值

如果只想排除丟失的值,則將dropna函數與axis參數一起使用。默認情況下,axis = 0,即沿著行,這意味著如果一行中的任何值為NA,那么將排除整行。

 import pandas as pdimport numpy as npdf = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'],columns=['one', 'two', 'three'])df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])print(df.dropna())

運行結果

one two three a 0.077988 0.476149 0.965836 c -0.390208 -0.551605 -2.301950 e -2.000303 -0.788201 1.510072 f -0.930230 -0.670473 1.146615 h 0.085100 0.532791 0.887415
import pandas as pdimport numpy as npdf = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'],columns=['one', 'two', 'three'])df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])print(df.dropna(axis=1))

運行結果

 Empty DataFrameColumns: [ ]Index: [a, b, c, d, e, f, g, h]

1.8、替換缺失的(或)通用值

很多時候,我們必須用某個特定值替換一個通用值。我們可以通過應用replace方法來實現。
用標量值替換NA是fillna()函數的等效行為。

 import pandas as pdimport numpy as npdf = pd.DataFrame({'one':[10,20,30,40,50,2000], 'two':[1000,0,30,40,50,60]})print(df.replace({1000:10,2000:60}))

運行結果

   one two0 10 101 20 02 30 303 40 404 50 505 60 60
 import pandas as pdimport numpy as npdf = pd.DataFrame({'one':[10,20,30,40,50,2000], 'two':[1000,0,30,40,50,60]})print(df.replace({1000:10,2000:60})

運行結果

   one two0 10 101 20 02 30 303 40 404 50 505 60 60

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

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

相關文章

定個小目標之每天刷LeetCode熱題(7)

今天這道題是道簡單題,使用雙指針進行迭代即可,畫了下草圖如下 代碼如下 class Solution {public ListNode reverseList(ListNode head) {if (head null || head.next null) {return head;}ListNode p head, q head.next, temp null;while (q ! nu…

【Python如何將EXCEL拆分】

文章目錄 Python將一個EXCEL表拆分多個excel表Python將一個EXCEL表中一個sheet拆分多個sheet表 Python將一個EXCEL表拆分多個excel表 在Python中,你可以使用pandas庫來讀取Excel文件,并將一個大的Excel表格(工作表)拆分成多個單獨…

Writerside生成在線幫助文檔或用戶手冊軟件基礎使用教程

Writerside是JetBrains出的一個技術文檔工具,既能用在JetBrains IDE上,也能單獨用。它能幫你輕松寫、建、測、發技術文檔,像產品說明、API參考、開發指南等都能搞定。 特點: 文檔即代碼:它讓你像管代碼一樣管文檔&…

【大數據Spark】常見面試題(萬字!建議收藏)

文章目錄 入門級中等難度中高級難度數據傾斜解決方法 入門級 什么是Apache Spark?它與傳統的MapReduce有何不同? Apache Spark是一個開源的分布式計算系統,它提供了高效的數據處理和分析能力。與傳統的MapReduce相比,Spark具有更快…

海光CPU:國產信創的“芯“動力解讀

國產信創CPU-海光CPU CPU:信創根基,國之重器 國產CPU形成三大陣營:自主架構、x86及ARM。自主陣營中,龍芯和申威以LoongArch和SW-64為基石;ARM陣營由鯤鵬、飛騰主導,依托ARM授權研發處理器;x86陣…

紅帽練習 之邏輯卷 pv lv gv

邏輯卷習題 1 在/dev/sdb 存儲設備上創建物理設備分區 創建2個大小各為256MB的分區 并設置為linux lvm類型 使用first 和second 作為這些分區的名稱 parted /dev/sdb mklabel gpt parted /dev/sdb primary mkpart first 1M 256M parted /dev/sdb set 1 …

【Linux|數據恢復】extundelete和ext4magic數據恢復工具使用

環境:Centos7.6_x86 一、extundelete工具 1、extundelete介紹 Extundelete 是一個數據恢復工具,用于從 ext3 或 ext4 分區中恢復刪除文件。根據官網0.2.4版本介紹是支持ext4,但實際上使用發現ext4格式有些問題,會報以下錯誤&…

動態SQL IF語句

IF語句學習 第一種寫法(標準) 我們先來看以下標準寫法: select * from .. <where> <if test""> and ....... <if test""> and ....... <where> 我們用了一個where標簽 , 內嵌if語句 第二種寫法: 這是第二種寫法:不用where標…

大降分!重郵計算機專碩復試線大降50分!重慶郵電計算機考研考情分析!

重慶郵電大學&#xff08;Chongqing University of Posts and Telecommunications&#xff09;簡稱重郵&#xff0c;坐落于中國重慶市主城區南山風景區內&#xff0c;是中華人民共和國工業和信息化部與重慶市人民政府共建的教學研究型大學&#xff0c;入選國家“中西部高校基礎…

一篇文章搞懂Go語言切片底層原理(圖文并茂+舉例講解)

1. 切片和數組的底層關系 Go語言切片的數據結構是一個結構體&#xff1a; type slice struct {array unsafe.Pointerlen intcap int }Go語言中切片的內部結構包含地址、大小和容量。將數組比喻成一個蛋糕&#xff0c;那么切片就是需要切的那一塊&#xff0c;而那一塊的的…

c++學生管理系統

想要實現的功能 1&#xff0c;可以增加學生的信息&#xff0c;包括&#xff08;姓名&#xff0c;學號,c成績&#xff0c;高數成績&#xff0c;英語成績&#xff09; 2&#xff0c;可以刪除學生信息 3&#xff0c;修改學生信息 4&#xff0c;顯示所有學生信息 5&#xff0c…

支持AMD GPU的llm.c

anthonix/llm.c: LLM training in simple, raw C/HIP for AMD GPUs (github.com) llm.c for AMD devices This is a fork of Andrej Karpathys llm.c with support for AMD devices. 性能 在單個7900 XTX顯卡上使用默認設置&#xff0c;目前的訓練步驟耗時約為79毫秒&#x…

Docker的安裝、啟動和配置鏡像加速

前言&#xff1a; Docker 分為 CE 和 EE 兩大版本。CE 即社區版&#xff08;免費&#xff0c;支持周期 7 個月&#xff09;&#xff0c;EE 即企業版&#xff0c;強調安全&#xff0c;付費使用&#xff0c;支持周期 24 個月。 而企業部署一般都是采用Linux操作系統&#xff0c;而…

【軟件設計師】2022年上半年真題解析

??馮諾依曼計算機體系結構的基本特點是&#xff1a; A. 程序指令和數據都采用二進制表示 - 這是正確的&#xff0c;因為馮諾依曼架構下的計算機使用二進制形式來表示和處理所有信息&#xff0c;包括指令和數據。 B. 程序指令總是存儲在主存中&#xff0c;而數據則存儲在高速…

Java基礎語法詳解——入門學習教程

Java 基礎 目錄 一、數據類型 基本類型包裝類型緩存池 二、String 概覽不可變的好處String, StringBuffer and StringBuilder String Poolnew String(“abc”) 三、運算 參數傳遞float 與 double隱式類型轉換switch 四、關鍵字 finalstatic 五、Object 通用方法 概覽equals()ha…

深入解析 MongoDB Map-Reduce:強大數據聚合與分析的利器

Map-Reduce 是一種用于處理和生成大數據集的方法&#xff0c;MongoDB 支持 Map-Reduce 操作以執行復雜的數據聚合任務。Map-Reduce 操作由兩個階段組成&#xff1a;Map 階段和 Reduce 階段。 基本語法 在 MongoDB 中&#xff0c;可以使用 db.collection.mapReduce() 方法執行…

IsoBench:多模態基礎模型性能的基準測試與優化

隨著多模態基礎模型的快速發展&#xff0c;如何準確評估這些模型在不同輸入模態下的性能成為了一個重要課題。本文提出了IsoBench&#xff0c;一個基準數據集&#xff0c;旨在通過提供多種同構&#xff08;isomorphic&#xff09;表示形式的問題&#xff0c;來測試和評估多模態…

算法(十三)回溯算法---N皇后問題

文章目錄 算法概念經典例子 - N皇后問題什么是N皇后問題&#xff1f;實現思路 算法概念 回溯算法是類似枚舉的深度優先搜索嘗試過程&#xff0c;主要是再搜索嘗試中尋找問題的解&#xff0c;當發生不滿足求解條件時&#xff0c;就會”回溯“返回&#xff08;也就是遞歸返回&am…

enum4linux一鍵查詢SMB信息(KALI工具系列十六)

目錄 1、KALI LINUX簡介 2、enum4linux工具簡介 3、在KALI中使用enum4linux 3.1 目標主機IP&#xff08;win&#xff09; ?編輯 3.2 KALI的IP 4、操作示例 4.1 運行工具 4.2 列出用戶名 4.3 提取用戶名 4.4 使用自定義RID范圍 4.5 列出組 4.6 列出共享文件夾 4.7…

【筆記小記】掌握市場脈動:全營銷解決方案的力量

前面雖然說了這個模型&#xff0c;而且是分章說的&#xff0c;那么在此以筆記小記的形式再說一下&#xff0c;企業面臨的挑戰與日俱增&#xff0c;消費者需求的多樣化、技術的不斷進步、全球化的深入以及社會責任的日益重要&#xff0c;這些因素共同塑造了市場的現狀和未來&…