iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
自我挑戰組

我與熊貓Pandas相處的日子系列 第 7

Day7- 資料處理(3)空值處理

  • 分享至 

  • xImage
  •  

資料搜集過程中,難免會遇到有缺失(空)值的部份,如何處理空值才能將降低其對於資料處理的影響力,也是資料分析的必修課。

import pandas as pd
data = [[8,7,6,5,4], [3,4,2,9,5], [4,6,7,2,8], [2,7,6,3,9], [6,None,4,None,3]]
df1=pd.DataFrame(data, index=['小明','小美','小英','小玉','小翔'], columns=['蘋果','芭樂','香蕉','橘子','檸檬'])
print(df1)

執行結果:
    蘋果   芭樂  香蕉   橘子  檸檬
小明   8  7.0   6  5.0   4
小美   3  4.0   2  9.0   5
小英   4  6.0   7  2.0   8
小玉   2  7.0   6  3.0   9
小翔   6  NaN   4  NaN   3

1.查詢空值資料

df1.isnull()

執行結果:
        蘋果	芭樂	香蕉	橘子	檸檬 
小明	False	False	False	False	False
小美	False	False	False	False	False
小英	False	False	False	False	False
小玉	False	False	False	False	False
小翔	False	True	False	True	False

空值資料總數

df1.isnull().sum()

執行結果:
蘋果    0
芭樂    1
香蕉    0
橘子    1
檸檬    0
dtype: int64

非空值部份

df1.notnull()

執行結果:
	蘋果	芭樂	香蕉	橘子	檸檬
小明	True	True	True	True	True
小美	True	True	True	True	True
小英	True	True	True	True	True
小玉	True	True	True	True	True
小翔	True	False	True	False	True
df1.notnull().sum()

執行結果:
芭樂    4
香蕉    5
橘子    4
檸檬    5
dtype: int64

2.移除空值
刪除DataFrame空值,會直接刪除整欄和整列

df1.dropna()

執行結果:
	蘋果	芭樂	香蕉	橘子	檸檬
小明	8	7	6	5	4
小美	3	4	2	9	5
小英	4	6	7	2	8
小玉	2	7	6	3	9

3.填補空值

import pandas as pd
data = [[8,7,6,5,4], [3,4,2,9,5], [4,6,7,2,8], [6,None,4,None,3], [2,7,6,3,9]]
df1=pd.DataFrame(data, index=['小明','小美','小英','小玉','小翔'], columns=['蘋果','芭樂','香蕉','橘子','檸檬'])
print(df1)

    蘋果   芭樂  香蕉   橘子  檸檬
小明   8  7.0   6  5.0   4
小美   3  4.0   2  9.0   5
小英   4  6.0   7  2.0   8
小玉   6  NaN   4  NaN   3
小翔   2  7.0   6  3.0   9

將空值以0填補

df1.fillna(0)

執行結果:

       蘋果	芭樂	香蕉	橘子	檸檬 
小明	8	7.0	6	5.0	4
小美	3	4.0	2	9.0	5
小英	4	6.0	7	2.0	8
小玉	6	0.0	4	0.0	3
小翔	2	7.0	6	3.0	9

填入前一筆資料的數值

FI=df1.fillna(method='pad')
print(FI)

執行結果:
    蘋果   芭樂  香蕉   橘子  檸檬
小明   8  7.0   6  5.0   4
小美   3  4.0   2  9.0   5
小英   4  6.0   7  2.0   8
小玉   6  6.0   4  2.0   3
小翔   2  7.0   6  3.0   9

填入後一筆資料的數值

FB=df.fillna(method='bfill')  
print(FB) 

執行結果:
    蘋果   芭樂  香蕉   橘子  檸檬
小明   8  7.0   6  5.0   4
小美   3  4.0   2  9.0   5
小英   4  6.0   7  2.0   8
小玉   6  7.0   4  3.0   3
小翔   2  7.0   6  3.0   9

把空值改成該欄位的平均值

df1['芭樂'].fillna(value=df['芭樂'].mean())

小明    7.0
小美    4.0
小英    6.0
小玉    6.0
小翔    7.0
Name: 芭樂, dtype: float64

填補完空值了,明天將開始資探索部份囉~ /images/emoticon/emoticon13.gif


上一篇
Day6- 資料處理(2)資料合併
下一篇
Day8- 資料探索(1)資料查看
系列文
我與熊貓Pandas相處的日子30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言