Python中缺失值分類及Pandas中缺失資料處理函式
一、Python中缺失值分類
Python中有三種缺失值(空值):
形式 | 含義 |
---|---|
None | Python內建的None值,如建立一個空的列表list=[] |
NA | 在pandas中,將缺失值表示為NA,表示不可用not available,主要表示為np.nan |
NaN | 對於數值資料,pandas使用浮點值NaN(Not a Number)表示缺失資料 |
二、缺失值處理相關操作
通常遇到缺失值需要先找出或檢視缺失值isnull()/notnull(),然後填充fillna()或刪除dropna()缺失值。
本文案例資料集下載(也可評論或私信作者獲取資料集)
- 查詢缺失值isnull()以及notnull()函式
該方法對物件進行元素級操作,返回一組布林值True/False。
#匯入資料
fileDf=pd.read_excel('Python資料/朝陽醫院2018年銷售資料.xlsx',sheet_name='Sheet1')
fileDf.head()
>>>
購藥時間 社保卡號 商品編碼 商品名稱 銷售數量 應收金額 實收金額
0 2018-01-01 星期五 1.616528e+06 236701.0 強力VC銀翹片 6.0 82.8 69.00
1 2018-01-02 星期六 1.616528e+06 236701.0 清熱解毒口服液 1.0 28.0 24.64
2 2018-01-06 星期三 1.260283e+07 236701.0 感康 2.0 16.8 15.00
3 2018-01-11 星期一 1.007034e+10 236701.0 三九感冒靈 1.0 28.0 28.00
4 2018-01-15 星期五 1.015543e+08 236701.0 三九感冒靈 8.0 224.0 208.00
#isnull()返回一組布林值
print(fileDf['購藥時間'].isnull().head())
>>>
0 False
1 False
2 False
3 False
4 False
Name: 購藥時間, dtype: bool
#檢視某些有缺失值欄位的資料情況
fileDf[fileDf['購藥時間'].isnull()|fileDf['社保卡號'].isnull()]
>>>
購藥時間 社保卡號 商品編碼 商品名稱 銷售數量 應收金額 實收金額
6570 NaN 11778628.0 2367011.0 高特靈 10.0 56.0 56.00
6571 2018-04-25 星期二 NaN 2367011.0 高特靈 2.0 11.2 9.86
6574 NaN NaN NaN NaN NaN NaN NaN
- 填充缺失值fillna()函式
fillna(value=None, axis=0, inplace=False)
利用value來填充相應的缺失值,預設inplace不替換原資料只是產生副本。
#填充缺失值
print('填充前缺失情況:',fileDf[['購藥時間','社保卡號']][fileDf['購藥時間'].isnull()|fileDf['社保卡號'].isnull()])
#利用購藥時間列的眾數來填充缺失值
fileDf['購藥時間'].fillna(fileDf['購藥時間'].mode()[0],inplace=True)
print('填充後缺失情況:',fileDf[['購藥時間','社保卡號']][fileDf['購藥時間'].isnull()|fileDf['社保卡號'].isnull()])
>>>
填充前缺失情況: 購藥時間 社保卡號
6570 NaN 11778628.0
6571 2018-04-25 星期二 NaN
6574 NaN NaN
填充後缺失情況: 購藥時間 社保卡號
6571 2018-04-25 星期二 NaN
6574 2018-04-15 星期五 NaN
- 剔除缺失值dropna()函式
dropna(subset=[],axis=0, how='any', thresh=None)
刪除指定列subset中有缺失值的資料,預設inplace不替換原資料只是產生副本,how可選any或all,all僅在切片中資料全部缺失時才剔除。
#刪除缺失值
print('刪除前缺失情況:',fileDf[['購藥時間','社保卡號']][fileDf['購藥時間'].isnull()|fileDf['社保卡號'].isnull()])
#刪除購藥時間中有缺失值的資料
fileDf.dropna(subset=['購藥時間'],inplace=True)
print('刪除後缺失情況:',fileDf[['購藥時間','社保卡號']][fileDf['購藥時間'].isnull()|fileDf['社保卡號'].isnull()])
>>>
刪除前缺失情況: 購藥時間 社保卡號
6570 NaN 11778628.0
6571 2018-04-25 星期二 NaN
6574 NaN NaN
刪除後缺失情況: 購藥時間 社保卡號
6571 2018-04-25 星期二 NaN
相關推薦
Python中缺失值分類及Pandas中缺失資料處理函式
一、Python中缺失值分類 Python中有三種缺失值(空值): 形式 含義 None Python內建的None值,如建立一個空的列表list=[] NA 在pandas中,將缺失值表示為NA,表示不可用not available,主
Python基礎練習——字串中的字元分類及個數
題目:輸入一個字串,分別統計出其中英文字母、空格、數字和其它字元的個數 編寫思路: 1、字串的遍歷,和列表類似,可以把字串當做元素都是一個字元的一個字元列表,它可以和列表有公共的語法 2、分不同的類別,若有符合條件的字元直接在類別數上加1就可以 初始程式
五、mysql中sql語句分類及常用操作
所表 desc 直接 常用操作 文件 ble div alter .cn 1.sql語句分類: DQL語句 數據查詢語言 select DML語句 數據操作語言 insert delete update DDL語句 數據定義語言 create drop
python學習筆記——(2)pandas中的資料型別
在用python進行資料處理的時候,自帶的五種資料型別使用起來顯然是有侷限性的,python之強大在於各種包,在資料處理中用的最多的就是pandas和numpy。本文章主要介紹pandas的資料結構。 pandas有兩種資料結構  
【python學習筆記】40:Pandas中DataFrame的分組/分割/合併
學習《Python3爬蟲、資料清洗與視覺化實戰》時自己的一些實踐。 DataFrame分組操作 注意分組後得到的就是Series物件了,而不再是DataFrame物件。 import pandas as pd # 還是讀取這份檔案 df = pd.read_csv("
軟體測試分類及測試中三個主要概念
軟體測試分類: 按測試技術,軟體測試可分為:黑盒測試、白盒測試、灰盒測試 黑盒測試:在程式介面進行測試,它只是檢查程式功能是否按照規格說明書的規定正常使用。也被稱為功能測試或者資料驅動測試。 白盒測試:要完全瞭解程式結構和處理過程,它按照程式內部邏輯測試程式,檢驗程式中每條
手把手教你在Python中實現文字分類(附程式碼、資料集)
作者: Shivam Bansal 翻譯:申利彬校對:丁楠雅本文約2300字,建議
關於JAVA中賦值表示式及型別轉換
short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯? short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,不能顯式轉化為short型。可修改為s1 =(shor
mysql資料庫中指定值在所有表中所有欄位中的替換
MySQL資料庫: 指定值在資料庫中所有表所有欄位值的替換(儲存過程): 1.寫一個儲存過程,查指定資料庫中所有的表名: CREATE PROCEDURE init_replace(in orig_str varchar(100),in new_str varchar(100),in db_n
如何將Column.isin與List使用(判斷column中的值是否在List中)--filter(Column.isin(List))
spark datafream 中某列的值進行過濾 val items = List("a", "b", "c") sqlContext.sql("select c1 from table") .filter($"c1".isin(items)) .co
[圖形學]VS2017中OpenGL的下載及安裝中的異常
1、放dll檔案:C:\Windows\SysWOW64 或C:\Windows\windows32 2、lib和h:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\ lib放在lib資料夾下。
Scikit-learn 釋出 0.20版本!新增處理缺失值、合併Pandas等亮點功能
整理 | Jane出品 | AI科技大本營之前一直預告 Scikit-learn 的新版本會在
Android中呼叫js方法及js中呼叫本地方法
Android中內建了WebKit模組,而該模組的Java層檢視類就是WebView,所有需要使用Web瀏覽器功能的Android都需要建立該檢視類物件顯示和處理請求的網路資源。目前WebKit支援Http、Https、Ftp和JavaScript請求。下面我們重點看一下如
在PHP裡.如何定義二維陣列和賦值.並且把陣列中的值填充到table中。
php: require 'smarty/libs/Smarty.class.php'; $smarty = new Smarty;//設定各個目錄的路徑,這裡是安裝的重點 $smarty->template_dir ="smarty/templates/temp
如何實現將JS動態新增的TR中的值傳到後臺中並批量插入
在我的上一篇文章當中,已經在靜態頁面中實現了JS動態新增刪除TR。在實際工作中,更多的是需要將JS所新增的tr中的值儲存至資料庫中。下面我將介紹在SSH框架中如何實現這一功能需求。(以下均由我所做的實際專案給出功能程式碼) 在JSP中,JS程式碼會稍有變化。 funct
DOM中的事件型別及HTML5中的事件型別
DOM中事件型別有: UI(使用者介面)事件,使用者與頁面上元素互動時觸發 ; 焦點事件:當元素獲得或失去焦點時觸發; 滑鼠事件:當用戶通過滑鼠在頁面上執行操作時觸發; 滾輪事件:當使用滑鼠
Android獲取.Gradle檔案中的值和Manifests檔案中的值
專案中有登入頁面,但平時除錯的時候每次都輸入使用者名稱密碼來登入太麻煩,寫成固定值釋出的時候又要重新替換和註釋。所以就想從不同版本獲得資訊然後程式碼中控制。 在Android專案檔案中的build.gradle中,在android標籤下的defaultConf
22. datenum Matlab中的日期型資料處理函式
datenum(‘14-Mar-2008’) 執行結果: 733481 (1) 時間計算中,matlab是計算時間點2018/3/14距離 公元元年Jan01(0000-01-01)的
Python Pandas 二維資料處理與 T-SQL 對應關係
Pandas 是 python的一個數據分析包,它提供了大量的資料模型型和函式庫,對資料處理很方便。DataFrame 是一個二維表格資料結構,可以當做資料庫中的一張關係表。Pandas 可以實現 SQL 中的語句,對 DataFrame 的操作相當於對二維表操作一樣。
C語言中堆記憶體的開闢和釋放與記憶體處理函式
C語言動態分配記憶體,malloc的出現就是來彌補靜態記憶體分配的缺點 比如說我們在定義陣列的時候,陣列的長度必須是一個常量,不能改變的值,假如我事先定義了陣列,一旦業務需求發生改變,那麼這個陣列就不能再使用了。 傳統的陣列定義也就是靜態分配,是不能夠手動釋放的,只能等待系統釋放,靜態分配的記憶體,是分配