導航:首頁 > 編程語言 > Python查找缺失的數

Python查找缺失的數

發布時間:2022-11-14 10:36:12

python 怎麼查看變數的缺失度

如果是簡單的字元串操作,在python中可以用下面這兩個方法.

1. String.maketrans(from, to)
#返回一個256個字元組成的翻譯表,其中from中的字元被一一對應地轉換成to,所以from和to必須是等長的。
2. S.translate(table[,deletechars])
#
使用上面的函數產後的翻譯表,把S進行翻譯,並把deletechars中有的字元刪掉。需要注意的是,如果S為unicode字元串,那麼就不支持
deletechars參數,可以使用把某個字元翻譯為None的方式實現相同的功能。此外還可以使用codecs模塊的功能來創建更加功能強大的翻譯
表。

如果是很復雜的字元串模式替換就要用RE(正則)模塊了.
要import re

1.替換所有匹配的子串用newstring替換subject中所有與正則表達式regex匹配的子串
result, number = re.subn(regex, newstring, subject)

2.替換所有匹配的子串(使 用正則表達式對象)

rereobj = re.compile(regex)
result, number = reobj.subn(newstring, subject)字元串拆分

❷ python dataframe 如何去除缺失值

1、導入需要的庫。import pandas as pd,import numpy as np,from sklearn.preprocessing import Imputer。

(2)Python查找缺失的數擴展閱讀

Python在執行時,首先會將py文件中的源代碼編譯成Python的byte code(位元組碼),然後再由Python Virtual Machine(Python虛擬機)來執行這些編譯好的byte code。這種機制的基本思想跟Java,NET是一致的。

然而,Python Virtual Machine與Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一種更高級的Virtual Machine。

這里的高級並不是通常意義上的高級,不是說Python的Virtual Machine比Java或.NET的功能更強大;

說和Java 或NET相比,Python的Virtual Machine距離真實機器的距離更遠。或者可以這么說,Python的Virtual Machine是一種抽象層次更高的Virtual Machine。

基於C的Python編譯出的位元組碼文件,通常是pyc格式。除此之外,Python還可以以交互模式運行,比如主流操作系統Unix/Linux、Mac、Windows都可以直接在命令模式下直接運行Python交互環境。直接下達操作指令即可實現交互操作。

Python的設計目標之一是讓代碼具備高度的可閱讀性。它設計時盡量使用其它語言經常使用的標點符號和英文單字,讓代碼看起來整潔美觀。

它不像其他的靜態語言如C、Pascal那樣需要重復書寫聲明語句,也不像它們的語法那樣經常有特殊情況和意外。

Python開發者有意讓違反了縮進規則的程序不能通過編譯,以此來強制程序員養成良好的編程習慣。

並且Python語言利用縮進表示語句塊的開始和退出(Off-side規則),而非使用花括弧或者某種關鍵字。增加縮進表示語句塊的開始,而減少縮進則表示語句塊的退出。縮進成為了語法的一部分。

❸ python中利用pandas怎麼處理預設值

null/None/NaN
null經常出現在資料庫中
None是Python中的缺失值,類型是NoneType
NaN也是python中的缺失值,意思是不是一個數字,類型是float
在pandas和Numpy中會將None替換為NaN,而導入資料庫中的時候則需要把NaN替換成None
找出空值
isnull()
notnull()
添加空值
numeric容器會把None轉換為NaN
In [20]: s = pd.Series([1, 2, 3])

In [21]: s.loc[0] = None

In [22]: s
Out[22]:
0 NaN
1 2.0
2 3.0
dtype: float641234567891012345678910

object容器會儲存None
In [23]: s = pd.Series(["a", "b", "c"])

In [24]: s.loc[0] = None

In [25]: s.loc[1] = np.nan

In [26]: s
Out[26]:
0 None
1 NaN
2 c
dtype:

空值計算
arithmetic operations(數學計算)
NaN運算的結果是NaN
statistics and computational methods(統計計算)
NaN會被當成空置
GroupBy
在分組中會忽略空值
清洗空值
填充空值
fillna
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
參數
value : scalar, dict, Series, or DataFrame
method : {『backfill』, 『bfill』, 『pad』, 『ffill』, None}, default None(bfill使用後面的值填充,ffill相反)
axis : {0 or 『index』, 1 or 『columns』}
inplace : boolean, default False
limit : int, default None
downcast : dict, default is None
返回值
filled : DataFrame
Interpolation
replace
刪除空值行或列
DataFrame.dropna(axis=0, how=』any』, thresh=None, subset=None, inplace=False)
參數
axis : {0 or 『index』, 1 or 『columns』}, or tuple/list thereof
how : {『any』, 『all』}
thresh : int, default None
subset : array-like
inplace : boolean, default False
返回
dropped : DataFrame

