九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
python小技能-缺失數(shù)據(jù)處理
停更了幾周的python基礎(chǔ)學(xué)習(xí),今天我們跟上,接下來(lái)幾周將重點(diǎn)學(xué)習(xí)如何處理缺失數(shù)據(jù)、重復(fù)數(shù)據(jù)、字符串操作和其它分析數(shù)據(jù)轉(zhuǎn)換的工具

缺失數(shù)據(jù)

缺失數(shù)據(jù)在pandas中呈現(xiàn)的方式有些不完美,但對(duì)于大多數(shù)用戶可以保證功能正常。對(duì)于數(shù)值數(shù)據(jù),pandas使用浮點(diǎn)值NaN(Not a Number)表示缺失數(shù)據(jù)。在python中其為哨兵值,可以方便的檢測(cè)出來(lái):

導(dǎo)入神庫(kù)

import pandas as pd

import numpy as np

    string_data=pd.Series(['aardvark''artichoke', np.nan, 'avocado'])

## 判斷是否為缺失值
string_data.isnull()
0    False
1    False
2     True
3    False  

第二種方法 判斷

pd.isna(string_data)

0    False
1    False
2     True
3    False
dtype: bool

在pandas中,采用了R語(yǔ)言中的慣用法,即將缺失值表示為NA,它表示不可用not available 。在統(tǒng)計(jì)應(yīng)用中,NA數(shù)據(jù)可能是不存在的數(shù)據(jù)或者雖然存在,但是沒(méi)有觀察到(例如,數(shù)據(jù)采集中發(fā)生了問(wèn)題)。當(dāng)進(jìn)行數(shù)據(jù)清洗以進(jìn)行分析時(shí),最好直接對(duì)缺失數(shù)據(jù)進(jìn)行分析,以判斷數(shù)據(jù)采集的問(wèn)題或缺失數(shù)據(jù)可能導(dǎo)致的偏差。

Python內(nèi)置的None值在對(duì)象數(shù)組中也可以作為NA:

string_data[0]==None  ##判斷
False
string_data[0]=None  ## 賦值
string_data
0         None
1    artichoke
2          NaN
3      avocado
dtype: object
pd.isnull(string_data)
0     True
1    False
2     True
3    False
dtype: bool

濾除缺失數(shù)據(jù)

過(guò)濾掉缺失數(shù)據(jù)的辦法有很多種。你可以通過(guò)pandas.isnull 或布爾索引的手工方法,但dropna可能會(huì)更實(shí)用一些。對(duì)于一個(gè)Series ,dropna返回一個(gè)僅含非空數(shù)據(jù)和索引值的Series :
from numpy import nan as NA
data=pd.Series([1,NA,3,NA,7])
data.dropna()
0    1.0
2    3.0
4    7.0
dtype: float64
#這等價(jià)于:
data[data.notna()]
0    1.0
2    3.0
4    7.0
dtype: float64

而對(duì)于DataFrame對(duì)象,事情就有點(diǎn)復(fù)雜了。你可能希望丟棄全NA或含有

NA的行或列。dropna默認(rèn)丟棄任何含有缺失值的行:

data = pd.DataFrame([[1.6.53.], [1.NANA],
                    [NANANA], [NA6.53.]])
data

012
01.06.53.0
11.0NaNNaN
2NaNNaNNaN
3NaN6.53.0
clean_data=data.dropna()

clean_data

012
01.06.53.0
### 可以看出,默認(rèn)刪除的是含有NA值的行

#
#傳入how='all' 將只丟棄全為NA的那些行:

data.dropna(how='all')

012
01.06.53.0
11.0NaNNaN
3NaN6.53.0
# 如果按照列刪除缺失值,只需傳入axis=1 即可:

data.dropna(how='all',axis=1)

012
01.06.53.0
11.0NaNNaN
2NaNNaNNaN
3NaN6.53.0

另一個(gè)濾除DataFrame行的問(wèn)題涉及時(shí)間序列數(shù)據(jù)。假設(shè)你只想留下一部分

觀測(cè)數(shù)據(jù),可以用thresh 參數(shù)實(shí)現(xiàn)此目的:

df=pd.DataFrame(np.random.randn(7,3))

df

012
0-0.4750240.8088770.846899
11.985728-0.498647-0.461880
2-0.121965-0.6471251.897084
30.408052-0.4912820.398916
4-0.2725061.000522-0.114962
5-0.1717800.501524-0.362652
6-1.3767140.138974-0.152652
df.iloc[:4,1]=NA

