Pandas 基础 (5) —— 处理缺失数据及层次化索引
生活随笔
收集整理的這篇文章主要介紹了
Pandas 基础 (5) —— 处理缺失数据及层次化索引
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
-
處理缺失數據
pandas 使用浮點值 NaN (Not a Number)表示浮點和非浮點數組中的缺失數據。它只是一個便于被檢測出來的標記而已。
In [168]: data = Series(['a','b',np.nan,'d'])In [169]: data Out[169]: 0 a 1 b 2 NaN 3 d dtype: objectIn [170]: data.isnull() Out[170]: 0 False 1 False 2 True 3 False dtype: boolPython 內置的 None 值也會被當做 NA 處理:
In [171]: data[0] = NoneIn [172]: data.isnull() Out[172]: 0 True 1 False 2 True 3 False dtype: bool
?
-
濾除缺失數據
對于 Series,dropna 返回一個僅含非空數據和索引值的 Series:
In [173]: data Out[173]: 0 None 1 b 2 NaN 3 d dtype: objectIn [174]: data.dropna() Out[174]: 1 b 3 d dtype: object # 也可以通過布爾型索引達到這個目的 In [175]: data[data.notnull()] Out[175]: 1 b 3 d dtype: object而對于 DataFrame 對象,稍微有點復雜,dropna 默認會丟棄任何含有缺失值的行:
In [176]: data = DataFrame([[1,2,3],[1,np.nan,np.nan],...: [np.nan,np.nan,np.nan],[np.nan,4,5]])In [177]: cleaned = data.dropna()In [178]: data Out[178]: 0 1 2 0 1.0 2.0 3.0 1 1.0 NaN NaN 2 NaN NaN NaN 3 NaN 4.0 5.0In [179]: cleaned Out[179]: 0 1 2 0 1.0 2.0 3.0# 傳入 how='all' 將只丟棄全為 NA 的那些行 In [181]: data.dropna(how='all') Out[181]: 0 1 2 0 1.0 2.0 3.0 1 1.0 NaN NaN 3 NaN 4.0 5.0要丟棄列,需要傳入 axis=1,表示在列上生效:
In [183]: data[4] = np.nanIn [184]: data Out[184]: 0 1 2 4 0 1.0 2.0 3.0 NaN 1 1.0 NaN NaN NaN 2 NaN NaN NaN NaN 3 NaN 4.0 5.0 NaNIn [185]: data.dropna(axis=1,how='all') Out[185]: 0 1 2 0 1.0 2.0 3.0 1 1.0 NaN NaN 2 NaN NaN NaN 3 NaN 4.0 5.0?
-
填充缺失數據
要填充缺失的數據,主要使用 fillna 方法,通過調用 fillna(Number) 就會將缺失值替換為 Number 數值。
In [186]: df Out[186]: one two a 1.0 NaN b 2.0 3.0 c NaN NaN d 0.0 2.0In [187]: df.fillna(100) Out[187]: one two a 1.0 100.0 b 2.0 3.0 c 100.0 100.0 d 0.0 2.0 # fillna 默認會返回新對象,但是傳入 inplace=True 會對原有對象進行就地修改 In [188]: df.fillna(200,inplace=True)In [189]: df Out[189]: one two a 1.0 200.0 b 2.0 3.0 c 200.0 200.0 d 0.0 2.0
-
層次化索引
P164?
總結
以上是生活随笔為你收集整理的Pandas 基础 (5) —— 处理缺失数据及层次化索引的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vans多少钱啊?
- 下一篇: MySQL 学习笔记(1)— 创建/连接