❹ 如何使用Python 對缺失值進行處理

缺失值是什麼?
空格算不算?0算不算?-1算不算?None算不算?
先要自己清楚,你的數據,什麼情況下算缺失值
對缺失值處理最方便的是pandas

❺ Python怎麼把集合中有空缺數據的部分提取出來

1、導入需要使用的庫,讀取並創建數據表取名loandata。
2、在開始提取數據前,先將member_id列設置為索引欄位,然後開始提取數據。
3、按行和列提取信息,把前面兩部的查詢條件放在一起,查詢Python特定用戶的特定集合信息。
4、應用相關集合函數,通過索引解決提取問題。信息匯總實現空缺數據的部分提取出來。

❻ 缺失值處理

 缺失數據 

1 缺失值的統計和刪除 

1.1 缺失信息的統計

缺失數據可以使用 isna 或 isnull (兩個函數沒有區別)來查看每個單元格是否缺失,通過和 sum 的組合可以計算出每列缺失值的比例。

如果想要查看某一列缺失或者非缺失的行,可以利用 Series 上的 isna 或者 notna 進行布爾索引。例如,查看身高缺失的行:

如果想要同時對幾個列,檢索出全部為缺失或者至少有一個缺失或者沒有缺失的行,可以使用 isna, notna 和any, all 的組合。例如,對身高、體重和轉系情況這 3 列分別進行這三種情況的檢索

1.2 缺失信息的刪除

數據處理中經常需要根據缺失值的大小、比例或其他特徵來進行行樣本或列特徵的刪除,pandas 中提供了dropna 函數來進行操作。

dropna 的主要參數為軸方向 axis (默認為 0,即刪除行)、刪除方式 how 、刪除的非缺失值個數閾值 thresh(非缺失值沒有達到這個數量的相應維度會被刪除)、備選的刪除子集 subset ,其中 how 主要有 any 和 all兩種參數可以選擇。

2 缺失值的填充和插值 

2.1 利用 fillna 進行填充 

在 fillna 中有三個參數是常用的:value, method, limit 。其中,value 為填充值,可以是標量,也可以是索引到元素的字典映射;method 為填充方法,有用前面的元素填充 ffill 和用後面的元素填充 bfill 兩種類型,limit 參數表示連續缺失值的最大填充次數。

2.2 插值函數 

在關於 interpolate 函數的 文檔 描述中,列舉了許多插值法,包括了大量 Scipy 中的方法。由於很多插值方法涉及到比較復雜的數學知識,因此這里只討論比較常用且簡單的三類情況,即線性插值、最近鄰插值和索引插值。

對於 interpolate 而言,除了插值方法(默認為 linear 線性插值)之外,有與 fillna 類似的兩個常用參數,一個是控制方向的 limit_direction ,另一個是控制最大連續缺失值插值個數的 limit 。其中,限制插值的方向默認為 forward ,這與 fillna 的 method 中的 ffill 是類似的,若想要後向限制插值或者雙向限制插值可以指定為 backward 或 both

關於 polynomial 和 spline 插值的注意事項

在 interpolate 中 如 果 選 用 polynomial 的 插 值 方 法, 它 內 部 調 用 的 是scipy.interpolate.interp1d(*,*,kind=order) , 這 個 函 數 內 部 調 用 的 是 make_interp_spline方法,因此其實是樣條插值而不是類似於 numpy 中的 polyfit 多項式擬合插值;而當選用 spline方法時,pandas 調用的是 scipy.interpolate.UnivariateSpline 而不是普通的樣條插值。這一部分的文檔描述比較混亂,而且這種參數的設計也是不合理的,當使用這兩類插值方法時,用戶一定要小心謹慎地根據自己的實際需求選取恰當的插值方法。

3 Nullable 類型

3.1 缺失記號及其缺陷

在 python 中的缺失值用 None 表示,該元素除了等於自己本身之外,與其他任何元素不相等:

在 numpy 中利用 np.nan 來表示缺失值,該元素除了不和其他任何元素相等之外,和自身的比較結果也返回False

值得注意的是,雖然在對缺失序列或表格的元素進行比較操作的時候,np.nan 的對應位置會返回 False ,但是在使用 equals 函數進行兩張表或兩個序列的相同性檢驗時,會自動跳過兩側表都是缺失值的位置,直接返回 True :