df.iloc[:2,2]



0    0.846899
1   -0.461880
Name: 2, dtype: float64




df.iloc[:2,2]=NA

df

012
0-0.475024NaNNaN
11.985728NaNNaN
2-0.121965NaN1.897084
30.408052NaN0.398916
4-0.2725061.000522-0.114962
5-0.1717800.501524-0.362652
6-1.3767140.138974-0.152652
df.dropna()

012
4-0.2725061.000522-0.114962
5-0.1717800.501524-0.362652
6-1.3767140.138974-0.152652
df.dropna(axis=1)

0
0-0.475024
11.985728
2-0.121965
30.408052
4-0.272506
5-0.171780
6-1.376714
 df.dropna(thresh=3) ###thresh 代表的是刪除索引從0開(kāi)始到索引為thresh為止

012
4-0.2725061.000522-0.114962
5-0.1717800.501524-0.362652
6-1.3767140.138974-0.152652

填充缺失數(shù)據(jù)

你可能不想濾除缺失數(shù)據(jù)(有可能會(huì)丟棄跟它有關(guān)的其他數(shù)據(jù)),而是希望通過(guò)其他方式填補(bǔ)那些“空洞”。對(duì)于大多數(shù)情況而言,fillna方法是最主要的函數(shù)。通過(guò)一個(gè)常數(shù)調(diào)用fillna就會(huì)將缺失值替換為那個(gè)常數(shù)值:
### 比如用0填充
df.fillna(0)

012
0-0.4750240.0000000.000000
11.9857280.0000000.000000
2-0.1219650.0000001.897084
30.4080520.0000000.398916
4-0.2725061.000522-0.114962
5-0.1717800.501524-0.362652
6-1.3767140.138974-0.152652
#若是通過(guò)一個(gè)字典調(diào)用fillna,就可以實(shí)現(xiàn)對(duì)不同的列填充不同的值:
df.fillna({1:1,2:2})

012
0-0.4750241.0000002.000000
11.9857281.0000002.000000
2-0.1219651.0000001.897084
30.4080521.0000000.398916
4-0.2725061.000522-0.114962
5-0.1717800.501524-0.362652
6-1.3767140.138974-0.152652

對(duì)reindexing 有效的那些插值方法也可用于fillna:

df=pd.DataFrame(np.random.randn(6,3))
df.iloc[:2,1]
0    0.341521
1   -0.236488
Name: 1, dtype: float64
df.iloc[2:,1]=NA
df

012
0-1.3084690.3415210.665815
1-0.343031-0.2364883.169433
21.651689NaN0.398313
3-0.601294NaN-0.284620
41.516970NaN1.344071
5-2.583564NaN0.508698
df.iloc[3:,2]=NA
df

012
0-1.3084690.3415210.665815
1-0.343031-0.2364883.169433
21.651689NaN0.398313
3-0.601294NaNNaN
41.516970NaNNaN
5-2.583564NaNNaN
df.fillna(method='ffill')

012
0-1.3084690.3415210.665815
1-0.343031-0.2364883.169433
21.651689-0.2364880.398313
3-0.601294-0.2364880.398313
41.516970-0.2364880.398313
5-2.583564-0.2364880.398313
df.fillna(method='ffill'limit=2) ##表示之填充兩個(gè)

012
0-1.3084690.3415210.665815
1-0.343031-0.2364883.169433
21.651689-0.2364880.398313
3-0.601294-0.2364880.398313
41.516970NaN0.398313
5-2.583564NaNNaN
df.fillna(df[0].mean()) ## 用第一列均值填充

012
0-1.3084690.3415210.665815
1-0.343031-0.2364883.169433
21.651689-0.2779500.398313
3-0.601294-0.277950-0.277950
41.516970-0.277950-0.277950
5-2.583564-0.277950-0.277950
df[0]
0   -1.308469
1   -0.343031
2    1.651689
3   -0.601294
4    1.516970
5   -2.583564
Name: 0, dtypefloat64


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
pandas 缺失數(shù)據(jù)處理大全(附代碼)
小白也能看懂的Pandas實(shí)操演示教程(下)
從數(shù)據(jù)清洗到機(jī)器學(xué)習(xí):Python缺失值處理指南
pandas中的缺失值處理
5-Pandas數(shù)據(jù)處理
7步搞定數(shù)據(jù)清洗-Python數(shù)據(jù)清洗指南
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服