在時間序列的對象中,pandas 利用 pd.NaT 來指代缺失值,它的作用和 np.nan 是一致的

那麼為什麼要引入 pd.NaT 來表示時間對象中的缺失呢?仍然以 np.nan 的形式存放會有什麼問題?在 pandas中可以看到 object 類型的對象,而 object 是一種混雜對象類型,如果出現了多個類型的元素同時存儲在 Series中,它的類型就會變成 object

NaT 問題的根源來自於 np.nan 的本身是一種浮點類型,而如果浮點和時間類型混合存儲,如果不設計新的內置缺失類型來處理,就會變成含糊不清的 object 類型,這顯然是不希望看到的。

同時,由於 np.nan 的浮點性質,如果在一個整數的 Series 中出現缺失,那麼其類型會轉變為 float64 ;而如果在一個布爾類型的序列中出現缺失,那麼其類型就會轉為 object 而不是 bool

因此,在進入 1.0.0 版本後,pandas 嘗試設計了一種新的缺失類型 pd.NA 以及三種 Nullable 序列類型來應對這些缺陷,它們分別是 Int, boolean 和 string 。

3.2 Nullable 類型的性質

從字面意義上看 Nullable 就是可空的,言下之意就是序列類型不受缺失值的影響。例如,在上述三個 Nullable類型中存儲缺失值,都會轉為 pandas 內置的 pd.NA

在 Int 的序列中,返回的結果會盡可能地成為 Nullable 的類型

對於 boolean 類型的序列而言,其和 bool 序列的行為主要有兩點區別:

第一點是帶有缺失的布爾列表無法進行索引器中的選擇,而 boolean 會把缺失值看作 False

第二點是在進行邏輯運算時,bool 類型在缺失處返回的永遠是 False ,而 boolean 會根據邏輯運算是否能確定唯一結果來返回相應的值。那什麼叫能否確定唯一結果呢?舉個簡單例子:True | pd.NA 中無論缺失值為什麼值,必然返回 True ;False | pd.NA 中的結果會根據缺失值取值的不同而變化,此時返回 pd.NA ;False& pd.NA 中無論缺失值為什麼值,必然返回 False 。

3.3 缺失數據的計算和分組

當調用函數 sum, prob 使用加法和乘法的時候,缺失數據等價於被分別視作 0 和 1,即不改變原來的計算結果

當使用累計函數時,會自動跳過缺失值所處的位置:

當進行單個標量運算的時候,除了 np.nan ** 0 和 1 ** np.nan 這兩種情況為確定的值之外,所有運算結果全為缺失(pd.NA 的行為與此一致),並且 np.nan 在比較操作時一定返回 False ,而 pd.NA 返回 pd.NA

另外需要注意的是,diff, pct_change 這兩個函數雖然功能相似,但是對於缺失的處理不同,前者凡是參與缺失計算的部分全部設為了缺失值,而後者缺失值位置會被設為 0% 的變化率

對於一些函數而言,缺失可以作為一個類別處理,例如在 groupby, get_mmies 中可以設置相應的參數來進行增加缺失類別:

4 練習 

4.1 Ex1:缺失值與類別的相關性檢驗

.4.2 Ex2:用回歸模型解決分類問題

❼ python padnas 通過循環讀取文件後,我不能找出有缺失值的那張表,請問應如何判斷

可以使用numpy中的函數判讀dataframe中是否有NaN的值
import numpy as np
if np.any(df.isnull()): 先判斷是否有NaN的值,隨後遍歷dataframe的所有列,注意df.isna()函數,就是判斷是否為NaN。循環體中的命令是將NaN替換成某種數值(平均值、中位數之類,依據你的處理邏輯)
for __column_index in df.columns[df.isna().any()].to_list():
df[__column_index].fillna(df[__column_index].mean(), inplace=True)

❽ python填充缺失值

對於大多數情況而言,fillna方法是最主要的函數。通過一個常數調用fillna就會將缺失值替換為那個常數值。
fillna(value)
參數:value
說明:用於填充缺失值的標量值或字典對象
#通過常數調用fillna
書寫方式:df.fillna(0) #用0替換缺失值
#通過字典調用fillna
書寫方式:df.fillna({1:0.5,3:-1})
fillna(value,inplace=True)
參數:inplace
說明:修改調用者對象而不產生副本
#總是返回被填充對象的引用
書寫方式:df.fillna(0,inplace=True)
fillna(method=ffill)
參數:method
說明:插值方式。如果函數調用時未指定其他參數的話,默認為「ffill」
對reindex有效的那些插值方法也可用於fillna:
In [23]: from numpy import nan as NA
In [21]: df=DataFrame(np.random.randn(6,3))
In [24]: df.ix[2:,1]=NA;df.ix[4:,2]=NA
In [25]: df
Out[25]:
0 1 2
0 -0.863925 1.005127 -0.529901
1 0.701671 -0.501728 -0.617387
2 -0.951060 NaN -0.263626
3 0.810230 NaN -0.277401
4 -0.403899 NaN NaN
5 -0.081091 NaN NaN
In [26]: df.fillna(method='ffill')
Out[26]:
0 1 2
0 -0.863925 1.005127 -0.529901
1 0.701671 -0.501728 -0.617387
2 -0.951060 -0.501728 -0.263626
3 0.810230 -0.501728 -0.277401
4 -0.403899 -0.501728 -0.277401
5 -0.081091 -0.501728 -0.277401
fillna(limit=2)
參數:limit
說明:(對於前向和後向填充)可以連續填充的最大數量
In [27]: df.fillna(method='ffill',limit=2)
Out[27]:
0 1 2
0 -0.863925 1.005127 -0.529901
1 0.701671 -0.501728 -0.617387
2 -0.951060 -0.501728 -0.263626
3 0.810230 -0.501728 -0.277401
4 -0.403899 NaN -0.277401
5 -0.081091 NaN -0.277401
fillna(data.mean())
只要稍微動動腦子,就可以利用fillna實現許多別的功能。比如說,可以傳入Series的平均值或中位數:
In [28]: data=Series([1,NA,3.5,NA,7])
In [29]: data.fillna(data.mean())

❾ python檢查是否有缺失值

統計data里每一列是否有空值:

data.isnull().any()

統計data里每一列空值的個數:

data.isnull().any().sum()

但是有的時候,明明有空值卻統計不出來。

最近我遇到的數據,空值的填充是null,這個需要轉化一下才可以用上面的函數。

data=data.replace('null',np.NaN)

然後你再繼續用data.isnull().any(),ata.isnull().any().sum()就沒問題了。

如果這么做,你的問題還沒解決,查看你的缺失值的填充是什麼,用np.NaN替代。、

另外的方法:

np.any(np.isnan(data))

np.all(np.isfinite(data))

❿ 【python】找出數組中丟失的數

題目:給定一個由n-1個整數組成的未排序的數組序列,其元素都是1到n中的不同整數。請寫出一個尋找數組序列中缺失整數的線性時間演算法

分析:異或法。異或運算,當參與運算的兩個數相同時,結果為假,當兩個數不同,則結果為真。

a = 1 ^ 2 ^ 3 ^ ...^ n。b = 1 ^ 2 ^ 3^...(m-1) ^ (m+1) ^ ...^n,其中m表示缺失數字。所以a ^  b = (1 ^ 1)^(2 ^ 2)...(m-1) ^(m-1)^m^(m+1)^(m+1)...^(n^n) = m。

code:

def getNum(arr):

    if arr is None or len(arr) <= 0:

        return -1

    a = arr[0]

    i = 1

    while i < len(arr):

        a ^= arr[i]

        i += 1

    b = 1

    i = 2

    while i <= len(arr) + 1:

        b ^= i

        i += 1

    return a ^ b

if __name__ == "__main__":

    arr = [1, 4, 3, 2, 7, 5]

    print(getNum(arr))

程序運行結果為:

6

閱讀全文

與Python查找缺失的數相關的資料

熱點內容
液壓油可壓縮嗎 瀏覽:944
源泉cad加密文件 瀏覽:123
銀河v10驅動重編譯 瀏覽:889
電腦上文件夾右擊就會崩潰 瀏覽:689
右美維持演算法 瀏覽:938
php基礎編程教程pdf 瀏覽:219
穿越之命令與征服將軍 瀏覽:351
android廣播重復 瀏覽:832
像阿里雲一樣的伺服器 瀏覽:318
水冷空調有壓縮機嗎 瀏覽:478
訪問日本伺服器可以做什麼 瀏覽:433
bytejava詳解 瀏覽:450
androidjava7 瀏覽:385
伺服器在山洞裡為什麼還有油 瀏覽:887
天天基金app在哪裡下載 瀏覽:975
伺服器軟路由怎麼做 瀏覽:293
冰箱壓縮機出口 瀏覽:229
OPT最佳頁面置換演算法 瀏覽:645
網盤忘記解壓碼怎麼辦 瀏覽:853
文件加密看不到裡面的內容 瀏覽:654